ok - ancestry rejects a divergent target base: fatal: target base 4dca27aa910c7de9bf31d4abe20d8075f0fb7027 is not an ancestor of stack tip e0416d5639abab4f074832a2de09a906b13b7f7f ok - missing Change-Id names its commit: fatal: commit 55cb238fbd2d665f6f716d1fce24c1d13bf05997 has 0 Change-Id trailers; expected exactly one ok - duplicate Change-Id names its commit: fatal: commit 1a371e5dcd7156ba5b4424b64d8b5456a0be7dc7 has 2 Change-Id trailers; expected exactly one ok - malformed Change-Id names its commit: fatal: commit c4aedbf10aeb8011742331418185c87c8c10591d 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 4dca27aa910c7de9bf31d4abe20d8075f0fb7027 is not an ancestor of stack tip e0416d5639abab4f074832a2de09a906b13b7f7f 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