ok - ancestry rejects a divergent target base: fatal: target base 85a37db0c469bc51b35c7d6c07b66ce9934c0837 is not an ancestor of stack tip f20b2df328ed8b97b9aabc060b2bc4c8fe87bbe8 ok - missing Change-Id names its commit: fatal: commit 8b2b06a1185267210c934a96b0ae3e5cf8e37616 has 0 Change-Id trailers; expected exactly one ok - duplicate Change-Id names its commit: fatal: commit 899facbcc51cd3d4a368b08b68da4dedc6bd449c has 2 Change-Id trailers; expected exactly one ok - malformed Change-Id names its commit: fatal: commit 03098a4888e5bfd33d15101f6dac3bc76ab395ff 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 85a37db0c469bc51b35c7d6c07b66ce9934c0837 is not an ancestor of stack tip f20b2df328ed8b97b9aabc060b2bc4c8fe87bbe8 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