Review: Create goose-custom repo with symlink architecture (re-review)
Verdict: APPROVED
Re-review of board item #1745 after refinement. All 6 findings from the previous review (review-1745-2026-07-03) have been addressed.
Previous Findings Resolution
- [x] Removed profiles.yaml and permission.yaml from file targets -- Goose v1.27.2 only uses config.yaml
- [x] Secret management addressed -- config.yaml is Salt-managed, goose-custom tracks config.yaml.example (structure only, secrets redacted)
- [x] Skills claim corrected -- issue now correctly states Goose uses extensions configured in config.yaml, not claude-custom skills
- [x] AC #3 fixed -- now references GOOSE.md symlink, no profiles.yaml
- [x] Directory structure reconciled -- target structure matches Goose's actual config layout (config.yaml.example, GOOSE.md, recipes/, extensions/, docs/, salt/)
- [x] [SCOPE] arch-personal-assistant note created -- exists in pal-e-docs with correct stack description
Template Completeness
- [x] Type -- Feature
- [x] Lineage -- Standalone, Sprint 2 planning
- [x] Repo -- ldraney/goose-custom (to be created)
- [x] User Story -- well-formed, matches groq-pivot story
- [x] Context -- detailed, includes Salt management strategy and Goose extension model
- [x] File Targets -- 5 files, all new in new repo, accurate to Goose config
- [x] Feature Flag -- none (appropriate for config repo scaffolding)
- [x] Acceptance Criteria -- 7 items, all agent-verifiable
- [x] Test Expectations -- 2 items (manual, appropriate for scaffolding)
- [x] Constraints -- 4 constraints, accurate to Goose's extension model
- [x] Checklist -- present
- [x] Related -- present, references dependencies
Traceability
- [x] story:groq-pivot label -- verified on project-personal-assistant user-stories section: "I can use Groq API as the primary inference backend for Goose"
- [x] story note verified -- groq-pivot entry exists in project-personal-assistant user-stories table
- [x] arch:personal-assistant label -- present on board item
- [x] arch note verified -- arch-personal-assistant note exists in pal-e-docs (Goose CLI + Groq API stack, Salt config, repos list)
- [x] Forgejo issue -- ldraney/personal-assistant#26, open
File Targets
- [x] README.md -- new file in new repo, setup guide and symlink instructions
- [x] .gitignore -- new file, excludes rendered configs with secrets
- [x] config.yaml.example -- template with structure shown, secrets redacted (not the live config)
- [x] GOOSE.md -- global context file, Goose equivalent of CLAUDE.md
- [x] docs/setup.md -- detailed setup guide with Salt integration notes
Repo Placement
OK. Issue filed on ldraney/personal-assistant (project repo) for creating ldraney/goose-custom (new repo). Correct pattern -- the target repo does not exist yet.
Dependencies
- depends:4 (issue #4, "Install Goose CLI") -- board item 1486 in done column. Satisfied.
- depends:5 (issue #5, "Configure Goose profile for Groq") -- board item 1487 in done column. Satisfied.
Both dependencies functionally complete.
Acceptance Criteria
- [x] AC 1: Forgejo repo created -- verifiable via API
- [x] AC 2: Directory structure scaffolded -- verifiable via ls
- [x] AC 3: GOOSE.md symlinked -- verifiable via readlink
- [x] AC 4: config.yaml.example documents structure -- verifiable via content check
- [x] AC 5: README documents pattern -- verifiable via content check
- [x] AC 6: .gitignore excludes secrets -- verifiable via content check
- [x] AC 7: Salt state reference documented -- verifiable via content check
7 AC, all agent-verifiable, all within one repo.
Blast Radius
Low. Creates a new standalone repo. No existing systems modified. Only interaction point is the GOOSE.md symlink into ~/.config/goose/.
Decomposition Assessment
5 file targets in 1 repo, 7 AC. All straightforward scaffolding. Estimated agent time well under 5 minutes. No decomposition needed.
Recommendation
No action needed. All previous findings resolved. Ticket is ready for implementation.