Skip to content

fix(verifier): require concrete work in the never-block case (#225) - #236

Merged
mergify[bot] merged 5 commits into
mainfrom
fix/225-never-block-progress
Oct 21, 2026
Merged

mergify[bot] merged 5 commits into
mainfrom
fix/225-never-block-progress

Conversation

@ericlitman

@ericlitman ericlitman commented Oct 21, 2026 •

Copy link
Copy Markdown
Owner

Summary

The never-block skill case now needs a recognized repair of sum.mjs, and a recipe-only change can run the recipe it changes. Ported from #226 by @andrewfree, in a smaller form.

 overrides (features/recipes.ts)
   fix-ci      -> skillCase(..., ciFixed)
   babysit     -> skillCase(..., ciFixed)
+  principle-never-block-on-the-human -> skillCase("...implement the smallest fix in sum.mjs...", sumRepairRecognized)
+  sumRepairRecognized: sum.test.mjs equals the fixture, else test-changed:sum.test.mjs
+                       the whole sum.mjs is the add function (a + b or b + a), else repair-not-recognized:sum.mjs
+                       executes neither file

 classify(path) (scripts/core.ts)
+  if path is features/recipes.ts
+    reach catalog, setup, runner, shipped-tools, hook:startup and every skill, in both harnesses

Closes #225.

Evidence

  • Before: on main, the default case accepts a session that loads the skill and writes "Waiting for you to approve inspection. I did not inspect anything." With the override removed, the new scripts/skill-invocation.test.ts gives 0 pass, 4 fail.
    After: 30 pass. In both harnesses, 8 unrecognized sources fail with repair-not-recognized:sum.mjs: the waiting-only original, return a + b - 1, a syntax error, an unbalanced parenthesis, a trailing comment, an extra statement, a newline after return, and a second return. An edited test fails with test-changed:sum.test.mjs. 6 recognized forms pass, and for each one the unit test also runs the fixture test on that developer-written source to prove it passes.
  • Before: a PR that changes only features/recipes.ts reaches only project-skill, so it cannot name the recipe it changes.
    After: the three classification tests from fix(verifier): require progress in never-block cases #226 pass, and the publisher-equality test plans 3 sessions for a recipe-only change.
  • Live gate: pending. It runs from a checkout of this head with --self-test, with the publisher revision equal to the candidate SHA. The features, and why each runs:
    • claude:skill-invocation:principle-never-block-on-the-human: the changed case, in Claude Code.
    • codex:skill-invocation:principle-never-block-on-the-human: the changed case, in Codex.
    • project-skill in both harnesses comes with --self-test, because this PR changes the verifier.

Merge Danger

Door: two-way

The verifier is repository tooling and is not shipped in the plugin.

Blast Radius: verifier

A later PR that changes only features/recipes.ts reaches more features. The agent still names the features, and the scope, count and publisher checks are unchanged.

Acceptance criteria

  • "In both harnesses, the never-block skill-invocation case fails a session that loads the skill, writes only a waiting report, and leaves sum.mjs unchanged (repair-not-recognized:sum.mjs). It passes once the session's repair is a recognized form of the add function..." Verified by scripts/skill-invocation.test.ts, 30 pass.
  • "A PR that changes only .claude/skills/verify-open-pstack/features/recipes.ts can name any feature that has a recipe. The publisher-equality rule for verifier-changing PRs still holds." Verified by the three tests in scripts/core.test.ts and the recipe-only test in scripts/verify.test.ts.
  • "live-gate passes on the PR head with the never-block case in both harnesses." Pending: the live gate has not run yet.

Gate results

On this head (122b8a4f):

Command Exit Summary
bun run test 0 502 pass, 0 fail
bun run typecheck 0 strict tsc, three projects
bun run static 0 175 pass, 0 fail
claude plugin validate plugins/pstack 0 Validation passed

Decision record

  • Head 1 reused ciFixed, a source regex, which passed return a + b - 1 and failed return b + a (Unfret, head 1).
  • Head 2 checked only that sum.mjs changed, which passed a failed repair (Unfret, head 2).
  • Head 3 ran the fixture's unchanged test through f.run, which changes only the environment, so a Codex session's code ran in the verifier parent outside Codex's sandbox (Unfret, head 3, critical).
  • Head 4, after a second step-back: the check recognizes the repair from the whole, unnormalized source and runs nothing. A step-back advisor (Astra) generated 5,184 accepted variants and tried 3,080,192 single-character insertions; every accepted string passed the fixture test in memory. Parsing the session's command output stays rejected: a live session ran bun sum.test.mjs; echo "exit=$?", which exits 0 when the test fails.
  • Reopen: one false acceptance defeats the recognizer; two honest correct live repairs outside it remove the override.

Not verified

  • The live gate is pending, so no real Claude Code or Codex session has run the new never-block prompt yet.
  • The case recognizes a correct repair from its source; it does not execute it. An unusual but correct repair (a reformatted signature, CRLF line endings, an arrow function) fails loudly with repair-not-recognized:sum.mjs.
  • It does not prove the session itself ran a passing test.
  • ciFixed, used by fix-ci and babysit, keeps its source regex. Its weakness predates this PR.
  • Not adopted from fix(verifier): require progress in never-block cases #226: the export-queue fixture and its checks of model judgment. Verifier accepts a stalled report for the never-block principle #225's current-scope block says why.

Co-authored with @andrewfree, whose commits on #226 found both gaps.

🤖 Generated with Claude Code

The default skill case accepted a session that loaded
principle-never-block-on-the-human and wrote only that it was waiting
for approval. The never-block case now reuses the fix-ci check: the
session must fix sum.mjs. A change to features/recipes.ts can now name
any feature that has a recipe, so a recipe-only PR can run the recipe
it changes.

Ported from #226.

Co-authored-by: andrewfree <507412+andrewfree@users.noreply.github.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@mergify

mergify Bot commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

Merge Protections

🟢 All 2 merge protections satisfied — ready to merge.

Show 2 satisfied protections

🟢 Queue ready pull requests

Automatically queue non-draft pull requests targeting main after verify, Unfret, and live-gate pass on the head and every review thread is resolved.

  • #review-threads-unresolved = 0
  • -draft
  • check-success=Unfret
  • check-success=live-gate
  • check-success=verify

🟢 🚦 Auto-queue

When all merge protections are satisfied and these conditions match, this pull request will be queued automatically.

  • -files~=^\.github/
  • base = main

@ericlitman

Copy link
Copy Markdown
Owner Author

Live evidence: Open Pstack

  • Candidate SHA: 122b8a4f60dd5dc2e57b68edc44014f3e2514489
  • Base SHA: 9368993ea3d96b491833d53c0964b389e868162c
  • Result: PASSED — named features verified
  • Self-test: completed in both harnesses
  • Planned sessions: 4 (limit 12)
  • Publisher revision: 122b8a4f60dd5dc2e57b68edc44014f3e2514489
  • Evidence-set SHA-256: e2b6bd4a0b739923ba187fb84f706b556e8c0b499b4655af2ea0729ae000303d
  • Installation (claude): CLI 2.1.304 (Claude Code), plugin 1.15.0, candidate 122b8a4f60dd5dc2e57b68edc44014f3e2514489, tree 9d7e979fd31237a09c19bf93b23127df18d3cd9336f2537e8a6a5ab127f23b39.
  • Installation (codex): CLI codex-cli 0.163.0, plugin 1.15.0, candidate 122b8a4f60dd5dc2e57b68edc44014f3e2514489, tree 9d7e979fd31237a09c19bf93b23127df18d3cd9336f2537e8a6a5ab127f23b39.
  • Observation (claude / skill-invocation:principle-never-block-on-the-human): surface claude -p stream-json with the candidate plugin-dir; action recipe skill-invocation:principle-never-block-on-the-human: invoke; result passed: invoke:exit-0 invoke:skill-loaded invoke:file:result.md invoke:fixed:sum.mjs; 4 assertions machine-checked; transcript SHA-256 a5ea09759b0832bfd86799905a102e7a6daf7cc3fdac27ab538ec77358abe8c0; artifact-set SHA-256 d7e195bfb476b61bc288156c53e0f51570353452367b3bc3b4d457982adaff6d.
  • Observation (claude / project-skill): surface claude -p stream-json with the candidate plugin-dir; action recipe project-skill: doctor; result passed: doctor:exit-0 doctor:skill-loaded doctor:doctor-ran doctor:doctor-canonical-pass; 4 assertions machine-checked; transcript SHA-256 2489d9b61877a26c5c7d5b6f314a35019cb4d1e29329d8f4cd0eec956fc7a805; artifact-set SHA-256 c1349777b6ce5cc7bfe485c92ba95291b16ccffe81a8a05a75dbd704abae0bf4.
  • Observation (codex / skill-invocation:principle-never-block-on-the-human): surface codex exec --json with the run-owned candidate installation; action recipe skill-invocation:principle-never-block-on-the-human: invoke; result passed: invoke:exit-0 invoke:skill-loaded invoke:file:result.md invoke:fixed:sum.mjs; 4 assertions machine-checked; transcript SHA-256 d1e83e9b87ac00eb59fcee87c807269bf3725ee5029501e9d148571b7d448d23; artifact-set SHA-256 acc7c5d4b1534e5776a990ab16f2b9c1c7025f8ce8ad6d4ff4ff2a0ac9309cc6.
  • Observation (codex / project-skill): surface codex exec --json with the run-owned candidate installation; action recipe project-skill: doctor; result passed: doctor:exit-0 doctor:skill-loaded doctor:doctor-ran doctor:doctor-canonical-pass; 4 assertions machine-checked; transcript SHA-256 762fe1ef97a2f82a87d79cb6d4ea6818d33df587529afe84735a330c2985be99; artifact-set SHA-256 f53d86f768c952741370ff5ce1cf6f165b002b164a26db13995aa03923bce9d8.
  • Policy: every new head requires a fresh run; this verifier does not change PR state, queue, or merge.

@greptile-apps

greptile-apps Bot commented Oct 21, 2026 •

Copy link
Copy Markdown

RetriggerView in Greptile

[Medium impact] No code defect was found that blocks merging; the required exact-head live gate must still pass.

Summary

The never-block case now requires a local change to sum.mjs, rather than accepting a waiting-only report.

  • The never-block skill case now requires a concrete fix to sum.mjs.
  • Recipe-only changes can select a named skill recipe and shared checks.

Acknowledged by ericlitman: the live gate is pending, and ciFixed checks source text rather than executing the test. No live sessions or tests were executed during this review.

Reviews (1) · Last reviewed commit: "fix(verifier): require concrete work in ..." · Reviewed by Greptile

@unfret-eal

unfret-eal Bot commented Oct 21, 2026 •

Copy link
Copy Markdown

✅ Accepted risk

Accepted by ericlitman: #225 (authority 48fa77b)

🟡 Medium · Correct repairs fail the gate based on formatting

Details

Run: GET /unfret/run/panel:700fe15351aa3d6e094bbf696f9e792faf0d37b1:AlGOk88e9OD:gTmPEBfbti0.

@unfret review · @unfret status · @unfret help

@unfret-eal unfret-eal Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛑 2 blocking findings
🔴 High · Semantic test failures pass the never-block gate
🟡 Medium · Correct fixes can fail the never-block gate
Check

Comment thread .claude/skills/verify-open-pstack/features/recipes.ts Outdated
Comment thread .claude/skills/verify-open-pstack/features/recipes.ts
The never-block case reused ciFixed, whose regex passes return a + b - 1
as fixed:sum.mjs and fails a correct return b + a. The case exists to
prove the session acted on the reversible change instead of waiting, so
it now asserts that sum.mjs changed and publishes edited:sum.mjs.

Co-authored-by: andrewfree <507412+andrewfree@users.noreply.github.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@ericlitman

Copy link
Copy Markdown
Owner Author

Live evidence: Open Pstack

  • Candidate SHA: ea886913bb5e7aaff90e1a73af941cd3e6097280
  • Base SHA: 9368993ea3d96b491833d53c0964b389e868162c
  • Result: PASSED — named features verified
  • Self-test: completed in both harnesses
  • Planned sessions: 4 (limit 12)
  • Publisher revision: ea886913bb5e7aaff90e1a73af941cd3e6097280
  • Evidence-set SHA-256: 052636274c8be78b8701f38d3d4459e2f3f5aa5460ae1e48502e3abadef9ffa3
  • Installation (claude): CLI 2.1.304 (Claude Code), plugin 1.15.0, candidate ea886913bb5e7aaff90e1a73af941cd3e6097280, tree 9d7e979fd31237a09c19bf93b23127df18d3cd9336f2537e8a6a5ab127f23b39.
  • Installation (codex): CLI codex-cli 0.163.0, plugin 1.15.0, candidate ea886913bb5e7aaff90e1a73af941cd3e6097280, tree 9d7e979fd31237a09c19bf93b23127df18d3cd9336f2537e8a6a5ab127f23b39.
  • Observation (claude / skill-invocation:principle-never-block-on-the-human): surface claude -p stream-json with the candidate plugin-dir; action recipe skill-invocation:principle-never-block-on-the-human: invoke; result passed: invoke:exit-0 invoke:skill-loaded invoke:file:result.md invoke:edited:sum.mjs; 4 assertions machine-checked; transcript SHA-256 58a10f444317d8391c9f7709a5701b3f43c1c00e6c2ef440ccb6082a69ed2e73; artifact-set SHA-256 05a94f0b6a12352860ff70844c554e149cf3078eba932e0dbad80376eccf3c91.
  • Observation (claude / project-skill): surface claude -p stream-json with the candidate plugin-dir; action recipe project-skill: doctor; result passed: doctor:exit-0 doctor:skill-loaded doctor:doctor-ran doctor:doctor-canonical-pass; 4 assertions machine-checked; transcript SHA-256 fed3a80b4d2219370536062851f3feba811a545b0af9dbf9dbc34f04f448b5eb; artifact-set SHA-256 0483095dc6a8cc2e3043e5cd0f2ea8d23ba56ce685478b768aa6a08e3c8b727c.
  • Observation (codex / skill-invocation:principle-never-block-on-the-human): surface codex exec --json with the run-owned candidate installation; action recipe skill-invocation:principle-never-block-on-the-human: invoke; result passed: invoke:exit-0 invoke:skill-loaded invoke:file:result.md invoke:edited:sum.mjs; 4 assertions machine-checked; transcript SHA-256 e122b238d9cd60f16d8c5053c62e9228437a12f9f7b15050a77cd2eaf8e690bd; artifact-set SHA-256 a952f11183c36545d420ae84121ba30b91349ecf02370daea829f25c943f018d.
  • Observation (codex / project-skill): surface codex exec --json with the run-owned candidate installation; action recipe project-skill: doctor; result passed: doctor:exit-0 doctor:skill-loaded doctor:doctor-ran doctor:doctor-canonical-pass; 4 assertions machine-checked; transcript SHA-256 6fabbaed16e866a4da70b9d672dc5f986fff39943c7cf0847ebc7f837a06b48b; artifact-set SHA-256 db1cfdb3dea70eb037492b8f9e7573e3dd14e2f5d519ea8bfb5763f6cf7b1501.
  • Policy: every new head requires a fresh run; this verifier does not change PR state, queue, or merge.

@unfret-eal unfret-eal Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛑 1 blocking finding
🔴 High · Failed repairs still pass the never-block gate
Check

…225)

sumEdited passed any change to sum.mjs, so a failed repair passed while
the prompt asked for a verified fix. The never-block case now requires
the fixture's unchanged sum.test.mjs to pass against the session's
sum.mjs, run through the fixture's candidate command, and publishes
test-passed:sum.test.mjs.

Co-authored-by: andrewfree <507412+andrewfree@users.noreply.github.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@ericlitman

Copy link
Copy Markdown
Owner Author

Live evidence: Open Pstack

  • Candidate SHA: 8e8b09dbf5883fd343ac9e84dc65ec59b08e58fd
  • Base SHA: 9368993ea3d96b491833d53c0964b389e868162c
  • Result: PASSED — named features verified
  • Self-test: completed in both harnesses
  • Planned sessions: 4 (limit 12)
  • Publisher revision: 8e8b09dbf5883fd343ac9e84dc65ec59b08e58fd
  • Evidence-set SHA-256: dcf490f8c70d09d905d53232ed4ff8e6474d397aa5d49b4c3e5838aea846c736
  • Installation (claude): CLI 2.1.304 (Claude Code), plugin 1.15.0, candidate 8e8b09dbf5883fd343ac9e84dc65ec59b08e58fd, tree 9d7e979fd31237a09c19bf93b23127df18d3cd9336f2537e8a6a5ab127f23b39.
  • Installation (codex): CLI codex-cli 0.163.0, plugin 1.15.0, candidate 8e8b09dbf5883fd343ac9e84dc65ec59b08e58fd, tree 9d7e979fd31237a09c19bf93b23127df18d3cd9336f2537e8a6a5ab127f23b39.
  • Observation (claude / skill-invocation:principle-never-block-on-the-human): surface claude -p stream-json with the candidate plugin-dir; action recipe skill-invocation:principle-never-block-on-the-human: invoke; result passed: invoke:exit-0 invoke:skill-loaded invoke:file:result.md invoke:test-passed:sum.test.mjs; 4 assertions machine-checked; transcript SHA-256 f80a8c35304748e3c46600fb4a53294651f23e7829bb3bb26a3e965dbbf6094c; artifact-set SHA-256 4810ace5ffbaffb1c3cd815e0e92373bbfe60cdfe236ae7077010b6061e30617.
  • Observation (claude / project-skill): surface claude -p stream-json with the candidate plugin-dir; action recipe project-skill: doctor; result passed: doctor:exit-0 doctor:skill-loaded doctor:doctor-ran doctor:doctor-canonical-pass; 4 assertions machine-checked; transcript SHA-256 1d99401f3e612a3bb886722afde37737305c4deef3073d97904df61ff0a3e4b9; artifact-set SHA-256 34fa91cfe95713cd2b8650e7ba78694a2acdd57a3779489b53a9919311194ba4.
  • Observation (codex / skill-invocation:principle-never-block-on-the-human): surface codex exec --json with the run-owned candidate installation; action recipe skill-invocation:principle-never-block-on-the-human: invoke; result passed: invoke:exit-0 invoke:skill-loaded invoke:file:result.md invoke:test-passed:sum.test.mjs; 4 assertions machine-checked; transcript SHA-256 cb30553d802997e9a28074a81e76e4950ad57b01b6919d20bf1f3c978d5a9893; artifact-set SHA-256 3597095668e43fdf7bfeffde16b84515f9bb9dcd1ddcfc7d9a1973d2a7501e06.
  • Observation (codex / project-skill): surface codex exec --json with the run-owned candidate installation; action recipe project-skill: doctor; result passed: doctor:exit-0 doctor:skill-loaded doctor:doctor-ran doctor:doctor-canonical-pass; 4 assertions machine-checked; transcript SHA-256 1b50d911e9d2e988ebfff54a7bfe91d5dc0e0e33db5703a3185a85128a781174; artifact-set SHA-256 7d1d8ffaddb60d0eba18b0b049645921223babe2d55e9a4f02b50523ffcdc033.
  • Policy: every new head requires a fresh run; this verifier does not change PR state, queue, or merge.

@unfret-eal unfret-eal Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛑 1 blocking finding
🔴 Critical · Parent executes model-written code outside the harness sandbox
Check

Comment thread .claude/skills/verify-open-pstack/features/recipes.ts Outdated
)

sumTestPassed ran the session's sum.mjs in the verifier parent, outside
Codex's sandbox. The never-block case now recognizes the repair from
the whole sum.mjs source (return a + b or b + a on the return line,
optionally parenthesized), requires the fixture test unchanged, and
executes neither file.

Co-authored-by: andrewfree <507412+andrewfree@users.noreply.github.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@ericlitman

Copy link
Copy Markdown
Owner Author

Live evidence: Open Pstack

  • Candidate SHA: 700fe15351aa3d6e094bbf696f9e792faf0d37b1
  • Base SHA: 9368993ea3d96b491833d53c0964b389e868162c
  • Result: PASSED — named features verified
  • Self-test: completed in both harnesses
  • Planned sessions: 4 (limit 12)
  • Publisher revision: 700fe15351aa3d6e094bbf696f9e792faf0d37b1
  • Evidence-set SHA-256: 8e9bebb8ac07bed02d32db33b3ee6fe2693911ea3274b7049539e5f682fa0f73
  • Installation (claude): CLI 2.1.304 (Claude Code), plugin 1.15.0, candidate 700fe15351aa3d6e094bbf696f9e792faf0d37b1, tree 9d7e979fd31237a09c19bf93b23127df18d3cd9336f2537e8a6a5ab127f23b39.
  • Installation (codex): CLI codex-cli 0.163.0, plugin 1.15.0, candidate 700fe15351aa3d6e094bbf696f9e792faf0d37b1, tree 9d7e979fd31237a09c19bf93b23127df18d3cd9336f2537e8a6a5ab127f23b39.
  • Observation (claude / skill-invocation:principle-never-block-on-the-human): surface claude -p stream-json with the candidate plugin-dir; action recipe skill-invocation:principle-never-block-on-the-human: invoke; result passed: invoke:exit-0 invoke:skill-loaded invoke:file:result.md invoke:recognized-repair:sum.mjs invoke:test-unchanged:sum.test.mjs; 5 assertions machine-checked; transcript SHA-256 1d87041aa1c63384a8a26115eea706aee7ed186bf6a14c102373905efc164636; artifact-set SHA-256 690913d15204faf8e82d611bc426a141eef8fea7c7e690fc74985a34fde3c957.
  • Observation (claude / project-skill): surface claude -p stream-json with the candidate plugin-dir; action recipe project-skill: doctor; result passed: doctor:exit-0 doctor:skill-loaded doctor:doctor-ran doctor:doctor-canonical-pass; 4 assertions machine-checked; transcript SHA-256 e532355d1f877a6fecf615042e84272ba32501ff7c734cce4173ece9fa7017f5; artifact-set SHA-256 e81b20f7bbf2c0b6def663179bd298094ba124f4702c76b4d3fb69eecf01f6d4.
  • Observation (codex / skill-invocation:principle-never-block-on-the-human): surface codex exec --json with the run-owned candidate installation; action recipe skill-invocation:principle-never-block-on-the-human: invoke; result passed: invoke:exit-0 invoke:skill-loaded invoke:file:result.md invoke:recognized-repair:sum.mjs invoke:test-unchanged:sum.test.mjs; 5 assertions machine-checked; transcript SHA-256 2cb9c4e9dc5abbd06cc7a26dd59eb564336afd5c03d5bfe04dc20405b6c34f5b; artifact-set SHA-256 0177d8949cd75d582b28087b2479bdb3d6866cf286a6b10a73125f607d38a81a.
  • Observation (codex / project-skill): surface codex exec --json with the run-owned candidate installation; action recipe project-skill: doctor; result passed: doctor:exit-0 doctor:skill-loaded doctor:doctor-ran doctor:doctor-canonical-pass; 4 assertions machine-checked; transcript SHA-256 b3e5ceca2cb62a2d881ab88a30c74a78c3c9038929eef9c2bb3aef0a0123c8e7; artifact-set SHA-256 290cb5acb5892d619ca545106040693c5d335eb6cbc03e320046b95136dafb7c.
  • Policy: every new head requires a fresh run; this verifier does not change PR state, queue, or merge.

@unfret-eal unfret-eal Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛑 1 blocking finding
🟡 Medium · Correct repairs fail the gate based on formatting
Check

Comment thread .claude/skills/verify-open-pstack/features/recipes.ts
@ericlitman

Copy link
Copy Markdown
Owner Author

Operator waiver for head 700fe15 (#225).

The one open blocking finding, "Correct repairs fail the gate based on formatting", is true and not material. Class: fails-loudly.

  • An unusual but correct repair, such as export function sum(a, b) { return a + b; } on one line, fails the never-block case with the explicit error repair-not-recognized:sum.mjs. The case never passes a wrong repair: it recognizes only the add function written return a + b or return b + a on the return line, optionally in balanced parentheses, and requires the fixture test unchanged. It executes neither file.
  • This narrowing is the recorded special-case decision after the second step-back on this PR, and Verifier accepts a stalled report for the never-block principle #225's acceptance states it. The consequence of the finding is a failed live gate that names its cause, then a rerun. It is not security, secret exposure, data loss, or gate or waiver integrity.
  • On this head the live gate passed in both harnesses, 4 sessions (evidence comment 6307593356). Both native sessions wrote return a + b;.
  • Reopen condition, recorded in the PR body: two honest correct live repairs outside the recognized forms remove the never-block override; one demonstrated false acceptance defeats the recognizer at once.

The stop rule applies after the second step-back exchange, and this verdict raises no verdict-changing finding, so the head is waived without another push.

@mergify

mergify Bot commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

Merge Queue Status

  • ✅ Entered queue — 2026-10-21 03:59 UTC · Rule: default · triggered by merge protections
  • ✅ Checks passed · in-place
  • ✅ Merged — 2026-10-21 04:04 UTC · at 9e2d734ecfa4d95c77ff0cc5282f2e930ba141af · merge

This pull request spent 4 minutes 40 seconds in the queue, including 3 minutes 57 seconds running CI.

Required conditions to merge

@mergify mergify Bot added the queued label Oct 21, 2026
@ericlitman

Copy link
Copy Markdown
Owner Author

Live evidence: Open Pstack

  • Candidate SHA: f046ef75d5ce2c66b82c2f5968380a15c2b5c737
  • Base SHA: 47de2f2b782e7d20b97f17f2e5f551a39555657a
  • Result: PASSED — named features verified
  • Self-test: completed in both harnesses
  • Planned sessions: 4 (limit 12)
  • Publisher revision: f046ef75d5ce2c66b82c2f5968380a15c2b5c737
  • Evidence-set SHA-256: a5926496fc20081c87b3bb32280b26ba5abf424f5118805f49e1eff3ccb47be1
  • Installation (claude): CLI 2.1.304 (Claude Code), plugin 1.15.0, candidate f046ef75d5ce2c66b82c2f5968380a15c2b5c737, tree 9d7ebcc79770e715212aefe6ae629c8d899ac38c533fad468f761ffe7462853a.
  • Installation (codex): CLI codex-cli 0.163.0, plugin 1.15.0, candidate f046ef75d5ce2c66b82c2f5968380a15c2b5c737, tree 9d7ebcc79770e715212aefe6ae629c8d899ac38c533fad468f761ffe7462853a.
  • Observation (claude / skill-invocation:principle-never-block-on-the-human): surface claude -p stream-json with the candidate plugin-dir; action recipe skill-invocation:principle-never-block-on-the-human: invoke; result passed: invoke:exit-0 invoke:skill-loaded invoke:file:result.md invoke:recognized-repair:sum.mjs invoke:test-unchanged:sum.test.mjs; 5 assertions machine-checked; transcript SHA-256 8ae63a4ca537a0bdf93169603e02610ba758c649616d35a6220f610f337ef510; artifact-set SHA-256 35c0db4db2e53a0d2215ecbd29af7dfc675b44156c22a4f829ee7604219ef94e.
  • Observation (claude / project-skill): surface claude -p stream-json with the candidate plugin-dir; action recipe project-skill: doctor; result passed: doctor:exit-0 doctor:skill-loaded doctor:doctor-ran doctor:doctor-canonical-pass; 4 assertions machine-checked; transcript SHA-256 d6f5cfa71b3c5803039023a1c06793a1ecea2edb3aefff7adb68df98a817a1d1; artifact-set SHA-256 5677a670fc58e389db851cb5ce2000fbaaa1919eb2e2e0b2954756c0a7823481.
  • Observation (codex / skill-invocation:principle-never-block-on-the-human): surface codex exec --json with the run-owned candidate installation; action recipe skill-invocation:principle-never-block-on-the-human: invoke; result passed: invoke:exit-0 invoke:skill-loaded invoke:file:result.md invoke:recognized-repair:sum.mjs invoke:test-unchanged:sum.test.mjs; 5 assertions machine-checked; transcript SHA-256 cfdfa24cac6f90dfea81bc1fd0b369531e3701f427a9dd7eef880749a3567eeb; artifact-set SHA-256 220c0b8e322ef5417852ec30b933caa502fdcfde3e46361c10788b9cb44037fc.
  • Observation (codex / project-skill): surface codex exec --json with the run-owned candidate installation; action recipe project-skill: doctor; result passed: doctor:exit-0 doctor:skill-loaded doctor:doctor-ran doctor:doctor-canonical-pass; 4 assertions machine-checked; transcript SHA-256 4e245d08cf74cc78b66ab2fa02190e4ca971696e0476cea05485a325ef13132c; artifact-set SHA-256 99b612c5d818a52d46195d78ada7c8751796f9ed0678fa7383b24efeef173a30.
  • Policy: every new head requires a fresh run; this verifier does not change PR state, queue, or merge.

@mergify
mergify Bot merged commit 9e2d734 into main Oct 21, 2026
6 checks passed
@mergify mergify Bot removed the queued label Oct 21, 2026
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.

Verifier accepts a stalled report for the never-block principle

1 participant