Merge bugfix/blk-011-gsd-roadmap into develop
This commit is contained in:
commit
ce4391a62f
@ -28,7 +28,7 @@ rules:
|
|||||||
| BLK-006 | 2026-05-21 | `profile.sh current` false-negative via `~/.claude` symlink (`cd` not `cd -P`) | resolved |
|
| BLK-006 | 2026-05-21 | `profile.sh current` false-negative via `~/.claude` symlink (`cd` not `cd -P`) | resolved |
|
||||||
| BLK-007 | 2026-06-02 | 6 gstack source skills (ios-*, spec) unlinked post-bump — invisible to profiles + `gstack on` | resolved |
|
| BLK-007 | 2026-06-02 | 6 gstack source skills (ios-*, spec) unlinked post-bump — invisible to profiles + `gstack on` | resolved |
|
||||||
| BLK-010 | 2026-06-27 | init-project: scaffold (STEP 5) + bootstrap README (5b) have no deterministic commit owner; worktree `add -b` on unborn HEAD | resolved (uncommitted) |
|
| BLK-010 | 2026-06-27 | init-project: scaffold (STEP 5) + bootstrap README (5b) have no deterministic commit owner; worktree `add -b` on unborn HEAD | resolved (uncommitted) |
|
||||||
| BLK-011 | 2026-06-27 | init-project STEP 13 GSD post-FINISH creates ROADMAP.md → stranded doc (3rd post-FINISH artifact) | open |
|
| BLK-011 | 2026-06-27 | init-project STEP 13 GSD post-FINISH creates ROADMAP.md → stranded doc (3rd post-FINISH artifact) | resolved (STEP 12 removed) |
|
||||||
| BLK-012 | 2026-06-29 | gitflow_init half-applied: socle-commit failure swallowed → hook activated on partial run → re-run self-blocks | resolved |
|
| BLK-012 | 2026-06-29 | gitflow_init half-applied: socle-commit failure swallowed → hook activated on partial run → re-run self-blocks | resolved |
|
||||||
|
|
||||||
---
|
---
|
||||||
@ -139,8 +139,9 @@ rules:
|
|||||||
- **Date**: 2026-06-27
|
- **Date**: 2026-06-27
|
||||||
- **Friction**: init-project STEP 13 (GSD v2 init) runs post-FINISH (STEP 11). `gsd init` creates `.gsd/` + `ROADMAP.md` (a public doc). Created AFTER FINISH integrates → ROADMAP never in the merge/PR. Same PR-stranding class as the doc-sync twin, 3rd post-FINISH artifact.
|
- **Friction**: init-project STEP 13 (GSD v2 init) runs post-FINISH (STEP 11). `gsd init` creates `.gsd/` + `ROADMAP.md` (a public doc). Created AFTER FINISH integrates → ROADMAP never in the merge/PR. Same PR-stranding class as the doc-sync twin, 3rd post-FINISH artifact.
|
||||||
- **Real cause**: artifact-producing step ordered after FINISH (= BDR-034 class). `gsd init` is a CLI mechanism distinct from doc-syncer; ROADMAP is sync-only for doc-syncer (never created by it, BDR-022 rules), so the doc-sync coupled chantier does not touch it.
|
- **Real cause**: artifact-producing step ordered after FINISH (= BDR-034 class). `gsd init` is a CLI mechanism distinct from doc-syncer; ROADMAP is sync-only for doc-syncer (never created by it, BDR-022 rules), so the doc-sync coupled chantier does not touch it.
|
||||||
- **Solution**: open — separate thread. Candidate: reorder GSD before FINISH, or commit ROADMAP after `gsd init`. Out of scope for doc-sync coupled (different mechanism).
|
- **Solution**: open — separate thread. Candidate: reorder GSD before FINISH, or commit ROADMAP after `gsd init`. Out of scope for doc-sync coupled (different mechanism). [historical candidates — NOT the route taken]
|
||||||
- **Status**: open
|
- **Resolution**: RESOLVED 2026-06-29 — by REMOVAL, not by committing the orphan. init-project STEP 12 (speculative gsd auto-bootstrap) DELETED → ROADMAP/.gsd never created post-FINISH → orphan dissolves, no commit helper built. TRUE reason: auto-bootstrapping a heavy multi-session ENGINE the sole user doesn't use, AT project-creation, is bad on its own terms. NOT the initial framing "ROADMAP redundant with TODO" — that was wrong and would have aged badly: gsd ≫ roadmap (state machine / crash-recovery / cost / parallel / worktree), and TODO ≠ gsd ROADMAP (different altitude + consumer). Reasoning trace: BOTH initial premises (gsd=only-roadmap; TODO-redundant) REFUTED on read, yet conclusion A (remove STEP 12) held for the STRONGER reason — right answer, reason corrected before engraving. Deliberate gsd use KEPT (onboarder PHASE 6 `/onboard add gsd`, plugin-advisor reco, status-reporter `.gsd/` read, USAGE `gsd init`). Removed STEP 12 + header 12→11-step + 10c note + 4 USAGE refs; coherence sweep = zero dangling refs. [[LRN-072]]
|
||||||
|
- **Status**: resolved (init-project STEP 12 removed — `skills/init-project/SKILL.md`; branch bugfix/blk-011-gsd-roadmap). Title says "STEP 13" — stale (was STEP 12 at removal per BDR-036 renumber); left per append-only.
|
||||||
- **Reference**: discovered in doc-sync-coupled analysis (2026-06-27). Sibling [[BLK-010]] + twin [[BDR-034]].
|
- **Reference**: discovered in doc-sync-coupled analysis (2026-06-27). Sibling [[BLK-010]] + twin [[BDR-034]].
|
||||||
|
|
||||||
## BLK-012 — gitflow_init non-transactional: socle-commit failure swallowed → hook activated on partial run → re-run self-blocks
|
## BLK-012 — gitflow_init non-transactional: socle-commit failure swallowed → hook activated on partial run → re-run self-blocks
|
||||||
|
|||||||
@ -229,4 +229,9 @@ rules:
|
|||||||
- Scope tranché ①+②, ② first, never B, ③ deferred. Built test-first (Iron Law RED→GREEN, RED shown before each GREEN).
|
- Scope tranché ①+②, ② first, never B, ③ deferred. Built test-first (Iron Law RED→GREEN, RED shown before each GREEN).
|
||||||
- ② masked-commit fix ([[LRN-071]]) — 3rd occurrence of the swallowed-commit pattern ([[LRN-066]], [[LRN-068]]/[[BLK-012]]). `doc-commit.sh` exit 5 fail-loud. RED T8 proved the masking (rc 0 + stale hash + false "committed"), GREEN 32/32.
|
- ② masked-commit fix ([[LRN-071]]) — 3rd occurrence of the swallowed-commit pattern ([[LRN-066]], [[LRN-068]]/[[BLK-012]]). `doc-commit.sh` exit 5 fail-loud. RED T8 proved the masking (rc 0 + stale hash + false "committed"), GREEN 32/32.
|
||||||
- ① MINOR-shape oracle ([[BDR-040]], `lib/doc-shape.sh`) — 19/19 + behavioral Scenario D. Engraved limit: structural floor, NOT semantic (reduction of RISK-1's gross cases, not elimination).
|
- ① MINOR-shape oracle ([[BDR-040]], `lib/doc-shape.sh`) — 19/19 + behavioral Scenario D. Engraved limit: structural floor, NOT semantic (reduction of RISK-1's gross cases, not elimination).
|
||||||
- Branch `feature/minor-gate-strengthening`; committed code + memory; no finish yet (awaiting signal).
|
- Branch `feature/minor-gate-strengthening`; committed code + memory; FINISHED → develop (`0f0bd7f`) on explicit signal. Held the merge until the explicit go — the "avis-en-question" wasn't it.
|
||||||
|
|
||||||
|
## 2026-06-29 (cont. 2) — BLK-011 resolved by REMOVAL (init-project GSD bootstrap)
|
||||||
|
- User challenge reframed the chantier: don't plumb a commit for the stranded ROADMAP — ask if gsd belongs at init AT ALL. Read REFUTED both my option-premises (gsd ≫ roadmap; TODO ≠ gsd ROADMAP) but conclusion A (remove STEP 12) held for a STRONGER reason: speculative auto-bootstrap of an unused multi-session engine at creation is bad per se. Best fix = NEGATIVE diff ([[LRN-072]]).
|
||||||
|
- Removed init-project STEP 12 (+ header 12→11-step, 10c note, 4 USAGE coherence fixes). Coherence sweep = zero dangling STEP-12 refs (the "test" for a removal). Deliberate gsd use KEPT (onboarder PHASE 6, plugin-advisor, status-reporter). [[BLK-011]] → resolved.
|
||||||
|
- Branch `bugfix/blk-011-gsd-roadmap`; no finish yet (awaiting signal).
|
||||||
|
|||||||
@ -70,6 +70,7 @@ rules:
|
|||||||
| LRN-069 | 2026-06-29 | token-authed remote writes under CC perms: inline-env (never `export`), token in header not argv, keep `git push` on ASK as the gate | scripting git/curl writes to a private remote from tool calls |
|
| LRN-069 | 2026-06-29 | token-authed remote writes under CC perms: inline-env (never `export`), token in header not argv, keep `git push` on ASK as the gate | scripting git/curl writes to a private remote from tool calls |
|
||||||
| LRN-070 | 2026-06-29 | clean-tree-gated migration blocked by a dirty submodule → diagnose pointer-vs-content; for a local edit use `submodule.<name>.ignore=dirty`, never blind reset | migrating/releasing a superproject whose submodule carries intentional local edits |
|
| LRN-070 | 2026-06-29 | clean-tree-gated migration blocked by a dirty submodule → diagnose pointer-vs-content; for a local edit use `submodule.<name>.ignore=dirty`, never blind reset | migrating/releasing a superproject whose submodule carries intentional local edits |
|
||||||
| LRN-071 | 2026-06-29 | fail-loud must cover the helper's OWN commit, not just its inputs — 3rd occurrence of the swallowed-commit pattern (a failed op masked by a later returning-0 statement) | any helper whose return value gates a downstream "success" — audit every fallible internal op propagates, esp. the commit |
|
| LRN-071 | 2026-06-29 | fail-loud must cover the helper's OWN commit, not just its inputs — 3rd occurrence of the swallowed-commit pattern (a failed op masked by a later returning-0 statement) | any helper whose return value gates a downstream "success" — audit every fallible internal op propagates, esp. the commit |
|
||||||
|
| LRN-072 | 2026-06-29 | a stranded-artifact bug can be fixed by NOT creating the artifact (negative diff), not by plumbing its commit — if the producing step is speculative/unused, delete it | a stranded/duplicated/uncommitted-artifact bug — before building machinery, ask if the PRODUCING step is wanted; speculative-at-creation → remove, deliberate-on-demand → keep |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@ -801,3 +802,8 @@ rules:
|
|||||||
- **RECURRENT (3×) — audit systematically, not an isolated bug**: same fail-silent-where-it-must-fail-loud class in the surgical-commit family — [[LRN-066]] (`deploy-commit.sh`: porcelain hides a git-ignored path → silent no-op; fix = loud rc 5) + [[LRN-068]]/[[BLK-012]] (`gitflow_init`: socle-commit failure swallowed by `||` then `git branch` returned 0 → init continued past the dead commit) + this. The common mechanism: a fallible op (esp. a commit) whose failure isn't propagated, MASKED by a later returning-0 statement. The motif RETURNS; treat it as a known smell.
|
- **RECURRENT (3×) — audit systematically, not an isolated bug**: same fail-silent-where-it-must-fail-loud class in the surgical-commit family — [[LRN-066]] (`deploy-commit.sh`: porcelain hides a git-ignored path → silent no-op; fix = loud rc 5) + [[LRN-068]]/[[BLK-012]] (`gitflow_init`: socle-commit failure swallowed by `||` then `git branch` returned 0 → init continued past the dead commit) + this. The common mechanism: a fallible op (esp. a commit) whose failure isn't propagated, MASKED by a later returning-0 statement. The motif RETURNS; treat it as a known smell.
|
||||||
- **fix**: guard the commit — `if ! git commit …; then LOUD + return 5; fi`. rc 5 = "tried, git refused" (distinct from rc 3 = "could not start"). Empty stdout (no stale hash), loud stderr. Proven by T8: RED showed the masking (rc 0 + stale hash + false "committed"), GREEN rc 5 + empty + REJECTED, 32/32.
|
- **fix**: guard the commit — `if ! git commit …; then LOUD + return 5; fi`. rc 5 = "tried, git refused" (distinct from rc 3 = "could not start"). Empty stdout (no stale hash), loud stderr. Proven by T8: RED showed the masking (rc 0 + stale hash + false "committed"), GREEN rc 5 + empty + REJECTED, 32/32.
|
||||||
- **future application**: any helper whose RETURN VALUE gates a downstream "success" — audit that EVERY fallible internal op propagates its failure, ESPECIALLY the load-bearing commit. `set -uo pipefail` without `-e` does NOT abort mid-function; an unchecked failing command followed by a returning-0 line exits 0 and lies. Check `cmd || other` forms, no-`-e` blocks, every "report success after the op" line. Test the partial-failure path (commit-blocked repo) → must fail loud, empty, non-zero.
|
- **future application**: any helper whose RETURN VALUE gates a downstream "success" — audit that EVERY fallible internal op propagates its failure, ESPECIALLY the load-bearing commit. `set -uo pipefail` without `-e` does NOT abort mid-function; an unchecked failing command followed by a returning-0 line exits 0 and lies. Check `cmd || other` forms, no-`-e` blocks, every "report success after the op" line. Test the partial-failure path (commit-blocked repo) → must fail loud, empty, non-zero.
|
||||||
|
|
||||||
|
## LRN-072 — a stranded-artifact bug can be fixed by NOT creating the artifact (negative diff), not by plumbing its commit
|
||||||
|
- **pattern**: 3rd member of the post-FINISH-artifact class (memory, docs, GSD ROADMAP) — but UNLIKE the first two (real artifacts ALWAYS produced → couple a commit), the GSD artifact came from a SPECULATIVE, opt-in, rarely-used producer (init-project auto-bootstrapping a multi-session engine at project creation). The reflex fix (reorder + build `gsd-commit.sh` + tests) would have added machinery to faithfully commit an artifact nobody uses. The right fix was a NEGATIVE diff: delete the producer → orphan never created → bug dissolves, zero new code (BLK-011).
|
||||||
|
- **the refutation that got there**: the framing "ROADMAP redundant with TODO" was WRONG (gsd ≫ roadmap = state machine/crash-recovery/cost/parallel/worktree; TODO ≠ gsd ROADMAP = different altitude + consumer). Reading REFUTED both premises, yet the CONCLUSION (remove the step) held for a STRONGER reason: speculatively scaffolding a heavy engine the sole user doesn't use, at creation, is bad per se. Right answer, reason corrected before engraving — change the QUESTION before changing the code.
|
||||||
|
- **future application**: a stranded / duplicated / uncommitted-artifact bug → BEFORE building machinery to handle the artifact, ask whether the step that PRODUCES it is actually used / wanted / non-speculative. Speculative or unused (esp. a personal/single-user repo) → DELETE the producer; the cleanest fix is the absent one. Distinguish speculative-at-creation (REMOVE) from deliberate-on-demand (KEEP). Family: [[BLK-010]], [[BLK-011]], [[BDR-036]].
|
||||||
|
|||||||
@ -262,7 +262,7 @@ reorder + CREATE doc-commit.sh/.md (mirror memory-commit, 4 deltas). Surface-don
|
|||||||
- [x] Task 6b — wire doc-commit into feat/bugfix/hotfix DOC SYNC — 1b01b95. commit-change exempt (no DOC SYNC); hotfix wired (include no-ops on empty).
|
- [x] Task 6b — wire doc-commit into feat/bugfix/hotfix DOC SYNC — 1b01b95. commit-change exempt (no DOC SYNC); hotfix wired (include no-ops on empty).
|
||||||
- [x] Task 7 — close: `run-doc-behavioral.md` + shellcheck clean + 28/28 + CHANGELOG + BDR-036 / LRN-058-060 / EVAL-008. surface-replaces-gate + partial-init + scope-expansion engraved honestly.
|
- [x] Task 7 — close: `run-doc-behavioral.md` + shellcheck clean + 28/28 + CHANGELOG + BDR-036 / LRN-058-060 / EVAL-008. surface-replaces-gate + partial-init + scope-expansion engraved honestly.
|
||||||
- [x] RESOLVED 2026-06-29 — [[BLK-010]] closed by `gitflow_init` root commit (init-project STEP 5f): scaffold/README get a deterministic commit owner + HEAD born before the worktree step. Verified (mechanism + STEP 5f wiring + T2 test); blockers.md index+body updated.
|
- [x] RESOLVED 2026-06-29 — [[BLK-010]] closed by `gitflow_init` root commit (init-project STEP 5f): scaffold/README get a deterministic commit owner + HEAD born before the worktree step. Verified (mechanism + STEP 5f wiring + T2 test); blockers.md index+body updated.
|
||||||
- [ ] flagged separate — [[BLK-011]] GSD ROADMAP.md post-FINISH (now STEP 12 after Task 5 renumber; BLK-011 record itself left at STEP 13 — append-only)
|
- [x] RESOLVED 2026-06-29 — [[BLK-011]] closed by REMOVAL: init-project STEP 12 (speculative gsd auto-bootstrap) deleted → orphan never created. Negative diff, not commit-plumbing ([[LRN-072]]). See chantier below.
|
||||||
- [x] DONE 2026-06-29 — doc-sync MINOR gate strengthened: ① shape-oracle [[BDR-040]] + ② masked-commit fix [[LRN-071]] (③ branch-guard deferred). See chantier below.
|
- [x] DONE 2026-06-29 — doc-sync MINOR gate strengthened: ① shape-oracle [[BDR-040]] + ② masked-commit fix [[LRN-071]] (③ branch-guard deferred). See chantier below.
|
||||||
|
|
||||||
## 2026-06-29 — gitflow universal model + 6-repo migration (DONE)
|
## 2026-06-29 — gitflow universal model + 6-repo migration (DONE)
|
||||||
@ -285,5 +285,15 @@ the literal one (blocking gate on MINOR) contradicts engraved [[BDR-036]]. Scope
|
|||||||
- [x] ① MINOR-shape oracle — `lib/doc-shape.sh` ([[BDR-040]]) + `run-doc-shape.sh` 19/19 (boundary + env-override). Wired doc-syncer STEP A4 (escalate whole set → existing SIGNIFICANT gate; no=revert all, select=keep subset) + `doc-commit.md` ACKNOWLEDGMENTS coherence + behavioral Scenario C/D
|
- [x] ① MINOR-shape oracle — `lib/doc-shape.sh` ([[BDR-040]]) + `run-doc-shape.sh` 19/19 (boundary + env-override). Wired doc-syncer STEP A4 (escalate whole set → existing SIGNIFICANT gate; no=revert all, select=keep subset) + `doc-commit.md` ACKNOWLEDGMENTS coherence + behavioral Scenario C/D
|
||||||
- [x] shellcheck clean (doc-commit.sh, doc-shape.sh, both test harnesses); coherence ref-sweep clean
|
- [x] shellcheck clean (doc-commit.sh, doc-shape.sh, both test harnesses); coherence ref-sweep clean
|
||||||
- [x] Capitalize — BDR-040 + LRN-071 + CHANGELOG (Added/Fixed) + journal 2026-06-29 (cont.)
|
- [x] Capitalize — BDR-040 + LRN-071 + CHANGELOG (Added/Fixed) + journal 2026-06-29 (cont.)
|
||||||
- [ ] FINISH — merge feature/minor-gate-strengthening → develop (awaiting explicit human signal)
|
- [x] FINISH — merged feature/minor-gate-strengthening → develop (`0f0bd7f`) on explicit signal
|
||||||
- [~] ③ branch-guard in doc-commit DEFERRED — duplicates protected-base predicate 3rd time (lib + hook + here); all migrated repos have the hook. Reconsider only for repos outside `gitflow init`
|
- [~] ③ branch-guard in doc-commit DEFERRED — duplicates protected-base predicate 3rd time (lib + hook + here); all migrated repos have the hook. Reconsider only for repos outside `gitflow init`
|
||||||
|
|
||||||
|
## 2026-06-29 — BLK-011 GSD ROADMAP post-FINISH [branch bugfix/blk-011-gsd-roadmap]
|
||||||
|
User reframed: don't plumb a commit for the stranded ROADMAP — ask if gsd belongs at init at all.
|
||||||
|
Read refuted both option-premises (gsd ≫ roadmap; TODO ≠ gsd ROADMAP) but conclusion A held for a
|
||||||
|
stronger reason: speculative auto-bootstrap of an unused engine at creation is bad per se ([[LRN-072]]).
|
||||||
|
- [x] Resolve by REMOVAL — deleted init-project STEP 12 (negative diff −26/+13), not a commit helper
|
||||||
|
- [x] Ref-coherence sweep ("test" for a removal) — header 12→11-step, 10c note, 4 USAGE refs; zero dangling STEP-12 refs repo-wide
|
||||||
|
- [x] Scope guardrails — deliberate gsd use KEPT (onboarder PHASE 6, plugin-advisor, status-reporter)
|
||||||
|
- [x] Capitalize — [[BLK-011]] resolved (true reason + premise trace) + [[LRN-072]] + CHANGELOG Removed + journal 2026-06-29 (cont. 2)
|
||||||
|
- [ ] FINISH — merge bugfix/blk-011-gsd-roadmap → develop (awaiting explicit human signal)
|
||||||
|
|||||||
@ -38,6 +38,7 @@ Format follows [Keep a Changelog](https://keepachangelog.com/).
|
|||||||
- Default model / effort settings updated
|
- Default model / effort settings updated
|
||||||
|
|
||||||
### Removed
|
### Removed
|
||||||
|
- `/init-project`: STEP 12 (speculative GSD v2 auto-bootstrap at project creation) removed — it ran `gsd init` AFTER FINISH, creating `ROADMAP.md` + `.gsd/` stranded outside the merge/PR (BLK-011), to bootstrap a multi-session engine that is opt-in and rarely used. Resolved by removal, not by plumbing a commit: GSD stays initializable on-demand (`/onboard add gsd`, or `gsd init` in a terminal), `/status` still reads `.gsd/`, and plugin-advisor still recommends it for multi-session work. init-project is now an 11-step pipeline
|
||||||
- `disable-model-invocation` frontmatter removed repo-wide (aligns skills with CLAUDE.md routing)
|
- `disable-model-invocation` frontmatter removed repo-wide (aligns skills with CLAUDE.md routing)
|
||||||
- Caveman plugin always-on integration purged — plugin disabled + uninstalled; SessionStart/UserPromptSubmit hooks, standalone hook files, `install-plugins.sh` STEP 5.5, `update-all.sh` refresh step, `plugins.lock.json` entry, `doctor.sh` checks, and docs removed. On a subscription plan its ~75% output-token compression has no cost benefit, and the always-on hooks added friction on validation gates + client deliverables. The unrelated memory-registry terse-format convention is kept.
|
- Caveman plugin always-on integration purged — plugin disabled + uninstalled; SessionStart/UserPromptSubmit hooks, standalone hook files, `install-plugins.sh` STEP 5.5, `update-all.sh` refresh step, `plugins.lock.json` entry, `doctor.sh` checks, and docs removed. On a subscription plan its ~75% output-token compression has no cost benefit, and the always-on hooks added friction on validation gates + client deliverables. The unrelated memory-registry terse-format convention is kept.
|
||||||
|
|
||||||
|
|||||||
20
USAGE.md
20
USAGE.md
@ -195,7 +195,6 @@ Hotfix/quick fix → tout OFF sauf superpowers
|
|||||||
# → STEP 8-10 : implémentation TDD + review
|
# → STEP 8-10 : implémentation TDD + review
|
||||||
# → STEP 10b-c: capitalize mémoire + sync README (avant finish)
|
# → STEP 10b-c: capitalize mémoire + sync README (avant finish)
|
||||||
# → STEP 11 : finish (merge / commit initial)
|
# → STEP 11 : finish (merge / commit initial)
|
||||||
# → STEP 12 : propose GSD v2 si multi-session détecté
|
|
||||||
|
|
||||||
# 3. Features suivantes
|
# 3. Features suivantes
|
||||||
/ship-feature "description de la feature"
|
/ship-feature "description de la feature"
|
||||||
@ -204,16 +203,16 @@ Hotfix/quick fix → tout OFF sauf superpowers
|
|||||||
### Pattern B — Projet long (multi-session, plusieurs jours) · ~1500-2500t/session CC
|
### Pattern B — Projet long (multi-session, plusieurs jours) · ~1500-2500t/session CC
|
||||||
|
|
||||||
```
|
```
|
||||||
# Même départ que Pattern A, mais au STEP 12 :
|
# Même départ que Pattern A. GSD v2 n'est PAS bootstrappé à la création
|
||||||
# → Répondre "yes" à "Initialize GSD v2?"
|
# (init-project ne propose plus gsd) — on l'initialise À LA DEMANDE, dans un
|
||||||
# → ROADMAP.md est créé avec les milestones
|
# terminal, quand on décide de passer en multi-session.
|
||||||
|
|
||||||
# À chaque reprise de session (dans Claude Code) :
|
# À chaque reprise de session (dans Claude Code) :
|
||||||
/status # snapshot : plugins + git + milestone GSD en cours
|
/status # snapshot : plugins + git + milestone GSD en cours
|
||||||
|
|
||||||
# Ensuite dans un terminal (depuis le dossier projet) :
|
# Dans un terminal (depuis le dossier projet) :
|
||||||
gsd # démarrer une session
|
gsd # démarrer une session
|
||||||
/gsd init # si pas encore fait
|
/gsd init # initialise .gsd/ + ROADMAP (une fois, à la demande)
|
||||||
/gsd auto # mode autonome, walk away
|
/gsd auto # mode autonome, walk away
|
||||||
|
|
||||||
# Pour suivre :
|
# Pour suivre :
|
||||||
@ -400,9 +399,9 @@ Verify : npx expo export --platform web --output-dir /tmp/expo-check --clear
|
|||||||
|
|
||||||
**Si le projet devient long (plusieurs features sur semaines) :**
|
**Si le projet devient long (plusieurs features sur semaines) :**
|
||||||
```
|
```
|
||||||
# STEP 12 propose GSD v2 : répondre "yes"
|
# Pour passer en multi-session, initialise GSD à la demande dans un terminal :
|
||||||
# Puis dans terminal :
|
|
||||||
gsd
|
gsd
|
||||||
|
/gsd init
|
||||||
/gsd auto
|
/gsd auto
|
||||||
# → GSD gère deck-building, sharing backend, etc. milestone par milestone
|
# → GSD gère deck-building, sharing backend, etc. milestone par milestone
|
||||||
```
|
```
|
||||||
@ -501,8 +500,8 @@ Convention: snake_case Python, camelCase TypeScript."
|
|||||||
|
|
||||||
**Workflow long avec GSD v2 :**
|
**Workflow long avec GSD v2 :**
|
||||||
```
|
```
|
||||||
# Après /init-project (STEP 12 → "yes")
|
# Après /init-project, on initialise GSD à la demande (plus auto-bootstrappé).
|
||||||
# Le ROADMAP.md généré contient :
|
# Le ROADMAP.md généré par `gsd init` contiendra :
|
||||||
# Milestone 1: Boutique in-app + Stripe
|
# Milestone 1: Boutique in-app + Stripe
|
||||||
# Milestone 2: PvP + matchmaking
|
# Milestone 2: PvP + matchmaking
|
||||||
# Milestone 3: Leaderboard + saisons
|
# Milestone 3: Leaderboard + saisons
|
||||||
@ -510,6 +509,7 @@ Convention: snake_case Python, camelCase TypeScript."
|
|||||||
# Dans un terminal :
|
# Dans un terminal :
|
||||||
cd cardforge/
|
cd cardforge/
|
||||||
gsd # démarre session GSD
|
gsd # démarre session GSD
|
||||||
|
/gsd init # crée .gsd/ + ROADMAP (à la demande — plus auto à l'init)
|
||||||
/gsd auto # GSD travaille sur Milestone 1 de façon autonome
|
/gsd auto # GSD travaille sur Milestone 1 de façon autonome
|
||||||
# → research Stripe API + docs
|
# → research Stripe API + docs
|
||||||
# → plan décomposé en tâches
|
# → plan décomposé en tâches
|
||||||
|
|||||||
@ -15,10 +15,10 @@ $ARGUMENTS
|
|||||||
## PROGRESS PROTOCOL
|
## PROGRESS PROTOCOL
|
||||||
|
|
||||||
Every STEP must announce itself with a header BEFORE its work block, so the
|
Every STEP must announce itself with a header BEFORE its work block, so the
|
||||||
user always sees where they are in the 12-step pipeline:
|
user always sees where they are in the 11-step pipeline:
|
||||||
|
|
||||||
```
|
```
|
||||||
━━━ STEP <N>/12 — <TITLE> ━━━ (~<estimated minutes>)
|
━━━ STEP <N>/11 — <TITLE> ━━━ (~<estimated minutes>)
|
||||||
why: <one sentence — what's at risk if this step is skipped>
|
why: <one sentence — what's at risk if this step is skipped>
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -248,8 +248,7 @@ patched. Report per its rc table — rc 4 = a LOUD upstream BDR-022 anomaly, not
|
|||||||
|
|
||||||
> **Scaffold commit owner = STEP 5f `gitflow init`** (root commit embeds scaffold + README +
|
> **Scaffold commit owner = STEP 5f `gitflow init`** (root commit embeds scaffold + README +
|
||||||
> `.gitignore` socle + hook, tree clean — BLK-010 closed). This doc-sync commit lands the
|
> `.gitignore` socle + hook, tree clean — BLK-010 closed). This doc-sync commit lands the
|
||||||
> patched docs on the MVP feature branch so they reach the merge. GSD STEP 12 still creates
|
> patched docs on the MVP feature branch so they reach the merge.
|
||||||
> ROADMAP.md post-FINISH (BLK-011) — separate.
|
|
||||||
|
|
||||||
## STEP 11 — FINISH
|
## STEP 11 — FINISH
|
||||||
Tests pass, build clean, no placeholders. Integrate the MVP feature into develop
|
Tests pass, build clean, no placeholders. Integrate the MVP feature into develop
|
||||||
@ -258,18 +257,6 @@ Tests pass, build clean, no placeholders. Integrate the MVP feature into develop
|
|||||||
bash "$HOME/.claude/lib/gitflow.sh" finish # feature/mvp → develop
|
bash "$HOME/.claude/lib/gitflow.sh" finish # feature/mvp → develop
|
||||||
```
|
```
|
||||||
|
|
||||||
## STEP 12 — GSD v2 INIT (optional)
|
|
||||||
If `multi-session` signal was detected in STEP 0 OR the project has >3 planned milestones:
|
|
||||||
Ask: "Initialize GSD v2 for multi-session management? (yes / skip)"
|
|
||||||
- `yes` →
|
|
||||||
1. First check: `command -v gsd` — if not found:
|
|
||||||
Print: "⚠️ GSD v2 not installed. Run `npm install -g gsd-pi` then re-run `/onboard add gsd` or `/ship-feature` to initialize later."
|
|
||||||
Do NOT attempt `gsd init`. Skip to RULES.
|
|
||||||
2. If `gsd` is in PATH: run `gsd init` in the project directory to create `.gsd/` and `ROADMAP.md`.
|
|
||||||
Populate ROADMAP.md with milestones from BRIEF (v1 features + any beyond-v1 items).
|
|
||||||
Print: "✅ GSD v2 initialized — run `gsd` in terminal then `/gsd auto` to work autonomously."
|
|
||||||
- `skip` → print: "GSD v2 skipped — use `/ship-feature` for individual features."
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## RULES
|
## RULES
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user