[codex] Implement official catalog discovery runtime - #260
Conversation
Implement the #228 official-catalog discovery runtime from the current v2 execution package. Normal discovery now presents bundled support metadata as the user-facing official catalog, filters internal custom.files support out of the normal list/search path, removes noisy read-only discovery footers, and keeps advanced recipe internals separate from the app-first discovery surface. Add a narrow catalog discovery package and wire dotfiles-manager catalog list into the CLI. The command reports dotfiles-manager/official as active for discovery with deterministic version and updated-time metadata, without adding catalog update/add behavior, network fetching, remote catalog lifecycle, local catalog lifecycle, or live/stored settings writes. Update package and CLI tests first around the frozen #228 contract: six official app/tool entries, official catalog wording, unsupported-search guidance toward future remote catalog support, no built-in wording, no custom.files pseudo-app in normal discovery, and JSON/text coverage for catalog list. Validation performed locally after implementation: runnable #228 UX mock check, focused discovery/catalog/app tests, full go test ./..., static checks with temporary one-off linter binaries, isolated temp-home CLI transcripts, and the unit/integration/contract coverage aggregation gate.
1c0592b to
ff9f190
Compare
Advisory review fixes and final local validationTwo advisory subagent reviews were run for PR #260:
Blockers found and fixed in amended commit
Regression coverage added:
Final local validation after fixes: PYTHON="$HOME/.asdf/shims/python" docs/internal/ux/mocks/v2-catalog-discovery/run-demo.sh --checkResult: go test ./internal/v2/appdiscovery ./internal/v2/catalogdiscovery ./internal/app
go test ./...Result: pass. Static checks: bash scripts/ci/run-static-checks.shResult: pass. As before, Coverage gate: bash scripts/ci/run-tests.sh unit darwin true
bash scripts/ci/run-tests.sh integration darwin true
bash scripts/ci/run-tests.sh contract linux true
bash scripts/ci/coverage-aggregate.sh artifacts/coverage-unit.out artifacts/coverage-integration.out artifacts/coverage-contract.out artifacts/branch-metrics.jsonResult: Temp-home transcript after fixes confirmed:
The PR remains draft while GitHub CI reruns on the amended commit. |
Validation record for PR #260Work item: #228 official-catalog discovery baseline Real-result evidence reviewed:
Criteria checked:
Validation result: Pass for the frozen #228 runtime implementation package. Evidence summary: Local coverage gate result: Advisory review result:
Known limitations / future work outside #228:
Next owner-gated decision needed: Project Owner acceptance decision for PR #260 / #228 validation result. This validation record does not by itself decide acceptance, merge, #228 completion, or project-level acceptance. |
Project Owner acceptance of validationProject Owner decision recorded from chat on 2026-07-03: accepted the #228 validation result for PR #260 and approved moving the PR out of draft status. Decision scope:
Next action:
|
Update the v2 execution record after the accepted #228 runtime implementation. PR #260 delivered the official-catalog discovery baseline and was squash-merged as 45b7c8b. The Project Owner accepted the #228 validation and closure gate on 2026-07-04, so the repo-editable project record now marks #228 complete, updates the catalog parent state, closes the superseded PR #255 continuation risk, and records the accepted runtime evidence. The update keeps #214 open because #229 still owns official-catalog download/update behavior and additional remote catalog lifecycle with write gates. It also resets the next gate to explicit next-work-item selection rather than carrying #228 context into #229 or #230. This is a standards/project-record-only change. It intentionally does not change runtime behavior, CLI output, tests, specs, or end-user documentation.
Update the v2 execution record after the accepted #228 runtime implementation. PR #260 delivered the official-catalog discovery baseline and was squash-merged as 45b7c8b. The Project Owner accepted the #228 validation and closure gate on 2026-07-04, so the repo-editable project record now marks #228 complete, updates the catalog parent state, closes the superseded PR #255 continuation risk, and records the accepted runtime evidence. The update keeps #214 open because #229 still owns official-catalog download/update behavior and additional remote catalog lifecycle with write gates. It also resets the next gate to explicit next-work-item selection rather than carrying #228 context into #229 or #230. This is a standards/project-record-only change. It intentionally does not change runtime behavior, CLI output, tests, specs, or end-user documentation.
Update the v2 execution record after the accepted #228 runtime implementation. PR #260 delivered the official-catalog discovery baseline and was squash-merged as 45b7c8b. The Project Owner accepted the #228 validation and closure gate on 2026-07-04, so the repo-editable project record now marks #228 complete, updates the catalog parent state, closes the superseded PR #255 continuation risk, and records the accepted runtime evidence. The update keeps #214 open because #229 still owns official-catalog download/update behavior and additional remote catalog lifecycle with write gates. It also resets the next gate to explicit next-work-item selection rather than carrying #228 context into #229 or #230. This is a standards/project-record-only change. It intentionally does not change runtime behavior, CLI output, tests, specs, or end-user documentation.
Update the repo-editable v2 execution record after the accepted #228 runtime implementation. PR #260 delivered the official-catalog discovery baseline and was squash-merged as 45b7c8b. The Project Owner accepted #228 validation and closure on 2026-07-04, so this checkpoint records #228 complete in the durable project record. The record keeps #214 open because #229 still owns official-catalog download/update behavior and additional remote catalog lifecycle with write gates. It also keeps #209 open until the combined v2 reset outcome is accepted, and resets the next gate to explicit next-work-item selection instead of carrying #228 context into #229 or #230. This is a standards/project-record-only change. It intentionally does not change runtime behavior, CLI output, tests, specs, or end-user documentation.
Summary
Issue: #228
Risk tier: Tier 1
Branch:
codex/228-official-catalog-discovery-runtimeThis PR implements the #228 official-catalog discovery runtime from the current frozen execution package.
Frozen contract used
Source of truth:
docs/internal/project/v2-reset-execution-record.mddocs/internal/ux/v2-catalog-discovery-storyboard.mddocs/internal/ux/mocks/v2-catalog-discovery/Implemented scope:
dotfiles-manager listdotfiles-manager search <query>dotfiles-manager explain <app>dotfiles-manager catalog listofficialcatalog wordingcustom.filescatalog listreportsdotfiles-manager/official, version, and updated timeExplicit non-scope preserved:
catalog updatecatalog addWhat changed
custom.filesout of normallistandsearchdiscovery while leaving advanced recipe internals untouched.internal/v2/catalogdiscoverypackage for deterministic official catalog listing.dotfiles-manager catalog listinto the CLI before the advancedrecipenamespace.Design evidence used
PYTHON="$HOME/.asdf/shims/python" docs/internal/ux/mocks/v2-catalog-discovery/run-demo.sh --checkResult:
Real-result verification
Focused tests:
go test ./internal/v2/appdiscovery ./internal/v2/catalogdiscovery ./internal/appFull test suite:
go test ./...Static checks:
Notes:
GOBINlinter binaries forstaticcheckandgolangci-lint; nothing was installed globally.Coverage gate:
Result:
Temp-home CLI transcript verified:
The temp working directory and temp HOME remained empty after the discovery commands.
Validation status
Implementation and local verification are complete for the frozen #228 runtime package.
Remaining gates after this PR: