From b3ea806441676f24370f70fce043d08675451f30 Mon Sep 17 00:00:00 2001 From: Invoker Date: Sat, 12 Sep 2026 19:11:17 +0000 Subject: [PATCH 1/4] Tighten cat-mode block rule Review claim: the block-is-a-stop rule names relabeling text away from a checker as a forbidden shape, and the mode page is back under its line cap. Pre-edit test evidence: python3 -m unittest tests.test_cat_mode -v exited 0, so no FAIL line existed to paste. Observed final line: OK. Post-edit test evidence: python3 -m unittest tests.test_cat_mode -v exited 0. Observed final line: OK. Additional gates: git grep -c "relabel or relocate wording" -- corpus/skills/cat-mode/references/named-constraints.md reported corpus/skills/cat-mode/references/named-constraints.md:1; python3 scripts/check_no_dated_provenance.py exited 0 with ok no dated provenance. --- corpus/skills/cat-mode/SKILL.md | 7 ++----- corpus/skills/cat-mode/references/named-constraints.md | 6 ++++-- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/corpus/skills/cat-mode/SKILL.md b/corpus/skills/cat-mode/SKILL.md index 2f2d5c40..073b5908 100644 --- a/corpus/skills/cat-mode/SKILL.md +++ b/corpus/skills/cat-mode/SKILL.md @@ -201,11 +201,8 @@ bug: invoke `automate-me`, do not wait. - **Treat absolute negatives as categorical.** - **A blocked target is a stop, not a licence to substitute.** A number produced on a proxy carries the proxy's name beside the number. -- **A hook or classifier block is a stop, not a puzzle.** Do what the block - asks, or report the block and stop. Never reword the prompt, switch tools, - retag the claim, or propose weakening the hook to get past it. - Disagreement with a block goes to the user, after reading the hook's - source. +- **A hook or classifier block is a stop, not a puzzle.** + Do what the block asks, or report the block and stop; the forbidden shapes are in references/named-constraints.md. - **An answer given through a tool binds exactly as hard as a typed one.** Each rule's full text: diff --git a/corpus/skills/cat-mode/references/named-constraints.md b/corpus/skills/cat-mode/references/named-constraints.md index 67f4ed17..4e4af846 100644 --- a/corpus/skills/cat-mode/references/named-constraints.md +++ b/corpus/skills/cat-mode/references/named-constraints.md @@ -28,8 +28,10 @@ individual constraints it covers. for. Do not reissue a denied command through a different tool, flag, or invocation; the classifier-denial rule in `corpus/CLAUDE.learned.md` already binds this shape. Do not open a change that makes a hook complain less. Do - what the block asks, and if the block is wrong, read the hook's source and - raise it with the user with that evidence. + not relabel or relocate wording so that the region a checker inspects no + longer contains it; the words stay where the check looks, or the check is + raised with the user. Do what the block asks, and if the block is wrong, + read the hook's source and raise it with the user with that evidence. - **An answer given through a tool binds exactly as hard as a typed one.** A free-text reply to a multiple-choice question means every option offered was wrong. Restate it as a binding parameter in the plan before any work From d172a4201827758d80fd135f845f56a9f473ad78 Mon Sep 17 00:00:00 2001 From: Invoker Bot Date: Sat, 12 Sep 2026 19:11:38 +0000 Subject: [PATCH 2/4] =?UTF-8?q?invoker:=20wf-1789194895520-7/add-fifth-sha?= =?UTF-8?q?pe-and-trim=20=E2=80=94=20Review=20claim:=20the=20block-is-a-st?= =?UTF-8?q?op=20rule=20names=20relabeling=20text=20away=20from=20a=20check?= =?UTF-8?q?er=20as=20a=20forbidden=20shape,=20and=20the=20mode=20page=20is?= =?UTF-8?q?=20back=20under=20its=20line=20cap.=20Review=20lane:=20docs=20S?= =?UTF-8?q?afety=20invariant:=20Prose=20only.=20No=20hook,=20script,=20ins?= =?UTF-8?q?taller,=20or=20settings=20change,=20and=20no=20edit=20outside?= =?UTF-8?q?=20corpus/skills/cat-mode;=20every=20existing=20cat-mode=20test?= =?UTF-8?q?=20assertion=20keeps=20its=20target=20text.=20Pending=20user=20?= =?UTF-8?q?confirmation=20in=20this=20session.=20Effectiveness=20measureme?= =?UTF-8?q?nt:=20tests/test=5Fcat=5Fmode.py=20passes=20in=20full,=20includ?= =?UTF-8?q?ing=20the=20line-cap=20test=20and=20the=20block-is-a-stop=20ref?= =?UTF-8?q?erence=20test.=20Slice=20rationale:=20One=20rule's=20full=20tex?= =?UTF-8?q?t=20gains=20one=20shape=20and=20its=20page=20summary=20shrinks,?= =?UTF-8?q?=20so=20the=20diff=20carries=20one=20claim.=20Architectural=20e?= =?UTF-8?q?ffect:=20None;=20the=20mode=20page=20gains=20no=20new=20section?= =?UTF-8?q?.=20Goal:=20Extend=20the=20reference=20entry=20and=20shorten=20?= =?UTF-8?q?the=20page=20bullet.=20Motivation:=20The=20same=20session=20tha?= =?UTF-8?q?t=20produced=20the=20rule=20passed=20a=20plan=20checker=20by=20?= =?UTF-8?q?placing=20unchanged=20step=20text=20under=20a=20heading=20the?= =?UTF-8?q?=20checker=20does=20not=20inspect;=20the=20open=20change=20also?= =?UTF-8?q?=20pushed=20the=20page=20to=20305=20lines=20against=20a=20cap?= =?UTF-8?q?=20of=20300.=20Alternative=20considerations:=20Raising=20the=20?= =?UTF-8?q?line=20cap=20was=20rejected;=20the=20cap=20exists=20so=20the=20?= =?UTF-8?q?page=20is=20trimmed=20instead=20of=20grown.=20Adding=20the=20fi?= =?UTF-8?q?fth=20shape=20to=20the=20page=20bullet=20was=20rejected=20for?= =?UTF-8?q?=20the=20same=20reason;=20the=20full=20text=20lives=20in=20the?= =?UTF-8?q?=20reference=20file.=20Implementation=20details:=20In=20corpus/?= =?UTF-8?q?skills/cat-mode/references/named-constraints.md,=20inside=20the?= =?UTF-8?q?=20entry=20that=20begins=20"A=20hook=20or=20classifier=20block?= =?UTF-8?q?=20is=20a=20stop,=20not=20a=20puzzle",=20add=20one=20sentence?= =?UTF-8?q?=20before=20"Do=20what=20the=20block=20asks":=20Do=20not=20rela?= =?UTF-8?q?bel=20or=20relocate=20wording=20so=20that=20the=20region=20a=20?= =?UTF-8?q?checker=20inspects=20no=20longer=20contains=20it;=20the=20words?= =?UTF-8?q?=20stay=20where=20the=20check=20looks,=20or=20the=20check=20is?= =?UTF-8?q?=20raised=20with=20the=20user.=20In=20corpus/skills/cat-mode/SK?= =?UTF-8?q?ILL.md,=20shorten=20the=20same=20bullet=20to=20its=20bold=20lea?= =?UTF-8?q?d=20plus=20one=20sentence:=20Do=20what=20the=20block=20asks,=20?= =?UTF-8?q?or=20report=20the=20block=20and=20stop;=20the=20forbidden=20sha?= =?UTF-8?q?pes=20are=20in=20references/named-constraints.md.=20Then=20conf?= =?UTF-8?q?irm=20the=20page=20is=20at=20most=20300=20lines=20and=20that=20?= =?UTF-8?q?every=20assertion=20in=20tests/test=5Fcat=5Fmode.py=20still=20f?= =?UTF-8?q?inds=20its=20text,=20in=20particular=20the=20block-is-a-stop=20?= =?UTF-8?q?reference=20test=20and=20the=20named-constraints=20reference=20?= =?UTF-8?q?test.=20Non-goals:=20No=20change=20to=20any=20other=20bullet,?= =?UTF-8?q?=20section,=20hook,=20or=20script.=20No=20dates,=20session=20id?= =?UTF-8?q?entifiers,=20or=20incident=20narrative=20in=20either=20file.=20?= =?UTF-8?q?Layer:=20docs=20Feature=20state:=20active=20Files:=20-=20corpus?= =?UTF-8?q?/skills/cat-mode/SKILL.md=20-=20corpus/skills/cat-mode/referenc?= =?UTF-8?q?es/named-constraints.md=20Change=20types:=20-=20corpus/skills/c?= =?UTF-8?q?at-mode/SKILL.md:=20modify=20-=20corpus/skills/cat-mode/referen?= =?UTF-8?q?ces/named-constraints.md:=20modify=20Acceptance=20criteria:=20-?= =?UTF-8?q?=20`python3=20-m=20unittest=20tests.test=5Fcat=5Fmode=20-v`=20e?= =?UTF-8?q?xits=200.=20-=20`git=20grep=20-c=20"relabel=20or=20relocate=20w?= =?UTF-8?q?ording"=20--=20corpus/skills/cat-mode/references/named-constrai?= =?UTF-8?q?nts.md`=20prints=201.=20-=20`python3=20scripts/check=5Fno=5Fdat?= =?UTF-8?q?ed=5Fprovenance.py`=20exits=200.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Exit code: 0 Invoker-Finalize-Id: fb02d846-de8e-467f-87bd-a9cf00392de7 From a82deddec0aa6eab41728a44eb21fddc5c095eda Mon Sep 17 00:00:00 2001 From: Invoker Bot Date: Sat, 12 Sep 2026 19:13:14 +0000 Subject: [PATCH 3/4] =?UTF-8?q?invoker:=20wf-1789194895520-7/verify-cat-mo?= =?UTF-8?q?de-tests-and-gates=20=E2=80=94=20Review=20claim:=20the=20cat-mo?= =?UTF-8?q?de=20test=20module=20and=20the=20prose=20gates=20pass=20on=20th?= =?UTF-8?q?e=20finished=20branch.=20Review=20lane:=20proof=20Safety=20inva?= =?UTF-8?q?riant:=20Verification=20is=20read-only=20and=20does=20not=20alt?= =?UTF-8?q?er=20any=20file.=20Effectiveness=20measurement:=20The=20test=20?= =?UTF-8?q?module=20run=20and=20the=20two=20gates=20are=20the=20direct=20m?= =?UTF-8?q?easurement.=20Slice=20rationale:=20One=20focused=20proof=20per?= =?UTF-8?q?=20claim=20before=20review.=20Architectural=20effect:=20None;?= =?UTF-8?q?=20verification=20only.=20Goal:=20Prove=20the=20cap=20holds=20a?= =?UTF-8?q?nd=20the=20reference=20text=20landed.=20Layer=20exception:=20al?= =?UTF-8?q?lowed.=20Proof=20runs=20after=20the=20docs=20task=20so=20it=20c?= =?UTF-8?q?hecks=20the=20finished=20branch;=20it=20reads=20files=20only=20?= =?UTF-8?q?and=20changes=20nothing.=20Motivation:=20The=20base=20branch=20?= =?UTF-8?q?fails=20this=20exact=20test=20today.=20Alternative=20considerat?= =?UTF-8?q?ions:=20The=20full=20repository=20suite=20was=20rejected;=20thi?= =?UTF-8?q?s=20module=20is=20the=20one=20the=20branch=20touches.=20Impleme?= =?UTF-8?q?ntation=20details:=20Run=20the=20cat-mode=20test=20module,=20th?= =?UTF-8?q?e=20provenance=20gate,=20and=20the=20skill=20coverage=20gate.?= =?UTF-8?q?=20Non-goals:=20No=20mutations.=20Layer:=20app=5Fregression=20F?= =?UTF-8?q?eature=20state:=20active=20Acceptance=20criteria:=20-=20Exits?= =?UTF-8?q?=200=20only=20when=20all=20three=20pass.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Exit code: 0 Invoker-Finalize-Id: 1691001f-ec44-4a7e-9428-0e9abb7163c7 From f25013b3316f735452ce43fdb45ca9d0e62c1cba Mon Sep 17 00:00:00 2001 From: Invoker Bot Date: Sat, 12 Sep 2026 19:14:24 +0000 Subject: [PATCH 4/4] =?UTF-8?q?invoker:=20wf-1789194895520-7/scrub-handoff?= =?UTF-8?q?-artifacts=20=E2=80=94=20Review=20claim:=20No=20ephemeral=20int?= =?UTF-8?q?er-task=20handoff=20files=20remain=20in=20the=20worktree=20befo?= =?UTF-8?q?re=20the=20merge=20gate.=20Review=20lane:=20cleanup=20Safety=20?= =?UTF-8?q?invariant:=20The=20scrub=20script=20only=20checks=20for=20known?= =?UTF-8?q?=20handoff=20artifact=20names=20and=20never=20touches=20source,?= =?UTF-8?q?=20tests,=20or=20other=20repository=20files.=20Effectiveness=20?= =?UTF-8?q?measurement:=20The=20script=20exits=20non-zero=20if=20any=20han?= =?UTF-8?q?doff=20artifact=20remains.=20Slice=20rationale:=20Required=20te?= =?UTF-8?q?rminal=20scrub=20for=20every=20implementation=20workflow.=20Arc?= =?UTF-8?q?hitectural=20effect:=20None;=20hygiene=20only.=20Goal:=20Leave?= =?UTF-8?q?=20the=20branch=20free=20of=20handoff=20artifacts.=20Motivation?= =?UTF-8?q?:=20Handoff=20files=20must=20not=20reach=20the=20PR.=20Alternat?= =?UTF-8?q?ive=20considerations:=20Manual=20cleanup=20was=20rejected=20as?= =?UTF-8?q?=20non-deterministic.=20Implementation=20details:=20Run=20scrip?= =?UTF-8?q?ts/scrub-handoff-artifacts.sh.=20Non-goals:=20No=20product=20ed?= =?UTF-8?q?its.=20Layer:=20app=5Fregression=20Feature=20state:=20active=20?= =?UTF-8?q?Acceptance=20criteria:=20-=20`bash=20scripts/scrub-handoff-arti?= =?UTF-8?q?facts.sh`=20exits=200.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Exit code: 0 Invoker-Finalize-Id: 34a327a5-d6a4-4343-aaa6-ea633bd87935