ok - ancestry rejects a divergent target base: fatal: target base 30227056b95208c17dc6e739f544dccc936c2ed8 is not an ancestor of stack tip ea898c25acdb842a559a9f1027f79a5393b04524 ok - missing Change-Id names its commit: fatal: commit 80404365c83cd51357801a2808bfb7a685f2caae has 0 Change-Id trailers; expected exactly one ok - duplicate Change-Id names its commit: fatal: commit 98ef3ad4afba06280f7ed4c083bd6fb4bdf6cc5b has 2 Change-Id trailers; expected exactly one ok - malformed Change-Id names its commit: fatal: commit f4a9bb1c68995545b5c8de653ea394e87c49538e has invalid Change-Id trailer: Inot-a-forty-digit-hex-value ok - cancelled check is not green: fatal: PR 102 checks are not all green: nixbot/nix-build=CANCELLED ok - a head with no checks is not green: fatal: PR 103 has no checks ok - a neutral check passes diagnostics ok - a skipped check passes diagnostics ok - failing check state FAILURE fails diagnostics: fatal: PR 107 checks are not all green: synthetic-FAILURE=FAILURE ok - failing check state TIMED_OUT fails diagnostics: fatal: PR 108 checks are not all green: synthetic-TIMED_OUT=TIMED_OUT ok - failing check state ACTION_REQUIRED fails diagnostics: fatal: PR 109 checks are not all green: synthetic-ACTION_REQUIRED=ACTION_REQUIRED ok - failing check state ERROR fails diagnostics: fatal: PR 110 checks are not all green: synthetic-ERROR=ERROR ok - undecided check state PENDING fails diagnostics: fatal: PR 111 checks are not all green: synthetic-PENDING=PENDING ok - undecided check state IN_PROGRESS fails diagnostics: fatal: PR 112 checks are not all green: synthetic-IN_PROGRESS=IN_PROGRESS ok - undecided check state QUEUED fails diagnostics: fatal: PR 113 checks are not all green: synthetic-QUEUED=QUEUED ok - undecided check state REQUESTED fails diagnostics: fatal: PR 114 checks are not all green: synthetic-REQUESTED=REQUESTED ok - undecided check state WAITING fails diagnostics: fatal: PR 115 checks are not all green: synthetic-WAITING=WAITING ok - undecided check state EXPECTED fails diagnostics: fatal: PR 116 checks are not all green: synthetic-EXPECTED=EXPECTED ok - undecided check state STARTUP_FAILURE fails diagnostics: fatal: PR 117 checks are not all green: synthetic-STARTUP_FAILURE=STARTUP_FAILURE ok - undecided check state STALE fails diagnostics: fatal: PR 118 checks are not all green: synthetic-STALE=STALE ok - unrecognised check state BANANA fails diagnostics: fatal: PR 119 checks are not all green: synthetic-BANANA=BANANA ok - ancestry is rechecked after forge checks: fatal: target base 30227056b95208c17dc6e739f544dccc936c2ed8 is not an ancestor of stack tip ea898c25acdb842a559a9f1027f79a5393b04524 ok - help works without --dry-run outside a repository ok - no git/gh operations ok - installed wrapper supplies runtime commands with an unusable PATH ok - dry run reports assertions only ok - dry run validates without writes or merged-state polling ok - dry run reports assertions only ok - legacy real invocation is rejected: fatal: assertion-only diagnostic; --dry-run is required ok - no git/gh operations ok - rejection does not require a repository or forge: fatal: assertion-only diagnostic; --dry-run is required ok - no git/gh operations ok - empty invocation requires explicit diagnostics: fatal: assertion-only diagnostic; --dry-run is required ok - no git/gh operations ok - short help works outside a repository ok - no git/gh operations PASS: all stack-land diagnostics; no remote writes; fixture targets preserved