feat(repo): end every failed run in one typed failure record - #147
Merged
Merged
Conversation
A failed run now emits a FailureRecord (catalog code, stage, structured evidence, cause chain, next action, replay capsule, trace id) on stderr, as the schema-3.0 terminal stream event, and in reports/mutation/failure.json. StageError and PrepareError are replaced by RunFailure, exit codes come from the failure catalog, and failed baseline tests carry project-relative file, line and stack from the Vitest runner Verdict-Semantics: unchanged
Verdict-Semantics: unchanged
Trunk's frozen-runner scenario read the removed StageError stage and log capture; it now reads the RunFailure evidence stage Verdict-Semantics: unchanged
systemfsoftware-maker
added this pull request to stack #152
October 2, 2026 01:45
A successful run carries no failure code, so the e2e trace contract refused every passing run span with a missing key Verdict-Semantics: unchanged
…ema module Verdict-Semantics: unchanged
… failing-run record once The summary-annotation law accepted any single annotation, so a draw with no located evidence let a constant renderer pass and the fork refused the file as vacuous on macOS. The failing-run journey checked the terminal record in two consecutive steps, which the fork refuses as a second check on the same state Verdict-Semantics: unchanged
…io expects success A CI rerun of the claimed-type scenario stopped after file discovery and the Then reported only that the incremental state was not JSON, so the failure that stopped the run was lost Verdict-Semantics: unchanged
systemfsoftware-maker
force-pushed
the
diag-l2-failure-record
branch
from
October 2, 2026 03:02
307012e to
3562602
Compare
ryanleecode
removed this pull request from stack #152
October 2, 2026 17:36
ryanleecode
added this pull request to stack #157
October 2, 2026 17:36
ryanleecode
merged commit Oct 2, 2026
782fa8e
into
feat/agent-ready-failure-diagnostics
10 checks passed
ryanleecode
approved these changes
Oct 2, 2026
ryanleecode
left a comment
Contributor
There was a problem hiding this comment.
Reviewed by the merge conductor as part of the diagnostics stack. CI green on this head except where noted in the stack summary (macOS timeouts on #151 are flaky: the same code is green on macOS in #155 and #156; the #156 stryker-js mutation shard times out until main records its first full-cost timing, as this PR's description says). Merging into feat/agent-ready-failure-diagnostics with a merge commit.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Layer 2 (plan units U2-U6).
A failed run now ends in one
FailureRecord: a catalog code, its stage, structured evidence, the cause chain, the next action, a replay capsule and the trace id. The record is printed on stderr, emitted as the schema-3.0 terminal stream event, and written toreports/mutation/failure.json.@systemfsoftware/stryker-js-cli-contract:failure-record.schema.ts,failure-catalog.ts(published ascontract/failure-catalog.json), andrender-failure.ts(terminal, markdown, GitHub annotations, SARIF text). Stream schema 3.0.StageErrorandPrepareErrorare replaced byRunFailure{evidence, detail, cause}. Exit codes come from the catalog: a failing baseline test exits 5.Breaking (BREAK-1): the stream schema is now 3.0,
RunFailedhas a new shape,StageErroris removed, andstartPositionis removed. A changeset for each package is included. The e2e failing-run journey asserts the record (KVM-only lane, so it runs in CI).