docs(arch-v2): record operator verdicts on S-H DECISION-NEEDED #1 and #2 - #1250
Merged
Conversation
Operator verdicts 2026-08-07, recorded where the consumer reads them rather than by editing the S-H research patches (append-only, and read-only for later sessions per the Artifact Ownership Contract). #2 = Option A — [H] operative from S-H onward, [W] historical. Recorded at the spec's binding denominator convention. This is a constatation, not a preference: [W]'s 169-session subset is physically unrecoverable, because worktree pruning deleted 34 project directories together with their transcripts (turn-attribution patch :112, cause :92). Binding consequences spelled out — existing [W] shares stay readable as history but are not comparable past 2026-08-07, no new figure may be tagged [W], and every [W]-defined threshold is re-adjudicated on [H] or marked un-adjudicable. The one such threshold is N1's falsifier: annotated in place as un-adjudicable as written, with its operative [H] restatement and the standing reading 16.5% > 5% (so the discipline text STAYS), plus the explicit non-conversion caveat the patch itself carries at :168. #1 = Option B — host-side snapshot of the per-turn billing projection BEFORE any worktree prune. Recorded as an INPUT CONDITION on the S-D′ kickoff, whose before/after measurement is the consumer that a shrinking corpus invalidates (-23.5% between the seed and S-H: 247 -> 189 files, 99 -> 65 project dirs). Form is reuse, not build: copy the shape of the existing origin/data/metrics channel (one appended CSV row per day on a data branch) but NOT its mechanism -- that is a CI cron (.github/workflows/metrics-collect.yml) collecting GitHub popularity counters, and the corpus lives at ~/.claude/projects where CI cannot reach. Authoring the snapshotter is explicitly NOT scoped into S-D′; the clause states the precondition and its form only. Also records, as the input condition's footnote, that S-D′ kickoff §5 = Option A (operator verdict same date): with the ADR-8 A/B arm descoped, one baseline consumer remains -- this stage's own before/after -- and ADR-8's 20-dispatch window travels to the follow-on stage. The §5 resolution itself lands in kickoff rev 6, a separate PR. Every citation introduced here was verified mechanically against the cited line, not from recall. Prior-art: skipped — records operator decisions into an existing spec and kickoff, no new capability
Merged
9 tasks
artyhoo
added a commit
that referenced
this pull request
Aug 7, 2026
…A/B arm re-homed to S-K (#1251) Operator verdict 2026-08-07 on the §5 PARKED DECISION-NEEDED: Option A. The ADR-8 A/B experiment is descoped from S-D′; the stage ships subtraction maps + review-seat agent definitions + the #234 annotation, and a PR with no evaluation arm is now conformant rather than incomplete. Edits: - Header rev marker -> REV 6, stating what moved and that the §5 blocker is lifted (the two-gate S-E + S-H dependency is untouched and still binds; S-E has not merged). - §1 item 3: PARKED -> DESCOPED. The four Phase -1 findings stay as the record of WHY; the binding instructions to the executor are inverted from "held" to "absence is not a shortfall". - §4 T2: re-scoped. ADR-8's baseline left with the arm, but S-D′'s OWN before/after baseline is still in scope and still subject to "captured, not described" -- now citing the pre-prune snapshot per the header INPUT CONDITION landed in #1250. - §5: heading and framing flipped to RESOLVED; the fork text kept verbatim as the record of what was decided against what alternative. - §5 INCONCLUSIVE: CLOSED, with evidence. aif creates the task id AFTER the prompt is composed -- the kickoff ships as `description` inside POST /tasks (AifHandoffBackend.ts:231-239) and the id exists only in that response (:249); the only post-create mutation is PUT {paused:false} (:260), the sole other write a best-effort DELETE rollback (:263). A parity-selected arm therefore cannot live in the dispatch prompt without a two-phase redesign -- independent grounds for Option A. Caveat carried: verified client-side only; packages/api not audited for description-editability of a paused task. - §6 (new): S-K stub. Entry criteria = the four unchanged findings + the task-id finding; the three surfaces it needs (ledger schema, dispatcher SKILL.md, install.sh skip-list) named as the reason it could not live in S-D′; inherits the INPUT CONDITION; depends on S-D′ merged. - Umbrella kickoff: S-K stub row added, S-D′ row updated (Implements ADR-8 -> ADR-1), and the "ADR-8 is NOT orphaned" paragraph extended with the second recorded deviation and the new host. Recorded rather than quietly ignored: Option A's own text instructed rewriting out a §3 sentence ("a PR that ships maps with no executable A/B arm fails the stage's purpose") that DOES NOT EXIST in this file. Verified by exhaustive grep, not by reading §3 -- the §3 region carries only the #optout-as-reflex note about install-fingerprint snapshots. The A/B framing lived in §1 item 3 and §4 T2, which is what this rev actually edits. The discrepancy is annotated inline in §5 so the next reader does not re-hunt for it. Prior-art: skipped — records an operator decision into an existing kickoff, no new capability Co-authored-by: Test <test@example.com>
artyhoo
added a commit
that referenced
this pull request
Aug 7, 2026
…perator verdict on PR #1255 DECISION-NEEDED 1 (#1259) Operator verdict 2026-08-07 resolves PR #1255 DECISION-NEEDED 1 as promote-to-gate. Implemented in the consumed-deliverable form: umbrella §3 already binds every consumed deliverable to the two-gate form (merged + content-read); S-D' consumes S-L's re-priced P14 ranking, so S-L joins S-D''s dependency list — no three-gate pattern re-declaration. Swept surfaces: umbrella kickoff (S-D' row, charter Depends-on, S-L charter promotion record, Ordering, §3 intra-umbrella list), S-D' kickoff rev 7 (header, :17-21, instrument list, :106, :232-244, §3a instrument, T-SDP-A counter, §5 quote-block, dispatch status — also fixes the stale 'S-E is not [merged]' claim; S-E merged as #1237 09:39Z), S-L kickoff (ordering constraint marked as gate; stale spec :363 citations -> :387), spec P13 cell + §4 stage-order cell + §5 Exit-routing annotations (operator-verdict provenance, precedent PR #1250). Cold review round 1: REVISE (1 MAJOR spec §5 Exit routing unswept + 3 MINOR) — all four fixed and grep-verified; residual 'S-E + S-H' strings are historical rev-log entries only. Prior-art: skipped — dependency-gate bookkeeping across kickoffs + spec annotations, no new capability Co-authored-by: Test <test@example.com>
artyhoo
added a commit
that referenced
this pull request
Aug 7, 2026
…sures (done.md backfill) (#1268) The 2026-08-07 /pipeline no-arg run found ~50 umbrella dirs whose work is verifiably merged but which lack done.md, poisoning the priority-score completion filter in both directions (false-open noise + a false-DONE on the live critical path arch-v2-context-pipeline-s-d-prime via C2 jaccard). Round-2 precedent: cf246c2 (#565). Every closure verified mechanically BEFORE writing done.md (gh pr view state/mergedAt, git log origin/staging --grep, git ls-tree deliverable checks). Breakdown: - 26 closed by a verified merged PR (aif-doctor-helper-parity #1147, hook-tsx-resolution-fix #1126, hook-tsx-resolution-sweep #1130, universalization-fix-s2 #517, multistack-augment-first #830, guard-liveness-v2-fullsweep #484, install-self-verification #823, arch-v2 stages s-a #1192 / s-b #1198 / s-c #1197 / s-e #1237 / s-g #1228 / s-h #1250 / s-i #1229 / s-l #1263, getff-any-stack-trace r1 #1254 / s1 #1166 / s2 #1169 / s2b #1233 / s3 #1253 / s4 #1262, getff-honest-signals s1-s6 #1140/#1145/#1150/#1167/#1170/#1175, preset-react-spa-iphase #661, preset-react-native-iphase #662). Note: the dispatch evidence list carried kickoff-CREATION PR numbers for three of these (#1127/#1125/#1131); the actual closing PRs are #1147/#1126/#1130 — verified by PR title + files. - 4 closed by deliverable-on-staging + merged PR (plan-currency-reconcile-s4-aif #789, live-research-default-delivery #824, story-recap #592, aif-loop-resilience-soak n/a — soak-journal AUTONOMOUS RUN COMPLETE 2026-06-05, API-harvest rounds #427/#429/#431). - 10 meta-launch dispatch records closed by parent umbrella DONE (adapter-jig #1240, getff-any-stack-trace #1262, getff-honest-signals #1175, ir-unfreeze #1084, launch-preannounce-track #994, ecosystem-wiring #1086, rule-tests-surface #1093, python-delivery-v0 #997, plan-currency-reconcile #792, live-generation #1055) — each parent's done.md verified present. - 7 closed as Status: superseded pointing at the absorbing umbrella: the five #1221-rescued kickoffs (fix-735-fresh-install-prepush -> #775/#747, generator-compile-forbid -> forbid-mvp #684-#697, recipe-declarative-tier -> forbid-mvp S2 #689, validator-anti-vacuity -> forbid-mvp S3 #693, rule-bootstrapping-live-adapter -> rule-research-live-adapter #805/#809), plus install-ast-wiring -> migration-ast Stage 4 #632 (GH #547 Layer 2) and arch-v2-context-pipeline-s-a-r2 -> executed in-session inside S-A #1192 (its own header says SUPERSEDED — do not dispatch). Genuinely open umbrellas untouched: beta-delivery-ux (+meta-launch), beta-ai-docs-agnosticism, beta-docs-showcase, arch-v2-context-pipeline (+s-d-prime, s-f, meta-launch), getff-freshness-widening, getff-python-dtz-adopt, getff-to-prod-meta-launch, modular-install-fullpack, shipped-artifact-liveness-gap family, phase-10-foundations-audit, heal-honest-capacity, shipped-skill-sync, trust-tiers-did-review, executable-aidocs-and-cargo-followups, h10-verdict-gate-research, stack-tooling-generation, zcode-full-parity-mega-umbrella, and the rest of the no-done.md residue not on the verified list. Co-authored-by: Test <test@example.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Records two operator verdicts (2026-08-07) on S-H's open forks, where the consumer reads them —
not by editing the S-H research patches, which are append-only and read-only for later sessions per
the Artifact Ownership Contract.
DECISION-NEEDED #2— the [W] denominatorDECISION-NEEDED #1— corpus driftDECISION-NEEDED #3was answered by the/contextpaste and shipped in #1249.#4,#5,#6remain open by design and are untouched here.
Recording these does not unblock S-D′: that stage stays not dispatchable for two independent
reasons — its own
§5fork (resolved by the operator, but recorded only in the follow-up rev-6 PR)and the two-gate
S-E + S-H mergeddependency, of which S-E has not merged.Changes
docs/superpowers/specs/2026-08-06-pipeline-token-economy-design.md— two annotations:constatation, not a preference — [W]'s 169-session subset is physically unrecoverable,
because worktree pruning deleted 34 project directories together with their transcripts, so «the
169-session subset cannot be re-selected by re-running anything»
(
…-s-h-turn-attribution-p3d-p11.md:112, cause:92). Three binding consequences spelled out:existing [W]-tagged shares stay readable as history but are not comparable past 2026-08-07;
no new figure may be tagged [W]; every [W]-defined threshold is re-adjudicated on [H] or
marked un-adjudicable. Non-convertibility is restated, citing the patch's own caveat at
:168.un-adjudicable as written, given its operative [H] restatement, and carrying the standing
reading 16.5% > 5% → the discipline text STAYS (
:154, Option-A consequence:162)..claude/orchestrator-prompts/arch-v2-context-pipeline-s-d-prime/kickoff.md— an INPUTCONDITION in the header region, beside the existing two-gate dependency:
−23.5% between the seed and S-H (247 → 189 files, 99 → 65 project dirs), a population change, not
drift (
…-s-h-turn-attribution-p3d-p11.md:73-95).stage's baseline cites the snapshot it used.
origin/data/metricschannel (oneappended CSV row per day on a data branch, outside main history) but not its mechanism — that
is a CI cron (
.github/workflows/metrics-collect.yml) collecting GitHub popularity counters(
date,stars,forks,clones_…), and the corpus lives at~/.claude/projects, which CI cannotreach. The snapshotter is host-side by construction, not by preference.
clause states the precondition and its form; the owning stage is named at dispatch.
same date; the resolution itself lands in kickoff rev 6, a separate PR), the ADR-8 A/B arm is
descoped, so the surviving consumer of a stable baseline is this stage's own before/after.
ADR-8's 20-dispatch window travels to the follow-on stage, which inherits the same condition.
Prior-art consult
Prior-art:trailer — escape-hatch form. Not a capability commit underthe CLAUDE.md mechanical definition: no new dependency, no file under
packages/.(
origin/data/metrics+.github/workflows/metrics-collect.yml) was found and read beforeany mechanism was proposed, and rejected on a stated, checkable ground (CI has no path to
~/.claude/projects) — the#own-stack-blind-spotcounter frombuild-first-reuse-default.md §1.1. Its form is
reused; only the mechanism is new, and this PR does not build it.
Last reviewedtouch.
Test plan
npx vitest run packages/core/principles/— 36 files / 348 passed, 1 skipped.bash .claude/hooks/check-kickoff-traps.sh …/arch-v2-context-pipeline-s-d-prime/kickoff.md→EXIT 0 (§4 T-enumeration intact; this PR does not touch §4).
--no-verify).not from recall — a
sed -n '<n>p' | grepprobe per citation. One citation failed the probeand was tightened before commit:
:111-112→:112, because the quoted clause lives entirelyon
:112and:111only carries the sentence's lead-in.Provenance
n/a — not a stage PR: this executes no kickoff and produces no stage deliverable; it records operator decisions into an existing spec and an existing kickoff.
Review findings
Self-review only, and stated as such. The substance is operator-authored (both verdicts and their
grounds arrived in the handoff); my contribution is placement, wording and citation. The failure
mode this workstream has actually exhibited — nine REVISE rounds on the S-H addendum — is derived
quantities across mismatched populations, and this diff derives nothing: it introduces no
share, ratio, product or magnitude word of its own. Every figure it names (−23.5%, 247 → 189,
99 → 65, 34 dirs, 16.5%, 5%, 35.2%, 189 + 722) is quoted from a merged patch with its line, and the
mechanical probe above is the check that they point where they claim.
Residual risk, named honestly: the
~~strikethrough~~on the N1 falsifier cell is a presentationchoice, not a semantic one. A reader skimming the table sees the cell struck and might stop before
the operative [H] restatement that follows in the same cell. The alternative — deleting the [W] text
outright — loses the record of what the falsifier used to say, which the verdict explicitly wants
preserved as history. Flagged rather than silently resolved.
Fidelity verdict
FIDELITY: skipped — not a stage PR: no kickoff is being executed and no stage deliverable is produced; this records two operator verdicts into an existing spec and kickoff, with every citation verified mechanically (see Test plan).
§1.7 Forward-check applied
.claude/rules/build-first-reuse-default.md:66— the own-stack channel was surveyed(
origin/data/metrics,.github/workflows/metrics-collect.yml) before a mechanism was named,and the verdict is REUSE-the-form / reject-the-mechanism on a checkable ground, not «ours is
special». context7 correctly not consulted — its tooling caveat scopes it to library API docs.
.claude/rules/kickoff-staging-placement.md:28— the S-D′ kickoff edit follows the bindingsequence: author → merge to
staging→ only then dispatch. Nothing is dispatched by this PR,and S-D′ is independently non-dispatchable, so
#dispatch-before-stagingcannot fire here..claude/rules/ai-laziness-traps.md:56(T3),:159(T20) — no prose-only claim: everycitation carries the line it came from, and the mechanical probe is quoted in the Test plan rather
than asserted.
.claude/rules/doc-authority-hierarchy.md:15— the spec keeps its own authority; this PR addsscoped annotations inside it and does not re-declare what the spec is authoritative for. The
kickoff stays header-exempt per §2's tracked-but-exempt carve-out for
.claude/orchestrator-prompts/*/kickoff.md..claude/rules/no-paid-llm-in-ci.md:20— nothing added to CI.§1.7 Backward-check applied
Class of this change = a denominator-tag verdict that invalidates figures already published under
the superseded tag.
Disclosure — the first draft of this sweep was wrong, and a probe caught it. I initially
enumerated from recall: it named the S-E kickoff and both P14 patches as swept surfaces and omitted
the S-H kickoff. Running the actual command changed three of six rows. The corrected sweep below is
the command's output, not a recollection. This is the
#backward-check-restates-not-sweepsfailuremode (ai-laziness-traps.md T21) caught before ship rather than
after.
Population — every tracked file carrying the tag,
grep -rln '\[W\]' docs/ .claude/→ exactlyfour:
docs/superpowers/specs/2026-08-06-pipeline-token-economy-design.md— SWEPT (this diff): theconvention annotated, and its single [W]-defined threshold (N1) annotated in place. Its other
occurrences are scope tags on stage rows (
P1,P3,P5,P6,P7,P11,P13,P14),saying which axis a stage acts on — not measured shares, so no re-tagging is owed; the blanket
«no new figure may be tagged [W]» governs what comes after.
docs/meta-factory/research-patches/2026-08-07-s-h-turn-attribution-p3d-p11.md— NOT SWEPT, byownership: it is the patch that raised the fork, and research-patches are append-only +
read-only for later sessions. Already internally correct under the verdict — it tags every share
[H] at the point of use and prints the run-time warning.
.claude/orchestrator-prompts/arch-v2-context-pipeline-s-h/kickoff.md:39— GAP-FOUND, anddeliberately left: this is the line «sized against WRITE [W]», i.e. the very instruction
fork feat: self-application + meta-factory foundation (Phase 0.5–3) #2 reports as unsatisfiable. S-H is closed (arch-v2: stage S-H — host-side measurements (P3d per-turn attribution SSOT + P11 Explore/Plan probe + P14 harness price list) #1239 + docs(s-h): P14 /context addendum — the operator paste that answers DECISION-NEEDED #3 #1249 merged); its kickoff is the
historical record of what was asked, and rewriting it would erase the evidence that the stage
sized on [H] and said so. The correction lives where it belongs — in the patch the stage
produced, and now in the spec.
docs/meta-factory/research-patches/2026-08-07-s-h-p14-context-addendum.md:306— SWEPT-CLEAN:its one hit names the
[W]/[H]/[D]convention as a GAP-FOUND surface inside its own §1.7. Areference to the convention, not a share tagged with it.
Three surfaces I had expected to be in the population are not, verified rather than assumed:
…-s-h-harness-remainder-p14.md(grep -c→ 0), the S-E kickoff (0), and the S-D′ kickoff (0) —the last is swept by this diff on the sibling basis (corpus population), not on the tag.
Adjacent, not in this class:
docs/superpowers/specs/2026-07-31-arch-v2-context-pipeline-design.mdADR-3 carries no
[W]; its 29-39% band is a denominator-choice question, tracked as S-HDECISION-NEEDED #6and routed by the operator's package into the#4recalculation stage.Untouched here deliberately — folding it in would settle #6 silently.
One surface (the S-H kickoff) is left with a known, named gap and a stated reason. No surface is
left silently inconsistent.