From c3d63db6e7423c2005de4c3cfad6e621cee984fb Mon Sep 17 00:00:00 2001 From: garrytan Date: Fri, 2 Oct 2026 23:52:51 +0000 Subject: [PATCH] office-hours: fix stale refs, state-root path, profile query, SESSION_ID (s07 H1, H2, H3, M7, M10; s01 H1 office-hours note) - Phase 4.5 points at Founder Resources instead of the nonexistent Beat 3.5 (H1). - builder-journey.md is written to $GSTACK_STATE_ROOT, where it is opened (H2). - builder-profile context query reads developer-profile.json, the file the migration leaves behind; drop meaningless tail (H3). - Drop issue numbers from three headings (M7) and the MANDATORY/NOT optional markers on Phase 4 (M10). - Handoff telemetry uses the echoed SESSION_ID placeholder; $_SESSION_ID is never set in a fresh shell. Template-only commit: generated SKILL.md is expected red until the regeneration commit. --- office-hours/SKILL.md.tmpl | 9 ++++---- .../sections/design-and-handoff.md.tmpl | 22 ++++++++++--------- 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/office-hours/SKILL.md.tmpl b/office-hours/SKILL.md.tmpl index 58780ecfa..1300ce7a0 100644 --- a/office-hours/SKILL.md.tmpl +++ b/office-hours/SKILL.md.tmpl @@ -41,8 +41,7 @@ gbrain: render_as: "## Prior office-hours sessions in this repo" - id: builder-profile kind: filesystem - glob: "~/.gstack/builder-profile.jsonl" - tail: 1 + glob: "~/.gstack/developer-profile.json" render_as: "## Your builder profile snapshot" - id: design-doc-history kind: filesystem @@ -237,9 +236,9 @@ Use AskUserQuestion to confirm. If the user disagrees with a premise, revise und --- -## Phase 4: Alternatives Generation (MANDATORY) +## Phase 4: Alternatives Generation -Produce 2-3 distinct implementation approaches. This is NOT optional. +Produce 2-3 distinct implementation approaches. For each approach: ``` @@ -319,7 +318,7 @@ Append one JSON line with these fields (substitute actual values from this sessi The session entry is appended to `developer-profile.json`'s `sessions[]` array. A second session entry with `mode: "resources"` is appended via `--log-session` after resource -selection in Phase 6 Beat 3.5. +selection in Phase 6 (Founder Resources). --- diff --git a/office-hours/sections/design-and-handoff.md.tmpl b/office-hours/sections/design-and-handoff.md.tmpl index 0f74cafe8..b75cd4f97 100644 --- a/office-hours/sections/design-and-handoff.md.tmpl +++ b/office-hours/sections/design-and-handoff.md.tmpl @@ -18,7 +18,7 @@ If `$PRIOR` exists, the new doc gets a `Supersedes:` field referencing it. This Write to `/{user}-{branch}-design-{datetime}.md` (`PROJECT_DIR` printed by the setup block above). -**Repo copy (dual-write, #703 + #2000).** When the session runs inside a git +**Repo copy (dual-write).** When the session runs inside a git repository, ALSO write the doc to `docs/designs/{topic-slug}.md` in the repo — visible, committable, team-shareable. The `~/.gstack` copy is still written (memory ingest and cross-session discovery depend on it); the repo copy is @@ -35,7 +35,7 @@ what teammates and plan reviews read. Rules: 3. **Name the repo path** in the handoff line and any approval questions when the repo copy exists — that's the copy the user can open and commit. -**Decision-record concision (#2000).** The doc is a decision record, not a +**Decision-record concision.** The doc is a decision record, not a transcript: one bullet per decision with its why; an approach the user ruled out DURING the session gets one line (name + rejection reason), never a resurrected full section that re-argues the case; omit template sections that @@ -313,9 +313,10 @@ Design trajectory with interpretation: "You started this as a side project. But you've named specific users, pushed back when challenged, and your designs keep getting sharper each time. I don't think this is a side project anymore. Have you thought about whether this could be a company?" This must feel earned, not broadcast. If the evidence doesn't support it, skip entirely. -**Builder Journey Summary** (session 5+): Auto-generate `~/.gstack/builder-journey.md` -with a narrative arc (not a data table). The arc tells the STORY of their journey in -second person, referencing specific things they said across sessions. Then open it: +**Builder Journey Summary** (session 5+): Auto-generate `builder-journey.md` in the +gstack state root (`$GSTACK_STATE_ROOT`, resolved by the block below) with a narrative +arc (not a data table). The arc tells the STORY of their journey in second person, +referencing specific things they said across sessions. Then open it: ```bash eval "$(~/.claude/skills/gstack/bin/gstack-paths)"; : "${GSTACK_STATE_ROOT:?gstack-paths failed; reinstall with ./setup or /gstack-upgrade}" open "$GSTACK_STATE_ROOT/builder-journey.md" @@ -333,7 +334,7 @@ The data speaks. No pitch needed. Full accumulated signal summary from the profile. -Auto-generate updated `~/.gstack/builder-journey.md` with narrative arc. Open it. +Auto-generate updated `$GSTACK_STATE_ROOT/builder-journey.md` with narrative arc (resolve the state root and open it as in the regular tier). Then proceed to Founder Resources below. @@ -341,7 +342,7 @@ Then proceed to Founder Resources below. ### Founder Resources (all tiers) -**Standing opt-out check (#538) — run FIRST:** +**Standing opt-out check — run FIRST:** ```bash ~/.claude/skills/gstack/bin/gstack-config get founder_resources 2>/dev/null || echo "true" @@ -509,13 +510,14 @@ D) Not now — I'll run a review later Net: 15 minutes of structured review now against rework risk later. On the user's SELECTION of A/B/C (not on invocation success), log the handoff, then invoke -the chosen skill via the **Skill tool** (it auto-discovers the design doc): +the chosen skill via the **Skill tool** (it auto-discovers the design doc). In both log +commands, replace `SESSION_ID` with the value the skill-start output echoed: ```bash -~/.claude/skills/gstack/bin/gstack-telemetry-log --event-type handoff --skill office-hours --outcome accepted --session-id "$_SESSION_ID" 2>/dev/null || true +~/.claude/skills/gstack/bin/gstack-telemetry-log --event-type handoff --skill office-hours --outcome accepted --session-id "SESSION_ID" 2>/dev/null || true ``` On D, log declined and stop: ```bash -~/.claude/skills/gstack/bin/gstack-telemetry-log --event-type handoff --skill office-hours --outcome declined --session-id "$_SESSION_ID" 2>/dev/null || true +~/.claude/skills/gstack/bin/gstack-telemetry-log --event-type handoff --skill office-hours --outcome declined --session-id "SESSION_ID" 2>/dev/null || true ``` The design doc at `~/.gstack/projects/` is automatically discoverable by downstream skills — they will read it during their pre-review system audit.