Context
Running the HarnessStack recipe (openspec-superpowers-repomem-ecc) on EverClaw, per-task documentation cost is fixed regardless of how small the change is. The slowness root is doc-authoring VOLUME on the small-task long tail -- not gate count (already cut in the 2026-05-13 auto-judge change) and not genuine duplication. RepoMem coverage is bimodal: of 16 archived tasks only 2 hold real RepoMem volume, 7/16 have empty temp dirs, and much of the rest is 00-INDEX boundary-policing boilerplate. A one-file-fits-all template makes a single-file typo pay nearly the same authoring tax as a cross-cutting dependency change.
Proposals
-
Add a per-task Lane: <fast|full> field (default fast), declared in temporary-<task>.md Task Meta beneath Skip Bias. Lane is the STRUCTURAL axis (which documents must exist); Skip Bias is the PROCEDURAL axis (how readily to skip an auto-judge step). They are orthogonal -- all four combinations valid -- and Lane changes only which document artifacts a step produces, never a step's policy. Selection at task open: pick full if the change touches dependencies, is cross-cutting (>= 2 subpackages or crosses the Python <-> Node boundary), produces a durable RepoMem/persist/ asset, or adds net-new reusable public contract surface; otherwise fast.
-
fast-lane document set + template collapse. fast lane requires only proposal.md + tasks.md + a ~20-line temporary-<task>.md (Scope / Risk one line each; no Pipeline-state table, no Long-term-knowledge-impact, no Code-Review-Triage unless a review yields deferred findings). It skips temp/<slug>/ and its 00-INDEX entirely; a real promote-candidate lesson lands in a single flat memory.md (no <slug>, no INDEX). design.md and specs/ are optional-by-default (omission noted in one line in proposal.md).
-
full-lane load reduction (heavy tasks also get relief). Even on full: (a) drop the 00-INDEX out-of-scope self-attestation table (the per-task table asserting which OpenSpec content the temp does NOT duplicate); non-duplication is enforced by the RepoMem.merge HITL reviewer instead of each task writing a proof table; (b) design.md is collapsible to its ### Dn decision list when the decision count is small (no forced long-form), with the Pairing Rules still applying to whatever decisions remain.
-
grill-with-docs as an auto-judge full-lane design-gate -- not a fixed checkpoint and not mandatory on full. A full-lane task MAY run the grill-with-docs skill to stress-test the draft design.md against the domain model and sharpen terminology before it becomes an execution plan. Modeled on the recipe's existing auto-judge tier: the agent judges whether there is a non-trivial design worth grilling, runs it when so, and logs a one-line Auto-Skip Log when skipping (a mechanically-full task such as a dependency bump skips it). Eligibility is full-lane-only (fast lane has no design tree); the window is after a draft design.md exists (Pipeline step 4 OpenSpec.propose) and before writing-plans (step 6). Its two DDD write-sinks are redirected into the existing doc sets: domain terms -> OpenSpec spec.md; ADR-worthy decisions -> design.md ### Dn. It does NOT create CONTEXT.md or docs/adr/.
-
Promote-time codegraph de-dup rule. Do not promote to RepoMem (capture or merge) structural facts that codegraph can answer from current code (symbol locations, call graphs, impact sets). codegraph is the live map; persist/architecture/ holds only what codegraph cannot derive -- decisions, constraints, rejected alternatives, the WHY. This is the promote-time counterpart of the existing read-time rule in Pipeline step 2 ("codegraph is the map, RepoMem the why").
Invariants preserved
- NO data migration: Lane governs NEW tasks only; archived tasks keep their existing docs.
- NO layer removed:
persist/ is untouched; Pipeline ordering, Merge Gates, and Verification Topology are unchanged.
- Three-identifier invariant (
<task> = change-id = <slug>) holds: a fast-lane task produces no temp/<slug>/, so the invariant collapses to <task> = change-id and is vacuously satisfied. Absence of <slug> is NOT a divergence and needs no Recipe Invariant Exception; temporary-<task>.md itself is still required on both lanes.
- Skip Mechanism untouched: a document absent because the lane does not require it is absence-by-lane-definition, not a Skip-Mechanism skip -- no Auto-Skip Log and no exception. Steps with external side effects keep their policy on both lanes.
- Reversible:
fast -> full mid-flight promotion is cheap (flip the field, expand the template, create temp/<slug>/, back-fill). Residual risk is under-classification, mitigated by the fast default, the cheap promotion path, and the RepoMem.merge HITL reviewer as a checkpoint.
Local-overlay note (downstream instantiation)
In EverClaw the HarnessStack overlay (docs/) is kept machine-local via .git/info/exclude, out of the product repo history. This proposal targets the RECIPE TEMPLATE (the longterm small-team template + the openspec-superpowers-repomem-ecc recipe); each consuming repo instantiates it locally. If rejected upstream, it stays an EverClaw-local convention in its local longterm.md.
Validation / landing
- The field, selection rule, Lane -> document-set mapping, full-lane load reduction, grill-with-docs design-gate, and the codegraph de-dup rule land in the recipe template (harness-stack/assets/templates/longterm/small-team.md + the recipe openspec-superpowers-repomem-ecc.md).
- Already instantiated in the EverClaw-local
docs/HarnessStack/longterm.md: new ## Lane Tiering section, Skip Bias disambiguation, Single Task Identifier vacuous-satisfaction clause, Hard Rules codegraph bullet, and the Temporary Contractor set Lane discretion. Verified by two independent review passes (cross-reference integrity, no semantic contradiction with the Skip Mechanism / Pairing Rules / step policies, markdown structure).
Deferred (Phase 2 -- gated, not started)
The real heavy-task conceptual-load win is flattening the RepoMem temp STRUCTURE for full lane too: collapse temp/<slug>/{requirements,architecture,memory} + 00-INDEX + the Pairing Rules ceremony into a single flat memory.md, while KEEPING the temp -> persist HITL merge gate. The capture layer's function (staging for curated promotion to persist/) is preserved; only the folder structure and the per-side bookkeeping go away. Two alternatives were considered and rejected:
- Merge OpenSpec + RepoMem temp into one transient layer -- rejected: fights OpenSpec's third-party archive lifecycle (archive freezes the change record, stranding learnings that should flow to
persist/).
- Delete the RepoMem temp layer entirely (no transient capture) -- rejected:
persist/memory/ (implementation-time tacit lessons) has no other source. OpenSpec is normative and frozen; Superpowers produces no durable normative artifact; ECC.session-state is explicitly excluded from RepoMem; code comments are discouraged. Deleting the capture surface forces lossy retroactive mining from session transcripts at merge time, concentrating risk on the highest-value persist category. Planning-time architecture decisions DO promote directly from design.md (the contract already requires persist/architecture/ to cite the OpenSpec archive link), so only the implementation-time tacit note is irreducible.
Phase 2 is gated on the recipe owner; no data migration; deferred.
Context
Running the HarnessStack recipe (openspec-superpowers-repomem-ecc) on EverClaw, per-task documentation cost is fixed regardless of how small the change is. The slowness root is doc-authoring VOLUME on the small-task long tail -- not gate count (already cut in the 2026-05-13 auto-judge change) and not genuine duplication. RepoMem coverage is bimodal: of 16 archived tasks only 2 hold real RepoMem volume, 7/16 have empty temp dirs, and much of the rest is
00-INDEXboundary-policing boilerplate. A one-file-fits-all template makes a single-file typo pay nearly the same authoring tax as a cross-cutting dependency change.Proposals
Add a per-task
Lane: <fast|full>field (defaultfast), declared intemporary-<task>.mdTask Meta beneathSkip Bias.Laneis the STRUCTURAL axis (which documents must exist);Skip Biasis the PROCEDURAL axis (how readily to skip an auto-judge step). They are orthogonal -- all four combinations valid -- andLanechanges only which document artifacts a step produces, never a step's policy. Selection at task open: pickfullif the change touches dependencies, is cross-cutting (>= 2 subpackages or crosses the Python <-> Node boundary), produces a durableRepoMem/persist/asset, or adds net-new reusable public contract surface; otherwisefast.fast-lane document set + template collapse. fast lane requires only
proposal.md+tasks.md+ a ~20-linetemporary-<task>.md(Scope / Risk one line each; no Pipeline-state table, no Long-term-knowledge-impact, no Code-Review-Triage unless a review yields deferred findings). It skipstemp/<slug>/and its00-INDEXentirely; a real promote-candidate lesson lands in a single flatmemory.md(no<slug>, no INDEX).design.mdandspecs/are optional-by-default (omission noted in one line inproposal.md).full-lane load reduction (heavy tasks also get relief). Even on
full: (a) drop the00-INDEXout-of-scope self-attestation table (the per-task table asserting which OpenSpec content the temp does NOT duplicate); non-duplication is enforced by theRepoMem.mergeHITL reviewer instead of each task writing a proof table; (b)design.mdis collapsible to its### Dndecision list when the decision count is small (no forced long-form), with the Pairing Rules still applying to whatever decisions remain.grill-with-docs as an
auto-judgefull-lane design-gate -- not a fixed checkpoint and not mandatory onfull. A full-lane task MAY run thegrill-with-docsskill to stress-test the draftdesign.mdagainst the domain model and sharpen terminology before it becomes an execution plan. Modeled on the recipe's existingauto-judgetier: the agent judges whether there is a non-trivial design worth grilling, runs it when so, and logs a one-line Auto-Skip Log when skipping (a mechanically-full task such as a dependency bump skips it). Eligibility is full-lane-only (fast lane has no design tree); the window is after a draftdesign.mdexists (Pipeline step 4 OpenSpec.propose) and before writing-plans (step 6). Its two DDD write-sinks are redirected into the existing doc sets: domain terms -> OpenSpecspec.md; ADR-worthy decisions ->design.md### Dn. It does NOT createCONTEXT.mdordocs/adr/.Promote-time codegraph de-dup rule. Do not promote to RepoMem (capture or merge) structural facts that codegraph can answer from current code (symbol locations, call graphs, impact sets). codegraph is the live map;
persist/architecture/holds only what codegraph cannot derive -- decisions, constraints, rejected alternatives, the WHY. This is the promote-time counterpart of the existing read-time rule in Pipeline step 2 ("codegraph is the map, RepoMem the why").Invariants preserved
persist/is untouched; Pipeline ordering, Merge Gates, and Verification Topology are unchanged.<task>=change-id=<slug>) holds: a fast-lane task produces notemp/<slug>/, so the invariant collapses to<task>=change-idand is vacuously satisfied. Absence of<slug>is NOT a divergence and needs no Recipe Invariant Exception;temporary-<task>.mditself is still required on both lanes.fast -> fullmid-flight promotion is cheap (flip the field, expand the template, createtemp/<slug>/, back-fill). Residual risk is under-classification, mitigated by thefastdefault, the cheap promotion path, and theRepoMem.mergeHITL reviewer as a checkpoint.Local-overlay note (downstream instantiation)
In EverClaw the HarnessStack overlay (docs/) is kept machine-local via
.git/info/exclude, out of the product repo history. This proposal targets the RECIPE TEMPLATE (the longterm small-team template + the openspec-superpowers-repomem-ecc recipe); each consuming repo instantiates it locally. If rejected upstream, it stays an EverClaw-local convention in its local longterm.md.Validation / landing
docs/HarnessStack/longterm.md: new## Lane Tieringsection, Skip Bias disambiguation, Single Task Identifier vacuous-satisfaction clause, Hard Rules codegraph bullet, and the Temporary Contractorset Lanediscretion. Verified by two independent review passes (cross-reference integrity, no semantic contradiction with the Skip Mechanism / Pairing Rules / step policies, markdown structure).Deferred (Phase 2 -- gated, not started)
The real heavy-task conceptual-load win is flattening the RepoMem temp STRUCTURE for full lane too: collapse
temp/<slug>/{requirements,architecture,memory}+00-INDEX+ the Pairing Rules ceremony into a single flatmemory.md, while KEEPING thetemp -> persistHITL merge gate. The capture layer's function (staging for curated promotion topersist/) is preserved; only the folder structure and the per-side bookkeeping go away. Two alternatives were considered and rejected:persist/).persist/memory/(implementation-time tacit lessons) has no other source. OpenSpec is normative and frozen; Superpowers produces no durable normative artifact; ECC.session-state is explicitly excluded from RepoMem; code comments are discouraged. Deleting the capture surface forces lossy retroactive mining from session transcripts at merge time, concentrating risk on the highest-value persist category. Planning-time architecture decisions DO promote directly fromdesign.md(the contract already requirespersist/architecture/to cite the OpenSpec archive link), so only the implementation-time tacit note is irreducible.Phase 2 is gated on the recipe owner; no data migration; deferred.