W7c conversion (t02 #4-#10, W7a s04 F15 pin). Pin lines 88 -> 74 (toContain|toMatch|indexOf|includes|ordered); ~50
full-sentence pins become order checks, field/marker checks and short
case-insensitive meaning checks. Remaining gate-tier judge for the plan-eng
prose: 'plan-eng-review/SKILL.md sections' (judge input is ENG_REVIEW_EXCERPT,
which the first test proves contains review-sections and Recovery routing).
Removed assertion groups (invariant -> remaining protection):
- Preparation sentences ('Follow the blocks below in order after startup',
'Confidence Calibration and Decision procedure are reference rules'): blocks
run in order -> kept free: heading order check now starts at
'## Review preparation'; judge 'plan-eng-review/SKILL.md sections'.
- Priority/compression sentences ('Shorten only optional commentary', 'never
Scope Challenge, Sections 1-4...', 'Never condense, abbreviate or skip a
section'): compression cannot drop required stages -> kept free:
/complete every required stage, decision gate and output/i and the
'Everything else' stale ban; judge.
- Exact seven-label toEqual on Scope Challenge assessments (t02 #8): all
seven checks present -> kept free: arrayContaining on the same labels plus
the A/B/C heading toEqual (excerpt anchors).
- 'Complete these checks before the complexity decision in B': A runs before
B -> kept free: heading order A < B < C.
- Below-threshold / findings sentences (numbered step full sentences): C
always runs, findings approve nothing -> kept free: step-number order,
/fewer than 8 files AND fewer than 2 new classes/i, /run C whether B was
completed or skipped/i, /approve no remedies/i, '"No issues found"'.
- '... STOP before Section 1' exact caps (t02 #4): high complexity halts ->
kept free: /at 8\+ files or 2\+ new classes\/services, stop before
section 1/i.
- High-complexity sentences ('With no proposed cuts...', 'Both retain the same
approved feature list...', 'Initial scope selectors need no grid...'): cuts
and structure asked separately -> kept free: step order with short anchors,
'Pending remedies not decided here: <ids>' field; judge.
- Smaller-arrangement sentences ('offer confirmation of the original
arrangement or a pause', 'then return to this structure selector'): a pause
authorizes no cut -> kept free: order + /do not continue to C until it is
settled/i + /investigate only the agreed question/i.
- Selector summary sentences ('post-answer scope summary, not a remedy's pending
ledger record', 'Do not invent a pre-answer record afterward', 'Scope
Challenge B also uses its own selectors'): answers saved before applying ->
kept free: field template order, /a failed save or read blocks
advancement/i, '**not persisted**', /these selections approve no
engineering remedy/i.
- Decision-procedure Read-choreography anchors ('use Read to fetch the entire
saved record', 'Read the entire resolution block, including State') and the
bold '**STOP until the actual answer arrives.**' anchor (t02 #5/#6, s04 F18):
ask once, wait, record before the next choice -> kept free: Compare <
Pending-record checkpoint < Send once < AskUserQuestion call < Record < next
choice, /stop until the actual answer arrives/i located between Send and
Record, /do not apply a remedy ... while the choice awaits an answer/i,
/approves no implementation/i; AUQ completeness and kind-note strings kept
exact (plan-tune reads them).
- 'An Investigate/Defer option must bound the investigation', 'Apply the
preamble's Completeness scores or kind-note accordingly': judge only (gate).
- Research/outside-voice sentences ('If Aside is unavailable, use host
WebSearch', 'Record the actual coverage...'): unavailable research is
recorded, not hidden -> kept free: exact 'Search unavailable' output string,
'Outside voice: recorded provider, completed / unavailable / disabled /
skipped (reason)' field, /only completed reviews enter cross-model tension/i,
TODO < Approval readiness < Required outputs order.
- Recovery sentences: kept as /i meaning checks (ExitPlanMode/telemetry wait,
do not resend, stop before dependent output, no chat-only success, skip
forbidden writes); 'If no recovery is specified or it fails' full sentence
-> kept free: 'follow **Blocked outcome**' routing; OUTCOME=error kept.
- Late-change sentences ('Refresh affected tests, tasks, dependencies and
parallelization', 'Unchanged saved outputs may reuse their successful Review
Log'): rerun affected outputs before navigation -> kept free: order of
return/Decision procedure/Approval readiness/Required outputs/navigation and
the stale-evidence Blocked outcome route; judge.
- Final sequence anchor 'Run Learning hooks, including gated Brain Calibration
Write-Back; then return to the entrypoint's Section self-check' -> kept
free: 'Section self-check' as the last ordered anchor.
- Coverage-audit sentences ('For each existing or proposed component in the
selected target', 'the selected target. For each existing or proposed
feature', 'dedicated tool call before drawing the diagram' (s06 L9
choreography)): plan diagrams cover proposed paths, ship covers changed code
-> kept free: /existing or proposed (component|function\/method)/,
/future paths remain proposals/i, the four 'Every ...' obligations,
/no skipping regression coverage/i, ship has no 'existing or proposed';
gate E2E plan-eng-coverage-audit.
- Brain write-back ordered prose list ('reserved default-off gate', 'this
runtime does not set it', 'not an instruction to write now', t02 #9 / W7a
s04 F15): no gbrain write without the default-off gate and trust policy ->
kept free: 'Skip unless `BRAIN_CALIBRATION_WRITEBACK` is set' precedes both
write tools, eng prefix says /skip this section/i and /do not enable it or
infer permission/i, trust-policy key, /if unknown, skip/i, no env
interpolation, other skills carry no eng-only skip prefix.
Mutation pass (scratch worktree; plan-eng-review templates and
scripts/resolvers/gbrain.ts): 21/21 as expected; 14 reorder/marker/stop/
approval/consent/numeric mutations go red, 7 rewordings of dropped sentences
and lowered-register STOP lines stay green. Log:
.context/mutation-eng-review-routing.md.
W7c conversion (t05 F5-F8). Pin lines 48 -> 29 (toContain|toMatch|indexOf|includes|ordered); sentence pins
collapse to one case-insensitive meaning check per invariant. Per the Eng
"Retirements" item, CEO invariants count as periodic-only once
plan-ceo-review-benefits retires, so every invariant below keeps a free check.
Removed assertion groups (invariant -> remaining protection):
- Required/Pending/Settled status sentences (4 pins): pending work stays
unapproved; only exact authority settles a choice -> kept free: label order
plus /Pending: unapproved/i and /Settled: ... a recommendation does not/i.
- Admin-route sentences (Skip steps 1-4, 0E/0H ownership, admin answer that
requests a plan change, 0G proposals use this route, mode-change pointer):
admin menus approve nothing and return locally -> kept free: Admin < Plan
decision < steps 1-4 < checkpoints order, /this approves no plan changes/i,
/0D returns to its caller, not to mode selection/i.
- not.toContain('0D never restarts mode selection') and
not.toContain('using the Step 0E mode-handoff format') (t05 F8, bans of
retired phrasings): same invariants -> kept free: the positive route checks.
- '**STOP for the actual answer, even for a lone option.**' exact bold pin:
wait for the answer before recording -> kept free: /stop for the actual
answer/i, located between step 4 and the post-answer checkpoint.
- Mode-change sentences (repeat handoff record, complete newly applicable
Step 0 work, resume the paused step): a mode change waits for an answer ->
kept free: /pause and ask ... keep the mode until answered/i and
/selecting a mode does not approve changes/i; routing table rows kept exact.
- Scope-count sentences: reuse counts against limits, mode recommendation
excludes unchanged reuse, neither approves -> kept free: three short
case-insensitive meaning checks plus the >15 / 8-file / 2-class numbers and
the route order.
- Completion-fraction sentences (select answered questions, exclude unscored,
Y/X definitions): fraction definition -> kept free: 10/7/3 scale, reopened
choice counted once, 'Report X/Y, or `N/A` when Y is zero' (output field).
- Section-gate sentences ('0D's Plan decision route through its post-answer
save', 'Resolve critical risks now') and the literal Decision gate count 11
(t05 F7): one gate per section -> kept free: path order, /no path selects
the mode again/i, gate count derived from '### Section N:' headings.
- Section 1 opening sentences (retain mode/rationale, governing row ID): Section
1 publishes current dispositions, not a mode handoff -> kept free:
**Current scope** present, the four disposition names, /not another mode
handoff; do not ask or log the mode again/i.
Gate-tier judge that also grades this prose: 'plan-ceo-review/SKILL.md modes'.
Mutation pass (scratch worktree, generated plan-ceo-review skill): 16/16 as
expected; 11 kept-step/marker/safety/numeric mutations go red, 5 rewordings of
dropped sentences (and a lowered-register STOP line) stay green. Log:
.context/mutation-ceo-workflow-clarity.md.
The prompt was pinned three ways (sha256, ~20 sentences, an order check).
Kept: the skill and lazy-section paths, the plan path, the ordered
read -> review -> edit -> Write -> read-back -> summary steps, and the
no-browsing rule (case-insensitive). Dropped the hash and sentence pins.
Negative control: removing the read-back step turns it red.
reviewRevalidationPrompt and reviewPrompt are test-owned harness prompts
(non-test callers: 0); the paid shared-libs E2Es measure whether they work.
Kept: the three exact receipt commands, base-prompt prefix and resumed suffix
identity, branch selection (actor / default / resumed coverage), the state
path and turn-budget interpolations, read-record-before-diff and
first-response-before-start ordering, no embedded token, no supplied Skip
answer, reusable:true before reusable:false, the captured R59 stage boundaries
in the exclusion list, asset roots and interfaces, and the stale step-6
reference ban. The review template's Step 4.7/4.8 completion rule is matched
by step number on one line, not by sentence. Negative control: reordering the
diff-read instruction turns the test red.
docsNativeInterface is the test helper's own prompt, so its sentence pins
only checked that the helper says what it says. Kept: owned skill path, the
two extracted lifecycle commands (exact), the scripts-list interpolation, the
repo path and Git read examples, and every docsCommandAllowed /
docsToolFailures behavior check that enforces the interface.
Drops 13 phrase pins on the judge prompt. Kept: both inputs carried as JSON,
the response schema (wire format), and the separate untrusted-DATA test. The
validator behavior tests already use stub judges. Negative control: changing
the schema string in the prompt builder turns the test red.
Asserts the absolute skill path is the only SKILL.md named, the scenario,
AskUserQuestion unavailable, the section Read rule (case-insensitive, also at
:308), no git/gh/mutation, and the REPORT.md path. argv/tool-list checks are
unchanged. Negative control: dropping the no-mutation rule turns it red.
The ship capture prompt test asserts its purpose (no CEO-only writing
guidance) plus the functional rules: one allowed skill path, AskUserQuestion
unavailable, the section Read rule, no git/gh/mutation, and the REPORT.md
path. The two 'MUST actually Read' pins match the Read rule case-insensitively.
Negative control: dropping the no-mutation rule from the harness prompt turns
the test red.
- plan-eng-review-artifact: actor, observer and cleanup use one isolated
GSTACK_HOME (the hermetic run's, or a seeded temporary one when hermetic
mode is off) and the slug gstack-slug resolves for the fixture, instead of
os.homedir()/.gstack/projects/test-project. A guard refuses a state root
under the real home, and cleanup removes only the fixture's project
directory. The 'IMPORTANT … you MUST write the test-plan artifact' line is
replaced by the environment fact (state root and slug). The soft warning
becomes an assertion: exactly one new *eng-review-test-plan-*.md about the
reviewed dashboard change.
- plan-review-report: removes 'CRITICAL REQUIREMENT … MOST IMPORTANT
deliverable' and the restated report contract; keeps 'plan.md is the plan
file'. The existing assertions (report present, last, rows, unresolved
status) now measure the skill's own report prose.
The kind contract is already asserted: every live case has one kind, kinds
are rule/behavior/judge, every LLM judge is judge-kind, every behavior case
has a literal registration and a BEHAVIOR_WHY, and the named contract-shaped
cases stay rule. The census count only broke on adding or retiring a case.
expect(regressions).toEqual([]) compared a noisy three-sample mean against
eval-baselines.json (clarity 4), silently raising the stated clarity floor of
3. The comparison stays in judge_reasoning; pass and assertions use
BROWSE_JUDGE_FLOORS (clarity 3, completeness 4, actionability 4). Judge
prompt and schema are unchanged. Stored panel means: three known-good (two the
ratchet rejected) pass; three below-floor panels fail.
- Seeded eng/design plan-mode cases keep 'no scope menu' and replace the
exact 'Scope gate: plan mode — auto-selected B' requirement with
seededPlanTargeted(): the announcement or native seeded-plan selection, or
seed-only plan names appearing in the review output after the slash command
(trackTokens). The announcement is logged.
- The AskUserQuestion format forbids writing a decision to the plan file as a
substitute for asking. assertNoPlanFileDecisions() fails any plan_ready run
whose plan carries ## Decisions (eng, design, devex, office-hours
auto-mode). The AUQ-blocked cases (eng seeded, devex, office-hours) now
require outcome 'asked' (AskUserQuestion variant or prose fallback).
- plan-mode-evidence registration controls keep their verdicts; the
missing-decisions control now fails on 'without a question'.
- plan-mode-targeting.test.ts stores known-good (announcement; paraphrase plus
seed content) and known-bad (neither; an untracked token) observations and
plan files with and without ## Decisions.
The outcome, no fabricated Completeness: N/10, stays asserted. The required
note now matches any brief wording of the same fact (KIND_NOTE_RE in
helpers/plan-format-kind-note.ts). The format-compliance suite that pins the
declared kind-note string is unchanged. Stored lines: four known-good pass,
three known-bad (a completeness score, a recommendation, 'kind to the user')
fail.
recordsNonTestCallerSearch keeps the value-card contract (non_test_callers
recorded) and accepts git grep, rg, grep or the Grep tool as the search.
Severity checks and the golden exclusion are unchanged. Stored evidence:
four known-good (three the old check rejected) pass; three known-bad (no
search, no caller count, prose only) fail.
prCoverageRequestViolations keeps the skill's stated older-open-PR budget
(five metadata pages, fifty file-list pages plus recent PR 7) and the coverage
outcome (PR 42's file list read from page 1 through page 2). It drops the PR 42
three/four-page and single-first-page ceilings, which were tuned to one
observed capture with a truncated first view. The judge criteria are
unchanged. Stored endpoint lists: three known-good (including a re-read first
page the old ceilings rejected) pass; four known-bad plus an over-budget
file-list run fail. incompleteFirstFileView is no longer used by the paid case.
The regression is a candidate silently dropped to fit the four-option cap.
The scope validator already requires an offered Include/Defer/Cut disposition
for all five candidates; the extra N-1 call floor failed agents that batch
compatible candidates, which the test header calls legitimate. FLOOR now comes
from CEO_SPLIT_CALL_FLOOR = 2. Stored shapes (ceo-split-floor.test.ts): five
sequential, 2-call and 3-call batches pass; a dropped candidate fails with
'missing target decisions'. The registration controls keep their verdicts;
the 3-call plan_ready scenario still fails, now on missing decisions.
Completion now needs at least one allowed Edit, the correction in place, at
least one verifier run whose final status is 0, and no edit after the final
verification. The ending-error case still requires a single verifier run
(status 69), because that fixture's error tells the actor to stop without
retrying. Ownership acquisition/release checks are unchanged. New free
protocol controls: a passing re-verification passes (the old grader failed
it); a failing final re-verification and a retry after the ending error both
fail, as they did before.
The false-completion oracle kept being patched to tell historical review-log
mentions from current claims. The E2E prompt now asks for a closing JSON line
{"outside_review_this_run": ...}. When present, the coverage claim is that
report ('completed' fails) plus any undenied 'both reviewers agree';
'disabled' also satisfies attribution. Runs without it keep the existing
prose oracle, so all stored captures and mutation rows keep their verdicts.
Dispatch, CLI execution, preflight and persisted-disabled checks are
unchanged. Stored outputs: three known-good pass (the old grader rejected
the table form); four known-bad fail.
The diagram grammar grew through four waves of capture patches to accept
correct-but-different diagrams. The E2E prompt now asks for one closing JSON
line {"tested": [...], "untested": [...]}; coverageAuditVerdict passes the
outcome when processPayment is only in tested and refundPayment only in
untested (last summary wins; quoted or example summaries ignored). The legacy
grammar stays as a fallback, so every stored capture keeps its verdict
(all existing rows unchanged). Read evidence and capture success are still
required. Stored summaries: three known-good (which the old grader rejected)
pass; seven known-bad fail.
auqMachineFormatProblems() fails a first-question run when the
Recommendation: line is missing or empty, or when the brief does not label
exactly one option (recommended); recommendation substance >= 4 is unchanged.
ELI10, Pros / cons, ✅/❌ and Net: are still scored and logged but no longer
fail a paid case. scoreAuqFormat and the consistency suite are unchanged.
Stored briefs: three known-good (including one without emoji or Net) pass;
four known-bad (no or empty Recommendation, zero or two (recommended)) fail.
docsCommandAllowed now unwraps, on read-only commands only (pwd, ls, cat,
stat, sha256sum, Git reads): a leading 'cd <fixture repo> &&', '2>/dev/null',
a trailing '|| true', '--no-pager', '-C <fixture repo>' and '-c' with
core.pager=cat / core.quotepath / color.* settings. Lifecycle and script calls
stay literal so their failures cannot be suppressed. Writes, other repos,
--git-dir/--work-tree, config that can execute code, real composition and
redirects stay rejected.
Stored commands (fixtures/docsync-observer-commands.json): 11 known-good read
forms, which the old observer rejected, now pass; all 17 known-bad forms still
fail under the new and old observers. docsync-command-grammar moves its three
harmless rows to an accept test and keeps unsafe variants of them as rejects.
Drops the exact 'Keep <x> in scope' / 'Defer <x> to TODOS' labels, the
'D<n> — Keep … in scope, or defer' title, the '<plan>.md lists' phrase and the
2-of-5 keyword quota. Keeps the evidence bindings (native answer, session,
timestamps, source read, mode context, later withdrawal) and now requires: one
keep option and one defer option, the answer selects keep, a word of the kept
label names a listed plan requirement, no expansion language, and an ELI10 +
Stakes rationale of at least 20 words (so a bare mode label still fails).
Stored captures: both retained known-good runs pass; every existing known-bad
mutation still fails; four rewordings the old grader rejected now pass; three
new known-bad cases fail. The Net/Note single-brief checks (t02 #3) are
unchanged: the 'second sentence after Net' row adds scope ('Also add shared
views'), so it stays a known-bad.
Keeps the engine-routing checks (Aside driven, retired binary unused) and adds
the outcome: design-audit.md exists, names a seeded defect, and index.html or
style.css differs from the initial fixture commit. The style(design) commit
prefix is not required. This case still cannot gate the design-review
stop-condition rewrite (it self-skips without Aside and caps fixes in its
prompt), per the Eng item.
The old check passed if the words 'in-branch', 'pre-existing', 'math' and
'string' appeared anywhere in the final message, in any pairing. The prompt
now asks for a closing JSON map; helpers/ship-triage-labels.ts reads it (or
unambiguous per-failure lines) and the test requires truncate/string ->
in-branch and divide/math -> pre-existing, plus a Bash call that ran the
suite. Stored outputs show swapped, words-only and one-label runs fail.
Drops the untyped recordE2E extras (typecheck baseline shrinks by one).
The workflow, first-run and review-gate prompts drop the 'IMPORTANT … simulate:
1. Detect … 2. Infer … 3. Note …' scripts and the answers they supplied
(platform, app, URL, merge method, 'Eng Review should be NOT RUN'). They keep
the facts the fixture cannot provide (no remote, no PR, gh/fly unavailable,
gstack-review-read output, report directory). Assertions now check the outcome:
the artifacts name Fly and test-app, and the readiness report records the
missing review. Canary, benchmark and setup-deploy prompts are unchanged.
- CLAUDE.md fixture: the shipped ## Skill routing section replaces 'ALWAYS
invoke it via the Skill tool as your FIRST action' and its hand-written rules.
- scrape-match-path: prompt is 'Run /scrape latest hacker news stories'; the
'You MUST follow … 1. Run skill list … Do NOT enter the prototype phase'
script is gone. Asserts the outcome: the bundled skill ran, no goto
prototyping, no new skill or skillify staging written. Listing is logged.
- scrape-prototype-path: drops the five-step script and the self-fulfilling
'Suggest /skillify'; keeps the user's JSON shape request.
- skillify-provenance-refusal: prompt no longer dictates the refusal.
- Narration grader moves to helpers/skill-body-narration.ts: line-start
'I '/'I'll '/'Let me ' plus mid-sentence 'let me <verb>', so 'let me know'
is legal. Stored known-good/known-bad bodies show it still rejects every
known-bad case the old /Let me /i ban caught.
Replaces the shouted 'ALWAYS invoke it … FIRST action' fixture and its
hand-written context-save/restore rules with the section gstack appends to
CLAUDE.md, which already routes save/resume to those skills.
readShippedSkillRouting() parses the '## Skill routing' section from the
routing-injection heredoc in bin/gstack-skill-start at test time. The journey
fixture now carries that instruction instead of 'ALWAYS invoke … FIRST action.
Do NOT answer directly', and still withholds the per-skill rule list so a
regressed description can fail. bin/gstack-skill-start and the helper join the
journey, context-skills and skillify touchfiles. A free check catches heredoc
drift. Runs on unchanged templates set the new baseline.
Drops the IMPORTANT block at skill-e2e-workflow.test.ts:76-83, including
'auto-approve everything' and the CHANGELOG/VERSION instructions; keeps only
the environment facts (non-interactive, no remote). Asserts the outcome: the
original CHANGELOG entries remain, VERSION still reads 1.1.1, no commit after
the fixture head touches VERSION, and README mentions Feature C.
Every ON trial must pass the fixture's verify (already a valid-measurement
requirement) and lowerIsBetter20Pct must hold; when the OFF median is 0, every
ON trial must also be 0. assessOverlayArms enforces both through a new
fixture.gate. Overlay contract bumps to v3 so v2 records are never
reinterpreted. overlay-measurement gains rows for correct+worse (fails),
20%+incorrect (fails) and the zero baseline (passes only at 0). The prose
comment follows the s01 M1 claude.md wording.
The end marker now accepts a RegExp. ASK_QUESTIONS_HEADING matches the heading
with or without its 'CRITICAL RULE — ' prefix, so the excerpt is byte-identical
on the current templates and survives the s04 F9 / s05 L3 rename.
- M2/M3: '(#1946)' and '(#1079)' removed from the credential guard and REST
fallback headings; the rules are unchanged.
- M4: the audit-failure fallback states the reason (a skipped audit lets
unverified plan items ship as done) instead of 'the failure shape that
VAS-449 surfaced'.
- M7: 'Continue silently — just note the counts briefly' -> report the pass
counts in one line and continue to Step 6 (Step 16 cites these counts).
Not changed: s06 M1, the Step 16 IRON LAW (UC2 gate keeps its wording).
W7a pin: test/ship-plan-completion-invariants.test.ts:127 pinned the VAS-449
sentence; it now checks that the audit-failure fallback still forbids a
silent fail-open (case-insensitive). Negative control: deleting that
sentence turns it red. expected red until the regeneration commit
The squash-merge cleanup example created 'codex/post-merge-pr-N' branches on
every host. The example is now 'post-merge/pr-N', naming Codex Desktop's
codex/ prefix as the host-specific case and keeping the detached-HEAD reason
and the no-force-push rule. No test pins the removed text.
expected red until the regeneration commit
/ship restated the checklist's Pass 1 as two of its five CRITICAL categories
(missing Race Conditions, Shell Injection, Enum Completeness). Per the W5.3
decision it now names 'the checklist's Pass 1 categories', matching /review.
No test pins the removed text. expected red until the regeneration commit
- H6 (manual merge): TEST_COMMAND comes from CLAUDE.md or AGENTS.md; if
neither documents one, ask the user instead of defaulting to 'bun test'
(wrong for non-Bun projects and a bare suite run in gstack). The audit
hunk's 'persist the answer to CLAUDE.md' write is not adopted: it adds a
write the readiness gate never had.
- H7: E2E and judge results are searched in the eval store the collector
writes (~/.gstack/projects/<slug>/evals/ and its shards/*/ directories),
then the legacy ~/.gstack-dev/evals/ fallback; the gate no longer reports
'no E2E tests run today' when results exist.
test/state-root-ratchet.allowlist.json: allowlist the EVAL_DIR line with its
reason (test/helpers/eval-store.ts writes under os.homedir()/.gstack, so the
reader must use the same path, not $GSTACK_STATE_ROOT).
Parity cap (test/helpers/carve-guards.ts): land-and-deploy maxSizeRatio
1.10 -> 1.108 (measured 1.1076 at the branch tip, including the W7f marker).
expected red until the regeneration commit
- H1: TODOS-format cites /ship Step 14, not 5.5.
- H2: the land readiness review is the checklist /ship applies in Step 9 (there
is no Step 3.5).
- H3: the Apple adapter names the no-credential-talk rule by location instead
of 'line 14' (it renders at line 16).
- H4: greptile triage diffs against origin/<base> from the caller's detected
base, not origin/main.
- H5: the land Important Rules recap matches the steps (4-minute CI rounds in
Step 3; 30 seconds for merge readback and deploy status).
- H8: landing-report calls the util once per bump level (four), and drops the
unsupported 'cached by bun' claim.
- M6: landing-report says what its base detection does instead of claiming
it matches other skills.
No test pins the removed text. expected red until the regeneration commit
The Mode Quick Reference let TRIAGE skip the benchmark, the magical moment
and passes 2/4-8, contradicting the anti-skip rule, the 0C target gate and
the 'executed all 8 DX passes' self-check. Per the W5.5 decision the TRIAGE
cells now read 'Target only' / 'Verify exists' / 'All 8, blockers only',
matching the Rating Method's 'flag adoption blockers; skip nice-to-haves'.
No test pins the removed cells. expected red until the regeneration commit