Problem
The .brain-allowlist generated by gstack-artifacts-init (current at v1.27.0.0+, see bin/gstack-artifacts-init:224-234) includes patterns for the designs/ and ceo-plans/ subdirectories:
projects/*/designs/*.md
projects/*/designs/*/*.md
projects/*/ceo-plans/*.md
projects/*/ceo-plans/*/*.md
But several skills write their output at the project root, not in those subdirectories:
| Skill |
Actual write path |
Source |
/office-hours Builder/Startup |
projects/{slug}/{user}-{branch}-design-{datetime}.md |
office-hours/SKILL.md:1566 |
/plan-eng-review |
projects/{slug}/{user}-{branch}-eng-review-test-plan-{datetime}.md |
plan-eng-review/SKILL.md:1149 |
/autoplan (test plan) |
projects/{slug}/{user}-{branch}-test-plan-{datetime}.md |
autoplan/SKILL.md:1334 |
Cross-skill readers correctly glob these at the project root:
plan-ceo-review/SKILL.md:897 — ls -t ~/.gstack/projects/$SLUG/*-design-*.md
plan-eng-review/SKILL.md:801 — same
autoplan/SKILL.md:841,1003 — same
So the files belong at root; the allowlist is the inconsistent piece.
Effect
With artifacts_sync_mode=full, gstack-brain-sync still skips:
/office-hours design docs
/plan-eng-review test plans
/autoplan test plans
CEO plans sync correctly (they live under ceo-plans/), but the input designs they reference do not. This breaks the cross-machine "ceo-plan references the design" chain — pull on machine B, you get the CEO plan but not the underlying design doc.
This has the same shape as #1441 (v1.27.0.0 rename missed the config key in one place): the rename release moved/renamed things but the allowlist was never audited against current skill write paths.
Repro
- Run
/office-hours Builder mode → produces ~/.gstack/projects/{slug}/*-design-*.md (at root)
gstack-artifacts-init --host github
gstack-config set artifacts_sync_mode full
- Run any gstack skill
gstack-brain-sync --status — design doc absent from queue
- Inspect the synced repo on GitHub — design doc not pushed
Suggested fix
Add to bin/gstack-artifacts-init allowlist generation (lines 224-234):
projects/*/*-design-*.md
projects/*/*-eng-review-test-plan-*.md
projects/*/*-test-plan-*.md
These patterns are root-anchored and don't conflict with the existing designs/*.md patterns (* in a glob doesn't match path separators).
Alternative (more conservative): canonicalize the write paths in /office-hours and /plan-eng-review to use the designs/ subdirectory. But this would break the cross-skill readers cited above, so the allowlist fix is the lower-risk path.
Workaround
Append the three patterns below the # ---- USER ADDITIONS BELOW ---- marker in ~/.gstack/.brain-allowlist. Survives gstack-artifacts-init re-runs.
Related
Problem
The
.brain-allowlistgenerated bygstack-artifacts-init(current at v1.27.0.0+, seebin/gstack-artifacts-init:224-234) includes patterns for thedesigns/andceo-plans/subdirectories:But several skills write their output at the project root, not in those subdirectories:
/office-hoursBuilder/Startupprojects/{slug}/{user}-{branch}-design-{datetime}.mdoffice-hours/SKILL.md:1566/plan-eng-reviewprojects/{slug}/{user}-{branch}-eng-review-test-plan-{datetime}.mdplan-eng-review/SKILL.md:1149/autoplan(test plan)projects/{slug}/{user}-{branch}-test-plan-{datetime}.mdautoplan/SKILL.md:1334Cross-skill readers correctly glob these at the project root:
plan-ceo-review/SKILL.md:897—ls -t ~/.gstack/projects/$SLUG/*-design-*.mdplan-eng-review/SKILL.md:801— sameautoplan/SKILL.md:841,1003— sameSo the files belong at root; the allowlist is the inconsistent piece.
Effect
With
artifacts_sync_mode=full,gstack-brain-syncstill skips:/office-hoursdesign docs/plan-eng-reviewtest plans/autoplantest plansCEO plans sync correctly (they live under
ceo-plans/), but the input designs they reference do not. This breaks the cross-machine "ceo-plan references the design" chain — pull on machine B, you get the CEO plan but not the underlying design doc.This has the same shape as #1441 (v1.27.0.0 rename missed the config key in one place): the rename release moved/renamed things but the allowlist was never audited against current skill write paths.
Repro
/office-hoursBuilder mode → produces~/.gstack/projects/{slug}/*-design-*.md(at root)gstack-artifacts-init --host githubgstack-config set artifacts_sync_mode fullgstack-brain-sync --status— design doc absent from queueSuggested fix
Add to
bin/gstack-artifacts-initallowlist generation (lines 224-234):These patterns are root-anchored and don't conflict with the existing
designs/*.mdpatterns (*in a glob doesn't match path separators).Alternative (more conservative): canonicalize the write paths in
/office-hoursand/plan-eng-reviewto use thedesigns/subdirectory. But this would break the cross-skill readers cited above, so the allowlist fix is the lower-risk path.Workaround
Append the three patterns below the
# ---- USER ADDITIONS BELOW ----marker in~/.gstack/.brain-allowlist. Survivesgstack-artifacts-initre-runs.Related
/office-hoursoutput to.claude/plans/, causing divergence with the.gstack/copy. The.gstack/write itself works in that report; this report is about that write not being synced.