Skip to content

docs(getff-any-stack-trace): S4 dispatch input — acceptance mechanisms + closure - #1257

Merged
artyhoo merged 1 commit into
stagingfrom
s4-authoring
Aug 7, 2026
Merged

docs(getff-any-stack-trace): S4 dispatch input — acceptance mechanisms + closure#1257
artyhoo merged 1 commit into
stagingfrom
s4-authoring

Conversation

@artyhoo

@artyhoo artyhoo commented Aug 7, 2026

Copy link
Copy Markdown
Owner

Dispatch input for getff-any-stack-trace S4 — the umbrella's last stage. Staging placement is the precondition for the aif dispatch that follows (kickoff-staging-placement.md §1).

Its gate is S3 mergedgh pr list --search "is:merged head:feature/getff-any-stack-trace-s3 base:staging" returns #1253 (mergedAt 2026-08-07T09:51:31Z), so this is the first moment S4 could be planned against a tree where the F-A decision exists.

What the stage owns (spec §9.1 + §9.3)

W6 cell v1 — scripted fresh python project on a master default branch → install.sh python → agent-surface asserts → committed Tier-1 fixture → generation → RED/GREEN firing + the §4.4 reject fixture — plus the named one-beat cold-run protocol (agents/ class, session-read, $0-in-CI), run at closure with its verdict quoted, plus the umbrella done.md that gates getff-freshness-widening.

Anchors re-verified live at ea5f7468d5, not carried from the spec

Anchor Live state
.github/workflows/audit-self.yml:1461 consumer-matrix-start-cell:the spec §9.1 and the umbrella kickoff both cite :1319; stale (file is 1546 lines). Recorded in the kickoff as a standing T3 proof.
.github/workflows/audit-self.yml:1523 - consumer-matrix-start-cell in the ci-success needs: list — named load-bearing, with the :1524-1529 alwayson-budget incident comment as the precedent for why an unlisted cell is a gate nobody reads
tests/consumer-matrix/pnpm-monorepo-cell.sh 267 lines, the only file in the directory; its :20-46 header enumerates asserts and deliberate deferrals
setup.d/45-python.sh:896 for _py_agent in rule-researcher rule-test-author — the lane's curated 2-agent set, so the cell's surface assert matches python, not npm
install.sh:606-618 the sub-agent copy glob with its explicit authoring-only skip-list; install.sh:204-212 is the shipped-header-verify set
packages/core/principles/09-doc-authority-hierarchy.ts:252 auto-covers every *.md directly under agents/ — the header is owed whether or not the protocol ships
agents/rule-researcher.md:204-211, :212-221 the S3 F-A DECLARE binding site — Node at generation time, Node-free install

Three decisions handed to the stage with criteria, not left implicit

  1. Ship-or-not for the protocol artefact — default framework-only (a continue at install.sh:606-618, matching shipped-agent-liveness-prober.md, because the protocol is run by the framework against a consumer), with the baseline consequence of the other branch stated.
  2. The cell's determinism boundary — a park trigger rather than a guess, with || true / SKIP / continue-on-error named as the tempting non-answers. Fail-closed: a missing tool is RED, never SKIP (S2b shipped a container-green suite whose load-bearing arm had silently SKIPped for want of ast-grep/ruff).
  3. Running the protocol from a container — park the RUN, not the authoring, if a genuinely cold agent + fresh consumer cannot be produced. A warm run reported as cold is T-AST-B, the domain trap this umbrella named against itself.

Source-before-shape obligation carried into the kickoff

The protocol artefact is capability-shaped, so §1 names the two in-repo probers — agents/shipped-agent-liveness-prober.md and agents/manual-rule-liveness-prober.md (SSOT #115 is the ADAPT source of the RED→GREEN methodology both use) — as a mandatory overlap consult with an explicit T16 problem-class statement required before the body is written (source-before-shape.md §1).

R1 (#1254) routed as a read, not a fix

R1 §5.1 parked whether the lane CI templates should substitute the consumer's real default branch. The cell's master-default fixture settles that question for the python lane mechanically — honest-signals S4 (#1167) fixed it at delivery via deliver_getff_workflow (setup.d/lib.sh:194, called at setup.d/45-python.sh:384), leaving [main] in the template as the literal being substituted. The kickoff asks for the assertion and the result either way, and forbids widening to cargo/go (R1's routing, owned by widening).

Domain traps added (principle 12 §3 requires ≥1; there are three)

T-S4-A the cell that asserts the install instead of the loop — a cell stopping at «agent surface present» re-implements the entry-lane test and proves nothing about W1-W3. T-S4-B done.md as a success narrative — it gates the next umbrella, so omitted descopes hand it a false baseline. T-S4-C editing the protocol until it passes — the first run is evidence about the shipped docs, and a failing cold agent yields a finding or a park, never a quiet loosening of the cold-start conditions.

Local validation

npx vitest run --root packages/core principles/12-ai-laziness-traps.test.ts   7/7 pass
bash scripts/host-verify.sh --list getff-any-stack-trace-s4                   rc=0, resolves the 4-command contract
markdownlint-cli2 (pre-commit)                                                0 errors
pre-push: link check 8 OK / 0 errors; always-on 48671B within ceiling 54000B

Fidelity verdict

FIDELITY: skipped — dispatch-input authoring only; the diff is one kickoff markdown file under .claude/orchestrator-prompts/, no implementation surface and no Provenance substrate declared. It was validated against principle 12 and the host-verify contract grammar before push, and will itself be the Basis of a cold fidelity audit when S4 lands.

§1.7 Skipped: the diff touches only .claude/orchestrator-prompts/**, which is not a §4b trigger path in either channel (the union is .claude/rules/**, packages/core/principles/**, EXECUTION-PLAN.md, prior-art-evaluations.md, CLAUDE.md, packages/core/templates/**, .claude/skills/**, agents/**). No discipline is introduced or extended here — this is a dispatch input that cites existing rules rather than changing any.

…s + closure

The umbrella's last stage. Spec §9.1 (W6 cell v1) + §9.3 (the named one-beat
cold-run protocol) are binding for semantics; this kickoff carries the schedule,
the live anchors, the park triggers and the host-verify contract.

Anchors re-verified at ea5f746, one drift recorded: the spec and the umbrella
kickoff both cite audit-self.yml:1319 for the consumer-matrix precedent; the live
job header is :1461 (file is 1546 lines). The ci-success needs: wiring at :1523 is
named as load-bearing — an unlisted cell is a gate nobody reads.

Carries the source-before-shape obligation for the protocol artefact: the two
in-repo probers (shipped-agent-liveness-prober, manual-rule-liveness-prober) are
named as the mandatory overlap consult with an explicit T16 problem-class
statement required before authoring.

R1 (#1254) §5.1's parked default-branch question is routed here as a read, not a
fix: the cell's master-default fixture settles it for the python lane.

Prior-art: skipped — dispatch-input kickoff under .claude/orchestrator-prompts/, no new capability; the stage it scopes carries its own BFR consult obligation in §5 T11.
@artyhoo
artyhoo merged commit f6d1403 into staging Aug 7, 2026
40 checks passed
@artyhoo
artyhoo deleted the s4-authoring branch August 7, 2026 10:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant