Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
263 commits
Select commit Hold shift + click to select a range
6e3f6bf
refactor(studios): compress per-unit batons to mechanical handoff form
jwaldrip May 19, 2026
b764ec7
refactor(studios): trim 4 more heavy hat anti-pattern walls
jwaldrip May 19, 2026
c293b6d
fix(rendering+engine): wireframe asset rendering, fix-hat relays, dri…
jwaldrip May 20, 2026
627e5ee
fix(prompts): subagent reports a one-line work summary before relayin…
jwaldrip May 20, 2026
bc52589
refactor(engine): delete haiku_dashboard — broken active-stage deriva…
jwaldrip May 20, 2026
2582130
docs(blog): rewrite dashboard cross-branch section after haiku_dashbo…
jwaldrip May 20, 2026
26aa7ab
refactor(engine): replace haiku-zap prose with a haiku_zap tool
jwaldrip May 20, 2026
0d21655
fix(engine): stage-close merge recovers from untracked-clobber instea…
jwaldrip May 20, 2026
9c8e404
fix(studios): every output-owning hat is in fix_hats; non-owning fix …
jwaldrip May 20, 2026
1e5a867
fix(engine): record stage observations via a forward-only merge gate,…
jwaldrip May 20, 2026
5dcc740
feat(statusline): per-item pool bars + agent chips, fix sealed/intent…
jwaldrip May 21, 2026
be2025b
refactor(prompts): instruction-file form for feedback fix-hat dispatch
jwaldrip May 21, 2026
c8ad8a6
refactor(prompts): instruction-file form for unit hat dispatch
jwaldrip May 21, 2026
f6c0503
fix(statusline): don't pin an arbitrary intent off-branch
jwaldrip May 21, 2026
880725a
refactor(prompts): instruction-file form for reviewer/approval/intent…
jwaldrip May 21, 2026
a2de2b9
refactor(prompts): instruction-file form for discovery dispatches
jwaldrip May 21, 2026
65b878a
feat(studios): fix-scoped hat mandates for the stage fix loop
jwaldrip May 21, 2026
720692d
feat(mcp): haiku_read_hat / haiku_read_stage; hat dispatches call them
jwaldrip May 21, 2026
d74e27e
fix(engine): route the terminal stage's close through the observation…
jwaldrip May 21, 2026
ea8412d
fix(engine): batch-aware deadlock signature — the no-op backstop
jwaldrip May 21, 2026
24e6183
fix(engine): persist deadlock tick history across MCP restarts
jwaldrip May 21, 2026
9ce1224
feat(mcp): full read-tool family + build-time snapshot, single resolu…
jwaldrip May 21, 2026
5196a77
refactor(prompts): elaborate main prompt reads studio assets via snap…
jwaldrip May 21, 2026
cd414b3
test(review-split): broaden stale pre-execute prose regex
jwaldrip May 21, 2026
95483c9
feat(statusline): persist dispatched position so the line stops jumpi…
jwaldrip May 21, 2026
9921200
refactor(prompts): all subagent dispatches snapshot via the shared re…
jwaldrip May 21, 2026
d2568d5
chore: gitignore demo intent, statusline config, regenerated artifacts
jwaldrip May 21, 2026
b71d3bf
fix(prompts): elaborate gate + verifiers read guarded intent.md via t…
jwaldrip May 21, 2026
8a9ed46
chore: checkpoint in-progress work (bundle + website studio pages WIP)
jwaldrip May 21, 2026
d6f13a1
fix(cursor): fix-loop hats pool at MAX_CONCURRENT_SUBAGENTS, drop tar…
jwaldrip May 21, 2026
42b7f5b
fix(cursor): cap + barrier unit-execution waves at MAX_CONCURRENT_SUB…
jwaldrip May 21, 2026
62c37f7
docs: phased plan to re-wire unit/fix-chain worktree isolation
jwaldrip May 21, 2026
bf7a439
feat(software): delivery-verifier intent gate + pre-tick clean-tree gate
jwaldrip May 21, 2026
1457789
fix(feedback): stop fix-loop commit messages from looking like ticket…
jwaldrip May 21, 2026
48d8c47
feat(execute): Phase 1a — fork a per-unit worktree at hat dispatch
jwaldrip May 21, 2026
5954939
test(execute): Phase 1a — unit hat dispatch forks a per-unit worktree
jwaldrip May 21, 2026
eeb55aa
chore: checkpoint in-flight skill/phase consolidation refactor
jwaldrip May 21, 2026
7d8da52
docs: converge on code-only worktree isolation (iterations stay on st…
jwaldrip May 21, 2026
f1eab38
feat(execute): Phase 2 — subagent works in its unit worktree (isolati…
jwaldrip May 21, 2026
00b6ab8
feat(elaborate): synthesize referenced files into the intent, never a…
jwaldrip May 21, 2026
2255eeb
feat(spa): granular phase track in the live stage banner
jwaldrip May 21, 2026
6cae15b
feat(execute): Phase 2 — push unit worktree on advance; delete branch…
jwaldrip May 21, 2026
ef8c9af
feat(execute): Phase 2b — recreate a unit worktree from its pushed re…
jwaldrip May 21, 2026
7bcf247
refactor(progress): own milestone order/labels/finalize in @haiku/shared
jwaldrip May 21, 2026
8dfe5fe
feat(browse): granular phase indicator + fix pre-approval blind spot
jwaldrip May 21, 2026
dda8119
feat(worktree): pickup recovery for lost unit branches (Phase 2b)
jwaldrip May 21, 2026
7c764ea
feat(runtime-verifier): perceptual design-vs-build pass + matched-pai…
jwaldrip May 21, 2026
ff8895a
feat(browse): viewable outputs + relative-asset rendering
jwaldrip May 21, 2026
94bcc37
feat(worktree): fix-chain durability helpers (Phase 6, increment 1)
jwaldrip May 21, 2026
5159dfe
feat(browse): show per-unit review + approval sign-offs
jwaldrip May 21, 2026
a8757dd
feat(worktree): wire fix-chain worktree isolation end-to-end (Phase 6…
jwaldrip May 21, 2026
b0e8de6
feat(worktree): createFixChainWorktree recreates from pushed remote (…
jwaldrip May 21, 2026
7667b49
feat(progress): group adversarial reviewers + seed engine roles
jwaldrip May 21, 2026
990c152
feat(browse): unit number in a pill
jwaldrip May 21, 2026
69707d2
docs(worktree): realign canonical docs + architecture map for worktre…
jwaldrip May 21, 2026
db67861
fix(browse): HTML output thumbnails render via raw fetch, not GraphQL…
jwaldrip May 21, 2026
dfa8bc6
fix(worktree): migration safety for in-flight in-place units (Phase 7)
jwaldrip May 21, 2026
f96425c
fix(browse): unit HTML output thumbnail paints (mount frame once)
jwaldrip May 21, 2026
23c6fde
feat(browse): active stage gets the amber dot in the pipeline
jwaldrip May 21, 2026
6864983
feat(browse): show + link unit inputs
jwaldrip May 21, 2026
c42af3c
feat(browse): unit sign-offs always show every expected role, pending…
jwaldrip May 21, 2026
8d14577
feat(browse): navigation + feedback + gherkin + studio-link pass
jwaldrip May 21, 2026
be32758
fix(browse): stage view is scoped to its stage + gets a breadcrumb
jwaldrip May 21, 2026
412a4f9
fix(browse): don't fabricate the v4 review model for v3 intents
jwaldrip May 21, 2026
7a256e6
fix(browse): v4 active-stage refinement was skipped for v5+ intents
jwaldrip May 21, 2026
9296582
fix(review-spa): stepper parity, real stage summaries, unclipped phas…
jwaldrip May 21, 2026
b9ef940
fix(execute): mid-chain relay continues the unit's OWN chain, no per-…
jwaldrip May 21, 2026
253026b
feat(delivery-verifier): gate on CI being meaningful, not just green
jwaldrip May 21, 2026
127b5d1
feat(statusline): expand adversarial reviewers into per-agent chips
jwaldrip May 21, 2026
783b5ee
feat(workflow): mandatory handoff message on every hat transition
jwaldrip May 21, 2026
33fe0f7
feat(browse): resolution badge on unit feedback + feedback counts at …
jwaldrip May 22, 2026
eac505c
refactor(drift): address PR #372 review — dedup, witness restamp bug,…
jwaldrip May 22, 2026
d036439
fix(state): route shared-block dir through projectsBaseDir so tests s…
jwaldrip May 22, 2026
3059404
feat(review): batch adversarial review/approval into one parallel dis…
jwaldrip May 22, 2026
8b3cf9d
fix(deadlock): fold elaborate_loop signals into the loop-halt signature
jwaldrip May 22, 2026
4d8a2ff
fix(ci): biome lint cleanup + replace deleted drift-markers test in c…
github-actions[bot] May 22, 2026
c016cc6
fix(hats): default classifier + feedback-assessor to sonnet, not haiku
jwaldrip May 22, 2026
9d00472
fix(hats): default studio validator fix-hats to sonnet, not haiku
jwaldrip May 22, 2026
2667232
feat(brief): per-stage user-facing BRIEF before the review gate (engine)
jwaldrip May 22, 2026
f8039c5
fix(review): decouple stage review/approval self-stamp from the workf…
jwaldrip May 22, 2026
470a410
feat(brief): surface the stage BRIEF at the review gate (SPA + wire)
jwaldrip May 22, 2026
d048113
refactor(fix-hats): consolidate validator + reconciler to a global tier
jwaldrip May 22, 2026
3372e3e
feat(discovery): match adversarial-review shape — batched prompt + chips
jwaldrip May 22, 2026
fd524bc
fix(engine): close frozen-spec churn + three lock-blocking footguns
jwaldrip May 22, 2026
ce03ded
fix(engine): close frozen-spec churn + three lock-blocking footguns
jwaldrip May 22, 2026
964e836
fix(spa): surface FB-NN id chip + render feedback markdown inline
jwaldrip May 22, 2026
bb3fcbe
fix(show): make /haiku:show non-blocking; reap ad-hoc session on Done
jwaldrip May 22, 2026
d307ee6
feat(review): exclude runtime-observation roles from the pre-execute …
jwaldrip May 22, 2026
8cf38e8
fix(git): always gitignore the worktree pool; stop the exclude-pathsp…
jwaldrip May 22, 2026
48613bf
feat(review): feed existing feedback into review agents so they don't…
jwaldrip May 22, 2026
635878b
fix(drift): close the intra-stage input==output baton leak
jwaldrip May 22, 2026
b4a5c28
fix(drift): close the intra-stage input==output baton leak
jwaldrip May 22, 2026
8904deb
fix(ci): create missing review-role-classes barrel + biome lint cleanup
github-actions[bot] May 22, 2026
5058654
fix(worktree): stop sibling-unit frontmatter loss on worktree merge-back
jwaldrip May 23, 2026
5086ef9
feat(units): build-class stages require a quality_gates field at writ…
jwaldrip May 23, 2026
91039c9
chore(branch): commit in-flight witness-model + UI working changes
jwaldrip May 23, 2026
d5000db
merge: integrate rebased origin/refactor/drift-cleanup-witness-model
jwaldrip May 23, 2026
8f3713b
style(engine): biome cleanup on packages/haiku/src after the merge
jwaldrip May 23, 2026
ac62791
fix(ci): green the branch — boot crash, god-file, and review findings
jwaldrip May 23, 2026
a97153e
fix(autopilot): no user interaction during stage elaboration
jwaldrip May 23, 2026
7f603e7
fix(ci): remove unused resolveStudioFilePath import + double blank line
github-actions[bot] May 23, 2026
6dde755
fix(ci): biome format — single quotes + split sections.push in decompose
github-actions[bot] May 23, 2026
a59b65d
test(engine): pin deriveUnitStatus truth table before hat-loop unific…
jwaldrip May 23, 2026
cdcd383
refactor(engine): converge unit + feedback hat dispatch on one assembler
jwaldrip May 24, 2026
96c2f58
feat(feedback): severity on findings + severity-first fix-loop dispatch
jwaldrip May 24, 2026
b53e121
refactor(engine): share reject-target resolution across unit + feedba…
jwaldrip May 24, 2026
414398f
feat(engine): role-aware reject routing — bounce to the builder, not …
jwaldrip May 24, 2026
fe99292
fix(engine): whitelist intent-root telemetry in the unit-scope validator
jwaldrip May 24, 2026
e2684a1
feat(engine): haiku_unit_reset — single-unit recovery primitive
jwaldrip May 24, 2026
7677c71
fix(engine): set_unit_iterations rejects an explicit empty array
jwaldrip May 24, 2026
2348c6c
feat(engine): tiered full-chain handoff baton + unit baton directive
jwaldrip May 24, 2026
cd5396c
refactor(security): red/blue out of the per-unit loop — adversarial r…
jwaldrip May 24, 2026
f891ba2
docs(architecture): §3.5 — adversarial review is a stage concern, not…
jwaldrip May 24, 2026
0264c3c
feat(engine): reconcile units whose iterations reference a removed hat
jwaldrip May 24, 2026
b0b72a4
feat(studios): activate role-aware routing on the multi-verify stages
jwaldrip May 24, 2026
2dfe33e
chore(website): regenerate workflow diagram + prototype content for t…
jwaldrip May 24, 2026
39b7b0a
docs: sync paper + docs to the security reshape (adversarial review i…
jwaldrip May 24, 2026
e0a0639
feat(feedback): severity-gated fix-loop activation + re-review anti-c…
jwaldrip May 24, 2026
9d4fb72
fix(review): converge the pre-execute review gate (bug report BUG-1)
jwaldrip May 24, 2026
096f07a
feat(review): surface decisions to lenses + severity in SPA browse (B…
jwaldrip May 24, 2026
9928084
fix(worktree): guard engine state through the per-tick downstream syn…
jwaldrip May 24, 2026
df8c885
build: rebuild MCP bundle after downstream-sync guard
jwaldrip May 24, 2026
2d7a2dd
fix(prompt): disambiguate the record_observations path (repo tree, no…
jwaldrip May 24, 2026
7d8ecbc
fix(engine): commit the migration output in the migrated action (dirt…
jwaldrip May 24, 2026
1da3b5b
fix(mandate): feedback-assessor must not close while documenting a bl…
jwaldrip May 24, 2026
b2f1fb2
refactor(design): software/design reject-to-target — drop the upstrea…
jwaldrip May 24, 2026
f2856e8
fix(migrate): no-regress invariant — never downgrade an intent's sche…
jwaldrip May 24, 2026
cc7bf08
fix(gamedev): role markers on prototype's double-verify loop + docume…
jwaldrip May 24, 2026
6363d70
Merge branch 'refactor/drift-cleanup-witness-model' of github.com:gig…
jwaldrip May 24, 2026
ebb99a0
build: rebuild MCP bundle after merging origin CI fixes
jwaldrip May 24, 2026
a9e94b3
fix(schemas): move haiku_unit_reset schema to units.ts — under god-fi…
jwaldrip May 24, 2026
878be45
fix(migrate): trim only orphan-hat iterations — keep hat-absent entri…
jwaldrip May 24, 2026
ef227b7
fix(reset): a completed unit is unresettable — work is merged, reset …
jwaldrip May 24, 2026
29b5291
fix(decompose): prevent the unit-015 class — declare cross-unit deps,…
jwaldrip May 24, 2026
acc2085
fix(reviewer): don't thrash the builder for a sibling-dependency gate…
jwaldrip May 24, 2026
ce30455
fix(bolt-cap): count rejects, not hat dispatches — decouple the cap f…
jwaldrip May 24, 2026
454eac4
fix(dispatch): per-unit in-flight lease — stop run_next re-dispatchin…
jwaldrip May 24, 2026
8f8ab3e
fix(worktree): extend engine-state guard to discovery merge + doc sync
jwaldrip May 24, 2026
633471a
fix(fix-chain): ignore empty worktree shells + assessor verifies whol…
jwaldrip May 24, 2026
bbdb003
fix(gates): per-gate deferral, superseded/skip_gates, 0-byte outputs …
jwaldrip May 25, 2026
28c662a
fix(seal+report): commit the seal stamp so it pushes; haiku_report lo…
jwaldrip May 25, 2026
8d0c283
feat(feedback): non_actionable terminal disposition — a fix-loop rout…
jwaldrip May 25, 2026
b932ff6
test(ui): green the SPA suite after the non_actionable status addition
jwaldrip May 25, 2026
17fc527
fix(worktree): recover an unmerged unit branch instead of marking it …
jwaldrip May 25, 2026
abfdf98
test(seal): end-to-end pin for the BUG-4 seal-commit (close the test …
jwaldrip May 25, 2026
babdacd
feat(statusline): show current wave in execute + feedback severity in…
jwaldrip May 25, 2026
46bb552
feat(units): within-wave slot refill on terminal advance (admin-porta…
jwaldrip May 25, 2026
3695cb1
style(statusline): tint the fix-loop chip box by severity; blue activ…
jwaldrip May 25, 2026
1812591
style(statusline): pure-yellow in-progress hat pip
jwaldrip May 25, 2026
07abf54
fix(statusline): queued items show empty progress, not a false in-pro…
jwaldrip May 25, 2026
81a1d48
style(statusline): chip-dependent pip palette so pips read on every tint
jwaldrip May 25, 2026
4a0a0e7
fix(autopilot): set mode via haiku_select_mode, not the rejected inte…
jwaldrip May 25, 2026
ee2ee9e
fix(feedback): extend terminal-state guards to cover non_actionable
github-actions[bot] May 25, 2026
74a4497
fix(autopilot): parent elaborate-loop + question FB must not stop to ask
jwaldrip May 26, 2026
dd90e89
feat(statusline): a "recovering" phase so merge/repair states aren't …
jwaldrip May 26, 2026
636280b
fix(statusline): show the whole current wave, not just in-flight units
jwaldrip May 26, 2026
487678c
fix(statusline): in-progress hat is yellow, not a red-twin of "rejected"
jwaldrip May 26, 2026
ab25005
feat(browse): surface stage observations + intent reflection on the r…
jwaldrip May 26, 2026
fe5303d
fix(statusline): pin pip track + chips to the snapshot's stage, not a…
jwaldrip May 26, 2026
1604345
fix(statusline): derive the active pip + chips from the snapshot acti…
jwaldrip May 26, 2026
501b77f
fix(statusline): fix-loop overlay shows the furthest stage milestone …
jwaldrip May 26, 2026
c9640d2
fix(autopilot): don't trap the elaborate loop at a fresh stage — do t…
jwaldrip May 26, 2026
738de27
feat: integrate in-flight working-tree work — gate environment, studi…
jwaldrip May 26, 2026
1243d02
Merge branch 'refactor/drift-cleanup-witness-model' of github.com:gig…
jwaldrip May 26, 2026
5af1e3c
feat(intent-review): adversarial intent-completion reviewers run in p…
jwaldrip May 26, 2026
0327f56
fix(runtime-verification): repair haiku_view dispatch + forbid passin…
jwaldrip May 26, 2026
cea519c
fix(elaborate): name haiku_unit_write up front so the agent doesn't r…
jwaldrip May 26, 2026
10b88dd
fix(intent-create): require + advertise studio_candidates; stamp plug…
jwaldrip May 26, 2026
723c9ec
fix(write_brief): write BRIEF.md to the repo stage dir, not the globa…
jwaldrip May 26, 2026
0a941b6
refactor(tool-defs): dedupe intent_create schema + guard advertised↔h…
jwaldrip May 26, 2026
4d41fe3
fix(statusline): gate mark ⊘ → ‖ (paused), not a prohibition sign
jwaldrip May 26, 2026
0ecf321
fix(gate): detect never-attached SPA so a stale session stops suppres…
jwaldrip May 26, 2026
8026375
fix(gate): open the review browser when no tab is genuinely attached …
jwaldrip May 26, 2026
fd841b5
feat(gate): on no client (never connected / tab closed), return the U…
jwaldrip May 26, 2026
c2460eb
fix(statusline): discovery chips reflect artifact existence, not sign…
jwaldrip May 26, 2026
3436221
fix(statusline): in-progress hat pips are uniformly yellow on every box
jwaldrip May 26, 2026
c9b2ba7
fix(statusline): hold discovery chips until the conversation sub-phas…
jwaldrip May 26, 2026
a92001e
feat(knowledge): read scope:project discovery artifacts as a cross-in…
jwaldrip May 26, 2026
4bfadf1
fix(spa): phase strip places the active milestone from the live actio…
jwaldrip May 26, 2026
47c62f0
fix(outputs): keep the file extension in artifact names so links reso…
jwaldrip May 26, 2026
a2001a9
feat(presence): heartbeat over the long-lived WS, server ACKs every beat
jwaldrip May 26, 2026
ec8097c
refactor(gate): resolve the gate session from the live registry, stop…
jwaldrip May 26, 2026
2d0cdf7
docs(await-gate): describe registry-resolved session, drop stale FM-p…
jwaldrip May 26, 2026
6684479
docs(stage-internal): mark gate-session.json legacy — no repo-persist…
jwaldrip May 26, 2026
78e747b
fix(statusline): atomic snapshot write so a concurrent read can't fal…
jwaldrip May 27, 2026
b8f69b0
feat(review): pop the SPA as a clean micro-app window, not the user's…
jwaldrip May 27, 2026
57f120f
feat(spa): H·AI·K·U favicon — mint hexagon + bold H, gives the micro-…
jwaldrip May 27, 2026
e00333f
fix(review): maximize the micro-app window (DPR-proof) so it never op…
jwaldrip May 27, 2026
bb692f4
fix(review): gate decision controls stay actionable at every width (s…
jwaldrip May 27, 2026
6a56b37
fix(review): mobile feedback is a non-blocking drawer, not a full-scr…
jwaldrip May 27, 2026
5ad0f9d
feat(review): feedback as a docked rail + slide-out overlay drawer; f…
jwaldrip May 27, 2026
2623114
fix(review): feedback drawer is a plain <aside>, not a <dialog> — fix…
jwaldrip May 27, 2026
8eaa811
fix(review): add changes_requested to DecisionKind; add quality_gates…
github-actions[bot] May 27, 2026
5ae8479
fix(biome): fix 5 Biome 2.x violations — import order, format, useCon…
github-actions[bot] May 27, 2026
1fb8646
fix(review): FEEDBACK rail actually renders as a right-edge full-heig…
jwaldrip May 27, 2026
0d0c551
feat(review): feedback docks LEFT, comment box lives in the drawer, a…
jwaldrip May 27, 2026
eb12803
feat(review): brief + observations are annotatable; runtime-verifier …
jwaldrip May 27, 2026
6d5b573
fix(review): rail/drawer below header, no black box, pencil placement…
jwaldrip May 27, 2026
2cb1d7b
fix(review): rail/drawer bound between header & gate bar, square edge…
jwaldrip May 27, 2026
b7d6e5b
fix(micro-app): use the isolated Playwright build on Apple Silicon + …
jwaldrip May 27, 2026
ed4bdf9
fix(deadlock): wait-for-human actions no longer poison the churn window
jwaldrip May 27, 2026
d01bd69
fix(deadlock): churn check ignores wait-for-human signatures (self-he…
jwaldrip May 27, 2026
8ae6aaa
feat(browse): surface stage brief + observations and feedback severity
jwaldrip May 27, 2026
6379409
feat(telemetry): HAIKU_-prefixed env fallback for OTEL config
jwaldrip May 27, 2026
68ca74e
fix(ci): sort imports in statusline/state.ts (Biome Lint gate)
jwaldrip May 27, 2026
3ed0430
fix(review): address PR #372 review comments — hook dep array, dead d…
jwaldrip May 27, 2026
965724b
feat(browse): walk the whole stage/intent dir, not just artifacts/
jwaldrip May 27, 2026
bbbfaef
feat(review): render code outputs syntax-highlighted + annotatable; a…
jwaldrip May 27, 2026
daeb8cb
fix(review): Approve closes the micro-app window immediately
jwaldrip May 27, 2026
d4da44c
feat(browse): per-directory stage sections + unit-output previews + m…
jwaldrip May 27, 2026
f509a4c
feat(review): Elaboration tab + de-dupe BRIEF from Other; tag stage s…
jwaldrip May 27, 2026
7c0c5bb
fix(browse): unit-output preview no longer hangs on "Loading…"
jwaldrip May 27, 2026
0e019fd
feat(review): per-directory tabs for stage asset subdirectories
jwaldrip May 27, 2026
184c271
fix(review): phase pill reads the LIVE cursor phase, not the deprecat…
jwaldrip May 27, 2026
6b0accc
fix(browse): unit-output paths, code highlighting theme, list progress
jwaldrip May 27, 2026
6fe9258
fix(statusline): show decompose/verify chips during the elaborate loo…
jwaldrip May 27, 2026
5daa1ad
fix(browse): always show the stage progress bar, including 0/N
jwaldrip May 27, 2026
a6c612e
fix(browse): clearer note when a declared output isn't on disk
jwaldrip May 27, 2026
e99d2f7
docs(drift): correct stale `drift-detection-gate.ts` references
jwaldrip May 27, 2026
191648a
fix: hide engine bookkeeping (action-log.jsonl) from outputs in brows…
jwaldrip May 27, 2026
8db95aa
docs(drift): correct stale `drift-detection-gate.ts` references
jwaldrip May 27, 2026
bc0dcdf
feat(engine): canonical intent.stages + optional-stage config foundation
jwaldrip May 27, 2026
26da904
feat(review): intent-root "Other" tab + hide system journals from the…
jwaldrip May 27, 2026
8370b97
feat(engine): optional-stage keep-or-drop offer + haiku_drop_stage
jwaldrip May 28, 2026
3c23be0
test(engine): cover optional flags, resolveStageOptional, computeStag…
jwaldrip May 28, 2026
7920cce
feat(studios): fold libdev into software via optional release stage; …
jwaldrip May 28, 2026
7f0bd85
feat(studios): hide deprecated studios from new-intent pickers + stud…
jwaldrip May 28, 2026
9521aa2
feat(migrate): v9->v10 strips skip_stages, materializes canonical stages
jwaldrip May 28, 2026
e3cb639
refactor(software): development mandates defer to engine-injected inp…
jwaldrip May 28, 2026
85f26bf
docs(sync): document optional stages, haiku_drop_stage, deprecated st…
jwaldrip May 28, 2026
2ff39a8
fix(engine): user-gate next-stage routing follows the intent plan, no…
jwaldrip May 28, 2026
8a1a2d0
merge refactor/drift-cleanup-witness-model into optstages-work (absor…
jwaldrip May 28, 2026
4a373c2
chore(website): refresh paper-revisions tracking data
jwaldrip May 28, 2026
6e23168
fix(review): software code outputs render highlighted; dir-tab detail…
jwaldrip May 28, 2026
2d9dec8
fix(ci): biome-format two src files + drop dead allow-list branch in …
jwaldrip May 28, 2026
c963b3e
fix(engine): catch + repair phantom declared outputs at terminal hat …
jwaldrip May 28, 2026
4ed2bbd
refactor(software): drop the release stage; product required, securit…
jwaldrip May 28, 2026
a5596fd
fix(review): disabled-mode gate hint is composer-aware + accurate
jwaldrip May 28, 2026
51ca584
feat(studios): mark optional stages across all studios per audit
jwaldrip May 28, 2026
2d01f23
Merge remote-tracking branch 'origin/refactor/drift-cleanup-witness-m…
jwaldrip May 28, 2026
5cec721
fix(browse): pipeline stage status is monotonic (no earlier-active + …
jwaldrip May 28, 2026
261e0cf
fix(engine): closeout output gate must not re-file non_actionable fin…
jwaldrip May 28, 2026
00543a6
build(review): regenerate inlined SPA bundle for the composer-aware g…
jwaldrip May 28, 2026
4d218ee
Merge remote-tracking branch 'origin/refactor/drift-cleanup-witness-m…
jwaldrip May 28, 2026
eefef33
fix(engine): feedback-assessor is fix-loop-only, never a unit hat
jwaldrip May 28, 2026
f8efa3b
test(engine): pin that the engine NEVER merges intent work into mainline
jwaldrip May 28, 2026
a246d19
fix(engine): validate unit & feedback iterations only carry valid hat…
jwaldrip May 28, 2026
4018772
fix(engine): heal duplicate feedback ids so a shadowed finding is nev…
jwaldrip May 28, 2026
c914b44
fix(engine): intent quality gates fire before the user gate (user is …
jwaldrip May 28, 2026
bdfaf8e
fix(engine): stage forward-merge uses the engine-protected driver (no…
jwaldrip May 28, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
9 changes: 4 additions & 5 deletions .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,14 @@
"name": "GigSmart",
"url": "https://gigsmart.com"
},
"metadata": {
"description": "H·AI·K·U — universal lifecycle orchestration with hat-based workflows, completion criteria, and automatic context preservation.",
"version": "8.0.0"
},
"plugins": [
{
"name": "haiku",
"description": "H·AI·K·U methodology — universal lifecycle orchestration with hat-based workflows, completion criteria, and automatic context preservation.",
"source": "./plugin",
"source": {
"source": "npm",
"package": "haiku-method"
},
"category": "Pattern",
"keywords": [
"haiku",
Expand Down
38 changes: 37 additions & 1 deletion .claude/rules/architecture-prototype-sync.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,22 @@ The interactive runtime-architecture map lives at `/studios/<slug>/architecture`

**Whenever the architecture changes, update this map.** It is part of the sync surface, not a one-off.

## Sync surface — files that must move together

Any change to the cursor's per-stage walk or the per-action prompt structure has to be reflected across all of these. They are the canonical reference for "what does the engine actually do" and they drift away from each other silently if not kept in sync.

| File | What it owns | When to update |
|---|---|---|
| `packages/haiku/src/orchestrator/workflow/cursor.ts` | The authoritative per-stage walk + role-list ordering | Any change to phase order, role lists, or what action fires when |
| `packages/haiku/src/orchestrator/prompts/PROMPTS.md` | The prompt-folder layout taxonomy + the "where does a new prompt go" decision tree | Any change to phase order, action lifecycle, or scope/phase taxonomy. **Folder layout block under `## Scope / phase taxonomy` must reflect the same lifecycle order as `cursor.ts`** — `cursor.ts` is the source of truth; PROMPTS.md is the human-readable cross-reference |
| `website/app/studios/[slug]/architecture/_data/actors.ts` | Orchestrator's `notes` field — the prose cursor description | Any per-stage walk reorder, any role-list change, any cascade or engine-built-role change |
| `website/app/studios/[slug]/architecture/_data/payload-for.ts` | Per-transition action payloads, validations, writes, instructions | Any new/changed cursor action; any role-list reorder; any mandate-resolution path change |
| `website/app/studios/[slug]/architecture/_components/ArchitectureMap.tsx` | The visual flow (phase order, gate captions, role nameplates) | Phase reorder, new gate kinds, new pills, post-intent role changes |
| `CLAUDE.md` (project root) | "Concept-to-Implementation Mapping" table | Any new concept/component, terminology change, or cross-component contract |
| `plugin/studios/ARCHITECTURE.md` | The structural reference for studio/stage/unit/hat/feedback boundaries | Any structural change to that boundary surface |

The general principle: **`cursor.ts` is the source of truth**, and PROMPTS.md + the architecture map + CLAUDE.md are all secondary projections of it. When they disagree, fix the projection, not the engine.

## Auto-generated workflow diagrams (per studio)

The per-studio Mermaid `stateDiagram-v2` files at `website/public/workflow-diagrams/<studio>.mmd` are derived from the workflow engine in `packages/haiku/src/orchestrator/workflow/` and the StudioConfig built from `plugin/studios/<studio>/`. They show every stage's full phase progression, every hat sequence enumerated inside `execute`, and every (bolt × fix-hat) combination inside `review_fix`.
Expand Down Expand Up @@ -67,6 +83,26 @@ Any change to one of the following requires verifying or updating the architectu

The map claims to be canonical. If it diverges from the orchestrator code, **the orchestrator is right and the map is wrong** — fix the map, do not fix the orchestrator to match.

## 2026-05-17 — pre/post review/approve split + three-tier cascade

`dispatch_review` moved from post-execute to **PRE-execute** — it now fires between `elaborate_loop` completion and wave-ready hat dispatch, auditing the planned SPEC before any code lands. `dispatch_approval` stayed POST-execute, auditing the WORK against the SPEC the pre-execute walk already approved. The same engine-built roles (`spec`, `continuity`, `cross-stage-consistency`) fire in BOTH walks; each renders phase-appropriate mandate prose from sibling files:

- `packages/haiku/src/orchestrator/prompts/stage/review/dispatch_review/engine-bodies/<role>.eta.md` (pre-execute prose: "audit the planned spec")
- `packages/haiku/src/orchestrator/prompts/stage/approve/dispatch_approval/engine-bodies/<role>.eta.md` (post-execute prose: "audit the built work")
- `packages/haiku/src/orchestrator/prompts/intent/review/intent_review/engine-bodies/<role>.eta.md` (intent-completion prose)

Studio review-agent, hat, and fix-hat mandates resolve via a three-tier cascade: `project/.haiku/studios/<studio>/stages/<stage>/<kind>/<role>.md` → `plugin/studios/<studio>/stages/<stage>/<kind>/<role>.md` → `plugin/studios/<studio>/<kind>/<role>.md` → `plugin/<kind>/<role>.md`. First hit wins.

Studio-level intent-completion review agents were renamed from `plugin/studios/<studio>/review-agents/` to `plugin/studios/<studio>/intent-review-agents/` to free the studio tier in the cascade for stage-scope agents.

Orphan cursor actions removed: `review` and `intent_completion_review` (both had prompt builders but no emit clauses).

Map reflects these in:
- `_data/actors.ts` — orchestrator's cursor walk description shows the pre/post ordering and lists the engine roles + the cascade.
- `_data/payload-for.ts` — header comment + every review/approval entry document the new role list, engine-bodies path, and cascade.
- `_components/ArchitectureMap.tsx` — pre-execute review block (`elab-to-prereview`) sits BEFORE the execute phase visually; nested-gate caption names all three engine roles + the cascade; post-intent card names `intent-review-agents/` instead of `review-agents/`.
- `packages/haiku/src/orchestrator/prompts/PROMPTS.md` — folder layout block under `## Scope / phase taxonomy` lists phases in lifecycle order (elaborate → review (PRE-execute) → execute → approve (POST-execute) → complete).

## 2026-04-27 — `feedback_dispatch` route

The per-stage gate handler at `packages/haiku/src/orchestrator/workflow/handlers/gate.ts` no longer re-pops the review UI when a human-authored FB has `resolution: null`. It returns `feedback_dispatch` instead, handing the items back to the agent for inline triage / reply. The map reflects this in two places:
Expand All @@ -77,7 +113,7 @@ The per-stage gate handler at `packages/haiku/src/orchestrator/workflow/handlers

## Known terminology drift (followup work)

The AI-DLC paper (`website/content/papers/ai-dlc-2026.md`) and several docs (`docs/concepts.md`, `docs/workflows.md`, `docs/example-*.md`) reference an **operating-mode taxonomy: HITL / OHOTL / AHOTL** that the implementation has moved past. Today the only mode field is `intent.mode` (`continuous` / `discrete` / `hybrid`); user involvement is determined by per-stage `gate` type in `STAGE.md` plus which skill the user invoked (`/haiku:start`, `/haiku:pickup`, `/haiku:autopilot`, `/haiku:revisit`).
The AI-DLC paper (`website/content/papers/ai-dlc-2026.md`) and several docs (`docs/concepts.md`, `docs/workflows.md`, `docs/example-*.md`) reference an **operating-mode taxonomy: HITL / OHOTL / AHOTL** that the implementation has moved past. Today the only mode field is `intent.mode` (`continuous` / `discrete` / `hybrid`); user involvement is determined by per-stage `gate` type in `STAGE.md` plus which skill the user invoked (`/haiku:haiku-start`, `/haiku:haiku-pickup`, `/haiku:haiku-autopilot`, `/haiku:revisit`).

The prototype reflects the **implementation**, not the legacy paper terminology. When the paper/docs are revised to align with the implementation, this note can be removed and the prototype's User-actor modal "terminology drift" callout can also be removed.

Expand Down
85 changes: 85 additions & 0 deletions .claude/rules/blog-general-audience.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
# Blog: write for a general audience, even when the topic is technical

Posts under `website/content/blog/**/*.{md,mdx}` are read by people who are NOT in the codebase. They may be senior engineers from other stacks, technical product leads, founders evaluating a harness, or curious AI-adjacent readers. The post earns their attention by explaining **what** the thing does and **why it matters to them** — not by giving them a guided tour of the implementation.

This rule pairs with `.claude/rules/blog-humanize.md` and `.claude/rules/content-voice.md`. Where they conflict, voice wins; where they agree, this rule fills in the specific "don't tour the codebase" failure mode that humanize and voice don't explicitly cover.

## The bar

A post passes the bar when a reader who has never opened the repo can:

1. Tell you what the feature does in one sentence.
2. Tell you why it would change how they work.
3. Tell you what a reasonable next step would be (read the related post, try the install, look at the linked PR).

A post fails the bar when those three answers require the reader to recognize a function name, a file path, or an internal jargon term.

## Specific bans

These shapes show up over and over and should not pass review:

### "Implementation: `funcName` in `<path>:<line>`" tail sentences

The pattern: a paragraph makes its point in plain language, then closes with `Implementation: validateOutputLiveness in packages/haiku/src/orchestrator/validators.ts`. The tail adds zero value for the general reader. The PR link or commit SHA at the bottom of the post is the verification surface.

- **Wrong**: "The gate refuses to advance until every unit's outputs exist on disk. Implementation: `validateOutputLiveness` in `packages/haiku/src/orchestrator/validators.ts:284`."
- **Right**: "The gate refuses to advance until every unit's outputs exist on disk." (Link the PR or commit at the end of the post if the reader wants to verify.)

### MCP tool names dropped beyond first introduction

Naming the tool once at the moment of introduction is fine and often load-bearing (e.g., "the agent calls `haiku_run_next` to get its next instruction"). Sprinkling it through three more paragraphs reads as engineer-flavoring.

- **Wrong**: "The agent calls `haiku_run_next` to advance. Later, when feedback piles up, it calls `haiku_run_next` again, and `haiku_run_next` returns a `feedback_dispatch` action."
- **Right**: "The agent calls `haiku_run_next` to advance. Later, when feedback piles up, the next tick hands back a feedback dispatch."

### File-path inventories

A bullet list or comma-separated run of file paths reads as "here is the codebase tour I gave myself." The user value is what each file *does*, in one sentence.

- **Wrong**: "The design-stage runtime verifier at `plugin/studios/software/stages/design/review-agents/runtime-verifier.md`, the development-stage runtime verifier at `plugin/studios/software/stages/development/review-agents/runtime-verifier.md`, and the studio-level intent-completion runtime verifier at `plugin/studios/software/intent-review-agents/runtime-verifier.md` each…"
- **Right**: "Runtime verifiers fire at three points: when the design renders, when the build runs, and when the intent closes. Each one drives the page in a browser and judges what it saw."

### Frontmatter field-name lists in prose

Naming the field once when the post is specifically about that field is fine. Listing four or five field names in a sentence to flavor the prose is not.

- **Wrong**: "Every other inheritance-shaped decision lives in the unit's metadata — `model:`, `depends_on:`, `inputs:`, `outputs:`, `quality_gates:`."
- **Right**: "Every other inheritance-shaped decision lives in the unit's metadata. One more field belongs there."

### Internal jargon as if the reader already speaks it

Words like "the cursor," "the FSM," "the orchestrator," "the cascade," "FB-as-unit," "pre-tick," "wave-ready architect," "feedback-assessor hat" are precise inside the team and opaque outside. When you need to use them, define them at first mention with one short clause. If you don't need to use them to make the point, don't.

- **Wrong**: "The wave-ready architect fans out parallel hat invocations against pre-tick-classified feedback in the FB-as-unit fix loop."
- **Right**: "When feedback lands, the engine routes each finding to a specialist agent to fix it, then re-runs the same check that flagged it."

### Hook-name inventories

A reader skimming the page does not gain anything from learning that there are eight named hooks. They gain something from learning that "guardrails fire before the agent moves." Skip the inventory; keep the takeaway.

### `.haiku/intents/<slug>/...` path expansions on repeat

Expanding the path the first time the post discusses the artifact layout is fine. Expanding it three more times in the same post is noise. Refer to "the unit file," "the intent record," "the feedback file" after the first mention.

## What stays

The rule does not ban citation — it bans citation-as-flavoring. These citations earn their place every time and should NOT be cut:

- **A specific commit SHA, PR number, or test path** that the post uses as load-bearing evidence ("PR #265 broke when the design-stage components shipped but never rendered"). This is the No-Empty-Authority rule paying off.
- **A single named file or function** when the post is specifically about what that file or function enforces (and the post uses it once, not three times).
- **The pattern-name coined inside the post** ("the continuity contract", "the workshop has two editors", "the agent in the seat") — those are doing the work the rule is trying to protect.
- **Links to other blog posts** — internal cross-references stay linked.
- **MCP tool names** at the first moment they're introduced as the actor in the sentence.
- **Branch names, skill commands** (`/haiku:haiku-start`, `/haiku:haiku-pickup`) that the reader will type — these are user-surface, not implementation tour.

## The test

Before reporting a blog post done, read it through once with the question: "If I deleted every backticked identifier and every file path from this post, would the argument still land?" If yes, you've succeeded — the backticked identifiers were earning their place by adding precision to an argument that already worked. If no, the argument was leaning on the identifiers, and they were doing the load-bearing work the prose should have done.

A second test: would a senior engineer from a different stack — Python, Go, Rust — finish this post knowing what the feature does and why it matters? If they'd put it down halfway because the paragraph required familiarity with TypeScript file layouts they don't have, you've written for the team, not for the audience.

## Scope

This rule applies only to `website/content/blog/**`. UI copy, internal docs, paper revisions, READMEs, plugin descriptions, and code comments all have a different register and audience — the general-audience rule would fight them.

When writing or editing a blog post, this rule runs alongside `blog-humanize.md`: apply the voice-first pass, the AI-tell sweep, the general-audience cut, and the final self-audit before reporting done.
Loading
Loading