frc-scheduler-server: pr-fix-known-vulns-run5

What happened, why, and what came out of it. Written by the harness from its own records; a person decides what to do with it. The same story opens the run's folder as README.md; the example's write-up is on its example page.

repository frc-scheduler-serverlanguage pythonmode diffbase 2ad04243861bhead cfa8f4a3292bmodel qwen/qwen3.8-27bstarted 2026-09-12T01:41:41+00:00harness 0.1.0run 76a3fa863e76
pyasn1. This change moves pyasn1 from 0.6.4 to 0.4.8, a version with 4 known vulnerabilities. That is a downgrade. The harness proved 1 of the 4 with a test that fails on the vulnerable version and passes on the fixed one; the other 3 are unproven and marked so. Accept the 10 candidate tests if they look right, act on the findings below, and send the draft VEX statements to Product Security.
python-jose. This change updates python-jose from 3.3.0 to 3.4.0, which closes 3 known vulnerabilities. The harness proved 1 of the 3 with a test that fails on the vulnerable version and passes on the fixed one; the other 2 are unproven and marked so. Accept the 7 candidate tests if they look right, act on the findings below, and send the draft VEX statements to Product Security.
starlette. This change leaves starlette at 0.41.3, which has 7 known vulnerabilities the application is exposed to. The harness proved 1 of the 7 with a test that fails on the vulnerable version and passes on the fixed one; the other 6 are unproven and marked so. Accept the 6 candidate tests if they look right, act on the findings below, and send the draft VEX statements to Product Security.

Who, what, why, where, when

WhoThe AI Test Harness 0.1.0 did the work without a person in the loop. A person decides the result; nothing in this run has been merged.
WhatTests for pyasn1 0.6.4 to 0.4.8, python-jose 3.3.0 to 3.4.0, starlette 0.41.3, chosen from a work list of 64 packages, 5 of which this change touched. Repository frc-scheduler-server, change 2ad04243861b..cfa8f4a3292b, mode diff.
WhyThe risk score decides the budget; the two strongest reasons per package: pyasn1 (score 90, budget full): reachability unknown, treated as reachable; 8 known vulnerabilities for this version; 0 advisories before the change, 8 after. python-jose (score 51, budget full): reachable from first-party code; 159 source lines changed; 5 advisories before the change, 0 after. starlette (score 80, budget full): reachable from first-party code; 14 known vulnerabilities for this version.
WhereEvery test ran in a sealed sandbox (podman, network none, image docker.io/library/python:3.12-slim); the model was qwen/qwen3.8-27b in agent mode; the run's own files are in this folder.
WhenStarted 2026-09-12 01:41:41 UTC. The last stage to write was assessment at 2026-10-13 18:34:45 UTC.

Decisions the harness made

Actions it took

Actions it did not take, by design

How it happened, stage by stage

What each stage read, did and wrote, with the file behind every number.

  1. Self-verificationstage 0

    Read

    the harness's own code and the failure register

    Did

    • 28 register checks, all passed; sandbox probe skipped; model probe skipped.

    Wrote

    selfcheck/selfcheck.json

  2. Intakestage 1

    Read

    the repository at base and head, its dependency manifest

    Did

    • Resolved 63 packages at head and 63 at base with ; looked every version up in OSV: 4 with advisories at head; 5 changed; work list of 64 rows.

    Wrote

    intake/worklist.json · intake/graph.new.json · intake/sbom.new.cdx.json · intake/vulns.json

  3. Analysisstage 2

    Read

    the work list; package source, advisories, the application's call sites

    Did

    • 3 package(s) analyzed: pyasn1 score 90, budget full, 8 advisories, 146 breaking changes; python-jose score 51, budget full, 0 advisories, 0 breaking changes; starlette score 80, budget full, 14 advisories, 0 breaking changes.

    Wrote

    analyze/pyasn1/facts.json · analyze/python-jose/facts.json · analyze/starlette/facts.json

  4. Generationstage 3

    Read

    the fact bundle per package; the model; the sealed sandbox for baseline runs

    Did

    • Model qwen/qwen3.8-27b, mode agent.
    • pyasn1: 16 tests kept in 5 file(s), 47 model calls.
    • python-jose: 11 tests kept in 4 file(s), 34 model calls.
    • starlette: 18 tests kept in 8 file(s), 85 model calls.

    Wrote

    generate/pyasn1/manifest.json · tests/ · model-calls/ · generate/python-jose/manifest.json · tests/ · model-calls/ · generate/starlette/manifest.json · tests/ · model-calls/

  5. Validation executionstage 4

    Read

    the candidate tests; the environments at head, base or the fixed candidate

    Did

    • pyasn1: sandbox runs new, new-rerun, old on podman (image digest not recorded); 16 tests, 12 pass on head, 0 flaky, 2 fix-pinning confirmed; 1423 lines of the package covered.
    • Mutation: 385 sites on executed lines, 12 sampled, 5 killed, score 0.417.
    • Relevance: 16 generated and 47 application tests examined; 0 obsolete, 8 redundant proposed, horizon this change.
    • python-jose: sandbox runs new, new-rerun, old on podman (image digest not recorded); 11 tests, 9 pass on head, 0 flaky, 2 fix-pinning confirmed; 640 lines of the package covered.
    • Mutation: 157 sites on executed lines, 12 sampled, 5 killed, score 0.417.
    • Relevance: 11 generated and 47 application tests examined; 0 obsolete, 4 redundant proposed, horizon this change.
    • starlette: sandbox runs new, new-rerun, old on podman (image digest not recorded); 18 tests, 10 pass on head, 0 flaky, 2 fix-pinning confirmed; 1368 lines of the package covered.
    • Mutation: 319 sites on executed lines, 12 sampled, 0 killed, score 0.0.
    • Relevance: 18 generated and 47 application tests examined; 1 obsolete, 4 redundant proposed, horizon the upgrade to 1.3.1.

    Wrote

    execute/pyasn1/results.json · new/ · execute/pyasn1/mutation/mutation.json · execute/pyasn1/relevance.json · execute/python-jose/results.json · new/ · execute/python-jose/mutation/mutation.json · execute/python-jose/relevance.json · execute/starlette/results.json · new/ · execute/starlette/mutation/mutation.json · execute/starlette/relevance.json

  6. Triagestage 5

    Read

    every verdict and finding from stage 4

    Did

    • pyasn1: 11 findings, 10 tests to accept, 6 to discard or regenerate, 8 escalated to a person (threshold 0.7).
    • python-jose: 6 findings, 7 tests to accept, 4 to discard or regenerate, 5 escalated to a person (threshold 0.7).
    • starlette: 9 findings, 6 tests to accept, 12 to discard or regenerate, 6 escalated to a person (threshold 0.7).

    Wrote

    triage/pyasn1/triage.json · triage/python-jose/triage.json · triage/starlette/triage.json

  7. Packetstage 6

    Read

    triage, the tests, the advisories

    Did

    • pyasn1: 10 accepted tests in the patch; VEX drafts {"CVE-2026-30922": "affected", "CVE-2026-59884": "under_investigation", "CVE-2026-59885": "under_investigation", "CVE-2026-59886": "under_investigation"}.
    • python-jose: 7 accepted tests in the patch; VEX drafts {"CVE-2024-29370": "under_investigation", "CVE-2024-33663": "under_investigation", "CVE-2024-33664": "fixed"}.
    • starlette: 6 accepted tests in the patch; VEX drafts {"CVE-2025-54121": "affected", "CVE-2025-62727": "affected", "CVE-2026-48710": "affected", "CVE-2026-48817": "affected", "CVE-2026-48818": "affected", "CVE-2026-54282": "affected", "CVE-2026-54283": "affected"}.

    Wrote

    packet/pyasn1/packet.md · packet/pyasn1/tests.patch · packet/pyasn1/vex.openvex.json · packet/python-jose/packet.md · packet/python-jose/tests.patch · packet/python-jose/vex.openvex.json · packet/starlette/packet.md · packet/starlette/tests.patch · packet/starlette/vex.openvex.json

  8. Attestationstage attest

    Read

    the manifest, the tests, the results; UDLM's chain code

    Did

    • pyasn1: 10 provenance records; statement PASSED, key sha256:4f2defc2e375, verified at build; UDLM records sealed, schema problems 0.
    • python-jose: 7 provenance records; statement PASSED, key sha256:4f2defc2e375, verified at build; UDLM records sealed, schema problems 0.
    • starlette: 6 provenance records; statement PASSED, key sha256:4f2defc2e375, verified at build; UDLM records sealed, schema problems 0.

    Wrote

    attest/pyasn1/statement.dsse.json · attest/pyasn1/MANIFEST.json · udlm/ · attest/python-jose/statement.dsse.json · attest/python-jose/MANIFEST.json · udlm/ · attest/starlette/statement.dsse.json · attest/starlette/MANIFEST.json · udlm/

  9. Assessmentstage assess

    Read

    every record the run wrote, against the blueprint's goals

    Did

    • 10 goals met, 1 not met, 1 not applicable, 1 measured without a target.

    Wrote

    assess/assess.md

  10. Test pull requeststage propose

    Read

    the packet and the records

    Did

    • did not run in this run.

    Wrote

    nothing

  11. Feedbackstage 7

    Read

    the pull request as a person decided it

    Did

    • did not run in this run.

    Wrote

    nothing

pyasn1 0.6.4 → 0.4.8

In plain terms. This change moves pyasn1 from 0.6.4 to 0.4.8, a version with 4 known vulnerabilities. That is a downgrade. The harness proved 1 of the 4 with a test that fails on the vulnerable version and passes on the fixed one; the other 3 are unproven and marked so. Accept the 10 candidate tests if they look right, act on the findings below, and send the draft VEX statements to Product Security.

Tests, one row each

TestCategoryOldNewVerdictAction
test_ghsa_jr27_m4p2_rc6r_fix_pinningcvepassfailexposure confirmed: the downgrade to the vulnerable version fails this test and the previous, fixed version passes itaccept as CVE evidence; VEX status affected: the change introduces the exposure
test_ghsa_jr27_m4p2_rc6r_exposurecvepassfailexposure confirmed: the downgrade to the vulnerable version fails this test and the previous, fixed version passes itaccept as CVE evidence; VEX status affected: the change introduces the exposure
test_ghsa_m4p7_r5rc_7g4j_fix_pinningcvepasspassnot a fix-pinning test: passes on both versions; keep only as characterization if it covers the symboldiscard as CVE evidence; keep as characterization only if reviewer wants it
test_ghsa_m4p7_r5rc_7g4j_exposurecvepasspassnot a fix-pinning test: passes on both versions; keep only as characterization if it covers the symboldiscard as CVE evidence; keep as characterization only if reviewer wants it
test_ghsa_8ppf_4f7h_5ppj_fix_pinningcvefailfailblocked on both versions: ValueError on old and new; possible package or environment defect, reproducer attachedopen issue; reproducer is the test; advisory stays under investigation
test_ghsa_8ppf_4f7h_5ppj_exposurecvefailfailblocked on both versions: ValueError on old and new; possible package or environment defect, reproducer attachedopen issue; reproducer is the test; advisory stays under investigation
test_ghsa_hm4w_wwcw_mr6r_fix_pinningcvepasspassnot a fix-pinning test: passes on both versions; keep only as characterization if it covers the symboldiscard as CVE evidence; keep as characterization only if reviewer wants it
test_ghsa_hm4w_wwcw_mr6r_exposurecvepasspassnot a fix-pinning test: passes on both versions; keep only as characterization if it covers the symboldiscard as CVE evidence; keep as characterization only if reviewer wants it
test_printer_is_callableunitpasspasscandidate: passes on head, same on oldaccept as characterization candidate
test_debug_is_callableunitpasspasscandidate: passes on head, same on oldaccept as characterization candidate
test_setlogger_returns_noneunitpasspasscandidate: passes on head, same on oldaccept as characterization candidate
test_hexdump_empty_bytesunitpasspasscandidate: passes on head, same on oldaccept as characterization candidate
test_pyasn1error_is_exception_subclassunitpasspasscandidate: passes on head, same on oldaccept as characterization candidate
test_value_constraint_error_is_pyasn1error_subclassunitpasspasscandidate: passes on head, same on oldaccept as characterization candidate
test_substrate_underrun_error_is_pyasn1error_subclassunitpasspasscandidate: passes on head, same on oldaccept as characterization candidate
test_pyasn1unicode_error_is_unicode_error_subclassunitpasspasscandidate: passes on head, same on oldaccept as characterization candidate

Findings

ClassConfidenceFindingRoute
security0.95pyasn1 downgraded 0.6.4 -> 0.4.8 into a version with 8 known advisoriesProduct Security
security0.75pyasn1 0.4.8 has 8 open advisories at head; reachable=unknownProduct Security
defect0.8pyasn1: a code path raised the same internal error on both versions during CVE test generation (CVE-2026-59885)open issue with reproducer
redundant0.5pyasn1: test_printer_is_callable killed none of 12 sampled mutants in this runescalate: below confidence threshold
redundant0.5pyasn1: test_debug_is_callable killed none of 12 sampled mutants in this runescalate: below confidence threshold
redundant0.5pyasn1: test_setlogger_returns_none killed none of 12 sampled mutants in this runescalate: below confidence threshold
redundant0.5pyasn1: test_hexdump_empty_bytes killed none of 12 sampled mutants in this runescalate: below confidence threshold
redundant0.5pyasn1: test_pyasn1error_is_exception_subclass killed none of 12 sampled mutants in this runescalate: below confidence threshold
redundant0.5pyasn1: test_value_constraint_error_is_pyasn1error_subclass killed none of 12 sampled mutants in this runescalate: below confidence threshold
redundant0.5pyasn1: test_substrate_underrun_error_is_pyasn1error_subclass killed none of 12 sampled mutants in this runescalate: below confidence threshold
redundant0.5pyasn1: test_pyasn1unicode_error_is_unicode_error_subclass killed none of 12 sampled mutants in this runescalate: below confidence threshold

Draft VEX statements, for Product Security

VulnerabilityStatusBasis
CVE-2026-59885under_investigationopen at head; reachable=unknown; fixed in ['0.6.4']
CVE-2026-59886under_investigationopen at head; reachable=unknown; fixed in ['0.6.4']
CVE-2026-30922affectedexposure test(s) ['test_ghsa_jr27_m4p2_rc6r_fix_pinning', 'test_ghsa_jr27_m4p2_rc6r_exposure'] fail on pkg:pypi/pyasn1@0.4.8 and pass on pkg:pypi/pyasn1@0.6.4: the change introduce
CVE-2026-59884under_investigationopen at head; reachable=unknown; fixed in ['0.6.4']

Mutation: which test killed what

385 sites, 12 sampled, 5 killed, score 0.417.

TestMutants killedKilled only by this test
test_ghsa_hm4w_wwcw_mr6r_exposure30
test_ghsa_hm4w_wwcw_mr6r_fix_pinning30
test_ghsa_m4p7_r5rc_7g4j_exposure10
test_ghsa_m4p7_r5rc_7g4j_fix_pinning10
tests.test_pyasn1_cve_cve_2026_5988420
tests.test_pyasn1_cve_cve_2026_5988620

Retirement proposals

TestReasonEvidence
test_printer_is_callableredundant-no-killstest_printer_is_callable killed none of 12 sampled mutants in this run
test_debug_is_callableredundant-no-killstest_debug_is_callable killed none of 12 sampled mutants in this run
test_setlogger_returns_noneredundant-no-killstest_setlogger_returns_none killed none of 12 sampled mutants in this run
test_hexdump_empty_bytesredundant-no-killstest_hexdump_empty_bytes killed none of 12 sampled mutants in this run
test_pyasn1error_is_exception_subclassredundant-no-killstest_pyasn1error_is_exception_subclass killed none of 12 sampled mutants in this run
test_value_constraint_error_is_pyasn1error_subclassredundant-no-killstest_value_constraint_error_is_pyasn1error_subclass killed none of 12 sampled mutants in this run
test_substrate_underrun_error_is_pyasn1error_subclassredundant-no-killstest_substrate_underrun_error_is_pyasn1error_subclass killed none of 12 sampled mutants in this run
test_pyasn1unicode_error_is_unicode_error_subclassredundant-no-killstest_pyasn1unicode_error_is_unicode_error_subclass killed none of 12 sampled mutants in this run

python-jose 3.3.0 → 3.4.0

In plain terms. This change updates python-jose from 3.3.0 to 3.4.0, which closes 3 known vulnerabilities. The harness proved 1 of the 3 with a test that fails on the vulnerable version and passes on the fixed one; the other 2 are unproven and marked so. Accept the 7 candidate tests if they look right, act on the findings below, and send the draft VEX statements to Product Security.

Tests, one row each

TestCategoryOldNewVerdictAction
test_pysec_2025_185_fix_pinningcvefailfailblocked on both versions: jose.exceptions.JWEError on old and new; possible package or environment defect, reproducer attachedopen issue; reproducer is the test; advisory stays under investigation
test_pysec_2025_185_exposurecvefailfailblocked on both versions: jose.exceptions.JWEError on old and new; possible package or environment defect, reproducer attachedopen issue; reproducer is the test; advisory stays under investigation
test_ghsa_6c5p_j8vq_pqhj_fix_pinningcvepasspassnot a fix-pinning test: passes on both versions; keep only as characterization if it covers the symboldiscard as CVE evidence; keep as characterization only if reviewer wants it
test_ghsa_6c5p_j8vq_pqhj_exposurecvepasspassnot a fix-pinning test: passes on both versions; keep only as characterization if it covers the symboldiscard as CVE evidence; keep as characterization only if reviewer wants it
test_ghsa_cjwg_qfpm_7377_fix_pinningcvefailpassfix-pinning confirmed: fails on vulnerable, passes on fixedaccept as CVE evidence; VEX status fixed
test_ghsa_cjwg_qfpm_7377_exposurecvefailpassfix-pinning confirmed: fails on vulnerable, passes on fixedaccept as CVE evidence; VEX status fixed
test_jwt_encode_decode_roundtripunitpasspasscandidate: passes on head, same on oldaccept as characterization candidate
test_jwt_decode_wrong_key_raises_jwterrorunitpasspasscandidate: passes on head, same on oldaccept as characterization candidate
test_jwt_get_unverified_headerunitpasspasscandidate: passes on head, same on oldaccept as characterization candidate
test_jwt_get_unverified_claimsunitpasspasscandidate: passes on head, same on oldaccept as characterization candidate
test_jwt_decode_expired_raises_expiredsignatureerrorunitpasspasscandidate: passes on head, same on oldaccept as characterization candidate

Findings

ClassConfidenceFindingRoute
defect0.4python-jose: a code path raised the same internal error on both versions during CVE test generation (CVE-2024-33663); NOT corroborated by stage 4 verdictsescalate: below confidence threshold
defect0.8python-jose: a code path raised the same internal error on both versions during CVE test generation (CVE-2024-29370)open issue with reproducer
redundant0.6python-jose: test_jwt_decode_wrong_key_raises_jwterror's 2 mutant kill(s) are all among test_jwt_decode_expired_raises_expiredsignatureerror's 4escalate: below confidence threshold
redundant0.6python-jose: test_jwt_get_unverified_header's 2 mutant kill(s) are all among test_jwt_decode_expired_raises_expiredsignatureerror's 4escalate: below confidence threshold
redundant0.6python-jose: test_jwt_get_unverified_claims's 2 mutant kill(s) are all among test_jwt_decode_expired_raises_expiredsignatureerror's 4escalate: below confidence threshold
redundant0.6python-jose: test_jwt_decode_expired_raises_expiredsignatureerror's 4 mutant kill(s) are all among test_jwt_encode_decode_roundtrip's 5escalate: below confidence threshold

Draft VEX statements, for Product Security

VulnerabilityStatusBasis
CVE-2024-33663, CVE-2026-85394under_investigationbump to a fixed version per advisory metadata; no confirmed fix-pinning test yet
CVE-2024-33664fixedfix-pinning test(s) ['test_ghsa_cjwg_qfpm_7377_exposure', 'test_ghsa_cjwg_qfpm_7377_fix_pinning'] fail on pkg:pypi/python-jose@3.3.0 and pass on pkg:pypi/python-jose@3.4.0
CVE-2024-29370under_investigationbump to a fixed version per advisory metadata; no confirmed fix-pinning test yet

Mutation: which test killed what

157 sites, 12 sampled, 5 killed, score 0.417.

TestMutants killedKilled only by this test
test_ghsa_cjwg_qfpm_7377_fix_pinning10
test_jwt_decode_expired_raises_expiredsignatureerror40
test_jwt_decode_wrong_key_raises_jwterror20
test_jwt_encode_decode_roundtrip51
test_jwt_get_unverified_claims20
test_jwt_get_unverified_header20

Retirement proposals

TestReasonEvidence
test_jwt_decode_wrong_key_raises_jwterrorredundant-subsumedtest_jwt_decode_wrong_key_raises_jwterror's 2 mutant kill(s) are all among test_jwt_decode_expired_raises_expiredsignatureerror's 4
test_jwt_get_unverified_headerredundant-subsumedtest_jwt_get_unverified_header's 2 mutant kill(s) are all among test_jwt_decode_expired_raises_expiredsignatureerror's 4
test_jwt_get_unverified_claimsredundant-subsumedtest_jwt_get_unverified_claims's 2 mutant kill(s) are all among test_jwt_decode_expired_raises_expiredsignatureerror's 4
test_jwt_decode_expired_raises_expiredsignatureerrorredundant-subsumedtest_jwt_decode_expired_raises_expiredsignatureerror's 4 mutant kill(s) are all among test_jwt_encode_decode_roundtrip's 5

starlette 0.41.3 0.41.3

In plain terms. This change leaves starlette at 0.41.3, which has 7 known vulnerabilities the application is exposed to. The harness proved 1 of the 7 with a test that fails on the vulnerable version and passes on the fixed one; the other 6 are unproven and marked so. Accept the 6 candidate tests if they look right, act on the findings below, and send the draft VEX statements to Product Security.

Tests, one row each

TestCategoryOldNewVerdictAction
test_GHSA_2c2j_9gv5_cj73_fix_pinningcvefailfailfails on the fixed version: test bug or the advisory is misread; back to generationregenerate or discard
test_GHSA_2c2j_9gv5_cj73_exposurecvefailfailfails on the fixed version: test bug or the advisory is misread; back to generationregenerate or discard
test_ghsa_7f5h_v6xp_fcq8_fix_pinningcvepasspassnot a fix-pinning test: passes on both versions; keep only as characterization if it covers the symboldiscard as CVE evidence; keep as characterization only if reviewer wants it
test_ghsa_7f5h_v6xp_fcq8_exposurecvepasspassnot a fix-pinning test: passes on both versions; keep only as characterization if it covers the symboldiscard as CVE evidence; keep as characterization only if reviewer wants it
test_ghsa_86qp_5c8j_p5mr_fix_pinningcvepasspassnot a fix-pinning test: passes on both versions; keep only as characterization if it covers the symboldiscard as CVE evidence; keep as characterization only if reviewer wants it
test_ghsa_86qp_5c8j_p5mr_exposurecvepasspassnot a fix-pinning test: passes on both versions; keep only as characterization if it covers the symboldiscard as CVE evidence; keep as characterization only if reviewer wants it
test_ghsa_x746_7m8f_x49c_fix_pinningcvefailfailblocked on both versions: RuntimeError on old and new; possible package or environment defect, reproducer attachedopen issue; reproducer is the test; advisory stays under investigation
test_ghsa_x746_7m8f_x49c_exposurecvefailfailblocked on both versions: RuntimeError on old and new; possible package or environment defect, reproducer attachedopen issue; reproducer is the test; advisory stays under investigation
test_gdsa_wqp7_x3pw_xc5r_fix_pinningcvepasspassnot a fix-pinning test: passes on both versions; keep only as characterization if it covers the symboldiscard as CVE evidence; keep as characterization only if reviewer wants it
test_gdsa_wqp7_x3pw_xc5r_exposurecvepasspassnot a fix-pinning test: passes on both versions; keep only as characterization if it covers the symboldiscard as CVE evidence; keep as characterization only if reviewer wants it
test_ghsa_jp82_jpqv_5vv3_fix_pinningcvefailfailfails on the fixed version: test bug or the advisory is misread; back to generationregenerate or discard
test_ghsa_jp82_jpqv_5vv3_exposurecvefailfailfails on the fixed version: test bug or the advisory is misread; back to generationregenerate or discard
test_ghsa_82w8_qh3p_5jfq_fix_pinningcvepassfailexposure confirmed: fails at head 0.41.3, passes with the fixed candidate 1.3.1accept as CVE evidence; VEX status affected: the change introduces the exposure
test_ghsa_82w8_qh3p_5jfq_exposurecvepassfailexposure confirmed: fails at head 0.41.3, passes with the fixed candidate 1.3.1accept as CVE evidence; VEX status affected: the change introduces the exposure
test_simple_user_authenticatedunitpasspasscandidate: passes on head, same on oldaccept as characterization candidate
test_cookie_parser_basicunitpasspasscandidate: passes on head, same on oldaccept as characterization candidate
test_response_status_and_bodyunitpasspasscandidate: passes on head, same on oldaccept as characterization candidate
test_json_response_renders_jsonunitpasspasscandidate: passes on head, same on oldaccept as characterization candidate

Findings

ClassConfidenceFindingRoute
security0.9starlette 0.41.3 has 14 open advisories at head; reachable=trueProduct Security
defect0.4starlette: a code path raised the same internal error on both versions during CVE test generation (CVE-2025-54121); NOT corroborated by stage 4 verdictsescalate: below confidence threshold
defect0.4starlette: a code path raised the same internal error on both versions during CVE test generation (CVE-2026-54283); NOT corroborated by stage 4 verdictsescalate: below confidence threshold
defect0.8starlette: a code path raised the same internal error on both versions during CVE test generation (CVE-2026-48817)open issue with reproducer
obsolete0.85starlette: test_ghsa_jp82_jpqv_5vv3_exposure references starlette.requests.Request, which the upgrade to 1.3.1 changes the required parameters ofpropose retirement
redundant0.5starlette: test_simple_user_authenticated killed none of 12 sampled mutants in this runescalate: below confidence threshold
redundant0.5starlette: test_cookie_parser_basic killed none of 12 sampled mutants in this runescalate: below confidence threshold
redundant0.5starlette: test_response_status_and_body killed none of 12 sampled mutants in this runescalate: below confidence threshold
redundant0.5starlette: test_json_response_renders_json killed none of 12 sampled mutants in this runescalate: below confidence threshold

Draft VEX statements, for Product Security

VulnerabilityStatusBasis
CVE-2025-54121affectedopen at head; reachable=true; fixed in ['0.47.2']
CVE-2025-62727affectedopen at head; reachable=true; fixed in ['0.49.1']
CVE-2026-54283affectedexposure test(s) ['test_ghsa_82w8_qh3p_5jfq_exposure', 'test_ghsa_82w8_qh3p_5jfq_fix_pinning'] fail on pkg:pypi/starlette@0.41.3 and pass on pkg:pypi/starlette@0.41.3: the change i
CVE-2026-48710affectedopen at head; reachable=true; fixed in ['1.0.1']
CVE-2026-54282affectedopen at head; reachable=true; fixed in ['1.3.0']
CVE-2026-48818affectedopen at head; reachable=true; fixed in ['1.1.0']
CVE-2026-48817affectedopen at head; reachable=true; fixed in ['1.1.0']

Retirement proposals

TestReasonEvidence
test_ghsa_jp82_jpqv_5vv3_exposureobsolete-symbol-removedtest_ghsa_jp82_jpqv_5vv3_exposure references starlette.requests.Request, which the upgrade to 1.3.1 changes the required parameters of
test_simple_user_authenticatedredundant-no-killstest_simple_user_authenticated killed none of 12 sampled mutants in this run
test_cookie_parser_basicredundant-no-killstest_cookie_parser_basic killed none of 12 sampled mutants in this run
test_response_status_and_bodyredundant-no-killstest_response_status_and_body killed none of 12 sampled mutants in this run
test_json_response_renders_jsonredundant-no-killstest_json_response_renders_json killed none of 12 sampled mutants in this run

The records, in plain terms

60 UDLM records, each a fact from this run in the estate's own language. Intent is what the harness proposed, Requested is what a person was asked to decide, Realized is what landed and who made it so. All are sealed with a content hash.

RecordStateWhat it saysWritten
JobRequestedThe harness was asked to run on frc-scheduler-server from 2ad04243861b to cfa8f4a3292b in diff mode.2026-09-12 01:41:41 UTC
JobRealizedThe run finished; its outputs are the records this statement seals.2026-09-13 02:40:04 UTC
SoftwarePackageDiscoveredpyasn1 0.4.8 (pypi) is the version this change installs.2026-09-13 02:40:04 UTC
TestEvidenceIntenttest_debug_is_callable is a unit test in tests/test_pyasn1_unit.py; it passed on head in the sealed sandbox.2026-09-13 02:40:04 UTC
TestEvidenceIntenttest_ghsa_jr27_m4p2_rc6r_exposure is an exposure test for CVE-2026-30922 in tests/test_pyasn1_cve_cve_2026_30922.py; it failed on head in the sealed sandbox.2026-09-13 02:40:04 UTC
TestEvidenceIntenttest_ghsa_jr27_m4p2_rc6r_fix_pinning is a fix-pinning test for CVE-2026-30922 in tests/test_pyasn1_cve_cve_2026_30922.py; it failed on head in the sealed sandbox.2026-09-13 02:40:04 UTC
TestEvidenceIntenttest_hexdump_empty_bytes is a unit test in tests/test_pyasn1_unit.py; it passed on head in the sealed sandbox.2026-09-13 02:40:04 UTC
TestEvidenceIntenttest_printer_is_callable is a unit test in tests/test_pyasn1_unit.py; it passed on head in the sealed sandbox.2026-09-13 02:40:04 UTC
TestEvidenceIntenttest_pyasn1error_is_exception_subclass is a unit test in tests/test_pyasn1_unit.py; it passed on head in the sealed sandbox.2026-09-13 02:40:04 UTC
TestEvidenceIntenttest_pyasn1unicode_error_is_unicode_error_subclass is a unit test in tests/test_pyasn1_unit.py; it passed on head in the sealed sandbox.2026-09-13 02:40:04 UTC
TestEvidenceIntenttest_setlogger_returns_none is a unit test in tests/test_pyasn1_unit.py; it passed on head in the sealed sandbox.2026-09-13 02:40:04 UTC
TestEvidenceIntenttest_substrate_underrun_error_is_pyasn1error_subclass is a unit test in tests/test_pyasn1_unit.py; it passed on head in the sealed sandbox.2026-09-13 02:40:04 UTC
TestEvidenceIntenttest_value_constraint_error_is_pyasn1error_subclass is a unit test in tests/test_pyasn1_unit.py; it passed on head in the sealed sandbox.2026-09-13 02:40:04 UTC
VexStatementIntentDraft: CVE-2026-59885 is under_investigation in this package. open at head; reachable=unknown; fixed in ['0.6.4']2026-09-13 02:40:04 UTC
VexStatementIntentDraft: CVE-2026-59886 is under_investigation in this package. open at head; reachable=unknown; fixed in ['0.6.4']2026-09-13 02:40:04 UTC
VexStatementIntentDraft: CVE-2026-30922 is affected in this package. exposure test(s) ['test_ghsa_jr27_m4p2_rc6r_fix_pinning', 'test_ghsa_jr27_m4p2_rc6r_exposure'] fail on pkg:pypi/pyasn1@0.4.8 and pass on pkg:pypi/pyasn1@0.6.4: the change introduces this exposure2026-09-13 02:40:04 UTC
VexStatementIntentDraft: CVE-2026-59884 is under_investigation in this package. open at head; reachable=unknown; fixed in ['0.6.4']2026-09-13 02:40:04 UTC
VulnerabilityDiscoveredCVE-2026-59885 is a known vulnerability affecting <0.6.4. Also known as GHSA-8ppf-4f7h-5ppj, PYSEC-2026-3456.2026-09-13 02:40:04 UTC
VulnerabilityDiscoveredCVE-2026-59886 is a known vulnerability affecting <0.6.4. Also known as GHSA-hm4w-wwcw-mr6r, PYSEC-2026-3457.2026-09-13 02:40:04 UTC
VulnerabilityDiscoveredCVE-2026-30922 is a known vulnerability affecting <0.6.3. Also known as GHSA-jr27-m4p2-rc6r, PYSEC-2026-2263.2026-09-13 02:40:04 UTC
VulnerabilityDiscoveredCVE-2026-59884 is a known vulnerability affecting <0.6.4. Also known as GHSA-m4p7-r5rc-7g4j, PYSEC-2026-3455.2026-09-13 02:40:04 UTC
JobRequestedThe harness was asked to run on frc-scheduler-server from 2ad04243861b to cfa8f4a3292b in diff mode.2026-09-12 01:41:41 UTC
JobRealizedThe run finished; its outputs are the records this statement seals.2026-09-12 06:51:29 UTC
SoftwarePackageDiscoveredpython-jose 3.4.0 (pypi) is the version this change installs.2026-09-12 06:51:29 UTC
TestEvidenceIntenttest_ghsa_cjwg_qfpm_7377_exposure is an exposure test for CVE-2024-33664 in tests/test_python_jose_cve_cve_2024_33664.py; it passed on head in the sealed sandbox.2026-09-12 06:51:29 UTC
TestEvidenceIntenttest_ghsa_cjwg_qfpm_7377_fix_pinning is a fix-pinning test for CVE-2024-33664 in tests/test_python_jose_cve_cve_2024_33664.py; it passed on head in the sealed sandbox.2026-09-12 06:51:29 UTC
TestEvidenceIntenttest_jwt_decode_expired_raises_expiredsignatureerror is a unit test in tests/test_python_jose_unit.py; it passed on head in the sealed sandbox.2026-09-12 06:51:29 UTC
TestEvidenceIntenttest_jwt_decode_wrong_key_raises_jwterror is a unit test in tests/test_python_jose_unit.py; it passed on head in the sealed sandbox.2026-09-12 06:51:29 UTC
TestEvidenceIntenttest_jwt_encode_decode_roundtrip is a unit test in tests/test_python_jose_unit.py; it passed on head in the sealed sandbox.2026-09-12 06:51:29 UTC
TestEvidenceIntenttest_jwt_get_unverified_claims is a unit test in tests/test_python_jose_unit.py; it passed on head in the sealed sandbox.2026-09-12 06:51:29 UTC
TestEvidenceIntenttest_jwt_get_unverified_header is a unit test in tests/test_python_jose_unit.py; it passed on head in the sealed sandbox.2026-09-12 06:51:29 UTC
VexStatementIntentDraft: CVE-2024-33663 is under_investigation in this package. bump to a fixed version per advisory metadata; no confirmed fix-pinning test yet2026-09-12 06:51:29 UTC
VexStatementIntentDraft: CVE-2024-33664 is fixed in this package. fix-pinning test(s) ['test_ghsa_cjwg_qfpm_7377_exposure', 'test_ghsa_cjwg_qfpm_7377_fix_pinning'] fail on pkg:pypi/python-jose@3.3.0 and pass on pkg:pypi/python-jose@3.4.02026-09-12 06:51:29 UTC
VexStatementIntentDraft: CVE-2024-29370 is under_investigation in this package. bump to a fixed version per advisory metadata; no confirmed fix-pinning test yet2026-09-12 06:51:29 UTC
VulnerabilityDiscoveredCVE-2024-33663 is a known vulnerability affecting <3.4.0. Also known as GHSA-6c5p-j8vq-pqhj, PYSEC-2024-232.2026-09-12 06:51:29 UTC
VulnerabilityDiscoveredCVE-2024-33664 is a known vulnerability affecting <3.4.0. Also known as GHSA-cjwg-qfpm-7377, PYSEC-2024-233.2026-09-12 06:51:29 UTC
VulnerabilityDiscoveredCVE-2024-29370 is a known vulnerability affecting versions the advisory does not pin. Also known as PYSEC-2025-185.2026-09-12 06:51:29 UTC
JobRequestedThe harness was asked to run on frc-scheduler-server from 2ad04243861b to cfa8f4a3292b in diff mode.2026-09-12 01:41:41 UTC
JobRealizedThe run finished; its outputs are the records this statement seals.2026-09-13 04:29:47 UTC
SoftwarePackageDiscoveredstarlette 0.41.3 (pypi) is the version this change installs.2026-09-13 04:29:47 UTC
TestEvidenceIntenttest_cookie_parser_basic is a unit test in tests/test_starlette_unit.py; it passed on head in the sealed sandbox.2026-09-13 04:29:47 UTC
TestEvidenceIntenttest_ghsa_82w8_qh3p_5jfq_exposure is an exposure test for CVE-2026-54283 in tests/test_starlette_cve_cve_2026_54283.py; it failed on head in the sealed sandbox.2026-09-13 04:29:47 UTC
TestEvidenceIntenttest_ghsa_82w8_qh3p_5jfq_fix_pinning is a fix-pinning test for CVE-2026-54283 in tests/test_starlette_cve_cve_2026_54283.py; it failed on head in the sealed sandbox.2026-09-13 04:29:47 UTC
TestEvidenceIntenttest_json_response_renders_json is a unit test in tests/test_starlette_unit.py; it passed on head in the sealed sandbox.2026-09-13 04:29:47 UTC
TestEvidenceIntenttest_response_status_and_body is a unit test in tests/test_starlette_unit.py; it passed on head in the sealed sandbox.2026-09-13 04:29:47 UTC
TestEvidenceIntenttest_simple_user_authenticated is a unit test in tests/test_starlette_unit.py; it passed on head in the sealed sandbox.2026-09-13 04:29:47 UTC
VexStatementIntentDraft: CVE-2025-54121 is affected in this package. open at head; reachable=true; fixed in ['0.47.2']2026-09-13 04:29:47 UTC
VexStatementIntentDraft: CVE-2025-62727 is affected in this package. open at head; reachable=true; fixed in ['0.49.1']2026-09-13 04:29:47 UTC
VexStatementIntentDraft: CVE-2026-54283 is affected in this package. exposure test(s) ['test_ghsa_82w8_qh3p_5jfq_exposure', 'test_ghsa_82w8_qh3p_5jfq_fix_pinning'] fail on pkg:pypi/starlette@0.41.3 and pass on pkg:pypi/starlette@0.41.3: the change introduces this exposure2026-09-13 04:29:47 UTC
VexStatementIntentDraft: CVE-2026-48710 is affected in this package. open at head; reachable=true; fixed in ['1.0.1']2026-09-13 04:29:47 UTC
VexStatementIntentDraft: CVE-2026-54282 is affected in this package. open at head; reachable=true; fixed in ['1.3.0']2026-09-13 04:29:47 UTC
VexStatementIntentDraft: CVE-2026-48818 is affected in this package. open at head; reachable=true; fixed in ['1.1.0']2026-09-13 04:29:47 UTC
VexStatementIntentDraft: CVE-2026-48817 is affected in this package. open at head; reachable=true; fixed in ['1.1.0']2026-09-13 04:29:47 UTC
VulnerabilityDiscoveredCVE-2025-54121 is a known vulnerability affecting <0.47.2. Also known as GHSA-2c2j-9gv5-cj73, PYSEC-2026-1941.2026-09-13 04:29:47 UTC
VulnerabilityDiscoveredCVE-2025-62727 is a known vulnerability affecting <0.49.1. Also known as GHSA-7f5h-v6xp-fcq8, PYSEC-2026-1942.2026-09-13 04:29:47 UTC
VulnerabilityDiscoveredCVE-2026-54283 is a known vulnerability affecting <1.3.1. Also known as GHSA-82w8-qh3p-5jfq, PYSEC-2026-249.2026-09-13 04:29:47 UTC
VulnerabilityDiscoveredCVE-2026-48710 is a known vulnerability affecting <1.0.1. Also known as GHSA-86qp-5c8j-p5mr, PYSEC-2026-161.2026-09-13 04:29:47 UTC
VulnerabilityDiscoveredCVE-2026-54282 is a known vulnerability affecting <1.3.0. Also known as GHSA-jp82-jpqv-5vv3, PYSEC-2026-248.2026-09-13 04:29:47 UTC
VulnerabilityDiscoveredCVE-2026-48818 is a known vulnerability affecting <1.1.0. Also known as GHSA-wqp7-x3pw-xc5r, PYSEC-2026-2281.2026-09-13 04:29:47 UTC
VulnerabilityDiscoveredCVE-2026-48817 is a known vulnerability affecting <1.1.0. Also known as GHSA-x746-7m8f-x49c, PYSEC-2026-2280.2026-09-13 04:29:47 UTC

The run against the blueprint's goals

IdGoalMeasuredVerdictFrom
G1Nothing merges without a personharness produced patches and drafts only; no git push, no VEX publishedmetpacket.md packet.md
G2Every kept test was compiled and run in the sandbox before a reviewer sees it45 tests ran on head, again for flakes, and on base; 0 flakymetresults.json results.json
G3A test that passes on both versions is not presented as CVE evidence6 fix-pinning confirmed; pass-on-both CVE tests are classified test-bug and excluded from VEX 'fixed'mettriage.json triage.json
G4Stage 0 passed before evidence was produced28 of 28 register checks; sandbox probe skipped; model probe skippedmetselfcheck.json
G5Generated tests ran with no network, no secrets, read-only root, disposable container{'capabilities': 'all dropped', 'disposable': True, 'limits': {'cpus': '2', 'memory': '2g', 'pids': 512, 'timeout_s': 90metsandbox.json sandbox.json
G6Every accepted test carries a provenance record and a signed attestation23 records; envelopes verified locally: [True, True, True]; signer is a development keymet (development signer)statement.dsse.json statement.dsse.json
G7Every advisory on the work item has a CVE-targeted test attempt and a draft VEX statementpyasn1: {'CVE-2026-30922': 'affected', 'CVE-2026-59884': 'under_investigation', 'CVE-2026-59885': 'under_investigation', 'CVE-2026-59886': 'undermetvex.openvex.json vex.openvex.json
G8The run surfaces a finding the PR diff does not showpyasn1: ['pyasn1 downgraded 0.6.4 -> 0.4.8 into a version with 8 known advisories', 'pyasn1 0.4.8 has 8 open advisories at head; reachable=unknown', 'pyasn1: a code path raised the same internmettriage.json triage.json
G9Packet within 2 hours of trigger for depth 0 and 1intake 2026-09-12T01:42:29+00:00 -> packet 2026-09-13T16:25:41+00:00see measurementrun.json summary.json
G10Every number in the packet points at a file in the work directorypacket sections cite artifact paths; attestation subjects are the patch and the manifest digestsmetstatement.json statement.json
G11Test strength measured by mutation and coverage deltapyasn1: score 0.417 on 12 sampled mutants; python-jose: score 0.417 on 12 sampled mutants; starlette: score 0.0 on 12 sampled mutants; coverage delta: no baseline overlay suite yetnot met (target 0.6 on sampled mutants)mutation.json mutation.json
G12The pipeline's own gaps are stated, never inherited silentlyanalysis predates the pipeline facts; rerun analysisnot applicable
G13Every behaviour the change reaches ends in exactly one state, and a gap carries its reason5 behaviour(s) reached: 0 validated, 0 for your environment, 5 stated gap(s) (5 strength-not-sampled); 2 reference(s) set aside with a reasonmetaccounting-summary.json accounting.json

What is in this folder, and who it is for

What is in this folder, and who it is for

Every file exists for a reader or a tool named here. The plain-English files come first; the machine files stay because they are the proof and the replay.

Everyone

  • README.md: The story of this run: who, what, why, where, when, the outcome, the decisions and the actions.
  • triage/accounting-summary.json: The accounting rolled up: how many behaviours were reached, validated, handed to the team, or left as stated gaps, and why.
  • assess/assess.md: The run against the blueprint's thirteen goals, each with the measurement and the file it came from.

Reviewers (the developer or team that owns the change)

Product Security

Supply Chain Security and auditors

The person who ran the harness

Tools (kept for replay and proof; not meant to be read)