fix(artifacts): sync the decision store, which no allowlist glob matched

gstack-decision-log enqueues projects/<slug>/decisions.jsonl after every write,
but none of the 16 managed globs matched it, so compute_paths_to_stage rejected
every one at its "must match at least one allowlist glob" check.

The writer and the syncer disagreed silently: enabling artifacts sync backed up
learnings, plans, designs and timelines -- everything except the durable decision
ledger -- and nothing reported a miss, because a dropped path prints exactly what
a synced one does when the queue is otherwise empty.

Add the three decisions.* globs and class them artifact so they also sync in
artifacts-only mode.

The test reads the heredocs out of the script rather than executing it:
gstack-artifacts-init.test.ts drives the real script through #!/bin/bash shims and
a colon-separated PATH, so it cannot run on Windows -- the platform where the
companion slug bug bit.
This commit is contained in:
H M Ibtihal Utsho
2026-08-16 08:45:13 -07:00
committed by Garry Tan
parent 890fcacde5
commit de670f69c8
2 changed files with 77 additions and 0 deletions
+11
View File
@@ -291,6 +291,14 @@ projects/*/*-design-*.md
projects/*/*-test-plan-*.md
projects/*/*-eng-review-test-plan-*.md
projects/*/timeline.jsonl
# The decision store. gstack-decision-log enqueues projects/<slug>/decisions.jsonl
# after EVERY write, but no glob above matched it, so compute_paths_to_stage rejected
# all of them at its "must match at least one allowlist glob" check -- a writer
# enqueueing a path the syncer is guaranteed to drop. Without these the durable
# decision ledger never leaves the machine, on any platform.
projects/*/decisions.jsonl
projects/*/decisions.active.json
projects/*/decisions.archive.jsonl
retros/*.md
developer-profile.json
builder-journey.md
@@ -318,6 +326,9 @@ cat > "$GSTACK_HOME/.brain-privacy-map.json" <<'EOF'
{"pattern": "projects/*/*-design-*.md", "class": "artifact"},
{"pattern": "projects/*/*-test-plan-*.md", "class": "artifact"},
{"pattern": "projects/*/*-eng-review-test-plan-*.md", "class": "artifact"},
{"pattern": "projects/*/decisions.jsonl", "class": "artifact"},
{"pattern": "projects/*/decisions.active.json", "class": "artifact"},
{"pattern": "projects/*/decisions.archive.jsonl", "class": "artifact"},
{"pattern": "retros/*.md", "class": "artifact"},
{"pattern": "builder-journey.md", "class": "artifact"},
{"pattern": "projects/*/timeline.jsonl", "class": "behavioral"},