docs(goalv3-cc): close out Phase 1 plan with intentional build divergence#23
docs(goalv3-cc): close out Phase 1 plan with intentional build divergence#23Fearvox wants to merge 7 commits into
Conversation
29-task plan covering Phase 1 (skill scaffold + 4 scripts + 12-section SKILL.md + 7 dogfood tests) and Phase 2 (recursive dogfood: use goalv3-cc to absorb codex into CC via 4 parallel --bg Decision Packets). V3 anti-LGTM invariant wired through verdict-parse.sh source-1 override + SKILL.md section 7 + dogfood Test 5 critical-path regression check. HARD-GATE: subagent-driven execution begins next turn; no implementation work happened during plan-writing. Builds on 57a8c349 (spec + decisions + boot dossier). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
State for goalv3-cc skill lives in CWD .goal/<goal-id>/ (per spec D5). This entry prevents runtime state from polluting Windburn repo. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…rified 7-test Phase 1 dogfood complete (Tasks 21-27 of implementation plan): - T1 skill loading + T2 fast tier + T3 standard tier + T4 heavy tier (with Self-Awareness Bootstrap mandatory) + T5 anti-LGTM override + T6 cc_dispatch_mode:bg routing + T7 resume protocol. T5 (anti-LGTM override) is the V3 invariant: subagent claimed VERDICT: PASS without producing artifact, conductor overrode to FLAG via source-1+override-anti-lgtm. Real-session integration confirms Codex GPT-5.5 emergent self-anti-LGTM pattern is now codified as system guardrail in goalv3-cc. Phase 2 (recursive dogfood — use goalv3-cc to absorb codex into CC) is UNBLOCKED. Skill artifacts at ~/.claude/skills/goalv3-cc/ (not git-tracked, filesystem-only): SKILL.md 537 lines, 12 sections scripts/ 4 bash files (state-init, dispatch, verdict-parse, closeout-validate) references/ 4 templates + V3 finding doc Total 1171 lines across 9 files Builds on 7bdd860 (Task 1 .gitignore) + 69c011a (Task 1-29 plan) + 57a8c349 (spec + decisions + boot dossier). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…ence - Plan stays as design record per V3 codified pattern - Tasks 2-6 positional interface (operator choice) — intentional - Tasks 2,17-21 superseded by Phase 1 dogfood 7/7 PASS (4d326ea) - No unit test backfill — V3: real-work-is-the-test Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
This PR documents and implements side-lane relay/dogfood infrastructure around Windburn’s goalv3 and perception-bus workflows, including validation scripts, scoring, smoke tests, protocol docs, and closeout records.
Changes:
- Adds side-lane perception bus, app-server relay smoke, boundary smoke, and goal scoring scripts.
- Wires side-lane checks into
scripts/check.shand ignores.goal/state. - Adds goalv3 closeout/planning docs plus Hermes/Codex side-lane protocol, goals, pressure-test, and memory-anchor documentation.
Reviewed changes
Copilot reviewed 15 out of 17 changed files in this pull request and generated 7 comments.
Show a summary per file
| File | Description |
|---|---|
.gitignore |
Ignores .goal/ runtime state directories. |
scripts/check.sh |
Adds side-lane smoke/scorer checks to the standard verification script. |
scripts/codex-app-server-relay-smoke.mjs |
Adds live Codex app-server model-visibility smoke. |
scripts/windburn-side-lane-boundary-smoke.mjs |
Adds offline boundary fixture smoke for relay validation. |
scripts/windburn-side-lane-goal-score.mjs |
Adds receipt scoring across side-lane safety metrics. |
scripts/windburn-side-lane-perception-bus.mjs |
Adds relay inbox validation, dry-run receipts, live app-server injection, and verification. |
docs/goals/2026-05-12-hermes-windburn-dogfood-goal.md |
Adds Hermes side-lane dogfood goal prompt. |
docs/goals/2026-05-12-side-lane-goal-metrics-v0.md |
Defines side-lane scoring rubric and scorer usage. |
docs/goals/2026-05-12-side-lane-perception-bus-goal.md |
Adds perception-bus implementation goal prompt. |
docs/memory-anchor-reports/2026-05-12-we-made-it-side-lane-bus.html |
Adds HTML memory anchor for the side-lane bus milestone. |
docs/pressure-tests/2026-05-12-hermes-dogfood-boundary-smoke.md |
Records Hermes boundary smoke results and contract updates. |
docs/protocols/2026-05-12-codex-side-lane-perception-bus-v0.md |
Documents Codex side-lane perception bus contract and v0.1 usage. |
docs/protocols/2026-05-12-hermes-windburn-dogfood-v0.md |
Documents Hermes/Windburn dogfood protocol and observed runs. |
docs/research/2026-05-12-agent-social-reality-receipt-parking.md |
Adds a parked research note for agent social-reality receipts. |
docs/superpowers/closeouts/2026-05-12-goalv3-cc-phase1-dogfood.md |
Adds Phase 1 dogfood closeout evidence. |
docs/superpowers/plans/2026-05-12-goalv3-cc-PLAN-CLOSEOUT.md |
Adds formal plan closeout for intentional divergence. |
docs/superpowers/plans/2026-05-12-goalv3-cc-implementation.md |
Adds implementation plan and build-divergence section. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
|
||
| function scoreSourceTruthSafety(receipts) { | ||
| for (const r of receipts) { | ||
| if (r.errors?.some((e) => /source.?truth/i.test(e))) return "BLOCK"; | ||
| } | ||
| for (const r of receipts) { |
| await client.request("initialize", { | ||
| clientInfo: { | ||
| name: "windburn-side-lane-perception-bus", | ||
| title: "Windburn Side-Lane Perception Bus", | ||
| version: "0.1.0", | ||
| }, | ||
| capabilities: { experimentalApi: true }, | ||
| }); |
| for (const line of lines) { | ||
| try { | ||
| records.push(JSON.parse(line)); | ||
| } catch { | ||
| console.error(`parse error on inbox line: ${line.slice(0, 200)}`); |
| injected: false, | ||
| errors: r.valid ? [`app-server error: ${errorMessage}`] : r.errors, |
| # Side-lane relay checks (Node.js, no live model auth required) | ||
| node scripts/windburn-side-lane-boundary-smoke.mjs | ||
| node scripts/windburn-side-lane-goal-score.mjs --fixture smoke |
| // Scan public-facing docs and HTML files for private operator material. | ||
| // BLOCK: absolute home dir paths, credential-shaped strings, private hook paths | ||
| // FLAG: queue filenames, socket paths, local state paths | ||
| // PASS: no violations found in public surfaces | ||
|
|
||
| if (!repoRoot) return "PASS"; | ||
|
|
||
| const publicDirs = [ | ||
| path.join(repoRoot, "docs"), |
| function scoreLedgerHygiene(receiptFile) { | ||
| // Verify receipts were produced in an isolated temp dir, not the real relay ledger. | ||
| // Scorer checks the file path: receipts under system temp dirs are isolated; | ||
| // receipts under the canonical relay dir (var/side-lane-relay/) are live and | ||
| // should NOT be mutated by test smoke. | ||
| if (!receiptFile) return "PASS"; | ||
|
|
|
|
||
| **HARD-GATE invariants (operator's CLAUDE.md):** | ||
| - NEVER auto-commit. Every commit step in this plan is "present to operator + propose message + wait for explicit go". | ||
| - NEVER modify `/Users/0xvox/multica-ultimate-workbench/autopilots/` or `/Users/0xvox/.codex/` (operator-locked lanes per boot dossier). |
There was a problem hiding this comment.
[🟡 Medium] [🔵 Bug]
This new plan document includes raw operator-specific absolute local paths, which violates the repo’s public-surface safety rule to avoid exposing local absolute paths in shareable artifacts; publishing these paths leaks operator environment details and increases privacy/targeting risk. Replace concrete user paths with redacted placeholders (for example <repo-root> / <operator-home>) consistently throughout the doc. ```md
docs/superpowers/plans/2026-05-12-goalv3-cc-implementation.md
HARD-GATE invariants (operator's CLAUDE.md):
- NEVER auto-commit. Every commit step in this plan is "present to operator + propose message + wait for explicit go".
- NEVER modify
/Users/0xvox/multica-ultimate-workbench/autopilots/or/Users/0xvox/.codex/(operator-locked lanes per boot dossier).
| capabilities: { experimentalApi: true }, | ||
| }); | ||
|
|
||
| const startResult = await client.request("thread/start", { |
There was a problem hiding this comment.
[🟠 High] [🟡 Investigate]
The live bus path sends initialize and immediately calls thread/start, while the companion smoke client in this same PR sends notify("initialized") between those steps. If app-server enforces the post-initialize notification handshake, live injection can fail even though dry-run succeeds, breaking the core model-visible relay path. Align the live client handshake with the proven smoke sequence by emitting an explicit initialized notification after initialize before any thread operations. ```js
// scripts/windburn-side-lane-perception-bus.mjs
await client.request("initialize", {
clientInfo: {
name: "windburn-side-lane-perception-bus",
...
const startResult = await client.request("thread/start", {
|
Closing — base was stale ( |
Summary
Changes
docs/superpowers/plans/2026-05-12-goalv3-cc-implementation.md— added## Build divergence (intentional, V3-aligned)section near the top documenting the 3 divergencesdocs/superpowers/plans/2026-05-12-goalv3-cc-PLAN-CLOSEOUT.md— new formal closeout document (plan-said vs shipped table, why divergence, validation evidence, lessons captured)Test plan
4d326eaabsorb-codex-into-ccgoal) currently running under main session — Phase 2 in progress🤖 Generated with Claude Code