From 43163a39bf1d5d7cef5800cdcd68d090c1991e2d Mon Sep 17 00:00:00 2001 From: Edbert Chan Date: Sun, 13 Sep 2026 06:33:35 +0000 Subject: [PATCH 1/7] Require admissions to carry action --- .../SKILL.md | 9 ++++++ .../tests/fires_example.md | 31 ++++++++----------- .../tests/stays_silent_example.md | 21 ++++++------- 3 files changed, 32 insertions(+), 29 deletions(-) diff --git a/corpus/skills/principle-flag-your-own-corrections/SKILL.md b/corpus/skills/principle-flag-your-own-corrections/SKILL.md index ff4ad94f..b8d76b90 100644 --- a/corpus/skills/principle-flag-your-own-corrections/SKILL.md +++ b/corpus/skills/principle-flag-your-own-corrections/SKILL.md @@ -46,5 +46,14 @@ What the trigger requires, in the same turn as the admission: 3. Run `reflect`, and prefer a mechanical catch over a promise. If the wrong claim came from a command that can pass without exercising the change, fix the command. +4. Name the action taken in that same reply: a revert, a check run, a fix, or + a task/issue id that now owns the fix. "Want me to fix it?" is allowed only + when the fix is out of scope or cannot be undone. + +This is the same operating shape as Toyota Production System jidoka: detect an +abnormality, stop immediately, and keep defects from flowing forward +(https://global.toyota/en/company/vision-and-philosophy/production-system/). +An admission of fault is the detected abnormality; the same reply needs the +stop-and-fix action, not just the signal. **Battle-tested, with a direct contrast in the same session:** a token-count audit was reported to the user as "71.4M total tokens... real, not guessed." Two phases later, a dedup bug was found in the counting script (one usage block was being summed once per content block instead of once per message) and fixed; the corrected number was 33.6M — about 2.1x lower. The fix landed, and every subsequent message correctly cited 33.6M — but the user was never explicitly told "the 71.4M I gave you earlier was wrong." Contrast: a second bug found later in the same session (a redundant-read false-positive) *was* disclosed as an explicit correction — "went from 67 flagged down to 3, confirmed against an independent count" — naming the old number, the new number, and the fact that one replaced the other. That second form is the standard; the first fell short of it. diff --git a/corpus/skills/principle-flag-your-own-corrections/tests/fires_example.md b/corpus/skills/principle-flag-your-own-corrections/tests/fires_example.md index 10b74f14..386b72f6 100644 --- a/corpus/skills/principle-flag-your-own-corrections/tests/fires_example.md +++ b/corpus/skills/principle-flag-your-own-corrections/tests/fires_example.md @@ -1,21 +1,16 @@ -Earlier in the session the agent told the user "the stacked slice is fully -green, all gates pass." Checking properly now, the gate it cited had been run -with its default scope and never compared the slice at all — so the green was -vacuous. The agent is about to write the corrected status. +The user points out that the agent ignored a direct instruction to undo a +change. The agent replies, "You're right: I did not follow that instruction," +then marks the undo task done even though no revert, check run, fix, or task id +exists and the original change is still present. -This skill fires on the admission shape itself. It no longer carries -`disable-model-invocation: true`, so its `description:` is loaded and the -model can match it the moment a correction is forming — which is the only -moment it helps. Waiting for an explicit invocation would mean the user has -to notice the stale claim first, which defeats the purpose. +This skill fires because the admission became the end of the turn. The agent +named the fault but did not carry a same-reply action that would stop the +bad state from moving forward. -Once loaded it supplies the three obligations: name the old claim alongside -the new one rather than switching silently, say what made the first claim -unchecked (here, a default-scoped command standing in for a slice-scoped -one), and treat the admission as a `reflect` trigger rather than a resolution -to be more careful. +Once loaded it supplies the obligations: name the old claim alongside the new +one rather than switching silently, say what made the first claim unchecked, +treat the admission as a `reflect` trigger, and name the action taken in the +same reply. -`engine/hooks/wrong-check-reflect` would also catch this particular wording, -but the skill must fire on wordings the hook misses — it stayed silent on "a -claim I made earlier was wrong" in a real session until a human pointed it -out. +A reply that says "I did not follow that instruction" and then only records +"undo done" without doing the undo is still an unfinished correction. diff --git a/corpus/skills/principle-flag-your-own-corrections/tests/stays_silent_example.md b/corpus/skills/principle-flag-your-own-corrections/tests/stays_silent_example.md index 8db81959..e2a8e72e 100644 --- a/corpus/skills/principle-flag-your-own-corrections/tests/stays_silent_example.md +++ b/corpus/skills/principle-flag-your-own-corrections/tests/stays_silent_example.md @@ -1,13 +1,12 @@ -A user asks the agent to rename a function from `fetchRows` to `loadRows` and -update its three call sites. The agent makes the edits, runs the module's -tests, and reports them passing. +The user points out that the agent dropped a requested fix while editing a +nearby file. In the same reply, the agent says, "You're right; I left out the +requested fix," reapplies the missing change, runs the relevant check, and +reports the passing command. -This skill stays silent. Nothing the agent previously told the user has turned -out to be wrong: there is no earlier claim, no number that moved, no check -that was skipped and later found hollow. Every obligation the skill carries -presupposes a prior statement to correct, and there is none here. +This skill stays silent because the admission is complete in the same reply: +the fault is named, the corrective action is taken, and the verification is +reported before the turn ends. -Auto-firing is driven by a correction taking shape, not by the topic being -technical or by tests being run. A turn that states a fresh, verified result -for the first time is the ordinary case this principle is not about — firing -here would ask the agent to retract something it never said. +Auto-firing is driven by an admission that would otherwise stop at apology or +permission-seeking. A same-reply fix plus check is the ordinary completed case +this principle is trying to force. From c722cfc6a625f529bdb70f7896f29353fb68e0a7 Mon Sep 17 00:00:00 2001 From: Invoker Bot Date: Sun, 13 Sep 2026 06:34:18 +0000 Subject: [PATCH 2/7] =?UTF-8?q?invoker:=20wf-1789281095403-13/implement-ad?= =?UTF-8?q?mission-carries-action=20=E2=80=94=20Review=20claim:=20principl?= =?UTF-8?q?e-flag-your-own-corrections=20requires=20that=20an=20admission?= =?UTF-8?q?=20of=20fault=20carry=20an=20action=20in=20the=20same=20reply:?= =?UTF-8?q?=20a=20revert,=20a=20check=20run,=20a=20fix,=20or=20a=20named?= =?UTF-8?q?=20task=20or=20issue=20id.=20Review=20lane:=20docs=20Safety=20i?= =?UTF-8?q?nvariant:=20Text-only=20change=20to=20one=20principle=20skill?= =?UTF-8?q?=20and=20its=20example=20files;=20no=20hook,=20script,=20or=20i?= =?UTF-8?q?nstall=20behavior=20changes.=20Effectiveness=20measurement:=20T?= =?UTF-8?q?he=20skill's=20fires=20example=20is=20the=20real=20'You're=20ri?= =?UTF-8?q?ght:=20I=20did=20not=20follow=20that=20instruction'=20turn=20th?= =?UTF-8?q?at=20then=20marked=20an=20undo=20done=20without=20doing=20it,?= =?UTF-8?q?=20and=20the=20stays-silent=20example=20is=20an=20admission=20f?= =?UTF-8?q?ollowed=20by=20the=20reapplied=20fix=20in=20the=20same=20reply;?= =?UTF-8?q?=20the=20repo's=20skill=20checks=20pass.=20Slice=20rationale:?= =?UTF-8?q?=20One=20rule=20added=20to=20one=20principle=20skill=20plus=20i?= =?UTF-8?q?ts=20two=20examples.=20Architectural=20effect:=20The=20always-o?= =?UTF-8?q?n=20correction=20principle=20now=20defines=20what=20a=20complet?= =?UTF-8?q?e=20admission=20contains.=20Goal:=20Stop=20an=20admission=20of?= =?UTF-8?q?=20fault=20from=20being=20the=20end=20of=20the=20turn.=20Motiva?= =?UTF-8?q?tion:=20A=20corpus=20reflect=20over=2026,697=20local=20transcri?= =?UTF-8?q?pts=20sampled=2081=20excuse-shaped=20hits:=2010=20were=20excuse?= =?UTF-8?q?s=20never=20fixed,=20and=20in=209=20of=2020=20real=20excuses=20?= =?UTF-8?q?the=20human=20had=20to=20push=20before=20anything=20happened.?= =?UTF-8?q?=20Examples:=20'You're=20right:=20I=20did=20not=20follow=20that?= =?UTF-8?q?=20instruction.'=20followed=20by=20a=20to-do=20marked=20done=20?= =?UTF-8?q?with=20nothing=20undone;=20'Still=20waiting=20on=20your=20call:?= =?UTF-8?q?=20which=20items=20to=20apply'=20after=20which=20the=20named=20?= =?UTF-8?q?fix=20never=20landed.=20Alternative=20considerations:=20A=20hoo?= =?UTF-8?q?k-only=20fix=20was=20set=20aside=20for=20this=20slice=20because?= =?UTF-8?q?=20the=20hook=20(a=20separate=20workflow)=20needs=20the=20rule?= =?UTF-8?q?=20it=20enforces=20written=20down=20first.=20Asking=20permissio?= =?UTF-8?q?n=20after=20the=20admission=20was=20set=20aside=20because=20a?= =?UTF-8?q?=20reversible=20in-scope=20fix=20does=20not=20need=20it.=20Impl?= =?UTF-8?q?ementation=20details:=20Add=20one=20short=20rule=20to=20corpus/?= =?UTF-8?q?skills/principle-flag-your-own-corrections/SKILL.md=20in=20its?= =?UTF-8?q?=20existing=20structure=20and=20tone:=20an=20admission=20names?= =?UTF-8?q?=20the=20action=20taken=20in=20the=20same=20reply=20(revert,=20?= =?UTF-8?q?check=20run,=20fix,=20or=20a=20task/issue=20id).=20'Want=20me?= =?UTF-8?q?=20to=20fix=20it=3F'=20is=20allowed=20only=20when=20the=20fix?= =?UTF-8?q?=20is=20out=20of=20scope=20or=20cannot=20be=20undone.=20Ground?= =?UTF-8?q?=20it=20with=20prior=20art:=20Toyota=20Production=20System=20ji?= =?UTF-8?q?doka,=20stop=20and=20fix=20the=20abnormality=20at=20once,=20htt?= =?UTF-8?q?ps://global.toyota/en/company/vision-and-philosophy/production-?= =?UTF-8?q?system/=20.=20Update=20tests/fires=5Fexample.md=20and=20tests/s?= =?UTF-8?q?tays=5Fsilent=5Fexample.md=20with=20the=20two=20cases=20in=20Ef?= =?UTF-8?q?fectiveness=20measurement,=20paraphrased=20with=20no=20transcri?= =?UTF-8?q?pt=20paths.=20Non-goals:=20No=20hook,=20script,=20or=20install?= =?UTF-8?q?=20change.=20No=20edit=20to=20cat-mode=20or=20CLAUDE.md=20files?= =?UTF-8?q?.=20Leave=20the=20files=20of=20open=20PRs=20#482,=20#500=20and?= =?UTF-8?q?=20#528=20alone;=20if=20a=20change=20would=20overlap=20them,=20?= =?UTF-8?q?stop=20and=20report=20instead.=20Layer:=20docs=20Feature=20stat?= =?UTF-8?q?e:=20active=20Files:=20-=20corpus/skills/principle-flag-your-ow?= =?UTF-8?q?n-corrections/SKILL.md=20-=20corpus/skills/principle-flag-your-?= =?UTF-8?q?own-corrections/tests/fires=5Fexample.md=20-=20corpus/skills/pr?= =?UTF-8?q?inciple-flag-your-own-corrections/tests/stays=5Fsilent=5Fexampl?= =?UTF-8?q?e.md=20Change=20types:=20-=20corpus/skills/principle-flag-your-?= =?UTF-8?q?own-corrections/SKILL.md:=20modify=20-=20corpus/skills/principl?= =?UTF-8?q?e-flag-your-own-corrections/tests/fires=5Fexample.md:=20modify?= =?UTF-8?q?=20-=20corpus/skills/principle-flag-your-own-corrections/tests/?= =?UTF-8?q?stays=5Fsilent=5Fexample.md:=20modify=20Acceptance=20criteria:?= =?UTF-8?q?=20-=20`python3=20scripts/check=5Fskill=5Ftest=5Fcoverage.py`?= =?UTF-8?q?=20exits=200.=20-=20`python3=20scripts/check=5Fskill=5Ffile=5Fr?= =?UTF-8?q?efs.py`=20exits=200.=20-=20`python3=20scripts/check=5Fno=5Fdate?= =?UTF-8?q?d=5Fprovenance.py`=20exits=200.=20-=20`python3=20scripts/check?= =?UTF-8?q?=5Fno=5Fnew=5Fcomments.py`=20exits=200.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Exit code: 0 Invoker-Finalize-Id: c5465bfd-88b2-4ff9-81ad-f5b0b975ae34 From 8961e80e25e8b51347a9a95629a3135d95cf37e9 Mon Sep 17 00:00:00 2001 From: Edbert Chan Date: Sat, 12 Sep 2026 23:34:29 -0700 Subject: [PATCH 3/7] =?UTF-8?q?invoker:=20wf-1789281095403-13/verify-admis?= =?UTF-8?q?sion-carries-action-4=20=E2=80=94=20Review=20claim:=20`python3?= =?UTF-8?q?=20scripts/check=5Fno=5Fnew=5Fcomments.py`=20passes=20on=20the?= =?UTF-8?q?=20finished=20branch.=20Review=20lane:=20proof=20Safety=20invar?= =?UTF-8?q?iant:=20Verification=20is=20read-only=20and=20alters=20no=20rep?= =?UTF-8?q?ository=20file.=20Effectiveness=20measurement:=20The=20command'?= =?UTF-8?q?s=20exit=20code=20is=20the=20direct=20measurement.=20Slice=20ra?= =?UTF-8?q?tionale:=20One=20check=20per=20proof=20task.=20Architectural=20?= =?UTF-8?q?effect:=20None;=20verification=20only.=20Goal:=20Prove=20the=20?= =?UTF-8?q?slice.=20Motivation:=20Running=20the=20check=20is=20the=20proof?= =?UTF-8?q?.=20Alternative=20considerations:=20The=20full=20suite=20was=20?= =?UTF-8?q?not=20required=20because=20the=20slice=20touches=20one=20compon?= =?UTF-8?q?ent=20with=20its=20own=20tests.=20Implementation=20details:=20R?= =?UTF-8?q?un=20`python3=20scripts/check=5Fno=5Fnew=5Fcomments.py`.=20Non-?= =?UTF-8?q?goals:=20No=20mutations.=20Layer:=20app=5Fregression=20Feature?= =?UTF-8?q?=20state:=20active=20Layer=20exception:=20allowed.=20Verificati?= =?UTF-8?q?on=20and=20the=20terminal=20scrub=20run=20after=20the=20docs=20?= =?UTF-8?q?commit=20so=20they=20check=20the=20final=20branch=20the=20PR=20?= =?UTF-8?q?will=20carry.=20Acceptance=20criteria:=20-=20The=20command=20ex?= =?UTF-8?q?its=200.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Exit code: 0 From 47ca7610893d1e6f7c0b49c7ad24f3d260e29cce Mon Sep 17 00:00:00 2001 From: Edbert Chan Date: Sat, 12 Sep 2026 23:34:30 -0700 Subject: [PATCH 4/7] =?UTF-8?q?invoker:=20wf-1789281095403-13/verify-admis?= =?UTF-8?q?sion-carries-action-2=20=E2=80=94=20Review=20claim:=20`python3?= =?UTF-8?q?=20scripts/check=5Fskill=5Ffile=5Frefs.py`=20passes=20on=20the?= =?UTF-8?q?=20finished=20branch.=20Review=20lane:=20proof=20Safety=20invar?= =?UTF-8?q?iant:=20Verification=20is=20read-only=20and=20alters=20no=20rep?= =?UTF-8?q?ository=20file.=20Effectiveness=20measurement:=20The=20command'?= =?UTF-8?q?s=20exit=20code=20is=20the=20direct=20measurement.=20Slice=20ra?= =?UTF-8?q?tionale:=20One=20check=20per=20proof=20task.=20Architectural=20?= =?UTF-8?q?effect:=20None;=20verification=20only.=20Goal:=20Prove=20the=20?= =?UTF-8?q?slice.=20Motivation:=20Running=20the=20check=20is=20the=20proof?= =?UTF-8?q?.=20Alternative=20considerations:=20The=20full=20suite=20was=20?= =?UTF-8?q?not=20required=20because=20the=20slice=20touches=20one=20compon?= =?UTF-8?q?ent=20with=20its=20own=20tests.=20Implementation=20details:=20R?= =?UTF-8?q?un=20`python3=20scripts/check=5Fskill=5Ffile=5Frefs.py`.=20Non-?= =?UTF-8?q?goals:=20No=20mutations.=20Layer:=20app=5Fregression=20Feature?= =?UTF-8?q?=20state:=20active=20Layer=20exception:=20allowed.=20Verificati?= =?UTF-8?q?on=20and=20the=20terminal=20scrub=20run=20after=20the=20docs=20?= =?UTF-8?q?commit=20so=20they=20check=20the=20final=20branch=20the=20PR=20?= =?UTF-8?q?will=20carry.=20Acceptance=20criteria:=20-=20The=20command=20ex?= =?UTF-8?q?its=200.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Exit code: 0 From 73af96364e64d0316c8cece05b04fa58de8279db Mon Sep 17 00:00:00 2001 From: Edbert Chan Date: Sat, 12 Sep 2026 23:34:32 -0700 Subject: [PATCH 5/7] =?UTF-8?q?invoker:=20wf-1789281095403-13/verify-admis?= =?UTF-8?q?sion-carries-action-3=20=E2=80=94=20Review=20claim:=20`python3?= =?UTF-8?q?=20scripts/check=5Fno=5Fdated=5Fprovenance.py`=20passes=20on=20?= =?UTF-8?q?the=20finished=20branch.=20Review=20lane:=20proof=20Safety=20in?= =?UTF-8?q?variant:=20Verification=20is=20read-only=20and=20alters=20no=20?= =?UTF-8?q?repository=20file.=20Effectiveness=20measurement:=20The=20comma?= =?UTF-8?q?nd's=20exit=20code=20is=20the=20direct=20measurement.=20Slice?= =?UTF-8?q?=20rationale:=20One=20check=20per=20proof=20task.=20Architectur?= =?UTF-8?q?al=20effect:=20None;=20verification=20only.=20Goal:=20Prove=20t?= =?UTF-8?q?he=20slice.=20Motivation:=20Running=20the=20check=20is=20the=20?= =?UTF-8?q?proof.=20Alternative=20considerations:=20The=20full=20suite=20w?= =?UTF-8?q?as=20not=20required=20because=20the=20slice=20touches=20one=20c?= =?UTF-8?q?omponent=20with=20its=20own=20tests.=20Implementation=20details?= =?UTF-8?q?:=20Run=20`python3=20scripts/check=5Fno=5Fdated=5Fprovenance.py?= =?UTF-8?q?`.=20Non-goals:=20No=20mutations.=20Layer:=20app=5Fregression?= =?UTF-8?q?=20Feature=20state:=20active=20Layer=20exception:=20allowed.=20?= =?UTF-8?q?Verification=20and=20the=20terminal=20scrub=20run=20after=20the?= =?UTF-8?q?=20docs=20commit=20so=20they=20check=20the=20final=20branch=20t?= =?UTF-8?q?he=20PR=20will=20carry.=20Acceptance=20criteria:=20-=20The=20co?= =?UTF-8?q?mmand=20exits=200.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Exit code: 0 From e1042cff7b1322a8ad236d8e74f9580924551fee Mon Sep 17 00:00:00 2001 From: Invoker Bot Date: Sun, 13 Sep 2026 06:35:03 +0000 Subject: [PATCH 6/7] =?UTF-8?q?invoker:=20wf-1789281095403-13/verify-admis?= =?UTF-8?q?sion-carries-action-1=20=E2=80=94=20Review=20claim:=20`python3?= =?UTF-8?q?=20scripts/check=5Fskill=5Ftest=5Fcoverage.py`=20passes=20on=20?= =?UTF-8?q?the=20finished=20branch.=20Review=20lane:=20proof=20Safety=20in?= =?UTF-8?q?variant:=20Verification=20is=20read-only=20and=20alters=20no=20?= =?UTF-8?q?repository=20file.=20Effectiveness=20measurement:=20The=20comma?= =?UTF-8?q?nd's=20exit=20code=20is=20the=20direct=20measurement.=20Slice?= =?UTF-8?q?=20rationale:=20One=20check=20per=20proof=20task.=20Architectur?= =?UTF-8?q?al=20effect:=20None;=20verification=20only.=20Goal:=20Prove=20t?= =?UTF-8?q?he=20slice.=20Motivation:=20Running=20the=20check=20is=20the=20?= =?UTF-8?q?proof.=20Alternative=20considerations:=20The=20full=20suite=20w?= =?UTF-8?q?as=20not=20required=20because=20the=20slice=20touches=20one=20c?= =?UTF-8?q?omponent=20with=20its=20own=20tests.=20Implementation=20details?= =?UTF-8?q?:=20Run=20`python3=20scripts/check=5Fskill=5Ftest=5Fcoverage.py?= =?UTF-8?q?`.=20Non-goals:=20No=20mutations.=20Layer:=20app=5Fregression?= =?UTF-8?q?=20Feature=20state:=20active=20Layer=20exception:=20allowed.=20?= =?UTF-8?q?Verification=20and=20the=20terminal=20scrub=20run=20after=20the?= =?UTF-8?q?=20docs=20commit=20so=20they=20check=20the=20final=20branch=20t?= =?UTF-8?q?he=20PR=20will=20carry.=20Acceptance=20criteria:=20-=20The=20co?= =?UTF-8?q?mmand=20exits=200.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Exit code: 0 Invoker-Finalize-Id: dc0921e6-adea-4f32-8df3-1e3fbfa68c3f From de673029607a5e861858d935a8726bcb9472e884 Mon Sep 17 00:00:00 2001 From: Invoker Bot Date: Sun, 13 Sep 2026 06:36:00 +0000 Subject: [PATCH 7/7] =?UTF-8?q?invoker:=20wf-1789281095403-13/scrub-handof?= =?UTF-8?q?f-artifacts=20=E2=80=94=20Review=20claim:=20No=20ephemeral=20in?= =?UTF-8?q?ter-task=20handoff=20files=20remain=20in=20the=20worktree=20bef?= =?UTF-8?q?ore=20the=20merge=20gate.=20Review=20lane:=20cleanup=20Safety?= =?UTF-8?q?=20invariant:=20The=20scrub=20script=20only=20checks=20for=20kn?= =?UTF-8?q?own=20handoff=20artifact=20names=20and=20never=20touches=20sour?= =?UTF-8?q?ce,=20tests,=20or=20other=20repository=20files.=20Effectiveness?= =?UTF-8?q?=20measurement:=20The=20script=20exits=20non-zero=20if=20any=20?= =?UTF-8?q?handoff=20artifact=20remains.=20Slice=20rationale:=20Required?= =?UTF-8?q?=20terminal=20scrub=20for=20every=20implementation=20workflow.?= =?UTF-8?q?=20Architectural=20effect:=20None;=20hygiene=20only.=20Goal:=20?= =?UTF-8?q?Leave=20the=20branch=20free=20of=20handoff=20artifacts.=20Motiv?= =?UTF-8?q?ation:=20Handoff=20files=20must=20not=20reach=20the=20PR.=20Alt?= =?UTF-8?q?ernative=20considerations:=20Manual=20cleanup=20was=20set=20asi?= =?UTF-8?q?de=20as=20non-deterministic.=20Implementation=20details:=20Run?= =?UTF-8?q?=20scripts/scrub-handoff-artifacts.sh.=20Non-goals:=20No=20prod?= =?UTF-8?q?uct=20edits.=20Layer:=20app=5Fregression=20Feature=20state:=20a?= =?UTF-8?q?ctive=20Layer=20exception:=20allowed.=20Verification=20and=20th?= =?UTF-8?q?e=20terminal=20scrub=20run=20after=20the=20docs=20commit=20so?= =?UTF-8?q?=20they=20check=20the=20final=20branch=20the=20PR=20will=20carr?= =?UTF-8?q?y.=20Acceptance=20criteria:=20-=20The=20command=20exits=200.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Exit code: 0 Invoker-Finalize-Id: bf5ea5fc-accc-4699-9fad-b1c7d8d5d8a4