Skip to content

feat(principles): shipped-agent tools:-name allow-list gate (M1, #551 regression-prevention) - #576

Merged
artyhoo merged 1 commit into
stagingfrom
feature/shipped-artifact-liveness-gap-m1-gate-8cae60
Jun 16, 2026
Merged

feat(principles): shipped-agent tools:-name allow-list gate (M1, #551 regression-prevention)#576
artyhoo merged 1 commit into
stagingfrom
feature/shipped-artifact-liveness-gap-m1-gate-8cae60

Conversation

@artyhoo

@artyhoo artyhoo commented Jun 16, 2026

Copy link
Copy Markdown
Owner

What

M1 gate — Phase 1 of shipped-artifact-liveness-gap (research PR #566, verdict Option C phased, scope (i)). A deterministic principle test failing when any shipped agents/*.md tools: (or shipped-skill allowed-tools) entry is not a CC-canonical tool name.

Scope correction: the 6 agents themselves were already fixed on staging by #571 (in parallel with this autonomous build). This PR therefore ships only the gate + SSOT — the regression-prevention #571 did not add. The 6 agent edits aif produced on a stale fork were dropped (redundant + would have clobbered #571's better fix, which adds Grep/Agent).

Built autonomously via aif-handoff (task 8cae6079).

§1.7 Forward-check applied

no-paid-llm-in-ci.md — the gate is a deterministic vitest test over node:fs, zero LLM/API calls, CI-safe. file:line evidence: packages/core/principles/21-shipped-agent-tools-valid.test.ts:46. build-first-reuse-default.md — BUILD justified: the §121 survey (WebFetch tools-reference + CC issues #52055/#18837/#8697) found no upstream validator for CC subagent tools: names. ai-laziness-traps.md §2 T16 — explicitly a FORM-check (names resolve), NOT a behaviour-check (the M2 dispatch-probe is Phase 2, deferred). file:line evidence: docs/meta-factory/prior-art-evaluations.md:1.

§1.7 Backward-check applied

Swept artefacts under the gate's scope. The 6 agents/*.md that triggered #551 are already canonical on current staging via #571 — verified each tools: line (Read, Glob, Grep, Bash, Agent) is in the gate's allow-list, so the gate is GREEN against them and this PR deliberately excludes the agent files (no clobber of #571). file:line evidence: packages/core/principles/21-shipped-agent-tools-valid.test.ts:169. SSOT #114 (ESLint guard-liveness) / #115 (manual-rule-liveness-prober) — same own-built liveness family; this extends, does not supersede. No existing rule or principle is superseded.

@artyhoo
artyhoo force-pushed the feature/shipped-artifact-liveness-gap-m1-gate-8cae60 branch from 3f63cf8 to bfbb0fb Compare June 16, 2026 19:02
@artyhoo artyhoo changed the title feat(principles): shipped-agent tools:-name allow-list gate (M1, closes #551) feat(principles): shipped-agent tools:-name allow-list gate (M1, #551 regression-prevention) Jun 16, 2026
@artyhoo
artyhoo enabled auto-merge (squash) June 16, 2026 19:03
…551 regression-prevention)

Phase 1 of shipped-artifact-liveness-gap (research PR #566, Option C phased, scope (i)).
The 6 agents were already fixed on staging by #571; this adds the DETERMINISTIC GATE
#571 did not — preventing any future non-canonical tool name from shipping.

- packages/core/principles/21-shipped-agent-tools-valid.test.ts (9 tests, paired-negative)
- prior-art-evaluations.md #121 (BUILD; own liveness family with #114/#115)

Built autonomously via aif-handoff (task 8cae6079); agent edits dropped as redundant with #571.

§1.7: forward-check applied — no-paid-llm-in-ci compliant (deterministic vitest, zero API call), build-first-reuse BUILD #121 (no upstream validator), T16 form-check not behaviour-check; backward-check sweep — #571 already made the 6 agents canonical so this adds only the missing regression gate and supersedes nothing. Evidence: packages/core/principles/21-shipped-agent-tools-valid.test.ts:46
Prior-art: prior-art-evaluations.md#121 (BUILD - shipped-agent tools:-name allow-list gate; no upstream validator; own liveness family with #114/#115; T16 form-check distinct from #53/#115 behavioural eval).
@artyhoo
artyhoo force-pushed the feature/shipped-artifact-liveness-gap-m1-gate-8cae60 branch from bfbb0fb to cad8181 Compare June 16, 2026 19:06
@artyhoo
artyhoo merged commit dbf42f2 into staging Jun 16, 2026
26 checks passed
artyhoo added a commit that referenced this pull request Jun 16, 2026
…hase 2 of #551)

ADAPT of #115 (manual-rule-liveness-prober) retargeted to shipped sub-agents.
Build-only + DORMANT: ships ready but NOT run, NOT in CI, NOT a mandatory step.
Promotion trigger (research §5.2): 2nd dispatch-fabrication incident OR #550 ships.
Complements the M1 gate #576 (form-check) with the behaviour-check it cannot reach.

- agents/shipped-agent-liveness-prober.md (probe prompt; tools Read,Glob,Grep,Agent — passes M1 gate)
- agents/fixtures/shipped-agent-liveness/ (5 per-agent RED→GREEN fixtures + README)
- install.sh: probe marked authoring-only (excluded from consumer copy, #552 sibling)

Built autonomously via aif-handoff (task f16e7b28). Probe NOT run — behavioural validation is the operator's deferred first run.

§1.7: forward-check applied — ADAPT #115 not new-build (build-first-reuse), session-bound never-CI (no-paid-llm), ships DORMANT not mandatory; backward-check sweep — complements M1 gate #576 form-check with behaviour-check and supersedes nothing, probe's own tools are canonical so it passes the gate. Evidence: agents/shipped-agent-liveness-prober.md:1
artyhoo added a commit that referenced this pull request Jun 16, 2026
…hase 2 of #551)

ADAPT of #115 (manual-rule-liveness-prober) retargeted to shipped sub-agents.
Build-only + DORMANT: ships ready but NOT run, NOT in CI, NOT a mandatory step.
Promotion trigger (research §5.2): 2nd dispatch-fabrication incident OR #550 ships.
Complements the M1 gate #576 (form-check) with the behaviour-check it cannot reach.

- agents/shipped-agent-liveness-prober.md (probe; tools Read,Glob,Grep,Agent — passes M1 gate)
- tests/fixtures/shipped-agent-liveness/ (5 per-agent RED→GREEN fixtures + README; NOT under agents/ so the agent-scanners skip them)
- install.sh: probe marked authoring-only (excluded from consumer copy)

Built autonomously via aif-handoff (task f16e7b28). Probe NOT run — behavioural validation is the operator's deferred first run.

§1.7: forward-check applied — ADAPT #115 not new-build (build-first-reuse), session-bound never-CI (no-paid-llm), ships DORMANT not mandatory; backward-check sweep — complements M1 gate #576 form-check with behaviour-check and supersedes nothing, probe's own tools canonical so it passes the gate. Evidence: agents/shipped-agent-liveness-prober.md:1
Prior-art: prior-art-evaluations.md#121 (M2 dispatch probe — ADAPT of #115; the Phase-2 behaviour-check half of the shipped-agent-liveness SSOT entry).
artyhoo added a commit that referenced this pull request Jun 16, 2026
…hase 2 of #551) (#580)

ADAPT of #115 (manual-rule-liveness-prober) retargeted to shipped sub-agents.
Build-only + DORMANT: ships ready but NOT run, NOT in CI, NOT a mandatory step.
Promotion trigger (research §5.2): 2nd dispatch-fabrication incident OR #550 ships.
Complements the M1 gate #576 (form-check) with the behaviour-check it cannot reach.

- agents/shipped-agent-liveness-prober.md (probe; tools Read,Glob,Grep,Agent — passes M1 gate)
- tests/fixtures/shipped-agent-liveness/ (5 per-agent RED→GREEN fixtures + README; NOT under agents/ so the agent-scanners skip them)
- install.sh: probe marked authoring-only (excluded from consumer copy)

Built autonomously via aif-handoff (task f16e7b28). Probe NOT run — behavioural validation is the operator's deferred first run.

§1.7: forward-check applied — ADAPT #115 not new-build (build-first-reuse), session-bound never-CI (no-paid-llm), ships DORMANT not mandatory; backward-check sweep — complements M1 gate #576 form-check with behaviour-check and supersedes nothing, probe's own tools canonical so it passes the gate. Evidence: agents/shipped-agent-liveness-prober.md:1
Prior-art: prior-art-evaluations.md#121 (M2 dispatch probe — ADAPT of #115; the Phase-2 behaviour-check half of the shipped-agent-liveness SSOT entry).
artyhoo added a commit that referenced this pull request Jun 16, 2026
…-artifact-liveness)

The two single-task briefs dispatched autonomously to aif-handoff this session:
- m1-gate: build the tools:-name allow-list gate (shipped via #576).
- m2-probe: build the DORMANT behavioural probe, build-only (shipped via #580).
Both carry the §4c park-don't-guess contract + scope decisions (M1 scope (i),
M2 build-only/dormant). Committed-durable per SSOT #116.
artyhoo added a commit that referenced this pull request Jun 16, 2026
* docs(pipeline): meta-launch kickoff for shipped-artifact-liveness-gap

Generated by /pipeline shipped-artifact-liveness-gap. Stage-gated R-phase plan
(Mode A inline / RESEARCH) + §4c autonomous-dispatch park-don't-guess contract.
The R-phase itself was dispatched to aif-handoff (task fd245536); its research
deliverable ships separately via #566. Passes principle 12 (AI-laziness-traps).

* docs(pipeline): aif dispatch kickoffs for M1 gate + M2 probe (shipped-artifact-liveness)

The two single-task briefs dispatched autonomously to aif-handoff this session:
- m1-gate: build the tools:-name allow-list gate (shipped via #576).
- m2-probe: build the DORMANT behavioural probe, build-only (shipped via #580).
Both carry the §4c park-don't-guess contract + scope decisions (M1 scope (i),
M2 build-only/dormant). Committed-durable per SSOT #116.
artyhoo added a commit that referenced this pull request Jun 17, 2026
… gate #576 + M2 probe #580) (#623)

Umbrella fully shipped: framework now liveness-tests its own shipped agents.
- R-phase #566 — survey + Option C verdict (form-gate + behavioural-probe, phased)
- M1 #576 — principle 21 tools:-name allow-list gate; paired-negative arm catches
  the exact #551 zero-tool frontmatter (read_file/list_files/run_command) at pre-push
- M2 #580 — agents/shipped-agent-liveness-prober.md, dormant operator-run RED->GREEN probe
- SSOT #121 landed; agnostic agents migrated to canonical CC tool-names (#551 meta-irony resolved)

Closes the umbrella per CLAUDE.md 'Umbrella closure convention'; restores priority-score
completion-detection (Layer C3 done.md basis) — the umbrella was shipped but unclosed.

Prior-art: skipped — umbrella-closure done.md marker under .claude/orchestrator-prompts/, no new capability (refs SSOT #121 already landed with the M1 capability commit #576).
artyhoo added a commit that referenced this pull request Jun 17, 2026
…-gap (#624)

The umbrella's done.md (PR #623, merged 16:05Z) was premature. Issue #550 — the
parent acceptance tracker — states 16 min earlier (comment 2026-06-17T15:49:43Z):
'the broader post-install smoke is its remaining scope ... No new umbrella required
— both follow-ups are already homed [under shipped-artifact-liveness-gap].'

R-phase #566 + M1 gate #576 + M2 dormant probe #580 landed, but the post-install
liveness-smoke (the #550 meta-proposal: actually RUN each shipped capability post-
install, fail if silently dead) is committed scope of THIS umbrella, not a deferred
out-of-scope item. Removing done.md re-opens it so priority-score detects it live.

Prior-art: skipped — reverts a closure marker under .claude/orchestrator-prompts/, no capability change (corrects a premature DONE per parent tracker #550).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant