feat(meta-orchestrator): §1.7 PR-body authoring mandate in kickoff template - #216
Merged
Merged
Conversation
…mplate Adds §4b to templates/meta-kickoff.template.md — a path-triggered, always-present mandate that any Worker whose target file matches a discipline-bearing path (.claude/rules/, packages/core/principles/, EXECUTION-PLAN, prior-art-evaluations, CLAUDE.md, packages/core/templates/, .claude/skills/, agents/) MUST include §1.7 Forward/Backward-check sections in the PR body with the exact H3 + "applied" shape + ≥40 chars + ≥1 file:line citation per section. Origin: 6th recurrence of the §1.7-missing-from-PR-body CI gate fail in ~2 weeks (#58/#69/#105/#111/#212/#215). Memory feedback_pr_s17_authoring_checklist says "memory ≠ enough, execute the grep" — but in-line memory does not reliably activate inside paste-block Worker prompts. The mandate must be in the prompt itself. The §4b block: - Names all 8 path patterns that trigger the mandate - Documents 5 hard rules (H3 not H2; "applied" required; ≥40 chars; ≥1 file:line; "Skipped" escape-hatch needs ≥60-char rationale) - Provides a copy-paste pre-flight grep block Workers can run BEFORE gh pr create - Lists the 6 historical incident PR numbers as evidence Self-evaluating: Workers whose target file does NOT match the path list ignore §4b. The mandate is path-scoped, not all-Workers. No template placeholder added (no SKILL.md change needed) — block is static prose, always present in every generated meta-kickoff. Workers read it and self-apply. Prior-art: skipped — template prose addition; not a capability commit per CLAUDE.md «What is a capability commit?» (no new dep, no new file ≥50 LOC in new packages/core subdir, no new ≥80 LOC file under packages/). Evidence base: memory feedback_pr_s17_authoring_checklist + recurrence incidents PR #58/#69/#105/#111/#212/#215.
This was referenced May 25, 2026
artyhoo
added a commit
that referenced
this pull request
May 25, 2026
… detection) (#220) Run `bash .claude/skills/meta-orchestrator/helpers/plan-currency-check.sh` (L2 Stage 3 detection shipped in #217) → 88 UNTRACKED-N entries surfaced between the 2026-05-22 reconciliation and origin/staging tip (#217). Map each to an existing §0 / Track row by adding the PR number to its evidence cell, or to a new §0 row for two umbrellas that landed in full since the prior snapshot. Re-run helper → 0 UNTRACKED remaining. Key changes: - Snapshot date 2026-05-22 → 2026-05-25 (header + §0). - N8 row: A-phase 🔲 → 🟡 — C1 SSOT-existence (#170), C2 kickoff T-enumeration floor (#174), C3 principle 13 §1.7 substance (#178), C4 delivery-channel marker (#177), activation #180. C5 + cost-levers remain gated on §5.3 utilisation trigger. - Track M.1 / M.4 → DONE: M.1 codified T20 via #212 (with NB note — recommendation-laziness took the T20 slot, mutation-equivalence T-bump 20→21 still pending); M.4 6 paired-negative bash-hook tests shipped #195/#196/#197/#198/#199/#200. - Two new §0 rows: Meta-orchestrator skill (Track P) — BUILD #186 + audit rounds #192/#193/#194/#201/#202 + UX refactor #203/#204/#205 + planner-completeness #213/#214/#217 + §1.7 PR-body mandate #216; Recommendation-laziness discipline — R-phase #206/#207, benchmark #210, I-phase Sub-waves A/C/D #211/#212/#215. - N7 row: + dogfood research-patch #135 / §4 demotion #166 / live-trial verified #171. N4b row: + design #136 / record #118. - Infra paragraph: PR refs for I.1 follow-ups (#121/#123/#124/#125/ #128/#130/#131/#143/#145/#146/#147/#148/#149/#172/#187), I.2 (#139/#142/#154/#175), I.3 DN-4 (#126/#132/#133/#138/#140/#152/ #159/#161/#162/#167). - Track 2.3 (channel-earliness audit) → DONE 2026-05-23 (#181); removed from "What actually remains". - Footer subsection: standalone work (#191 satellite-arch / #189 guard-liveness / #173 storm-readiness / #176 §10 port / #182 cleanup), Wave 10 follow-ups (#110/#112/#113), plan-revision history (#108/ #109/#153/#155/#157/#160/#164/#165/#168/#179/#185). Verification: - `bash .claude/skills/meta-orchestrator/helpers/plan-currency-check.sh | grep -c '^UNTRACKED'` → 0 (down from 88). - `npx markdownlint-cli docs/meta-factory/wave-sequencing-plan.md` → no violations. - `npx vitest run packages/core/skills/plan-currency-check.test.ts` → 14/14 passed. Prior-art: skipped — chore, doc reconciliation only, no new capability or rule introduced.
This was referenced Jul 11, 2026
artyhoo
added a commit
that referenced
this pull request
Jul 12, 2026
…firing proof, fingerprint row (python-delivery-v0) (#996) * feat(install): getff Python toolchain entry lane + refresh-parity + firing self-check (python-delivery-v0 S2 T1) `install.sh python` / `./setup python` route to the pure-bash Python delivery (setup.d/45-python.sh) instead of the npm stack pipeline: an explicit `python` positional always wins; else pyproject.toml present + no package.json → OFFER (interactive default No; non-interactive / --dry-run decline to the npm lane). The lane bypasses the npm package.json precondition + stack pick and early-exits before the setup.d layer loop, so no npm-assuming step fires. The npm flow stays byte-identical (all 8 fingerprint baselines green; python logic is gated on TOOLCHAIN=python which the npm fixtures never trigger). --refresh re-delivers framework-owned Python artefacts (GETFF_TOOLCHAIN_REFRESH → refresh_safe overwrite of the rules dir + our-own sgconfig/ruff), auto-detected via the .getff-python-install.log / .getff/astgrep-rules marker on a bare `--refresh`. Augment-merged / refused consumer files stay untouched (never clobbered). refresh-covers-full-delivery.test.sh Check 4 replaces the S1 blanket 45-python.sh exclusion with real source-token refresh parity (RED before the refresh_safe branches landed, GREEN after — TDD). Post-install firing self-check (always-run + graceful degrade, matching the 99-finalize.sh capstone self-verify UX — no separate opt-in flag): plants a violation in an OS temp dir ONLY (mktemp -d, never under the consumer tree — STOP line), runs the delivered ast-grep rules + ruff config against it, asserts BOTH fire RED, then removes the temp dir. An absent tool → loud degrade printing the exact pinned manual command, never silently green (attention-is-not-a-mechanism.md §1). Tests: tests/install-sh/python-entry-lane.test.sh (20 arms — detection matrix, no-package.json bypass, npm-untouched, explicit override, --refresh overwrite + marker auto-detect, self-check fire + tool-absent degrade), wired into audit-self.yml. S1 python-delivery (43), refresh-covers (6), byte-identical (8/8), principles (303) all green. Prior-art: prior-art-evaluations.md#216 (BUILD the thin bash writer — no headless tool delivers a pre-rendered, multi-tool, augment-first lint bundle into an existing repo; the S2 entry lane + firing self-check realise #216's delivery-mechanism verdict, reusing install.sh copy_safe/refresh_safe + the 99-finalize self-verify UX, zero new deps). * feat(install): getff Python consumer CI template + fingerprint matrix python row (python-delivery-v0 S2 T2) Consumer CI template: - Ship packages/core/templates/python/github-actions-ci.yml — pinned @ast-grep/cli@0.44.1 + ruff==0.15.21 installs (ci-tool-pinning.md Rule A; both pins re-verified LATEST 2026-07-12 via npm registry dist-tags + PyPI JSON, matching the framework CI pins audit-self.yml:232,242), failing gates `ast-grep scan` + `ruff check .`. Action SHAs reuse repo-verified pins (checkout v4.2.2, setup-node v4.4.0, setup-python v5.5.0). - Delivered by the python lane (setup.d/45-python.sh _py_deliver_ci) to a getff-NAMESPACED .github/workflows/getff-python.yml — never clobbers the consumer's own ci.yml; loud REFUSE on a non-getff file at our path; refresh-aware (source-token parity keeps refresh-covers Check 4 green). Same collision-discipline class as the S1 config cells (STOP-line: no silent clobber). Fingerprint snapshot matrix python row: - snapshot.sh: python row with its OWN seeding (pyproject.toml, no package.json) + collision-cell brownfield variants (pre-existing ruff.toml → cell iii refuse; pre-existing sgconfig.yml → cell ii structural merge), decoupled from the npm {greenfield,brownfield} matrix — NOT a naive STACKS append (the npm seeding cannot seed a pyproject / exercise the augment-first cells). - Exclude the timestamped .getff-python-install.log from the fingerprint (running audit trail, not a delivered config artefact — already excluded from the layer's own (v) idempotency checksum) so the python row is deterministic; no-op for npm stacks. - New baselines tests/install-sh/baselines/python/{greenfield,brownfield-ruff,brownfield-sgconfig} .fingerprint. Existing npm baselines byte-identical (proven — no npm baseline regen). Tests: python-delivery.test.sh +8 CI-collision arms (fresh/no-ci.yml-clobber/refuse/refresh) = 50/0; byte-identical.test.sh 11/0 (8 npm + 3 python) + shellcheck 16 clean; determinism proven (SNAPSHOT_MODE=compare ×2 = 11/0 idempotent); refresh-covers Check 4 6/0; principles 303/303. Prior-art: prior-art-evaluations.md#216 (getff Python consumer delivery mechanism — the CI template + its collision-safe delivery lane are part of the same augment-first consumer-install capability this SSOT row justifies; no upstream analog for pinned multi-tool lint CI delivery). * fix(python-delivery): EOF-safe OFFER prompt + explicit-arg refresh precedence + drop dead TOOLCHAIN_EXPLICIT Addresses S2 entry-lane review findings on install.sh (commit 9ad9dd5be): - Important: the interactive OFFER-lane `read` prompt for a pyproject-only repo aborted under `set -euo pipefail` at EOF (non-tty invocation, closed stdin) — a bare `read` returns non-zero at EOF, so `set -e` killed the script right there with a message-less exit 1, instead of falling through to the documented "decline -> npm lane -> clean no-package.json abort" path. `read -rp ... || _py_ans=""` makes the read EOF-safe. - Minor: the `.getff/astgrep-rules` dual-consumer `--refresh` marker branch fired before any explicit stack arg was considered, so `install.sh ts-server --refresh` on a repo with both package.json and a stale/prior python marker silently rerouted to the python-only refresh and exited 0, skipping the npm refresh with no error. Gated the marker branch on `[ -z "$STACK_EXPLICIT" ]` so an explicit npm stack/toolchain arg always wins over the marker auto-route. - Minor: removed the dead `TOOLCHAIN_EXPLICIT` variable (set, never read — "explicit wins" was already achieved via the `[ -z "$TOOLCHAIN" ]` guard on the auto-detect block) and fixed the misleading comment describing it. Extended tests/install-sh/python-entry-lane.test.sh: arm (4) now asserts the clean "No package.json found" message + exit 1 (RED before the fix: message absent, script died silently at the read line); new arm (7b) asserts an explicit `ts-server --refresh` on a repo with a python marker present refreshes the npm stack, not the python-only path (RED before the fix: wrong banner + no npm artefact delivered). 26/26 in that file (was 20); the three sibling suites (python-delivery.test.sh, refresh-covers-full-delivery.test.sh, byte-identical.test.sh) stay green with no fingerprint drift (11/11: 8 npm + 3 python). Prior-art: skipped — review-fix round, no new capability * fix(python-delivery): CI template enforces getff ruff bans via isolated --config gate (ruff-collision cells) S2-T2 review Important (coordinator-confirmed fix-now): the shipped consumer CI template ran a bare `ruff check .` with no `--config`. In a ruff-collision cell (consumer has their own ruff.toml or pyproject [tool.ruff]), the getff TID bans ship as a NON-discovered getff-ruff.toml, so `ruff check .` discovers the CONSUMER's config and the getff bans are SILENTLY unenforced — a green gate enforcing nothing (#discipline-theatre, attention-is-not-a-mechanism.md §1, the exact failure this project exists to prevent). Probe-proven (pinned ruff 0.15.21, live, not from memory): `ruff check <dir> --config <getff.toml> --no-cache` enforces ONLY the getff config's rules — `--config` REPLACES config discovery (does not merge) — is self-contained (no consumer config needed, exit 0 on a clean tree), and fires RED on a getff violation regardless of any consumer ruff config present. Fix: - setup.d/45-python.sh: the ruff lane ALWAYS delivers the getff bans to a stable, cell-independent .getff/ruff-bans.toml (fresh dir AND every collision cell) via _py_copy_or_refresh (framework-owned, getff-header-marked, refresh-aware). Source token $tpl/ruff.toml already has copy+refresh parity, so refresh-covers Check 4 is unchanged. Firing self-check now prefers .getff/ruff-bans.toml (proves the exact file CI points at). S1 no-clobber discipline intact — no consumer file touched. - packages/core/templates/python/github-actions-ci.yml: the bare `ruff check .` becomes two steps — discovered-config check (unchanged) + an isolated getff-bans gate `ruff check . --config .getff/ruff-bans.toml --no-cache` that fires RED on our bans in EVERY cell. - _py_deliver_ci REFUSE hint: comment noting its pins intentionally mirror the template + hint kept in sync with the two-step gate (S2-T2 Minor). Tests (TDD, RED->GREEN documented in the report): +8 arms in python-delivery.test.sh (58 pass, was 50), 3 deterministic + 1 tool-gated live-fire proving bare check is BLIND while the getff gate fires RED in a collision cell. python-entry-lane 26/0, refresh-covers 6/0, byte-identical 2/0 (11/11 + shellcheck 16 clean), test:principles 303/0. Python fingerprint baselines regenerated (python rows only, +1 file each = .getff/ruff-bans.toml; npm baselines byte-identical, drift = 0). Prior-art: skipped — review-fix round, no new capability (delivers an existing artifact to a stable path + a CI gate step). * fix(python-delivery): register hand-authored CI template as non-rendered in S1 drift gate (rebase-integration) Rebasing S2 onto staging pulled in S1's python byte-drift gate (#991, backends/python-templates-drift.test.ts), which treats EVERY file under packages/core/templates/python/ as a byte-identical render of the curated starter nodes. S2 T2 hand-authored github-actions-ci.yml there (following the repo-wide convention — ts-server/presets ship their CI workflow inside their own templates/<stack>/ dir), so the now-present drift gate flagged it as an orphan. S2 was reviewed against pre-S1 base #990, so this cross-stage interaction could not surface before the rebase. Fix: register github-actions-ci.yml in a new NON_RENDERED_TEMPLATE_FILES allowlist. checkPythonTemplateDrift() no longer orphan-flags it AND now asserts it EXISTS (a silent deletion still surfaces as `missing` — the exclusion is not a blind pass, per attention-is-not-a-mechanism). The template's byte-integrity remains guarded by tests/install-sh/byte-identical.test.sh (delivered .github/workflows/getff-python.yml hash) + python-delivery.test.sh (cmp template↔delivered) — no coverage hole. No template bytes changed; byte-identical stays 11/11. Prior-art: skipped — rebase-integration fix reconciling S2's hand-authored CI template with the S1 render-drift gate that arrived via rebase; no new capability area. * fix(python-delivery): arm-9 degrade test uses a research-tool-excluded PATH (CI-robust) The firing-self-check degrade arm forced PATH=/usr/bin:/bin to simulate 'no tools', assuming that strips ast-grep/ruff/uvx. That holds on macOS (node + ast-grep live in homebrew) but NOT on CI runners that ship ast-grep in /usr/bin — there `command -v ast-grep` still resolved, the ast-grep lane FIRED instead of degrading, and the arm never exercised the both-tools-absent degrade summary it exists to prove (S2 CI-only fail 2026-07-12: PASS=24 FAIL=2). Fix: build a coreutils-only bindir that symlinks everything EXCEPT the research tools (ast-grep/sg/ruff/uvx/npx/node/pip), point the self-check PATH at it. Now `command -v` genuinely fails for both lanes on any runner → both degrade → pinned manual commands + no-green summary assert as intended. Production degrade code unchanged (it was correct; pins are hardcoded constants). Local: 26/0. Prior-art: skipped — test-only environment-robustness fix, no new capability --------- Co-authored-by: t <t@t.co>
artyhoo
added a commit
that referenced
this pull request
Jul 31, 2026
…ok rung + lane-parity audit (operator-invited) (#1172) Operator-invited insertion (2026-07-26): close the python lane's empty git-hook rung inside this umbrella (S2b) and audit whether sibling lanes hide the same class of gap (R1, lane x channel-rung parity matrix over npm/python/cargo + verify-go-absent). Meta-launch amended: launch-table rows, S2->S2b->S3 gates, S2b||R1 declared parallel (disjoint write-sets incl. the SSOT: one writer, one reader). S2b's Task 0 is the missing prior-art verdict this gap traces to: SSOT #216 REJECTed pre-commit as a delivery SCAFFOLDER, and python-delivery-v0's kickoff conditional consumed that as a verdict on the enforcement CHANNEL — pre-commit in its actual RUNNER role was never verdicted (T16-shaped conflation, provenance in the kickoff header). R1 generalizes the lesson: every GAP cell must carry a provenance classification (DECIDED-AGAINST / MISDECIDED / DEFERRED / SILENTLY-MISSED), and every EXISTS cell firing evidence, not file existence. Cold Phase -1 review: REVISE - 1 BLOCKER (R1 silent on the unconditional fidelity-verdict required-check; pr-body-fidelity.yml has no paths filter and `skipped` is rejected once a Provenance substrate is declared) + 4 MAJOR (missing H2-heading requirement in the S2b fidelity trap; an executor-tier claim without a marker; three unreconciled parallelism contradictions in the meta-launch; an undercounted S2b write-set in the amendment) + 3 MINOR (excluded-columns rationale, bare-remote note for a pre-push fixture, accept-time diff check for the new test arm). All 8 applied; principle 12: 7/7 PASS; host-verify contracts parse on both kickoffs (S2b fence, R1 explicit opt-out). NOT dispatched: the operator paused the session on limits. Next session: merge this PR (staging placement), re-probe in-flight, then dispatch S2b + R1 to aif in parallel and arm monitors. Prior-art: skipped — dispatch-input authoring and meta-launch amendment only; no new capability, no dependency, no code module. Co-authored-by: Test <test@example.com>
artyhoo
added a commit
that referenced
this pull request
Aug 6, 2026
… rung (getff-any-stack-trace) (#1233) * docs(prior-art): SSOT #237 — pre-commit runner-role verdict (getff-any-stack-trace S2b Task 0) RUNNER-ROLE verdict on pre-commit (pre-commit.com) for delivering the python lane's local git-hook rung. Resolves the T16 conflation that created this stage: #216 rejected pre-commit as a DELIVERY scaffolder (sample-config -> stdout, no merge) — the conditional at python-delivery-v0/kickoff.md:97-98 consumed that REJECT as a verdict on the ENFORCEMENT CHANNEL (the runner role), which #216's trigger-to-revisit never covered. Verdict: BUILD bare core.hooksPath-style delivery as default + integration arm for existing-hooks consumers. Decided on the binding priority-order criteria (kickoff §2 item 1): - (a) zero installed prerequisites — pre-commit FAILS: DeepWiki-verified (3 phrasings x 2 sources) that pre-commit requires Python 3.9+ AND the framework at runtime. - (b) augment-first, never clobber — pre-commit FAILS: GitHub issue #1198 confirms «Cowardly refusing to install hooks with core.hooksPath set». - (c) Node-free — both pass. Pre-push chosen over pre-commit: mirrors S2b CI template's identical checks at push time; fires at the moment a violation would leave the machine; uniformity with npm lane (setup.d/50-hooks.sh:12). BFR §3 mechanism: DeepWiki x3 phrasings on pre-commit/pre-commit + WebSearch x3 phrasings on the problem-domain term. Evidence cites #216 explicitly (role separation). ID note: the worker authored this row as #235 against a base where #235 was free. Between dispatch (2026-08-01) and egress (2026-08-07), #235 (knowledge-work-plugins) and #236 (anthropic-plugins-utility) landed on staging. Renumbered to #237 at rebase; the register's ID-uniqueness invariant (principle 08) is what the collision would have tripped. Prior-art: prior-art-evaluations.md#237 (NEW — runner-role verdict; #216 REJECT-as-delivery explicitly out of scope). * feat(python-lane): S2b — close the python lane's empty local git-hook rung Delivers a pre-push hook on the python lane (the missing earliest-reachable-channel rung between agent-session and CI). Verdict = BUILD bare core.hooksPath-style delivery as default + integration arm for existing-hooks consumers (SSOT #237; pre-commit REJECTED on the runner-role criteria: Python required at runtime + Cowardly-refusing clobber). Implementation: - packages/core/templates/python/hooks/pre-push.sh — hook body mirroring the CI template (ast-grep scan + ruff check . --config .getff/ruff-bans.toml); fail OPEN with loud warning + pinned install hint when a linter is absent (T-S2B-A counter); runtime opt-out via GETFF_SKIP_HOOKS=1. - packages/core/templates/python/hooks/getff.pre-commit-config.yaml.fragment — local-hook entry for the case-2 integration arm (consumer already uses pre-commit). - setup.d/45-python.sh — _py_deliver_local_hook_rung + 3 _py_integrate_* helpers, called from _py_deliver_agent_surface. Three integration cases: (1) core.hooksPath already set -> decline with notice; (2) .pre-commit-config.yaml present -> append fragment (idempotent via marker grep); (3) .git/hooks/pre-push file -> decline with notice; default = set core.hooksPath .getff/hooks. Install-time opt-out via GETFF_SKIP_HOOKS=1. Non-git-repo guard prevents fatal on a pre-`git init` consumer tree. --refresh re-delivery via _py_copy_or_refresh (refresh_safe honours pre-push.override.md Layer-3 escape hatch). Tests (tests/install-sh/python-entry-lane.test.sh): - Arm (14): hook delivered + executable + core.hooksPath activated + header documents opt-out + deletion path. - Arm (14b): install-time opt-out (GETFF_SKIP_HOOKS=1 -> no activation). - Arm (15): RED/GREEN firing through ACTUAL git push (local bare remote + planted os.system violation); SKIP-run via GETFF_SKIP_HOOKS=1. Tool-gated — container SKIPs when ast-grep/ruff absent; host-verify exercises the real firing proof (T-S2B-C). - Arm (16): three integration cases (existing core.hooksPath / .pre-commit-config.yaml / legacy .git/hooks/pre-push) — never silently broken, idempotent on re-install. T21 backward-check sibling surfaces: npm lane (setup.d/50-hooks.sh + .husky) SWEPT-CLEAN, untouched (anti-scope). Cargo lane (setup.d/46-cargo.sh) GAP-FOUND — same empty rung; named for the widening getff-any-stack-trace umbrella, NOT fixed here. Fingerprints regenerated: python/{greenfield,brownfield-ruff,brownfield-sgconfig} — new .getff/hooks/pre-push shifts the install output (kickoff §3 fingerprint-regen requirement). Prior-art: prior-art-evaluations.md#237 (BUILD verdict — bare core.hooksPath-style delivery + integration arm; pre-commit REJECTED on runner-role criteria). * fix(python-lane): S2b egress fixes — pipefail-defeated RED assertion, template registry, SSOT renumber Three host-side corrections found while landing the container's S2b work. None is a scope change; all three are defects the container did not surface. 1. Arm (15) RED assertion could never pass (tests/install-sh/python-entry-lane.test.sh). The assertion piped `{ cat push_red; git push ...; }` straight into `grep -qi`. Under `set -o pipefail` (line 15) the re-push's legitimate non-zero exit — the rung blocking the push, which IS the thing being asserted — became the pipeline's status, so the arm reported RED-not-fired even when the hook output was present verbatim in the captured stderr. Measured on the host: `✗ getff pre-push: ast-grep structural rule(s) fired — push blocked` present, arm still failed. Fixed by capturing to a variable first. Why the container missed it: arm (15) is tool-gated and SKIPs when ast-grep/ruff are absent, which they are in the container — a green container run on a vacuous arm, the T14 «clean audit on low coverage» shape the kickoff §5 named. Host: PASS=80 FAIL=0 with the arm actually exercised. 2. The two new hook templates were not registered in NON_RENDERED_TEMPLATE_FILES (packages/core/python-starter/render-python-templates.ts:78). The byte-drift gate asserts the committed set under templates/python/ equals plan + allowlist, so `backends/python-templates-drift.test.ts:46` went RED on the unregistered pair — caught by `.husky/pre-push` §5c on the host push, the same channel that caught the registry violation on S2. Registered with the rationale the existing entry carries (hand-authored, not a lint-rule render; byte-integrity guarded by the install fingerprint gate + arms (14)/(16b); firing guarded by arm (15)). packages/core test:backends after the fix: 24 files / 242 tests, 0 failed. 3. SSOT #235 → #237 across the code comments and the install-time echo (setup.d/45-python.sh:675,680,711,738,742,1013; python-entry-lane.test.sh:437). The worker authored the register row as #235 against a 2026-08-01 base; #235 (knowledge-work-plugins) and #236 (anthropic-plugins-utility) landed on staging in the six days the branch sat unharvested. The rebase renumbered the row; these are the in-code citations that pointed at it. Host-verify (kickoff §7): 3/3 on Darwin — python-entry-lane 80/80, python-rules-lock 21/21, snapshot compare 15/15 byte-identical. Prior-art: skipped — test-assertion bugfix, template-registry entry, and citation renumber on an existing capability; no new capability introduced. --------- Co-authored-by: Test <test@example.com>
artyhoo
added a commit
that referenced
this pull request
Aug 7, 2026
…the unreleased round 1) (#1254) * docs(getff-r1): round-2 lane × channel-rung parity audit — re-derive under §8 map Round-1 patch was unreachable in the worker clone; round 2 re-derives every cell against the live tree per kickoff §8 (T-R1-D). Go lane now exists (PR #1171, 2026-08-06) and gets 7 substantive verdicts replacing round-1's N/A absence row. §8.2 MAJORs addressed (npm rung 6 firing evidence; analogy EXISTS cells re-derived; EXISTS* hybrid resolved). §8.3 MINORs addressed (SSOT #216 quote literal-or-dropped; deceptive-rung findings elevated; line-count claim replaced with section cite). Matrix: 4 lanes × 7 rungs = 28 cells (21 EXISTS, 7 GAP, 0 N/A). Per-GAP provenance: 1 DECIDED-AGAINST / 1 MISDECIDED / 0 DEFERRED / 5 SILENTLY-MISSED. T7 counter-prompt run 3× (nothing surfaced). T15 self-application in §8. Prior-art: skipped — research patch only, no new capability, no dependency, no code module * docs(getff-r1): re-verdict python rung 2 at the egress seam — S2b closed it mid-flight The accepting session's pre-merge re-verdict, kept as its own commit so the auditor's round-2 output and the correction stay separable in history. Between this audit's base (2923ba6) and staging at merge (c3cb7a6), S2b #1233 a66c0cb landed and closes the exact cell the audit verdicted GAP/MISDECIDED — _py_deliver_local_hook_rung at setup.d/45-python.sh:702 (header :669-701), delivering .getff/hooks/pre-push and activating it via core.hooksPath, with a non-clobbering integration arm. Host-verified: tests/install-sh/python-entry-lane.test.sh cases (14)-(16), PASS=80 FAIL=0. - python rung 2: GAP -> EXISTS; provenance MISDECIDED -> RESOLVED. The §4.1 provenance analysis is retained verbatim as the historical record of how the decision chain broke — that is the finding the operator asked for — with a status block on top. - Tallies: 22 EXISTS / 6 GAP / 0 N/A (was 21 / 7 / 0); MISDECIDED 1 -> 0. - Blast radius enumerated, not assumed: git diff --name-only over setup.d/, install.sh, packages/core/templates/ and packages/core/hooks/ across the 19 intervening commits shows S2b's three python files as the only lane-surface changes. The other 27 verdicts stand at staging. - New §6.1 records the instance itself: two rows of this audit aged out in two different windows — the go row in the dispatch window, python rung 2 in the egress window. That is the base rate for a fast trunk, so §6 gains item 4: re-verdict a parity-shaped patch at the egress seam, since the accepting session is the last channel that can catch it. Prior-art: skipped — correction to a research patch under docs/meta-factory/research-patches/, one markdown file, no new capability, no dependency, no code module. --------- 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
.claude/skills/meta-orchestrator/templates/meta-kickoff.template.md— a path-triggered, always-present block that every generated meta-kickoff carries; Workers self-evaluate against the path list (.claude/rules/**,packages/core/principles/**,EXECUTION-PLAN.md,prior-art-evaluations.md,CLAUDE.md,packages/core/templates/**,.claude/skills/**,agents/**).gh pr create.Test plan
§1.7 Forward-check applied
This PR adds a discipline-bearing mandate to a template under
.claude/skills/**(matches the path list this very mandate introduces — recursive self-application)..claude/rules/doc-authority-hierarchy.md— template addition does NOT change doc-authority; template inherits SKILL.md's Authoritative-for scope. file:line evidence:.claude/skills/meta-orchestrator/SKILL.md:6.claude/rules/phase-research-coverage.md §1.12— verdict applied: BUILD (path-scoped Worker-prompt mandate). Evidence base: 6× recurrence per memoryfeedback_pr_s17_authoring_checklist. Falsifier: wrong if §4b text proves ignorable inside Worker prompts; revisit at 8× recurrence. file:line evidence:.claude/skills/meta-orchestrator/templates/meta-kickoff.template.md:90.claude/rules/ai-laziness-traps.md §2— mandate is the operational counter to T19 (own cold-QA pre-handoff) and the deeper T-system gap that memory-only enforcement leaves open. file:line evidence:.claude/skills/meta-orchestrator/templates/meta-kickoff.template.md:99.claude/rules/no-paid-llm-in-ci.md— template change is prose-only; no LLM API calls; pre-flight grep is deterministic bash. file:line evidence:.claude/skills/meta-orchestrator/templates/meta-kickoff.template.md:84-90.claude/rules/build-first-reuse-default.md— no new dep, no new file ≥50 LOC in newpackages/core/subdir, no new ≥80 LOC file underpackages/— rule-prose addition, not capability commit. Voluntary evidence trail in commit body (escape-hatch syntax).§1.7 Backward-check applied
Scope-additive change to the meta-orchestrator template. No existing artefact silently superseded; the mandate is a NEW layer between «kickoff §4 dispatch instructions» and «§4a Worker worktree setup».
.claude/skills/meta-orchestrator/templates/meta-kickoff.template.md— pre-existing §4 / §4a sections unchanged; §4b inserted between them. file:line evidence:.claude/skills/meta-orchestrator/templates/meta-kickoff.template.md:65.claude/orchestrator-prompts/*/kickoff.md— pre-mandate kickoffs are forward-going (next dispatch picks up §4b), not retroactively rewritten — parallel to.claude/rules/dual-implementation-discipline.md §9«forward-going annotation» pattern. file:line evidence:.claude/rules/dual-implementation-discipline.md:1feedback_pr_s17_authoring_checklist— already records the 4× recurrence at incident-count level; this PR makes the workflow-level fix the memory was unable to enforce by itself. file:line evidence: memory entry (user-scope, outside repo).grep -rn "§1.7" .claude/skills/returns only the new §4b block in this commit; no duplicate enforcement layer.Origin
feedback_pr_s17_authoring_checklistflagging «memory ≠ enough»/meta-orchestrator recommendation-laziness-discipline-i-phaseumbrella dispatch — observed both Sub-wave C (PR fix(ai-laziness-traps): T20 inline-verdict-without-evidence #212) and Sub-wave D (PR docs(rules): recommendation-laziness-discipline Class C — mechanism layer for §1.12 (I-phase Sub-wave D) #215) Workers miss §1.7 in the same dispatch