Skip to content

An escaping assertion destroys the scenario's ledger artifacts, so the invariant harness fails on artifact download #2239

Description

@sei-ahouseholder

Symptom

fvv and fccv-handoff produced no case-log artifact at all:

##[warning] No files were found with the provided path: devlogs/. No artifacts will be uploaded.
##[error]  Unable to download artifact(s): Artifact not found for name: fvv-case-logs

So fvv Invariant Harness and fccv-handoff Invariant Harness fail on
artifact download, not on any invariant — 2 of the 3 harness failures in the
run are this defect, telling us nothing about the protocol.

Root cause

_phase_dump_case_ledgers sits inside run_*_demo() after the last phase,
not in a finally. Any assertion that escapes a demo_check block skips the
dump. main's finally: assert_demo_success() still runs and still raises, so
the loss is specifically the forensic artifacts.

There are roughly twenty unguarded wait_for_case_participants call sites
across the suite (e.g. fvv_demo.py:335/:340, :193, :248,
fcv_demo.py:381-386, :213, :308, fccv_extension_demo.py:476-481,
fvcv_extension_demo.py:476-481, fvcv_handoff_demo.py:594-599, :569,
fcvcv_demo.py:553-560, fv_demo.py:489), so this is suite-wide, not specific
to fvv.

Note fccv-handoff lost its case logs to this defect, not to the job
cancellation tracked separately in this epic — fixing the hang alone would not have produced them.

Correct fix

A shared harness shape: run phases, always dump ledgers, then assert. The
dump belongs in the finally.

Done when

A scenario that dies mid-phase still uploads every ledger it had, and the
invariant harness reports a real invariant result rather than a download error.


Found during the CI review of run 31619546349 @ 0624e12e
(6 demo jobs failed, 1 cancelled, 3 invariant-harness jobs failed).
Investigation: 6 parallel deep dives, each re-checked by an independent
adversarial verifier.

Metadata

Metadata

Labels

size:L301+ diff lines or 7+ ACs

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions