From 477d2b45c6a1f874d8cc2737da4b68739eaf2224 Mon Sep 17 00:00:00 2001 From: Felix Date: Sun, 16 Aug 2026 00:57:51 +0800 Subject: [PATCH 1/8] Add one-time unattributed failure hardening updater --- .../one-time-unattributed-target-failure.yml | 101 ++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 .github/workflows/one-time-unattributed-target-failure.yml diff --git a/.github/workflows/one-time-unattributed-target-failure.yml b/.github/workflows/one-time-unattributed-target-failure.yml new file mode 100644 index 0000000..1fce8bd --- /dev/null +++ b/.github/workflows/one-time-unattributed-target-failure.yml @@ -0,0 +1,101 @@ +name: One-time unattributed target failure hardening + +on: + push: + branches: + - fix/unattributed-target-failure-sink + paths: + - .github/workflows/one-time-unattributed-target-failure.yml + +permissions: + contents: write + +jobs: + update: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v7 + with: + ref: fix/unattributed-target-failure-sink + - uses: actions/setup-node@v7 + with: + node-version: 22 + cache: npm + - run: npm ci + - name: Apply soundness fix and regression + run: | + python3 - <<'PY' + from pathlib import Path + + checks = Path('src/checks.ts') + text = checks.read_text() + old = ''' const unavailableRecords = [...records.values()].filter((record) => !record.observed);\n const processFailureHasNoUnavailableTarget = payload.unattributedFailures > 0 && unavailableRecords.length === 0;\n return qualifications.map((qualification) => {\n const record = records.get(path.resolve(root, qualification.runnerPath))!;\n if (!record.observed || (processFailureHasNoUnavailableTarget && record.failed === 0)) {\n''' + new = ''' const hasUnattributedProcessFailure = payload.unattributedFailures > 0;\n return qualifications.map((qualification) => {\n const record = records.get(path.resolve(root, qualification.runnerPath))!;\n if (!record.observed || (hasUnattributedProcessFailure && record.failed === 0)) {\n''' + if old not in text: + raise SystemExit('checks.ts target block not found') + checks.write_text(text.replace(old, new, 1)) + + tests = Path('tests/analyze.test.ts') + text = tests.read_text() + anchor = '''test("Python stubs remain static test relationships without inventing a runnable framework", async (context) => {\n''' + if anchor not in text: + raise SystemExit('analyze.test.ts insertion anchor not found') + regression = r'''test("unattributed unittest failures cannot hide behind an unavailable batch target", async (context) => { + const root = await initializeRepository({ + "src/__init__.py": "", + "src/a.py": "def value_a():\n return 1\n", + "src/b.py": "def value_b():\n return 1\n", + "src/c.py": "def value_c():\n return 1\n", + "tests/__init__.py": "", + "tests/helper.py": "import unittest\n\nclass ImportedFailure(unittest.TestCase):\n def test_imported_failure(self):\n self.fail('imported failure')\n", + "tests/test_a.py": "import unittest\nfrom src.a import value_a\nfrom tests.helper import ImportedFailure\n\nclass ATest(unittest.TestCase):\n def test_a(self):\n self.assertEqual(value_a(), 2)\n", + "tests/test_b.py": "import unittest\nfrom src.b import value_b\n\nclass BTest(unittest.TestCase):\n def test_b(self):\n self.assertEqual(value_b(), 999)\n", + "tests/test_c.py": "from src.c import value_c\n\nvalue_c()\n", + }); + context.after(() => rm(root, { recursive: true, force: true })); + await writeFiles(root, { + "src/a.py": "def value_a():\n return 2\n", + "src/b.py": "def value_b():\n return 2\n", + "src/c.py": "def value_c():\n return 2\n", + }); + + const report = await analyzeRepository({ repo: root, runChecks: true, timeoutMs: 20_000 }); + const targeted = report.checks.find((check) => check.id === "python:test:unittest:targeted"); + const observations = new Map(targeted?.targetObservations?.map((observation) => [observation.path, observation])); + const sourceA = report.assessments.find((assessment) => assessment.file.path === "src/a.py"); + + assert.equal(targeted?.status, "failed", targeted?.output); + assert.equal(observations.get("tests/test_a.py")?.outcome, "not-observed"); + assert.match(observations.get("tests/test_a.py")?.detail ?? "", /unattributed process-level failure/); + assert.equal(observations.get("tests/test_b.py")?.outcome, "failed"); + assert.equal(observations.get("tests/test_c.py")?.outcome, "not-observed"); + assert.equal(sourceA?.status, "verification-failed"); + assert.deepEqual(sourceA?.executedTests, []); + assert.deepEqual(sourceA?.testExecutions, []); +}); + +''' + tests.write_text(text.replace(anchor, regression + anchor, 1)) + + changelog = Path('CHANGELOG.md') + text = changelog.read_text() + anchor = '### Fixed\n\n' + if anchor not in text: + raise SystemExit('CHANGELOG fixed section not found') + item = '- Failed closed on unattributed targeted-runner process failures even when another qualified batch target is unavailable. An unavailable target can no longer act as a sink that lets unrelated observed passes survive an ambiguous process-level failure; only explicitly failed targets retain localized failure attribution.\n' + changelog.write_text(text.replace(anchor, anchor + item, 1)) + PY + - name: Run full tests + run: npm test + - name: Clean rebuild tracked dist + run: npm run clean && npm run build + - name: Validate diff + run: git diff --check + - name: Commit generated update + run: | + git config user.name "github-actions[bot]" + git config user.email "41898282+github-actions[bot]@users.noreply.github.com" + git add CHANGELOG.md src/checks.ts tests/analyze.test.ts dist + git diff --cached --stat + git commit -m "Fail closed on unattributed batch failures" + git push origin HEAD:fix/unattributed-target-failure-sink From e666bb174b61da99bf0c7ea7d13cb1e1502f8807 Mon Sep 17 00:00:00 2001 From: Felix Date: Sun, 16 Aug 2026 00:58:54 +0800 Subject: [PATCH 2/8] Fix one-time updater workflow syntax --- .../one-time-unattributed-target-failure.yml | 65 +------------------ 1 file changed, 3 insertions(+), 62 deletions(-) diff --git a/.github/workflows/one-time-unattributed-target-failure.yml b/.github/workflows/one-time-unattributed-target-failure.yml index 1fce8bd..b0c1181 100644 --- a/.github/workflows/one-time-unattributed-target-failure.yml +++ b/.github/workflows/one-time-unattributed-target-failure.yml @@ -23,68 +23,9 @@ jobs: cache: npm - run: npm ci - name: Apply soundness fix and regression - run: | - python3 - <<'PY' - from pathlib import Path - - checks = Path('src/checks.ts') - text = checks.read_text() - old = ''' const unavailableRecords = [...records.values()].filter((record) => !record.observed);\n const processFailureHasNoUnavailableTarget = payload.unattributedFailures > 0 && unavailableRecords.length === 0;\n return qualifications.map((qualification) => {\n const record = records.get(path.resolve(root, qualification.runnerPath))!;\n if (!record.observed || (processFailureHasNoUnavailableTarget && record.failed === 0)) {\n''' - new = ''' const hasUnattributedProcessFailure = payload.unattributedFailures > 0;\n return qualifications.map((qualification) => {\n const record = records.get(path.resolve(root, qualification.runnerPath))!;\n if (!record.observed || (hasUnattributedProcessFailure && record.failed === 0)) {\n''' - if old not in text: - raise SystemExit('checks.ts target block not found') - checks.write_text(text.replace(old, new, 1)) - - tests = Path('tests/analyze.test.ts') - text = tests.read_text() - anchor = '''test("Python stubs remain static test relationships without inventing a runnable framework", async (context) => {\n''' - if anchor not in text: - raise SystemExit('analyze.test.ts insertion anchor not found') - regression = r'''test("unattributed unittest failures cannot hide behind an unavailable batch target", async (context) => { - const root = await initializeRepository({ - "src/__init__.py": "", - "src/a.py": "def value_a():\n return 1\n", - "src/b.py": "def value_b():\n return 1\n", - "src/c.py": "def value_c():\n return 1\n", - "tests/__init__.py": "", - "tests/helper.py": "import unittest\n\nclass ImportedFailure(unittest.TestCase):\n def test_imported_failure(self):\n self.fail('imported failure')\n", - "tests/test_a.py": "import unittest\nfrom src.a import value_a\nfrom tests.helper import ImportedFailure\n\nclass ATest(unittest.TestCase):\n def test_a(self):\n self.assertEqual(value_a(), 2)\n", - "tests/test_b.py": "import unittest\nfrom src.b import value_b\n\nclass BTest(unittest.TestCase):\n def test_b(self):\n self.assertEqual(value_b(), 999)\n", - "tests/test_c.py": "from src.c import value_c\n\nvalue_c()\n", - }); - context.after(() => rm(root, { recursive: true, force: true })); - await writeFiles(root, { - "src/a.py": "def value_a():\n return 2\n", - "src/b.py": "def value_b():\n return 2\n", - "src/c.py": "def value_c():\n return 2\n", - }); - - const report = await analyzeRepository({ repo: root, runChecks: true, timeoutMs: 20_000 }); - const targeted = report.checks.find((check) => check.id === "python:test:unittest:targeted"); - const observations = new Map(targeted?.targetObservations?.map((observation) => [observation.path, observation])); - const sourceA = report.assessments.find((assessment) => assessment.file.path === "src/a.py"); - - assert.equal(targeted?.status, "failed", targeted?.output); - assert.equal(observations.get("tests/test_a.py")?.outcome, "not-observed"); - assert.match(observations.get("tests/test_a.py")?.detail ?? "", /unattributed process-level failure/); - assert.equal(observations.get("tests/test_b.py")?.outcome, "failed"); - assert.equal(observations.get("tests/test_c.py")?.outcome, "not-observed"); - assert.equal(sourceA?.status, "verification-failed"); - assert.deepEqual(sourceA?.executedTests, []); - assert.deepEqual(sourceA?.testExecutions, []); -}); - -''' - tests.write_text(text.replace(anchor, regression + anchor, 1)) - - changelog = Path('CHANGELOG.md') - text = changelog.read_text() - anchor = '### Fixed\n\n' - if anchor not in text: - raise SystemExit('CHANGELOG fixed section not found') - item = '- Failed closed on unattributed targeted-runner process failures even when another qualified batch target is unavailable. An unavailable target can no longer act as a sink that lets unrelated observed passes survive an ambiguous process-level failure; only explicitly failed targets retain localized failure attribution.\n' - changelog.write_text(text.replace(anchor, anchor + item, 1)) - PY + env: + PATCH_B64: ZnJvbSBwYXRobGliIGltcG9ydCBQYXRoCgpjaGVja3MgPSBQYXRoKCdzcmMvY2hlY2tzLnRzJykKdGV4dCA9IGNoZWNrcy5yZWFkX3RleHQoKQpvbGQgPSAnJycgIGNvbnN0IHVuYXZhaWxhYmxlUmVjb3JkcyA9IFsuLi5yZWNvcmRzLnZhbHVlcygpXS5maWx0ZXIoKHJlY29yZCkgPT4gIXJlY29yZC5vYnNlcnZlZCk7XG4gIGNvbnN0IHByb2Nlc3NGYWlsdXJlSGFzTm9VbmF2YWlsYWJsZVRhcmdldCA9IHBheWxvYWQudW5hdHRyaWJ1dGVkRmFpbHVyZXMgPiAwICYmIHVuYXZhaWxhYmxlUmVjb3Jkcy5sZW5ndGggPT09IDA7XG4gIHJldHVybiBxdWFsaWZpY2F0aW9ucy5tYXAoKHF1YWxpZmljYXRpb24pID0+IHtcbiAgICBjb25zdCByZWNvcmQgPSByZWNvcmRzLmdldChwYXRoLnJlc29sdmUocm9vdCwgcXVhbGlmaWNhdGlvbi5ydW5uZXJQYXRoKSkhO1xuICAgIGlmICghcmVjb3JkLm9ic2VydmVkIHx8IChwcm9jZXNzRmFpbHVyZUhhc05vVW5hdmFpbGFibGVUYXJnZXQgJiYgcmVjb3JkLmZhaWxlZCA9PT0gMCkpIHtcbicnJwpuZXcgPSAnJycgIGNvbnN0IGhhc1VuYXR0cmlidXRlZFByb2Nlc3NGYWlsdXJlID0gcGF5bG9hZC51bmF0dHJpYnV0ZWRGYWlsdXJlcyA+IDA7XG4gIHJldHVybiBxdWFsaWZpY2F0aW9ucy5tYXAoKHF1YWxpZmljYXRpb24pID0+IHtcbiAgICBjb25zdCByZWNvcmQgPSByZWNvcmRzLmdldChwYXRoLnJlc29sdmUocm9vdCwgcXVhbGlmaWNhdGlvbi5ydW5uZXJQYXRoKSkhO1xuICAgIGlmICghcmVjb3JkLm9ic2VydmVkIHx8IChoYXNVbmF0dHJpYnV0ZWRQcm9jZXNzRmFpbHVyZSAmJiByZWNvcmQuZmFpbGVkID09PSAwKSkge1xuJycnCmlmIG9sZCBub3QgaW4gdGV4dDoKICAgIHJhaXNlIFN5c3RlbUV4aXQoJ2NoZWNrcy50cyB0YXJnZXQgYmxvY2sgbm90IGZvdW5kJykKY2hlY2tzLndyaXRlX3RleHQodGV4dC5yZXBsYWNlKG9sZCwgbmV3LCAxKSkKCnRlc3RzID0gUGF0aCgndGVzdHMvYW5hbHl6ZS50ZXN0LnRzJykKdGV4dCA9IHRlc3RzLnJlYWRfdGV4dCgpCmFuY2hvciA9ICd0ZXN0KCJQeXRob24gc3R1YnMgcmVtYWluIHN0YXRpYyB0ZXN0IHJlbGF0aW9uc2hpcHMgd2l0aG91dCBpbnZlbnRpbmcgYSBydW5uYWJsZSBmcmFtZXdvcmsiLCBhc3luYyAoY29udGV4dCkgPT4ge1xuJwppZiBhbmNob3Igbm90IGluIHRleHQ6CiAgICByYWlzZSBTeXN0ZW1FeGl0KCdhbmFseXplLnRlc3QudHMgaW5zZXJ0aW9uIGFuY2hvciBub3QgZm91bmQnKQpyZWdyZXNzaW9uID0gJycndGVzdCgidW5hdHRyaWJ1dGVkIHVuaXR0ZXN0IGZhaWx1cmVzIGNhbm5vdCBoaWRlIGJlaGluZCBhbiB1bmF2YWlsYWJsZSBiYXRjaCB0YXJnZXQiLCBhc3luYyAoY29udGV4dCkgPT4gewogIGNvbnN0IHJvb3QgPSBhd2FpdCBpbml0aWFsaXplUmVwb3NpdG9yeSh7CiAgICAic3JjL19faW5pdF9fLnB5IjogIiIsCiAgICAic3JjL2EucHkiOiAiZGVmIHZhbHVlX2EoKTpcXG4gICAgcmV0dXJuIDFcXG4iLAogICAgInNyYy9iLnB5IjogImRlZiB2YWx1ZV9iKCk6XFxuICAgIHJldHVybiAxXFxuIiwKICAgICJzcmMvYy5weSI6ICJkZWYgdmFsdWVfYygpOlxcbiAgICByZXR1cm4gMVxcbiIsCiAgICAidGVzdHMvX19pbml0X18ucHkiOiAiIiwKICAgICJ0ZXN0cy9oZWxwZXIucHkiOiAiaW1wb3J0IHVuaXR0ZXN0XFxuXFxuY2xhc3MgSW1wb3J0ZWRGYWlsdXJlKHVuaXR0ZXN0LlRlc3RDYXNlKTpcXG4gICAgZGVmIHRlc3RfaW1wb3J0ZWRfZmFpbHVyZShzZWxmKTpcXG4gICAgICAgIHNlbGYuZmFpbCgnaW1wb3J0ZWQgZmFpbHVyZScpXFxuIiwKICAgICJ0ZXN0cy90ZXN0X2EucHkiOiAiaW1wb3J0IHVuaXR0ZXN0XFxuZnJvbSBzcmMuYSBpbXBvcnQgdmFsdWVfYVxcbmZyb20gdGVzdHMuaGVscGVyIGltcG9ydCBJbXBvcnRlZEZhaWx1cmVcXG5cXG5jbGFzcyBBVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6XFxuICAgIGRlZiB0ZXN0X2Eoc2VsZik6XFxuICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbHVlX2EoKSwgMilcXG4iLAogICAgInRlc3RzL3Rlc3RfYi5weSI6ICJpbXBvcnQgdW5pdHRlc3RcXG5mcm9tIHNyYy5iIGltcG9ydCB2YWx1ZV9iXFxuXFxuY2xhc3MgQlRlc3QodW5pdHRlc3QuVGVzdENhc2UpOlxcbiAgICBkZWYgdGVzdF9iKHNlbGYpOlxcbiAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWx1ZV9iKCksIDk5OSlcXG4iLAogICAgInRlc3RzL3Rlc3RfYy5weSI6ICJmcm9tIHNyYy5jIGltcG9ydCB2YWx1ZV9jXFxuXFxudmFsdWVfYygpXFxuIiwKICB9KTsKICBjb250ZXh0LmFmdGVyKCgpID0+IHJtKHJvb3QsIHsgcmVjdXJzaXZlOiB0cnVlLCBmb3JjZTogdHJ1ZSB9KSk7CiAgYXdhaXQgd3JpdGVGaWxlcyhyb290LCB7CiAgICAic3JjL2EucHkiOiAiZGVmIHZhbHVlX2EoKTpcXG4gICAgcmV0dXJuIDJcXG4iLAogICAgInNyYy9iLnB5IjogImRlZiB2YWx1ZV9iKCk6XFxuICAgIHJldHVybiAyXFxuIiwKICAgICJzcmMvYy5weSI6ICJkZWYgdmFsdWVfYygpOlxcbiAgICByZXR1cm4gMlxcbiIsCiAgfSk7CgogIGNvbnN0IHJlcG9ydCA9IGF3YWl0IGFuYWx5emVSZXBvc2l0b3J5KHsgcmVwbzogcm9vdCwgcnVuQ2hlY2tzOiB0cnVlLCB0aW1lb3V0TXM6IDIwXzAwMCB9KTsKICBjb25zdCB0YXJnZXRlZCA9IHJlcG9ydC5jaGVja3MuZmluZCgoY2hlY2spID0+IGNoZWNrLmlkID09PSAicHl0aG9uOnRlc3Q6dW5pdHRlc3Q6dGFyZ2V0ZWQiKTsKICBjb25zdCBvYnNlcnZhdGlvbnMgPSBuZXcgTWFwKHRhcmdldGVkPy50YXJnZXRPYnNlcnZhdGlvbnM/Lm1hcCgob2JzZXJ2YXRpb24pID0+IFtvYnNlcnZhdGlvbi5wYXRoLCBvYnNlcnZhdGlvbl0pKTsKICBjb25zdCBzb3VyY2VBID0gcmVwb3J0LmFzc2Vzc21lbnRzLmZpbmQoKGFzc2Vzc21lbnQpID0+IGFzc2Vzc21lbnQuZmlsZS5wYXRoID09PSAic3JjL2EucHkiKTsKCiAgYXNzZXJ0LmVxdWFsKHRhcmdldGVkPy5zdGF0dXMsICJmYWlsZWQiLCB0YXJnZXRlZD8ub3V0cHV0KTsKICBhc3NlcnQuZXF1YWwob2JzZXJ2YXRpb25zLmdldCgidGVzdHMvdGVzdF9hLnB5Iik/Lm91dGNvbWUsICJub3Qtb2JzZXJ2ZWQiKTsKICBhc3NlcnQubWF0Y2gob2JzZXJ2YXRpb25zLmdldCgidGVzdHMvdGVzdF9hLnB5Iik/LmRldGFpbCA/PyAiIiwgL3VuYXR0cmlidXRlZCBwcm9jZXNzLWxldmVsIGZhaWx1cmUvKTsKICBhc3NlcnQuZXF1YWwob2JzZXJ2YXRpb25zLmdldCgidGVzdHMvdGVzdF9iLnB5Iik/Lm91dGNvbWUsICJmYWlsZWQiKTsKICBhc3NlcnQuZXF1YWwob2JzZXJ2YXRpb25zLmdldCgidGVzdHMvdGVzdF9jLnB5Iik/Lm91dGNvbWUsICJub3Qtb2JzZXJ2ZWQiKTsKICBhc3NlcnQuZXF1YWwoc291cmNlQT8uc3RhdHVzLCAidmVyaWZpY2F0aW9uLWZhaWxlZCIpOwogIGFzc2VydC5kZWVwRXF1YWwoc291cmNlQT8uZXhlY3V0ZWRUZXN0cywgW10pOwogIGFzc2VydC5kZWVwRXF1YWwoc291cmNlQT8udGVzdEV4ZWN1dGlvbnMsIFtdKTsKfSk7CgonJycKdGVzdHMud3JpdGVfdGV4dCh0ZXh0LnJlcGxhY2UoYW5jaG9yLCByZWdyZXNzaW9uICsgYW5jaG9yLCAxKSkKCmNoYW5nZWxvZyA9IFBhdGgoJ0NIQU5HRUxPRy5tZCcpCnRleHQgPSBjaGFuZ2Vsb2cucmVhZF90ZXh0KCkKYW5jaG9yID0gJyMjIyBGaXhlZFxuXG4nCmlmIGFuY2hvciBub3QgaW4gdGV4dDoKICAgIHJhaXNlIFN5c3RlbUV4aXQoJ0NIQU5HRUxPRyBmaXhlZCBzZWN0aW9uIG5vdCBmb3VuZCcpCml0ZW0gPSAnLSBGYWlsZWQgY2xvc2VkIG9uIHVuYXR0cmlidXRlZCB0YXJnZXRlZC1ydW5uZXIgcHJvY2VzcyBmYWlsdXJlcyBldmVuIHdoZW4gYW5vdGhlciBxdWFsaWZpZWQgYmF0Y2ggdGFyZ2V0IGlzIHVuYXZhaWxhYmxlLiBBbiB1bmF2YWlsYWJsZSB0YXJnZXQgY2FuIG5vIGxvbmdlciBhY3QgYXMgYSBzaW5rIHRoYXQgbGV0cyB1bnJlbGF0ZWQgb2JzZXJ2ZWQgcGFzc2VzIHN1cnZpdmUgYW4gYW1iaWd1b3VzIHByb2Nlc3MtbGV2ZWwgZmFpbHVyZTsgb25seSBleHBsaWNpdGx5IGZhaWxlZCB0YXJnZXRzIHJldGFpbiBsb2NhbGl6ZWQgZmFpbHVyZSBhdHRyaWJ1dGlvbi5cbicKY2hhbmdlbG9nLndyaXRlX3RleHQodGV4dC5yZXBsYWNlKGFuY2hvciwgYW5jaG9yICsgaXRlbSwgMSkpCg== + run: echo "$PATCH_B64" | base64 -d | python3 - name: Run full tests run: npm test - name: Clean rebuild tracked dist From 5f0b56b52c3e58300dd4f98a52db6c604c6f01f6 Mon Sep 17 00:00:00 2001 From: Felix Date: Sun, 16 Aug 2026 00:59:36 +0800 Subject: [PATCH 3/8] Add valid one-time unattributed failure updater --- ...ne-time-unattributed-target-failure-v2.yml | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 .github/workflows/one-time-unattributed-target-failure-v2.yml diff --git a/.github/workflows/one-time-unattributed-target-failure-v2.yml b/.github/workflows/one-time-unattributed-target-failure-v2.yml new file mode 100644 index 0000000..88d189f --- /dev/null +++ b/.github/workflows/one-time-unattributed-target-failure-v2.yml @@ -0,0 +1,42 @@ +name: One-time unattributed target failure hardening v2 + +on: + push: + branches: + - fix/unattributed-target-failure-sink + paths: + - .github/workflows/one-time-unattributed-target-failure-v2.yml + +permissions: + contents: write + +jobs: + update: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v7 + with: + ref: fix/unattributed-target-failure-sink + - uses: actions/setup-node@v7 + with: + node-version: 22 + cache: npm + - run: npm ci + - name: Apply soundness fix and regression + env: + PATCH_B64: ZnJvbSBwYXRobGliIGltcG9ydCBQYXRoCgpjaGVja3MgPSBQYXRoKCdzcmMvY2hlY2tzLnRzJykKdGV4dCA9IGNoZWNrcy5yZWFkX3RleHQoKQpvbGQgPSAnJycgIGNvbnN0IHVuYXZhaWxhYmxlUmVjb3JkcyA9IFsuLi5yZWNvcmRzLnZhbHVlcygpXS5maWx0ZXIoKHJlY29yZCkgPT4gIXJlY29yZC5vYnNlcnZlZCk7XG4gIGNvbnN0IHByb2Nlc3NGYWlsdXJlSGFzTm9VbmF2YWlsYWJsZVRhcmdldCA9IHBheWxvYWQudW5hdHRyaWJ1dGVkRmFpbHVyZXMgPiAwICYmIHVuYXZhaWxhYmxlUmVjb3Jkcy5sZW5ndGggPT09IDA7XG4gIHJldHVybiBxdWFsaWZpY2F0aW9ucy5tYXAoKHF1YWxpZmljYXRpb24pID0+IHtcbiAgICBjb25zdCByZWNvcmQgPSByZWNvcmRzLmdldChwYXRoLnJlc29sdmUocm9vdCwgcXVhbGlmaWNhdGlvbi5ydW5uZXJQYXRoKSkhO1xuICAgIGlmICghcmVjb3JkLm9ic2VydmVkIHx8IChwcm9jZXNzRmFpbHVyZUhhc05vVW5hdmFpbGFibGVUYXJnZXQgJiYgcmVjb3JkLmZhaWxlZCA9PT0gMCkpIHtcbicnJwpuZXcgPSAnJycgIGNvbnN0IGhhc1VuYXR0cmlidXRlZFByb2Nlc3NGYWlsdXJlID0gcGF5bG9hZC51bmF0dHJpYnV0ZWRGYWlsdXJlcyA+IDA7XG4gIHJldHVybiBxdWFsaWZpY2F0aW9ucy5tYXAoKHF1YWxpZmljYXRpb24pID0+IHtcbiAgICBjb25zdCByZWNvcmQgPSByZWNvcmRzLmdldChwYXRoLnJlc29sdmUocm9vdCwgcXVhbGlmaWNhdGlvbi5ydW5uZXJQYXRoKSkhO1xuICAgIGlmICghcmVjb3JkLm9ic2VydmVkIHx8IChoYXNVbmF0dHJpYnV0ZWRQcm9jZXNzRmFpbHVyZSAmJiByZWNvcmQuZmFpbGVkID09PSAwKSkge1xuJycnCmlmIG9sZCBub3QgaW4gdGV4dDoKICAgIHJhaXNlIFN5c3RlbUV4aXQoJ2NoZWNrcy50cyB0YXJnZXQgYmxvY2sgbm90IGZvdW5kJykKY2hlY2tzLndyaXRlX3RleHQodGV4dC5yZXBsYWNlKG9sZCwgbmV3LCAxKSkKCnRlc3RzID0gUGF0aCgndGVzdHMvYW5hbHl6ZS50ZXN0LnRzJykKdGV4dCA9IHRlc3RzLnJlYWRfdGV4dCgpCmFuY2hvciA9ICd0ZXN0KCJQeXRob24gc3R1YnMgcmVtYWluIHN0YXRpYyB0ZXN0IHJlbGF0aW9uc2hpcHMgd2l0aG91dCBpbnZlbnRpbmcgYSBydW5uYWJsZSBmcmFtZXdvcmsiLCBhc3luYyAoY29udGV4dCkgPT4ge1xuJwppZiBhbmNob3Igbm90IGluIHRleHQ6CiAgICByYWlzZSBTeXN0ZW1FeGl0KCdhbmFseXplLnRlc3QudHMgaW5zZXJ0aW9uIGFuY2hvciBub3QgZm91bmQnKQpyZWdyZXNzaW9uID0gJycndGVzdCgidW5hdHRyaWJ1dGVkIHVuaXR0ZXN0IGZhaWx1cmVzIGNhbm5vdCBoaWRlIGJlaGluZCBhbiB1bmF2YWlsYWJsZSBiYXRjaCB0YXJnZXQiLCBhc3luYyAoY29udGV4dCkgPT4gewogIGNvbnN0IHJvb3QgPSBhd2FpdCBpbml0aWFsaXplUmVwb3NpdG9yeSh7CiAgICAic3JjL19faW5pdF9fLnB5IjogIiIsCiAgICAic3JjL2EucHkiOiAiZGVmIHZhbHVlX2EoKTpcXG4gICAgcmV0dXJuIDFcXG4iLAogICAgInNyYy9iLnB5IjogImRlZiB2YWx1ZV9iKCk6XFxuICAgIHJldHVybiAxXFxuIiwKICAgICJzcmMvYy5weSI6ICJkZWYgdmFsdWVfYygpOlxcbiAgICByZXR1cm4gMVxcbiIsCiAgICAidGVzdHMvX19pbml0X18ucHkiOiAiIiwKICAgICJ0ZXN0cy9oZWxwZXIucHkiOiAiaW1wb3J0IHVuaXR0ZXN0XFxuXFxuY2xhc3MgSW1wb3J0ZWRGYWlsdXJlKHVuaXR0ZXN0LlRlc3RDYXNlKTpcXG4gICAgZGVmIHRlc3RfaW1wb3J0ZWRfZmFpbHVyZShzZWxmKTpcXG4gICAgICAgIHNlbGYuZmFpbCgnaW1wb3J0ZWQgZmFpbHVyZScpXFxuIiwKICAgICJ0ZXN0cy90ZXN0X2EucHkiOiAiaW1wb3J0IHVuaXR0ZXN0XFxuZnJvbSBzcmMuYSBpbXBvcnQgdmFsdWVfYVxcbmZyb20gdGVzdHMuaGVscGVyIGltcG9ydCBJbXBvcnRlZEZhaWx1cmVcXG5cXG5jbGFzcyBBVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6XFxuICAgIGRlZiB0ZXN0X2Eoc2VsZik6XFxuICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbHVlX2EoKSwgMilcXG4iLAogICAgInRlc3RzL3Rlc3RfYi5weSI6ICJpbXBvcnQgdW5pdHRlc3RcXG5mcm9tIHNyYy5iIGltcG9ydCB2YWx1ZV9iXFxuXFxuY2xhc3MgQlRlc3QodW5pdHRlc3QuVGVzdENhc2UpOlxcbiAgICBkZWYgdGVzdF9iKHNlbGYpOlxcbiAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWx1ZV9iKCksIDk5OSlcXG4iLAogICAgInRlc3RzL3Rlc3RfYy5weSI6ICJmcm9tIHNyYy5jIGltcG9ydCB2YWx1ZV9jXFxuXFxudmFsdWVfYygpXFxuIiwKICB9KTsKICBjb250ZXh0LmFmdGVyKCgpID0+IHJtKHJvb3QsIHsgcmVjdXJzaXZlOiB0cnVlLCBmb3JjZTogdHJ1ZSB9KSk7CiAgYXdhaXQgd3JpdGVGaWxlcyhyb290LCB7CiAgICAic3JjL2EucHkiOiAiZGVmIHZhbHVlX2EoKTpcXG4gICAgcmV0dXJuIDJcXG4iLAogICAgInNyYy9iLnB5IjogImRlZiB2YWx1ZV9iKCk6XFxuICAgIHJldHVybiAyXFxuIiwKICAgICJzcmMvYy5weSI6ICJkZWYgdmFsdWVfYygpOlxcbiAgICByZXR1cm4gMlxcbiIsCiAgfSk7CgogIGNvbnN0IHJlcG9ydCA9IGF3YWl0IGFuYWx5emVSZXBvc2l0b3J5KHsgcmVwbzogcm9vdCwgcnVuQ2hlY2tzOiB0cnVlLCB0aW1lb3V0TXM6IDIwXzAwMCB9KTsKICBjb25zdCB0YXJnZXRlZCA9IHJlcG9ydC5jaGVja3MuZmluZCgoY2hlY2spID0+IGNoZWNrLmlkID09PSAicHl0aG9uOnRlc3Q6dW5pdHRlc3Q6dGFyZ2V0ZWQiKTsKICBjb25zdCBvYnNlcnZhdGlvbnMgPSBuZXcgTWFwKHRhcmdldGVkPy50YXJnZXRPYnNlcnZhdGlvbnM/Lm1hcCgob2JzZXJ2YXRpb24pID0+IFtvYnNlcnZhdGlvbi5wYXRoLCBvYnNlcnZhdGlvbl0pKTsKICBjb25zdCBzb3VyY2VBID0gcmVwb3J0LmFzc2Vzc21lbnRzLmZpbmQoKGFzc2Vzc21lbnQpID0+IGFzc2Vzc21lbnQuZmlsZS5wYXRoID09PSAic3JjL2EucHkiKTsKCiAgYXNzZXJ0LmVxdWFsKHRhcmdldGVkPy5zdGF0dXMsICJmYWlsZWQiLCB0YXJnZXRlZD8ub3V0cHV0KTsKICBhc3NlcnQuZXF1YWwob2JzZXJ2YXRpb25zLmdldCgidGVzdHMvdGVzdF9hLnB5Iik/Lm91dGNvbWUsICJub3Qtb2JzZXJ2ZWQiKTsKICBhc3NlcnQubWF0Y2gob2JzZXJ2YXRpb25zLmdldCgidGVzdHMvdGVzdF9hLnB5Iik/LmRldGFpbCA/PyAiIiwgL3VuYXR0cmlidXRlZCBwcm9jZXNzLWxldmVsIGZhaWx1cmUvKTsKICBhc3NlcnQuZXF1YWwob2JzZXJ2YXRpb25zLmdldCgidGVzdHMvdGVzdF9iLnB5Iik/Lm91dGNvbWUsICJmYWlsZWQiKTsKICBhc3NlcnQuZXF1YWwob2JzZXJ2YXRpb25zLmdldCgidGVzdHMvdGVzdF9jLnB5Iik/Lm91dGNvbWUsICJub3Qtb2JzZXJ2ZWQiKTsKICBhc3NlcnQuZXF1YWwoc291cmNlQT8uc3RhdHVzLCAidmVyaWZpY2F0aW9uLWZhaWxlZCIpOwogIGFzc2VydC5kZWVwRXF1YWwoc291cmNlQT8uZXhlY3V0ZWRUZXN0cywgW10pOwogIGFzc2VydC5kZWVwRXF1YWwoc291cmNlQT8udGVzdEV4ZWN1dGlvbnMsIFtdKTsKfSk7CgonJycKdGVzdHMud3JpdGVfdGV4dCh0ZXh0LnJlcGxhY2UoYW5jaG9yLCByZWdyZXNzaW9uICsgYW5jaG9yLCAxKSkKCmNoYW5nZWxvZyA9IFBhdGgoJ0NIQU5HRUxPRy5tZCcpCnRleHQgPSBjaGFuZ2Vsb2cucmVhZF90ZXh0KCkKYW5jaG9yID0gJyMjIyBGaXhlZFxuXG4nCmlmIGFuY2hvciBub3QgaW4gdGV4dDoKICAgIHJhaXNlIFN5c3RlbUV4aXQoJ0NIQU5HRUxPRyBmaXhlZCBzZWN0aW9uIG5vdCBmb3VuZCcpCml0ZW0gPSAnLSBGYWlsZWQgY2xvc2VkIG9uIHVuYXR0cmlidXRlZCB0YXJnZXRlZC1ydW5uZXIgcHJvY2VzcyBmYWlsdXJlcyBldmVuIHdoZW4gYW5vdGhlciBxdWFsaWZpZWQgYmF0Y2ggdGFyZ2V0IGlzIHVuYXZhaWxhYmxlLiBBbiB1bmF2YWlsYWJsZSB0YXJnZXQgY2FuIG5vIGxvbmdlciBhY3QgYXMgYSBzaW5rIHRoYXQgbGV0cyB1bnJlbGF0ZWQgb2JzZXJ2ZWQgcGFzc2VzIHN1cnZpdmUgYW4gYW1iaWd1b3VzIHByb2Nlc3MtbGV2ZWwgZmFpbHVyZTsgb25seSBleHBsaWNpdGx5IGZhaWxlZCB0YXJnZXRzIHJldGFpbiBsb2NhbGl6ZWQgZmFpbHVyZSBhdHRyaWJ1dGlvbi5cbicKY2hhbmdlbG9nLndyaXRlX3RleHQodGV4dC5yZXBsYWNlKGFuY2hvciwgYW5jaG9yICsgaXRlbSwgMSkpCg== + run: echo "$PATCH_B64" | base64 -d | python3 + - name: Run full tests + run: npm test + - name: Clean rebuild tracked dist + run: npm run clean && npm run build + - name: Validate diff + run: git diff --check + - name: Commit generated update + run: | + git config user.name "github-actions[bot]" + git config user.email "41898282+github-actions[bot]@users.noreply.github.com" + git add CHANGELOG.md src/checks.ts tests/analyze.test.ts dist + git diff --cached --stat + git commit -m "Fail closed on unattributed batch failures" + git push origin HEAD:fix/unattributed-target-failure-sink From 881c671a7368d1b559237ec43f33b798fdb17f93 Mon Sep 17 00:00:00 2001 From: Felix Date: Sun, 16 Aug 2026 01:02:33 +0800 Subject: [PATCH 4/8] Add corrected one-time unattributed failure updater --- ...ne-time-unattributed-target-failure-v3.yml | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 .github/workflows/one-time-unattributed-target-failure-v3.yml diff --git a/.github/workflows/one-time-unattributed-target-failure-v3.yml b/.github/workflows/one-time-unattributed-target-failure-v3.yml new file mode 100644 index 0000000..c830241 --- /dev/null +++ b/.github/workflows/one-time-unattributed-target-failure-v3.yml @@ -0,0 +1,42 @@ +name: One-time unattributed target failure hardening v3 + +on: + push: + branches: + - fix/unattributed-target-failure-sink + paths: + - .github/workflows/one-time-unattributed-target-failure-v3.yml + +permissions: + contents: write + +jobs: + update: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v7 + with: + ref: fix/unattributed-target-failure-sink + - uses: actions/setup-node@v7 + with: + node-version: 22 + cache: npm + - run: npm ci + - name: Apply soundness fix and regression + env: + PATCH_B64: ZnJvbSBwYXRobGliIGltcG9ydCBQYXRoCgpjaGVja3MgPSBQYXRoKCdzcmMvY2hlY2tzLnRzJykKdGV4dCA9IGNoZWNrcy5yZWFkX3RleHQoKQpvbGQgPSAnJycgIGNvbnN0IHVuYXZhaWxhYmxlUmVjb3JkcyA9IFsuLi5yZWNvcmRzLnZhbHVlcygpXS5maWx0ZXIoKHJlY29yZCkgPT4gIXJlY29yZC5vYnNlcnZlZCk7CiAgY29uc3QgcHJvY2Vzc0ZhaWx1cmVIYXNOb1VuYXZhaWxhYmxlVGFyZ2V0ID0gcGF5bG9hZC51bmF0dHJpYnV0ZWRGYWlsdXJlcyA+IDAgJiYgdW5hdmFpbGFibGVSZWNvcmRzLmxlbmd0aCA9PT0gMDsKICByZXR1cm4gcXVhbGlmaWNhdGlvbnMubWFwKChxdWFsaWZpY2F0aW9uKSA9PiB7CiAgICBjb25zdCByZWNvcmQgPSByZWNvcmRzLmdldChwYXRoLnJlc29sdmUocm9vdCwgcXVhbGlmaWNhdGlvbi5ydW5uZXJQYXRoKSkhOwogICAgaWYgKCFyZWNvcmQub2JzZXJ2ZWQgfHwgKHByb2Nlc3NGYWlsdXJlSGFzTm9VbmF2YWlsYWJsZVRhcmdldCAmJiByZWNvcmQuZmFpbGVkID09PSAwKSkgewonJycKbmV3ID0gJycnICBjb25zdCBoYXNVbmF0dHJpYnV0ZWRQcm9jZXNzRmFpbHVyZSA9IHBheWxvYWQudW5hdHRyaWJ1dGVkRmFpbHVyZXMgPiAwOwogIHJldHVybiBxdWFsaWZpY2F0aW9ucy5tYXAoKHF1YWxpZmljYXRpb24pID0+IHsKICAgIGNvbnN0IHJlY29yZCA9IHJlY29yZHMuZ2V0KHBhdGgucmVzb2x2ZShyb290LCBxdWFsaWZpY2F0aW9uLnJ1bm5lclBhdGgpKSE7CiAgICBpZiAoIXJlY29yZC5vYnNlcnZlZCB8fCAoaGFzVW5hdHRyaWJ1dGVkUHJvY2Vzc0ZhaWx1cmUgJiYgcmVjb3JkLmZhaWxlZCA9PT0gMCkpIHsKJycnCmlmIG9sZCBub3QgaW4gdGV4dDoKICAgIHJhaXNlIFN5c3RlbUV4aXQoJ2NoZWNrcy50cyB0YXJnZXQgYmxvY2sgbm90IGZvdW5kJykKY2hlY2tzLndyaXRlX3RleHQodGV4dC5yZXBsYWNlKG9sZCwgbmV3LCAxKSkKCnRlc3RzID0gUGF0aCgndGVzdHMvYW5hbHl6ZS50ZXN0LnRzJykKdGV4dCA9IHRlc3RzLnJlYWRfdGV4dCgpCmFuY2hvciA9ICcnJ3Rlc3QoIlB5dGhvbiBzdHVicyByZW1haW4gc3RhdGljIHRlc3QgcmVsYXRpb25zaGlwcyB3aXRob3V0IGludmVudGluZyBhIHJ1bm5hYmxlIGZyYW1ld29yayIsIGFzeW5jIChjb250ZXh0KSA9PiB7CicnJwppZiBhbmNob3Igbm90IGluIHRleHQ6CiAgICByYWlzZSBTeXN0ZW1FeGl0KCdhbmFseXplLnRlc3QudHMgaW5zZXJ0aW9uIGFuY2hvciBub3QgZm91bmQnKQpyZWdyZXNzaW9uID0gcicnJ3Rlc3QoInVuYXR0cmlidXRlZCB1bml0dGVzdCBmYWlsdXJlcyBjYW5ub3QgaGlkZSBiZWhpbmQgYW4gdW5hdmFpbGFibGUgYmF0Y2ggdGFyZ2V0IiwgYXN5bmMgKGNvbnRleHQpID0+IHsKICBjb25zdCByb290ID0gYXdhaXQgaW5pdGlhbGl6ZVJlcG9zaXRvcnkoewogICAgInNyYy9fX2luaXRfXy5weSI6ICIiLAogICAgInNyYy9hLnB5IjogImRlZiB2YWx1ZV9hKCk6XG4gICAgcmV0dXJuIDFcbiIsCiAgICAic3JjL2IucHkiOiAiZGVmIHZhbHVlX2IoKTpcbiAgICByZXR1cm4gMVxuIiwKICAgICJzcmMvYy5weSI6ICJkZWYgdmFsdWVfYygpOlxuICAgIHJldHVybiAxXG4iLAogICAgInRlc3RzL19faW5pdF9fLnB5IjogIiIsCiAgICAidGVzdHMvaGVscGVyLnB5IjogImltcG9ydCB1bml0dGVzdFxuXG5jbGFzcyBJbXBvcnRlZEZhaWx1cmUodW5pdHRlc3QuVGVzdENhc2UpOlxuICAgIGRlZiB0ZXN0X2ltcG9ydGVkX2ZhaWx1cmUoc2VsZik6XG4gICAgICAgIHNlbGYuZmFpbCgnaW1wb3J0ZWQgZmFpbHVyZScpXG4iLAogICAgInRlc3RzL3Rlc3RfYS5weSI6ICJpbXBvcnQgdW5pdHRlc3RcbmZyb20gc3JjLmEgaW1wb3J0IHZhbHVlX2FcbmZyb20gdGVzdHMuaGVscGVyIGltcG9ydCBJbXBvcnRlZEZhaWx1cmVcblxuY2xhc3MgQVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOlxuICAgIGRlZiB0ZXN0X2Eoc2VsZik6XG4gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWVfYSgpLCAyKVxuIiwKICAgICJ0ZXN0cy90ZXN0X2IucHkiOiAiaW1wb3J0IHVuaXR0ZXN0XG5mcm9tIHNyYy5iIGltcG9ydCB2YWx1ZV9iXG5cbmNsYXNzIEJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKTpcbiAgICBkZWYgdGVzdF9iKHNlbGYpOlxuICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbHVlX2IoKSwgOTk5KVxuIiwKICAgICJ0ZXN0cy90ZXN0X2MucHkiOiAiaW1wb3J0IHVuaXR0ZXN0XG5mcm9tIHNyYy5jIGltcG9ydCB2YWx1ZV9jXG5cbnZhbHVlX2MoKVxuIiwKICB9KTsKICBjb250ZXh0LmFmdGVyKCgpID0+IHJtKHJvb3QsIHsgcmVjdXJzaXZlOiB0cnVlLCBmb3JjZTogdHJ1ZSB9KSk7CiAgYXdhaXQgd3JpdGVGaWxlcyhyb290LCB7CiAgICAic3JjL2EucHkiOiAiZGVmIHZhbHVlX2EoKTpcbiAgICByZXR1cm4gMlxuIiwKICAgICJzcmMvYi5weSI6ICJkZWYgdmFsdWVfYigpOlxuICAgIHJldHVybiAyXG4iLAogICAgInNyYy9jLnB5IjogImRlZiB2YWx1ZV9jKCk6XG4gICAgcmV0dXJuIDJcbiIsCiAgfSk7CgogIGNvbnN0IHJlcG9ydCA9IGF3YWl0IGFuYWx5emVSZXBvc2l0b3J5KHsgcmVwbzogcm9vdCwgcnVuQ2hlY2tzOiB0cnVlLCB0aW1lb3V0TXM6IDIwXzAwMCB9KTsKICBjb25zdCB0YXJnZXRlZCA9IHJlcG9ydC5jaGVja3MuZmluZCgoY2hlY2spID0+IGNoZWNrLmlkID09PSAicHl0aG9uOnRlc3Q6dW5pdHRlc3Q6dGFyZ2V0ZWQiKTsKICBjb25zdCBvYnNlcnZhdGlvbnMgPSBuZXcgTWFwKHRhcmdldGVkPy50YXJnZXRPYnNlcnZhdGlvbnM/Lm1hcCgob2JzZXJ2YXRpb24pID0+IFtvYnNlcnZhdGlvbi5wYXRoLCBvYnNlcnZhdGlvbl0pKTsKICBjb25zdCBzb3VyY2VBID0gcmVwb3J0LmFzc2Vzc21lbnRzLmZpbmQoKGFzc2Vzc21lbnQpID0+IGFzc2Vzc21lbnQuZmlsZS5wYXRoID09PSAic3JjL2EucHkiKTsKCiAgYXNzZXJ0LmVxdWFsKHRhcmdldGVkPy5zdGF0dXMsICJmYWlsZWQiLCB0YXJnZXRlZD8ub3V0cHV0KTsKICBhc3NlcnQuZXF1YWwob2JzZXJ2YXRpb25zLmdldCgidGVzdHMvdGVzdF9hLnB5Iik/Lm91dGNvbWUsICJub3Qtb2JzZXJ2ZWQiKTsKICBhc3NlcnQubWF0Y2gob2JzZXJ2YXRpb25zLmdldCgidGVzdHMvdGVzdF9hLnB5Iik/LmRldGFpbCA/PyAiIiwgL3VuYXR0cmlidXRlZCBwcm9jZXNzLWxldmVsIGZhaWx1cmUvKTsKICBhc3NlcnQuZXF1YWwob2JzZXJ2YXRpb25zLmdldCgidGVzdHMvdGVzdF9iLnB5Iik/Lm91dGNvbWUsICJmYWlsZWQiKTsKICBhc3NlcnQuZXF1YWwob2JzZXJ2YXRpb25zLmdldCgidGVzdHMvdGVzdF9jLnB5Iik/Lm91dGNvbWUsICJub3Qtb2JzZXJ2ZWQiKTsKICBhc3NlcnQuZXF1YWwoc291cmNlQT8uc3RhdHVzLCAidmVyaWZpY2F0aW9uLWZhaWxlZCIpOwogIGFzc2VydC5kZWVwRXF1YWwoc291cmNlQT8uZXhlY3V0ZWRUZXN0cywgW10pOwogIGFzc2VydC5kZWVwRXF1YWwoc291cmNlQT8udGVzdEV4ZWN1dGlvbnMsIFtdKTsKfSk7CgonJycKdGV4dCA9IHRleHQucmVwbGFjZShhbmNob3IsIHJlZ3Jlc3Npb24gKyBhbmNob3IsIDEpCgpvbGRfZXhwZWN0ID0gJycnICBhc3NlcnQuZGVlcEVxdWFsKHRhcmdldGVkPy50YXJnZXRPYnNlcnZhdGlvbnM/Lm1hcCgoaXRlbSkgPT4gW2l0ZW0ucGF0aCwgaXRlbS5vdXRjb21lXSksIFsKICAgIFsidGVzdHMvdGVzdF9mYWlsLnB5IiwgImZhaWxlZCJdLAogICAgWyJ0ZXN0cy90ZXN0X2ltcG9ydC5weSIsICJub3Qtb2JzZXJ2ZWQiXSwKICAgIFsidGVzdHMvdGVzdF9wYXNzLnB5IiwgInBhc3NlZCJdLAogIF0pOwonJycKbmV3X2V4cGVjdCA9ICcnJyAgYXNzZXJ0LmRlZXBFcXVhbCh0YXJnZXRlZD8udGFyZ2V0T2JzZXJ2YXRpb25zPy5tYXAoKGl0ZW0pID0+IFtpdGVtLnBhdGgsIGl0ZW0ub3V0Y29tZV0pLCBbCiAgICBbInRlc3RzL3Rlc3RfZmFpbC5weSIsICJmYWlsZWQiXSwKICAgIFsidGVzdHMvdGVzdF9pbXBvcnQucHkiLCAibm90LW9ic2VydmVkIl0sCiAgICBbInRlc3RzL3Rlc3RfcGFzcy5weSIsICJub3Qtb2JzZXJ2ZWQiXSwKICBdKTsKJycnCmlmIG9sZF9leHBlY3Qgbm90IGluIHRleHQ6CiAgICByYWlzZSBTeXN0ZW1FeGl0KCdleGlzdGluZyBwYXJ0aWFsIGJhdGNoIGV4cGVjdGF0aW9uIG5vdCBmb3VuZCcpCnRleHQgPSB0ZXh0LnJlcGxhY2Uob2xkX2V4cGVjdCwgbmV3X2V4cGVjdCwgMSkKCm9sZF9zdW1tYXJ5ID0gJycnICBhc3NlcnQubWF0Y2godmFsdWVTdW1tYXJ5LCAvdGVzdHNcL3Rlc3RfaW1wb3J0XC5weTogbm90LW9ic2VydmVkLyk7CiAgYXNzZXJ0Lm1hdGNoKHZhbHVlU3VtbWFyeSwgL0luZGVwZW5kZW50bHkgcGFzc2luZyB0YXJnZXQ6IDxjb2RlPnRlc3RzXC90ZXN0X3Bhc3NcLnB5PFwvY29kZT4vKTsKICBhc3NlcnQuZG9lc05vdE1hdGNoKHZhbHVlU3VtbWFyeSwgL0F0dHJpYnV0ZWQgZmFpbGVkIHRhcmdldDogPGNvZGU+dGVzdHNcL3Rlc3RfcGFzc1wucHkvKTsKJycnCm5ld19zdW1tYXJ5ID0gJycnICBhc3NlcnQubWF0Y2godmFsdWVTdW1tYXJ5LCAvdGVzdHNcL3Rlc3RfaW1wb3J0XC5weTogbm90LW9ic2VydmVkLyk7CiAgYXNzZXJ0Lm1hdGNoKHZhbHVlU3VtbWFyeSwgL3Rlc3RzXC90ZXN0X3Bhc3NcLnB5OiBub3Qtb2JzZXJ2ZWQvKTsKICBhc3NlcnQuZG9lc05vdE1hdGNoKHZhbHVlU3VtbWFyeSwgL0luZGVwZW5kZW50bHkgcGFzc2luZyB0YXJnZXQ6IDxjb2RlPnRlc3RzXC90ZXN0X3Bhc3NcLnB5PFwvY29kZT4vKTsKICBhc3NlcnQuZG9lc05vdE1hdGNoKHZhbHVlU3VtbWFyeSwgL0F0dHJpYnV0ZWQgZmFpbGVkIHRhcmdldDogPGNvZGU+dGVzdHNcL3Rlc3RfcGFzc1wucHkvKTsKJycnCmlmIG9sZF9zdW1tYXJ5IG5vdCBpbiB0ZXh0OgogICAgcmFpc2UgU3lzdGVtRXhpdCgnZXhpc3RpbmcgcGFydGlhbCBiYXRjaCBzdW1tYXJ5IGV4cGVjdGF0aW9ucyBub3QgZm91bmQnKQp0ZXN0cy53cml0ZV90ZXh0KHRleHQucmVwbGFjZShvbGRfc3VtbWFyeSwgbmV3X3N1bW1hcnksIDEpKQoKY2hhbmdlbG9nID0gUGF0aCgnQ0hBTkdFTE9HLm1kJykKdGV4dCA9IGNoYW5nZWxvZy5yZWFkX3RleHQoKQphbmNob3IgPSAnIyMjIEZpeGVkXG5cbicKaWYgYW5jaG9yIG5vdCBpbiB0ZXh0OgogICAgcmFpc2UgU3lzdGVtRXhpdCgnQ0hBTkdFTE9HIGZpeGVkIHNlY3Rpb24gbm90IGZvdW5kJykKaXRlbSA9ICctIEZhaWxlZCBjbG9zZWQgb24gdW5hdHRyaWJ1dGVkIHRhcmdldGVkLXJ1bm5lciBwcm9jZXNzIGZhaWx1cmVzIGV2ZW4gd2hlbiBhbm90aGVyIHF1YWxpZmllZCBiYXRjaCB0YXJnZXQgaXMgdW5hdmFpbGFibGUuIEFuIHVuYXZhaWxhYmxlIHRhcmdldCBjYW4gbm8gbG9uZ2VyIGFjdCBhcyBhIHNpbmsgdGhhdCBsZXRzIHVucmVsYXRlZCBvYnNlcnZlZCBwYXNzZXMgc3Vydml2ZSBhbiBhbWJpZ3VvdXMgcHJvY2Vzcy1sZXZlbCBmYWlsdXJlOyBvbmx5IGV4cGxpY2l0bHkgZmFpbGVkIHRhcmdldHMgcmV0YWluIGxvY2FsaXplZCBmYWlsdXJlIGF0dHJpYnV0aW9uLlxuJwpjaGFuZ2Vsb2cud3JpdGVfdGV4dCh0ZXh0LnJlcGxhY2UoYW5jaG9yLCBhbmNob3IgKyBpdGVtLCAxKSkK + run: echo "$PATCH_B64" | base64 -d | python3 + - name: Run full tests + run: npm test + - name: Clean rebuild tracked dist + run: npm run clean && npm run build + - name: Validate diff + run: git diff --check + - name: Commit generated update + run: | + git config user.name "github-actions[bot]" + git config user.email "41898282+github-actions[bot]@users.noreply.github.com" + git add CHANGELOG.md src/checks.ts tests/analyze.test.ts dist + git diff --cached --stat + git commit -m "Fail closed on unattributed batch failures" + git push origin HEAD:fix/unattributed-target-failure-sink From a24bb46869b380b3db525d5a14f9046b5ce0085a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 15 Aug 2026 17:03:13 +0000 Subject: [PATCH 5/8] Fail closed on unattributed batch failures --- CHANGELOG.md | 1 + dist/checks.d.ts.map | 2 +- dist/checks.js | 5 ++--- dist/checks.js.map | 2 +- src/checks.ts | 5 ++--- tests/analyze.test.ts | 39 +++++++++++++++++++++++++++++++++++++-- 6 files changed, 44 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6ac3838..1f94c79 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ All notable changes are documented here. This project follows Semantic Versionin ### Fixed +- Failed closed on unattributed targeted-runner process failures even when another qualified batch target is unavailable. An unavailable target can no longer act as a sink that lets unrelated observed passes survive an ambiguous process-level failure; only explicitly failed targets retain localized failure attribution. - Failed closed on deletion-only zero-context hunks when attributing current changed symbols and call references. Git represents a deletion-only hunk with a zero-length new-side range anchored to a neighboring current line; ProofDiff now reconciles reconstructed current-line spans with Git numstat additions before treating those anchors as changed current code. - Preserved precise changed-line hunks across renames by scoping per-file Git diffs to both the previous and current path. This prevents a rename with content edits from being reinterpreted as a whole-file addition and overstating changed-line or call-reference evidence. - Preserved trailing whitespace in Git repository-root paths. `findRepository()` now removes only Git's record line terminator instead of applying JavaScript `String.trim()`, preventing a repository such as `repository ` from being silently redirected to a sibling path with the trimmed spelling. diff --git a/dist/checks.d.ts.map b/dist/checks.d.ts.map index 1df788e..59898f3 100644 --- a/dist/checks.d.ts.map +++ b/dist/checks.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"checks.d.ts","sourceRoot":"","sources":["../src/checks.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,qBAAqB,EAA2B,MAAM,YAAY,CAAC;AAgO/G,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,CAG3J;AAgCD,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,MAAM,EAAE,eAAe,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAyD1G;AA+DD,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE,KAAK,SAAM,GAAG,OAAO,CAAC;IAAE,MAAM,EAAE,eAAe,EAAE,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAAC,CAgDvL;AAgBD,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,SAAS,UAAQ,GAAG,qBAAqB,EAAE,CA8CjJ;AA6BD,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,EAAE,OAAO,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CA2CjL;AAED,wBAAgB,aAAa,CAAC,WAAW,EAAE,eAAe,EAAE,GAAG,WAAW,EAAE,CAE3E"} \ No newline at end of file +{"version":3,"file":"checks.d.ts","sourceRoot":"","sources":["../src/checks.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,qBAAqB,EAA2B,MAAM,YAAY,CAAC;AAgO/G,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,CAG3J;AAgCD,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,MAAM,EAAE,eAAe,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAyD1G;AA+DD,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE,KAAK,SAAM,GAAG,OAAO,CAAC;IAAE,MAAM,EAAE,eAAe,EAAE,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAAC,CAgDvL;AAgBD,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,SAAS,UAAQ,GAAG,qBAAqB,EAAE,CA6CjJ;AA6BD,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,EAAE,OAAO,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CA2CjL;AAED,wBAAgB,aAAa,CAAC,WAAW,EAAE,eAAe,EAAE,GAAG,WAAW,EAAE,CAE3E"} \ No newline at end of file diff --git a/dist/checks.js b/dist/checks.js index 36f23d8..9df30e3 100644 --- a/dist/checks.js +++ b/dist/checks.js @@ -493,11 +493,10 @@ export function parseTargetObservations(root, check, raw, truncated = false) { } if (records.size !== expected.size) return notObserved(qualifications, "The runner observation omitted one or more qualified targets and was rejected."); - const unavailableRecords = [...records.values()].filter((record) => !record.observed); - const processFailureHasNoUnavailableTarget = payload.unattributedFailures > 0 && unavailableRecords.length === 0; + const hasUnattributedProcessFailure = payload.unattributedFailures > 0; return qualifications.map((qualification) => { const record = records.get(path.resolve(root, qualification.runnerPath)); - if (!record.observed || (processFailureHasNoUnavailableTarget && record.failed === 0)) { + if (!record.observed || (hasUnattributedProcessFailure && record.failed === 0)) { const detail = !record.observed ? "The runner did not produce a trustworthy lifecycle observation for this exact target." : "The runner reported an unattributed process-level failure that could not be excluded from this target."; diff --git a/dist/checks.js.map b/dist/checks.js.map index 6981809..31ecb98 100644 --- a/dist/checks.js.map +++ b/dist/checks.js.map @@ -1 +1 @@ -{"version":3,"file":"checks.js","sourceRoot":"","sources":["../src/checks.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"checks.js","sourceRoot":"","sources":["../src/checks.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/checks.ts b/src/checks.ts index 672fc92..1598d92 100644 --- a/src/checks.ts +++ b/src/checks.ts @@ -474,11 +474,10 @@ export function parseTargetObservations(root: string, check: CheckDefinition, ra records.set(absolute, record); } if (records.size !== expected.size) return notObserved(qualifications, "The runner observation omitted one or more qualified targets and was rejected."); - const unavailableRecords = [...records.values()].filter((record) => !record.observed); - const processFailureHasNoUnavailableTarget = payload.unattributedFailures > 0 && unavailableRecords.length === 0; + const hasUnattributedProcessFailure = payload.unattributedFailures > 0; return qualifications.map((qualification) => { const record = records.get(path.resolve(root, qualification.runnerPath))!; - if (!record.observed || (processFailureHasNoUnavailableTarget && record.failed === 0)) { + if (!record.observed || (hasUnattributedProcessFailure && record.failed === 0)) { const detail = !record.observed ? "The runner did not produce a trustworthy lifecycle observation for this exact target." : "The runner reported an unattributed process-level failure that could not be excluded from this target."; diff --git a/tests/analyze.test.ts b/tests/analyze.test.ts index 0aea3d7..6ad3d3a 100644 --- a/tests/analyze.test.ts +++ b/tests/analyze.test.ts @@ -142,6 +142,40 @@ test("Python unittest repositories receive AST-backed related evidence", async ( assert.equal(report.assessments[0]?.status, "verified"); }); +test("unattributed unittest failures cannot hide behind an unavailable batch target", async (context) => { + const root = await initializeRepository({ + "src/__init__.py": "", + "src/a.py": "def value_a():\n return 1\n", + "src/b.py": "def value_b():\n return 1\n", + "src/c.py": "def value_c():\n return 1\n", + "tests/__init__.py": "", + "tests/helper.py": "import unittest\n\nclass ImportedFailure(unittest.TestCase):\n def test_imported_failure(self):\n self.fail('imported failure')\n", + "tests/test_a.py": "import unittest\nfrom src.a import value_a\nfrom tests.helper import ImportedFailure\n\nclass ATest(unittest.TestCase):\n def test_a(self):\n self.assertEqual(value_a(), 2)\n", + "tests/test_b.py": "import unittest\nfrom src.b import value_b\n\nclass BTest(unittest.TestCase):\n def test_b(self):\n self.assertEqual(value_b(), 999)\n", + "tests/test_c.py": "import unittest\nfrom src.c import value_c\n\nvalue_c()\n", + }); + context.after(() => rm(root, { recursive: true, force: true })); + await writeFiles(root, { + "src/a.py": "def value_a():\n return 2\n", + "src/b.py": "def value_b():\n return 2\n", + "src/c.py": "def value_c():\n return 2\n", + }); + + const report = await analyzeRepository({ repo: root, runChecks: true, timeoutMs: 20_000 }); + const targeted = report.checks.find((check) => check.id === "python:test:unittest:targeted"); + const observations = new Map(targeted?.targetObservations?.map((observation) => [observation.path, observation])); + const sourceA = report.assessments.find((assessment) => assessment.file.path === "src/a.py"); + + assert.equal(targeted?.status, "failed", targeted?.output); + assert.equal(observations.get("tests/test_a.py")?.outcome, "not-observed"); + assert.match(observations.get("tests/test_a.py")?.detail ?? "", /unattributed process-level failure/); + assert.equal(observations.get("tests/test_b.py")?.outcome, "failed"); + assert.equal(observations.get("tests/test_c.py")?.outcome, "not-observed"); + assert.equal(sourceA?.status, "verification-failed"); + assert.deepEqual(sourceA?.executedTests, []); + assert.deepEqual(sourceA?.testExecutions, []); +}); + test("Python stubs remain static test relationships without inventing a runnable framework", async (context) => { const root = await initializeRepository({ "value.py": "def value():\n return 1\n", @@ -448,7 +482,7 @@ test("a partially localized targeted batch fails closed for an ambiguous related assert.deepEqual(targeted?.targetObservations?.map((item) => [item.path, item.outcome]), [ ["tests/test_fail.py", "failed"], ["tests/test_import.py", "not-observed"], - ["tests/test_pass.py", "passed"], + ["tests/test_pass.py", "not-observed"], ]); assert.equal(assessment?.status, "verification-failed"); assert.ok(assessment?.evidence.some((item) => item.kind === "failing-check" && item.checkId === targeted.id)); @@ -460,7 +494,8 @@ test("a partially localized targeted batch fails closed for an ambiguous related const valueSummary = renderGithubSummary(valueReport); assert.match(valueSummary, /failed without complete attribution/); assert.match(valueSummary, /tests\/test_import\.py: not-observed/); - assert.match(valueSummary, /Independently passing target: tests\/test_pass\.py<\/code>/); + assert.match(valueSummary, /tests\/test_pass\.py: not-observed/); + assert.doesNotMatch(valueSummary, /Independently passing target: tests\/test_pass\.py<\/code>/); assert.doesNotMatch(valueSummary, /Attributed failed target: tests\/test_pass\.py/); }); From 9b3e890e86cba398b1a203360d0c4e54f985d127 Mon Sep 17 00:00:00 2001 From: Felix Date: Sun, 16 Aug 2026 01:04:09 +0800 Subject: [PATCH 6/8] Remove temporary unattributed failure updater --- .../one-time-unattributed-target-failure.yml | 42 ------------------- 1 file changed, 42 deletions(-) delete mode 100644 .github/workflows/one-time-unattributed-target-failure.yml diff --git a/.github/workflows/one-time-unattributed-target-failure.yml b/.github/workflows/one-time-unattributed-target-failure.yml deleted file mode 100644 index b0c1181..0000000 --- a/.github/workflows/one-time-unattributed-target-failure.yml +++ /dev/null @@ -1,42 +0,0 @@ -name: One-time unattributed target failure hardening - -on: - push: - branches: - - fix/unattributed-target-failure-sink - paths: - - .github/workflows/one-time-unattributed-target-failure.yml - -permissions: - contents: write - -jobs: - update: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v7 - with: - ref: fix/unattributed-target-failure-sink - - uses: actions/setup-node@v7 - with: - node-version: 22 - cache: npm - - run: npm ci - - name: Apply soundness fix and regression - env: - PATCH_B64: ZnJvbSBwYXRobGliIGltcG9ydCBQYXRoCgpjaGVja3MgPSBQYXRoKCdzcmMvY2hlY2tzLnRzJykKdGV4dCA9IGNoZWNrcy5yZWFkX3RleHQoKQpvbGQgPSAnJycgIGNvbnN0IHVuYXZhaWxhYmxlUmVjb3JkcyA9IFsuLi5yZWNvcmRzLnZhbHVlcygpXS5maWx0ZXIoKHJlY29yZCkgPT4gIXJlY29yZC5vYnNlcnZlZCk7XG4gIGNvbnN0IHByb2Nlc3NGYWlsdXJlSGFzTm9VbmF2YWlsYWJsZVRhcmdldCA9IHBheWxvYWQudW5hdHRyaWJ1dGVkRmFpbHVyZXMgPiAwICYmIHVuYXZhaWxhYmxlUmVjb3Jkcy5sZW5ndGggPT09IDA7XG4gIHJldHVybiBxdWFsaWZpY2F0aW9ucy5tYXAoKHF1YWxpZmljYXRpb24pID0+IHtcbiAgICBjb25zdCByZWNvcmQgPSByZWNvcmRzLmdldChwYXRoLnJlc29sdmUocm9vdCwgcXVhbGlmaWNhdGlvbi5ydW5uZXJQYXRoKSkhO1xuICAgIGlmICghcmVjb3JkLm9ic2VydmVkIHx8IChwcm9jZXNzRmFpbHVyZUhhc05vVW5hdmFpbGFibGVUYXJnZXQgJiYgcmVjb3JkLmZhaWxlZCA9PT0gMCkpIHtcbicnJwpuZXcgPSAnJycgIGNvbnN0IGhhc1VuYXR0cmlidXRlZFByb2Nlc3NGYWlsdXJlID0gcGF5bG9hZC51bmF0dHJpYnV0ZWRGYWlsdXJlcyA+IDA7XG4gIHJldHVybiBxdWFsaWZpY2F0aW9ucy5tYXAoKHF1YWxpZmljYXRpb24pID0+IHtcbiAgICBjb25zdCByZWNvcmQgPSByZWNvcmRzLmdldChwYXRoLnJlc29sdmUocm9vdCwgcXVhbGlmaWNhdGlvbi5ydW5uZXJQYXRoKSkhO1xuICAgIGlmICghcmVjb3JkLm9ic2VydmVkIHx8IChoYXNVbmF0dHJpYnV0ZWRQcm9jZXNzRmFpbHVyZSAmJiByZWNvcmQuZmFpbGVkID09PSAwKSkge1xuJycnCmlmIG9sZCBub3QgaW4gdGV4dDoKICAgIHJhaXNlIFN5c3RlbUV4aXQoJ2NoZWNrcy50cyB0YXJnZXQgYmxvY2sgbm90IGZvdW5kJykKY2hlY2tzLndyaXRlX3RleHQodGV4dC5yZXBsYWNlKG9sZCwgbmV3LCAxKSkKCnRlc3RzID0gUGF0aCgndGVzdHMvYW5hbHl6ZS50ZXN0LnRzJykKdGV4dCA9IHRlc3RzLnJlYWRfdGV4dCgpCmFuY2hvciA9ICd0ZXN0KCJQeXRob24gc3R1YnMgcmVtYWluIHN0YXRpYyB0ZXN0IHJlbGF0aW9uc2hpcHMgd2l0aG91dCBpbnZlbnRpbmcgYSBydW5uYWJsZSBmcmFtZXdvcmsiLCBhc3luYyAoY29udGV4dCkgPT4ge1xuJwppZiBhbmNob3Igbm90IGluIHRleHQ6CiAgICByYWlzZSBTeXN0ZW1FeGl0KCdhbmFseXplLnRlc3QudHMgaW5zZXJ0aW9uIGFuY2hvciBub3QgZm91bmQnKQpyZWdyZXNzaW9uID0gJycndGVzdCgidW5hdHRyaWJ1dGVkIHVuaXR0ZXN0IGZhaWx1cmVzIGNhbm5vdCBoaWRlIGJlaGluZCBhbiB1bmF2YWlsYWJsZSBiYXRjaCB0YXJnZXQiLCBhc3luYyAoY29udGV4dCkgPT4gewogIGNvbnN0IHJvb3QgPSBhd2FpdCBpbml0aWFsaXplUmVwb3NpdG9yeSh7CiAgICAic3JjL19faW5pdF9fLnB5IjogIiIsCiAgICAic3JjL2EucHkiOiAiZGVmIHZhbHVlX2EoKTpcXG4gICAgcmV0dXJuIDFcXG4iLAogICAgInNyYy9iLnB5IjogImRlZiB2YWx1ZV9iKCk6XFxuICAgIHJldHVybiAxXFxuIiwKICAgICJzcmMvYy5weSI6ICJkZWYgdmFsdWVfYygpOlxcbiAgICByZXR1cm4gMVxcbiIsCiAgICAidGVzdHMvX19pbml0X18ucHkiOiAiIiwKICAgICJ0ZXN0cy9oZWxwZXIucHkiOiAiaW1wb3J0IHVuaXR0ZXN0XFxuXFxuY2xhc3MgSW1wb3J0ZWRGYWlsdXJlKHVuaXR0ZXN0LlRlc3RDYXNlKTpcXG4gICAgZGVmIHRlc3RfaW1wb3J0ZWRfZmFpbHVyZShzZWxmKTpcXG4gICAgICAgIHNlbGYuZmFpbCgnaW1wb3J0ZWQgZmFpbHVyZScpXFxuIiwKICAgICJ0ZXN0cy90ZXN0X2EucHkiOiAiaW1wb3J0IHVuaXR0ZXN0XFxuZnJvbSBzcmMuYSBpbXBvcnQgdmFsdWVfYVxcbmZyb20gdGVzdHMuaGVscGVyIGltcG9ydCBJbXBvcnRlZEZhaWx1cmVcXG5cXG5jbGFzcyBBVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6XFxuICAgIGRlZiB0ZXN0X2Eoc2VsZik6XFxuICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbHVlX2EoKSwgMilcXG4iLAogICAgInRlc3RzL3Rlc3RfYi5weSI6ICJpbXBvcnQgdW5pdHRlc3RcXG5mcm9tIHNyYy5iIGltcG9ydCB2YWx1ZV9iXFxuXFxuY2xhc3MgQlRlc3QodW5pdHRlc3QuVGVzdENhc2UpOlxcbiAgICBkZWYgdGVzdF9iKHNlbGYpOlxcbiAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWx1ZV9iKCksIDk5OSlcXG4iLAogICAgInRlc3RzL3Rlc3RfYy5weSI6ICJmcm9tIHNyYy5jIGltcG9ydCB2YWx1ZV9jXFxuXFxudmFsdWVfYygpXFxuIiwKICB9KTsKICBjb250ZXh0LmFmdGVyKCgpID0+IHJtKHJvb3QsIHsgcmVjdXJzaXZlOiB0cnVlLCBmb3JjZTogdHJ1ZSB9KSk7CiAgYXdhaXQgd3JpdGVGaWxlcyhyb290LCB7CiAgICAic3JjL2EucHkiOiAiZGVmIHZhbHVlX2EoKTpcXG4gICAgcmV0dXJuIDJcXG4iLAogICAgInNyYy9iLnB5IjogImRlZiB2YWx1ZV9iKCk6XFxuICAgIHJldHVybiAyXFxuIiwKICAgICJzcmMvYy5weSI6ICJkZWYgdmFsdWVfYygpOlxcbiAgICByZXR1cm4gMlxcbiIsCiAgfSk7CgogIGNvbnN0IHJlcG9ydCA9IGF3YWl0IGFuYWx5emVSZXBvc2l0b3J5KHsgcmVwbzogcm9vdCwgcnVuQ2hlY2tzOiB0cnVlLCB0aW1lb3V0TXM6IDIwXzAwMCB9KTsKICBjb25zdCB0YXJnZXRlZCA9IHJlcG9ydC5jaGVja3MuZmluZCgoY2hlY2spID0+IGNoZWNrLmlkID09PSAicHl0aG9uOnRlc3Q6dW5pdHRlc3Q6dGFyZ2V0ZWQiKTsKICBjb25zdCBvYnNlcnZhdGlvbnMgPSBuZXcgTWFwKHRhcmdldGVkPy50YXJnZXRPYnNlcnZhdGlvbnM/Lm1hcCgob2JzZXJ2YXRpb24pID0+IFtvYnNlcnZhdGlvbi5wYXRoLCBvYnNlcnZhdGlvbl0pKTsKICBjb25zdCBzb3VyY2VBID0gcmVwb3J0LmFzc2Vzc21lbnRzLmZpbmQoKGFzc2Vzc21lbnQpID0+IGFzc2Vzc21lbnQuZmlsZS5wYXRoID09PSAic3JjL2EucHkiKTsKCiAgYXNzZXJ0LmVxdWFsKHRhcmdldGVkPy5zdGF0dXMsICJmYWlsZWQiLCB0YXJnZXRlZD8ub3V0cHV0KTsKICBhc3NlcnQuZXF1YWwob2JzZXJ2YXRpb25zLmdldCgidGVzdHMvdGVzdF9hLnB5Iik/Lm91dGNvbWUsICJub3Qtb2JzZXJ2ZWQiKTsKICBhc3NlcnQubWF0Y2gob2JzZXJ2YXRpb25zLmdldCgidGVzdHMvdGVzdF9hLnB5Iik/LmRldGFpbCA/PyAiIiwgL3VuYXR0cmlidXRlZCBwcm9jZXNzLWxldmVsIGZhaWx1cmUvKTsKICBhc3NlcnQuZXF1YWwob2JzZXJ2YXRpb25zLmdldCgidGVzdHMvdGVzdF9iLnB5Iik/Lm91dGNvbWUsICJmYWlsZWQiKTsKICBhc3NlcnQuZXF1YWwob2JzZXJ2YXRpb25zLmdldCgidGVzdHMvdGVzdF9jLnB5Iik/Lm91dGNvbWUsICJub3Qtb2JzZXJ2ZWQiKTsKICBhc3NlcnQuZXF1YWwoc291cmNlQT8uc3RhdHVzLCAidmVyaWZpY2F0aW9uLWZhaWxlZCIpOwogIGFzc2VydC5kZWVwRXF1YWwoc291cmNlQT8uZXhlY3V0ZWRUZXN0cywgW10pOwogIGFzc2VydC5kZWVwRXF1YWwoc291cmNlQT8udGVzdEV4ZWN1dGlvbnMsIFtdKTsKfSk7CgonJycKdGVzdHMud3JpdGVfdGV4dCh0ZXh0LnJlcGxhY2UoYW5jaG9yLCByZWdyZXNzaW9uICsgYW5jaG9yLCAxKSkKCmNoYW5nZWxvZyA9IFBhdGgoJ0NIQU5HRUxPRy5tZCcpCnRleHQgPSBjaGFuZ2Vsb2cucmVhZF90ZXh0KCkKYW5jaG9yID0gJyMjIyBGaXhlZFxuXG4nCmlmIGFuY2hvciBub3QgaW4gdGV4dDoKICAgIHJhaXNlIFN5c3RlbUV4aXQoJ0NIQU5HRUxPRyBmaXhlZCBzZWN0aW9uIG5vdCBmb3VuZCcpCml0ZW0gPSAnLSBGYWlsZWQgY2xvc2VkIG9uIHVuYXR0cmlidXRlZCB0YXJnZXRlZC1ydW5uZXIgcHJvY2VzcyBmYWlsdXJlcyBldmVuIHdoZW4gYW5vdGhlciBxdWFsaWZpZWQgYmF0Y2ggdGFyZ2V0IGlzIHVuYXZhaWxhYmxlLiBBbiB1bmF2YWlsYWJsZSB0YXJnZXQgY2FuIG5vIGxvbmdlciBhY3QgYXMgYSBzaW5rIHRoYXQgbGV0cyB1bnJlbGF0ZWQgb2JzZXJ2ZWQgcGFzc2VzIHN1cnZpdmUgYW4gYW1iaWd1b3VzIHByb2Nlc3MtbGV2ZWwgZmFpbHVyZTsgb25seSBleHBsaWNpdGx5IGZhaWxlZCB0YXJnZXRzIHJldGFpbiBsb2NhbGl6ZWQgZmFpbHVyZSBhdHRyaWJ1dGlvbi5cbicKY2hhbmdlbG9nLndyaXRlX3RleHQodGV4dC5yZXBsYWNlKGFuY2hvciwgYW5jaG9yICsgaXRlbSwgMSkpCg== - run: echo "$PATCH_B64" | base64 -d | python3 - - name: Run full tests - run: npm test - - name: Clean rebuild tracked dist - run: npm run clean && npm run build - - name: Validate diff - run: git diff --check - - name: Commit generated update - run: | - git config user.name "github-actions[bot]" - git config user.email "41898282+github-actions[bot]@users.noreply.github.com" - git add CHANGELOG.md src/checks.ts tests/analyze.test.ts dist - git diff --cached --stat - git commit -m "Fail closed on unattributed batch failures" - git push origin HEAD:fix/unattributed-target-failure-sink From f8753f620f33981686985220ad1ad88842cca0f1 Mon Sep 17 00:00:00 2001 From: Felix Date: Sun, 16 Aug 2026 01:04:15 +0800 Subject: [PATCH 7/8] Remove temporary unattributed failure updater v2 --- ...ne-time-unattributed-target-failure-v2.yml | 42 ------------------- 1 file changed, 42 deletions(-) delete mode 100644 .github/workflows/one-time-unattributed-target-failure-v2.yml diff --git a/.github/workflows/one-time-unattributed-target-failure-v2.yml b/.github/workflows/one-time-unattributed-target-failure-v2.yml deleted file mode 100644 index 88d189f..0000000 --- a/.github/workflows/one-time-unattributed-target-failure-v2.yml +++ /dev/null @@ -1,42 +0,0 @@ -name: One-time unattributed target failure hardening v2 - -on: - push: - branches: - - fix/unattributed-target-failure-sink - paths: - - .github/workflows/one-time-unattributed-target-failure-v2.yml - -permissions: - contents: write - -jobs: - update: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v7 - with: - ref: fix/unattributed-target-failure-sink - - uses: actions/setup-node@v7 - with: - node-version: 22 - cache: npm - - run: npm ci - - name: Apply soundness fix and regression - env: - PATCH_B64: ZnJvbSBwYXRobGliIGltcG9ydCBQYXRoCgpjaGVja3MgPSBQYXRoKCdzcmMvY2hlY2tzLnRzJykKdGV4dCA9IGNoZWNrcy5yZWFkX3RleHQoKQpvbGQgPSAnJycgIGNvbnN0IHVuYXZhaWxhYmxlUmVjb3JkcyA9IFsuLi5yZWNvcmRzLnZhbHVlcygpXS5maWx0ZXIoKHJlY29yZCkgPT4gIXJlY29yZC5vYnNlcnZlZCk7XG4gIGNvbnN0IHByb2Nlc3NGYWlsdXJlSGFzTm9VbmF2YWlsYWJsZVRhcmdldCA9IHBheWxvYWQudW5hdHRyaWJ1dGVkRmFpbHVyZXMgPiAwICYmIHVuYXZhaWxhYmxlUmVjb3Jkcy5sZW5ndGggPT09IDA7XG4gIHJldHVybiBxdWFsaWZpY2F0aW9ucy5tYXAoKHF1YWxpZmljYXRpb24pID0+IHtcbiAgICBjb25zdCByZWNvcmQgPSByZWNvcmRzLmdldChwYXRoLnJlc29sdmUocm9vdCwgcXVhbGlmaWNhdGlvbi5ydW5uZXJQYXRoKSkhO1xuICAgIGlmICghcmVjb3JkLm9ic2VydmVkIHx8IChwcm9jZXNzRmFpbHVyZUhhc05vVW5hdmFpbGFibGVUYXJnZXQgJiYgcmVjb3JkLmZhaWxlZCA9PT0gMCkpIHtcbicnJwpuZXcgPSAnJycgIGNvbnN0IGhhc1VuYXR0cmlidXRlZFByb2Nlc3NGYWlsdXJlID0gcGF5bG9hZC51bmF0dHJpYnV0ZWRGYWlsdXJlcyA+IDA7XG4gIHJldHVybiBxdWFsaWZpY2F0aW9ucy5tYXAoKHF1YWxpZmljYXRpb24pID0+IHtcbiAgICBjb25zdCByZWNvcmQgPSByZWNvcmRzLmdldChwYXRoLnJlc29sdmUocm9vdCwgcXVhbGlmaWNhdGlvbi5ydW5uZXJQYXRoKSkhO1xuICAgIGlmICghcmVjb3JkLm9ic2VydmVkIHx8IChoYXNVbmF0dHJpYnV0ZWRQcm9jZXNzRmFpbHVyZSAmJiByZWNvcmQuZmFpbGVkID09PSAwKSkge1xuJycnCmlmIG9sZCBub3QgaW4gdGV4dDoKICAgIHJhaXNlIFN5c3RlbUV4aXQoJ2NoZWNrcy50cyB0YXJnZXQgYmxvY2sgbm90IGZvdW5kJykKY2hlY2tzLndyaXRlX3RleHQodGV4dC5yZXBsYWNlKG9sZCwgbmV3LCAxKSkKCnRlc3RzID0gUGF0aCgndGVzdHMvYW5hbHl6ZS50ZXN0LnRzJykKdGV4dCA9IHRlc3RzLnJlYWRfdGV4dCgpCmFuY2hvciA9ICd0ZXN0KCJQeXRob24gc3R1YnMgcmVtYWluIHN0YXRpYyB0ZXN0IHJlbGF0aW9uc2hpcHMgd2l0aG91dCBpbnZlbnRpbmcgYSBydW5uYWJsZSBmcmFtZXdvcmsiLCBhc3luYyAoY29udGV4dCkgPT4ge1xuJwppZiBhbmNob3Igbm90IGluIHRleHQ6CiAgICByYWlzZSBTeXN0ZW1FeGl0KCdhbmFseXplLnRlc3QudHMgaW5zZXJ0aW9uIGFuY2hvciBub3QgZm91bmQnKQpyZWdyZXNzaW9uID0gJycndGVzdCgidW5hdHRyaWJ1dGVkIHVuaXR0ZXN0IGZhaWx1cmVzIGNhbm5vdCBoaWRlIGJlaGluZCBhbiB1bmF2YWlsYWJsZSBiYXRjaCB0YXJnZXQiLCBhc3luYyAoY29udGV4dCkgPT4gewogIGNvbnN0IHJvb3QgPSBhd2FpdCBpbml0aWFsaXplUmVwb3NpdG9yeSh7CiAgICAic3JjL19faW5pdF9fLnB5IjogIiIsCiAgICAic3JjL2EucHkiOiAiZGVmIHZhbHVlX2EoKTpcXG4gICAgcmV0dXJuIDFcXG4iLAogICAgInNyYy9iLnB5IjogImRlZiB2YWx1ZV9iKCk6XFxuICAgIHJldHVybiAxXFxuIiwKICAgICJzcmMvYy5weSI6ICJkZWYgdmFsdWVfYygpOlxcbiAgICByZXR1cm4gMVxcbiIsCiAgICAidGVzdHMvX19pbml0X18ucHkiOiAiIiwKICAgICJ0ZXN0cy9oZWxwZXIucHkiOiAiaW1wb3J0IHVuaXR0ZXN0XFxuXFxuY2xhc3MgSW1wb3J0ZWRGYWlsdXJlKHVuaXR0ZXN0LlRlc3RDYXNlKTpcXG4gICAgZGVmIHRlc3RfaW1wb3J0ZWRfZmFpbHVyZShzZWxmKTpcXG4gICAgICAgIHNlbGYuZmFpbCgnaW1wb3J0ZWQgZmFpbHVyZScpXFxuIiwKICAgICJ0ZXN0cy90ZXN0X2EucHkiOiAiaW1wb3J0IHVuaXR0ZXN0XFxuZnJvbSBzcmMuYSBpbXBvcnQgdmFsdWVfYVxcbmZyb20gdGVzdHMuaGVscGVyIGltcG9ydCBJbXBvcnRlZEZhaWx1cmVcXG5cXG5jbGFzcyBBVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6XFxuICAgIGRlZiB0ZXN0X2Eoc2VsZik6XFxuICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbHVlX2EoKSwgMilcXG4iLAogICAgInRlc3RzL3Rlc3RfYi5weSI6ICJpbXBvcnQgdW5pdHRlc3RcXG5mcm9tIHNyYy5iIGltcG9ydCB2YWx1ZV9iXFxuXFxuY2xhc3MgQlRlc3QodW5pdHRlc3QuVGVzdENhc2UpOlxcbiAgICBkZWYgdGVzdF9iKHNlbGYpOlxcbiAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWx1ZV9iKCksIDk5OSlcXG4iLAogICAgInRlc3RzL3Rlc3RfYy5weSI6ICJmcm9tIHNyYy5jIGltcG9ydCB2YWx1ZV9jXFxuXFxudmFsdWVfYygpXFxuIiwKICB9KTsKICBjb250ZXh0LmFmdGVyKCgpID0+IHJtKHJvb3QsIHsgcmVjdXJzaXZlOiB0cnVlLCBmb3JjZTogdHJ1ZSB9KSk7CiAgYXdhaXQgd3JpdGVGaWxlcyhyb290LCB7CiAgICAic3JjL2EucHkiOiAiZGVmIHZhbHVlX2EoKTpcXG4gICAgcmV0dXJuIDJcXG4iLAogICAgInNyYy9iLnB5IjogImRlZiB2YWx1ZV9iKCk6XFxuICAgIHJldHVybiAyXFxuIiwKICAgICJzcmMvYy5weSI6ICJkZWYgdmFsdWVfYygpOlxcbiAgICByZXR1cm4gMlxcbiIsCiAgfSk7CgogIGNvbnN0IHJlcG9ydCA9IGF3YWl0IGFuYWx5emVSZXBvc2l0b3J5KHsgcmVwbzogcm9vdCwgcnVuQ2hlY2tzOiB0cnVlLCB0aW1lb3V0TXM6IDIwXzAwMCB9KTsKICBjb25zdCB0YXJnZXRlZCA9IHJlcG9ydC5jaGVja3MuZmluZCgoY2hlY2spID0+IGNoZWNrLmlkID09PSAicHl0aG9uOnRlc3Q6dW5pdHRlc3Q6dGFyZ2V0ZWQiKTsKICBjb25zdCBvYnNlcnZhdGlvbnMgPSBuZXcgTWFwKHRhcmdldGVkPy50YXJnZXRPYnNlcnZhdGlvbnM/Lm1hcCgob2JzZXJ2YXRpb24pID0+IFtvYnNlcnZhdGlvbi5wYXRoLCBvYnNlcnZhdGlvbl0pKTsKICBjb25zdCBzb3VyY2VBID0gcmVwb3J0LmFzc2Vzc21lbnRzLmZpbmQoKGFzc2Vzc21lbnQpID0+IGFzc2Vzc21lbnQuZmlsZS5wYXRoID09PSAic3JjL2EucHkiKTsKCiAgYXNzZXJ0LmVxdWFsKHRhcmdldGVkPy5zdGF0dXMsICJmYWlsZWQiLCB0YXJnZXRlZD8ub3V0cHV0KTsKICBhc3NlcnQuZXF1YWwob2JzZXJ2YXRpb25zLmdldCgidGVzdHMvdGVzdF9hLnB5Iik/Lm91dGNvbWUsICJub3Qtb2JzZXJ2ZWQiKTsKICBhc3NlcnQubWF0Y2gob2JzZXJ2YXRpb25zLmdldCgidGVzdHMvdGVzdF9hLnB5Iik/LmRldGFpbCA/PyAiIiwgL3VuYXR0cmlidXRlZCBwcm9jZXNzLWxldmVsIGZhaWx1cmUvKTsKICBhc3NlcnQuZXF1YWwob2JzZXJ2YXRpb25zLmdldCgidGVzdHMvdGVzdF9iLnB5Iik/Lm91dGNvbWUsICJmYWlsZWQiKTsKICBhc3NlcnQuZXF1YWwob2JzZXJ2YXRpb25zLmdldCgidGVzdHMvdGVzdF9jLnB5Iik/Lm91dGNvbWUsICJub3Qtb2JzZXJ2ZWQiKTsKICBhc3NlcnQuZXF1YWwoc291cmNlQT8uc3RhdHVzLCAidmVyaWZpY2F0aW9uLWZhaWxlZCIpOwogIGFzc2VydC5kZWVwRXF1YWwoc291cmNlQT8uZXhlY3V0ZWRUZXN0cywgW10pOwogIGFzc2VydC5kZWVwRXF1YWwoc291cmNlQT8udGVzdEV4ZWN1dGlvbnMsIFtdKTsKfSk7CgonJycKdGVzdHMud3JpdGVfdGV4dCh0ZXh0LnJlcGxhY2UoYW5jaG9yLCByZWdyZXNzaW9uICsgYW5jaG9yLCAxKSkKCmNoYW5nZWxvZyA9IFBhdGgoJ0NIQU5HRUxPRy5tZCcpCnRleHQgPSBjaGFuZ2Vsb2cucmVhZF90ZXh0KCkKYW5jaG9yID0gJyMjIyBGaXhlZFxuXG4nCmlmIGFuY2hvciBub3QgaW4gdGV4dDoKICAgIHJhaXNlIFN5c3RlbUV4aXQoJ0NIQU5HRUxPRyBmaXhlZCBzZWN0aW9uIG5vdCBmb3VuZCcpCml0ZW0gPSAnLSBGYWlsZWQgY2xvc2VkIG9uIHVuYXR0cmlidXRlZCB0YXJnZXRlZC1ydW5uZXIgcHJvY2VzcyBmYWlsdXJlcyBldmVuIHdoZW4gYW5vdGhlciBxdWFsaWZpZWQgYmF0Y2ggdGFyZ2V0IGlzIHVuYXZhaWxhYmxlLiBBbiB1bmF2YWlsYWJsZSB0YXJnZXQgY2FuIG5vIGxvbmdlciBhY3QgYXMgYSBzaW5rIHRoYXQgbGV0cyB1bnJlbGF0ZWQgb2JzZXJ2ZWQgcGFzc2VzIHN1cnZpdmUgYW4gYW1iaWd1b3VzIHByb2Nlc3MtbGV2ZWwgZmFpbHVyZTsgb25seSBleHBsaWNpdGx5IGZhaWxlZCB0YXJnZXRzIHJldGFpbiBsb2NhbGl6ZWQgZmFpbHVyZSBhdHRyaWJ1dGlvbi5cbicKY2hhbmdlbG9nLndyaXRlX3RleHQodGV4dC5yZXBsYWNlKGFuY2hvciwgYW5jaG9yICsgaXRlbSwgMSkpCg== - run: echo "$PATCH_B64" | base64 -d | python3 - - name: Run full tests - run: npm test - - name: Clean rebuild tracked dist - run: npm run clean && npm run build - - name: Validate diff - run: git diff --check - - name: Commit generated update - run: | - git config user.name "github-actions[bot]" - git config user.email "41898282+github-actions[bot]@users.noreply.github.com" - git add CHANGELOG.md src/checks.ts tests/analyze.test.ts dist - git diff --cached --stat - git commit -m "Fail closed on unattributed batch failures" - git push origin HEAD:fix/unattributed-target-failure-sink From f0341ad7bcbb395cebcbada63e9fff1033712e7b Mon Sep 17 00:00:00 2001 From: Felix Date: Sun, 16 Aug 2026 01:04:20 +0800 Subject: [PATCH 8/8] Remove temporary unattributed failure updater v3 --- ...ne-time-unattributed-target-failure-v3.yml | 42 ------------------- 1 file changed, 42 deletions(-) delete mode 100644 .github/workflows/one-time-unattributed-target-failure-v3.yml diff --git a/.github/workflows/one-time-unattributed-target-failure-v3.yml b/.github/workflows/one-time-unattributed-target-failure-v3.yml deleted file mode 100644 index c830241..0000000 --- a/.github/workflows/one-time-unattributed-target-failure-v3.yml +++ /dev/null @@ -1,42 +0,0 @@ -name: One-time unattributed target failure hardening v3 - -on: - push: - branches: - - fix/unattributed-target-failure-sink - paths: - - .github/workflows/one-time-unattributed-target-failure-v3.yml - -permissions: - contents: write - -jobs: - update: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v7 - with: - ref: fix/unattributed-target-failure-sink - - uses: actions/setup-node@v7 - with: - node-version: 22 - cache: npm - - run: npm ci - - name: Apply soundness fix and regression - env: - PATCH_B64: ZnJvbSBwYXRobGliIGltcG9ydCBQYXRoCgpjaGVja3MgPSBQYXRoKCdzcmMvY2hlY2tzLnRzJykKdGV4dCA9IGNoZWNrcy5yZWFkX3RleHQoKQpvbGQgPSAnJycgIGNvbnN0IHVuYXZhaWxhYmxlUmVjb3JkcyA9IFsuLi5yZWNvcmRzLnZhbHVlcygpXS5maWx0ZXIoKHJlY29yZCkgPT4gIXJlY29yZC5vYnNlcnZlZCk7CiAgY29uc3QgcHJvY2Vzc0ZhaWx1cmVIYXNOb1VuYXZhaWxhYmxlVGFyZ2V0ID0gcGF5bG9hZC51bmF0dHJpYnV0ZWRGYWlsdXJlcyA+IDAgJiYgdW5hdmFpbGFibGVSZWNvcmRzLmxlbmd0aCA9PT0gMDsKICByZXR1cm4gcXVhbGlmaWNhdGlvbnMubWFwKChxdWFsaWZpY2F0aW9uKSA9PiB7CiAgICBjb25zdCByZWNvcmQgPSByZWNvcmRzLmdldChwYXRoLnJlc29sdmUocm9vdCwgcXVhbGlmaWNhdGlvbi5ydW5uZXJQYXRoKSkhOwogICAgaWYgKCFyZWNvcmQub2JzZXJ2ZWQgfHwgKHByb2Nlc3NGYWlsdXJlSGFzTm9VbmF2YWlsYWJsZVRhcmdldCAmJiByZWNvcmQuZmFpbGVkID09PSAwKSkgewonJycKbmV3ID0gJycnICBjb25zdCBoYXNVbmF0dHJpYnV0ZWRQcm9jZXNzRmFpbHVyZSA9IHBheWxvYWQudW5hdHRyaWJ1dGVkRmFpbHVyZXMgPiAwOwogIHJldHVybiBxdWFsaWZpY2F0aW9ucy5tYXAoKHF1YWxpZmljYXRpb24pID0+IHsKICAgIGNvbnN0IHJlY29yZCA9IHJlY29yZHMuZ2V0KHBhdGgucmVzb2x2ZShyb290LCBxdWFsaWZpY2F0aW9uLnJ1bm5lclBhdGgpKSE7CiAgICBpZiAoIXJlY29yZC5vYnNlcnZlZCB8fCAoaGFzVW5hdHRyaWJ1dGVkUHJvY2Vzc0ZhaWx1cmUgJiYgcmVjb3JkLmZhaWxlZCA9PT0gMCkpIHsKJycnCmlmIG9sZCBub3QgaW4gdGV4dDoKICAgIHJhaXNlIFN5c3RlbUV4aXQoJ2NoZWNrcy50cyB0YXJnZXQgYmxvY2sgbm90IGZvdW5kJykKY2hlY2tzLndyaXRlX3RleHQodGV4dC5yZXBsYWNlKG9sZCwgbmV3LCAxKSkKCnRlc3RzID0gUGF0aCgndGVzdHMvYW5hbHl6ZS50ZXN0LnRzJykKdGV4dCA9IHRlc3RzLnJlYWRfdGV4dCgpCmFuY2hvciA9ICcnJ3Rlc3QoIlB5dGhvbiBzdHVicyByZW1haW4gc3RhdGljIHRlc3QgcmVsYXRpb25zaGlwcyB3aXRob3V0IGludmVudGluZyBhIHJ1bm5hYmxlIGZyYW1ld29yayIsIGFzeW5jIChjb250ZXh0KSA9PiB7CicnJwppZiBhbmNob3Igbm90IGluIHRleHQ6CiAgICByYWlzZSBTeXN0ZW1FeGl0KCdhbmFseXplLnRlc3QudHMgaW5zZXJ0aW9uIGFuY2hvciBub3QgZm91bmQnKQpyZWdyZXNzaW9uID0gcicnJ3Rlc3QoInVuYXR0cmlidXRlZCB1bml0dGVzdCBmYWlsdXJlcyBjYW5ub3QgaGlkZSBiZWhpbmQgYW4gdW5hdmFpbGFibGUgYmF0Y2ggdGFyZ2V0IiwgYXN5bmMgKGNvbnRleHQpID0+IHsKICBjb25zdCByb290ID0gYXdhaXQgaW5pdGlhbGl6ZVJlcG9zaXRvcnkoewogICAgInNyYy9fX2luaXRfXy5weSI6ICIiLAogICAgInNyYy9hLnB5IjogImRlZiB2YWx1ZV9hKCk6XG4gICAgcmV0dXJuIDFcbiIsCiAgICAic3JjL2IucHkiOiAiZGVmIHZhbHVlX2IoKTpcbiAgICByZXR1cm4gMVxuIiwKICAgICJzcmMvYy5weSI6ICJkZWYgdmFsdWVfYygpOlxuICAgIHJldHVybiAxXG4iLAogICAgInRlc3RzL19faW5pdF9fLnB5IjogIiIsCiAgICAidGVzdHMvaGVscGVyLnB5IjogImltcG9ydCB1bml0dGVzdFxuXG5jbGFzcyBJbXBvcnRlZEZhaWx1cmUodW5pdHRlc3QuVGVzdENhc2UpOlxuICAgIGRlZiB0ZXN0X2ltcG9ydGVkX2ZhaWx1cmUoc2VsZik6XG4gICAgICAgIHNlbGYuZmFpbCgnaW1wb3J0ZWQgZmFpbHVyZScpXG4iLAogICAgInRlc3RzL3Rlc3RfYS5weSI6ICJpbXBvcnQgdW5pdHRlc3RcbmZyb20gc3JjLmEgaW1wb3J0IHZhbHVlX2FcbmZyb20gdGVzdHMuaGVscGVyIGltcG9ydCBJbXBvcnRlZEZhaWx1cmVcblxuY2xhc3MgQVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOlxuICAgIGRlZiB0ZXN0X2Eoc2VsZik6XG4gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWVfYSgpLCAyKVxuIiwKICAgICJ0ZXN0cy90ZXN0X2IucHkiOiAiaW1wb3J0IHVuaXR0ZXN0XG5mcm9tIHNyYy5iIGltcG9ydCB2YWx1ZV9iXG5cbmNsYXNzIEJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKTpcbiAgICBkZWYgdGVzdF9iKHNlbGYpOlxuICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbHVlX2IoKSwgOTk5KVxuIiwKICAgICJ0ZXN0cy90ZXN0X2MucHkiOiAiaW1wb3J0IHVuaXR0ZXN0XG5mcm9tIHNyYy5jIGltcG9ydCB2YWx1ZV9jXG5cbnZhbHVlX2MoKVxuIiwKICB9KTsKICBjb250ZXh0LmFmdGVyKCgpID0+IHJtKHJvb3QsIHsgcmVjdXJzaXZlOiB0cnVlLCBmb3JjZTogdHJ1ZSB9KSk7CiAgYXdhaXQgd3JpdGVGaWxlcyhyb290LCB7CiAgICAic3JjL2EucHkiOiAiZGVmIHZhbHVlX2EoKTpcbiAgICByZXR1cm4gMlxuIiwKICAgICJzcmMvYi5weSI6ICJkZWYgdmFsdWVfYigpOlxuICAgIHJldHVybiAyXG4iLAogICAgInNyYy9jLnB5IjogImRlZiB2YWx1ZV9jKCk6XG4gICAgcmV0dXJuIDJcbiIsCiAgfSk7CgogIGNvbnN0IHJlcG9ydCA9IGF3YWl0IGFuYWx5emVSZXBvc2l0b3J5KHsgcmVwbzogcm9vdCwgcnVuQ2hlY2tzOiB0cnVlLCB0aW1lb3V0TXM6IDIwXzAwMCB9KTsKICBjb25zdCB0YXJnZXRlZCA9IHJlcG9ydC5jaGVja3MuZmluZCgoY2hlY2spID0+IGNoZWNrLmlkID09PSAicHl0aG9uOnRlc3Q6dW5pdHRlc3Q6dGFyZ2V0ZWQiKTsKICBjb25zdCBvYnNlcnZhdGlvbnMgPSBuZXcgTWFwKHRhcmdldGVkPy50YXJnZXRPYnNlcnZhdGlvbnM/Lm1hcCgob2JzZXJ2YXRpb24pID0+IFtvYnNlcnZhdGlvbi5wYXRoLCBvYnNlcnZhdGlvbl0pKTsKICBjb25zdCBzb3VyY2VBID0gcmVwb3J0LmFzc2Vzc21lbnRzLmZpbmQoKGFzc2Vzc21lbnQpID0+IGFzc2Vzc21lbnQuZmlsZS5wYXRoID09PSAic3JjL2EucHkiKTsKCiAgYXNzZXJ0LmVxdWFsKHRhcmdldGVkPy5zdGF0dXMsICJmYWlsZWQiLCB0YXJnZXRlZD8ub3V0cHV0KTsKICBhc3NlcnQuZXF1YWwob2JzZXJ2YXRpb25zLmdldCgidGVzdHMvdGVzdF9hLnB5Iik/Lm91dGNvbWUsICJub3Qtb2JzZXJ2ZWQiKTsKICBhc3NlcnQubWF0Y2gob2JzZXJ2YXRpb25zLmdldCgidGVzdHMvdGVzdF9hLnB5Iik/LmRldGFpbCA/PyAiIiwgL3VuYXR0cmlidXRlZCBwcm9jZXNzLWxldmVsIGZhaWx1cmUvKTsKICBhc3NlcnQuZXF1YWwob2JzZXJ2YXRpb25zLmdldCgidGVzdHMvdGVzdF9iLnB5Iik/Lm91dGNvbWUsICJmYWlsZWQiKTsKICBhc3NlcnQuZXF1YWwob2JzZXJ2YXRpb25zLmdldCgidGVzdHMvdGVzdF9jLnB5Iik/Lm91dGNvbWUsICJub3Qtb2JzZXJ2ZWQiKTsKICBhc3NlcnQuZXF1YWwoc291cmNlQT8uc3RhdHVzLCAidmVyaWZpY2F0aW9uLWZhaWxlZCIpOwogIGFzc2VydC5kZWVwRXF1YWwoc291cmNlQT8uZXhlY3V0ZWRUZXN0cywgW10pOwogIGFzc2VydC5kZWVwRXF1YWwoc291cmNlQT8udGVzdEV4ZWN1dGlvbnMsIFtdKTsKfSk7CgonJycKdGV4dCA9IHRleHQucmVwbGFjZShhbmNob3IsIHJlZ3Jlc3Npb24gKyBhbmNob3IsIDEpCgpvbGRfZXhwZWN0ID0gJycnICBhc3NlcnQuZGVlcEVxdWFsKHRhcmdldGVkPy50YXJnZXRPYnNlcnZhdGlvbnM/Lm1hcCgoaXRlbSkgPT4gW2l0ZW0ucGF0aCwgaXRlbS5vdXRjb21lXSksIFsKICAgIFsidGVzdHMvdGVzdF9mYWlsLnB5IiwgImZhaWxlZCJdLAogICAgWyJ0ZXN0cy90ZXN0X2ltcG9ydC5weSIsICJub3Qtb2JzZXJ2ZWQiXSwKICAgIFsidGVzdHMvdGVzdF9wYXNzLnB5IiwgInBhc3NlZCJdLAogIF0pOwonJycKbmV3X2V4cGVjdCA9ICcnJyAgYXNzZXJ0LmRlZXBFcXVhbCh0YXJnZXRlZD8udGFyZ2V0T2JzZXJ2YXRpb25zPy5tYXAoKGl0ZW0pID0+IFtpdGVtLnBhdGgsIGl0ZW0ub3V0Y29tZV0pLCBbCiAgICBbInRlc3RzL3Rlc3RfZmFpbC5weSIsICJmYWlsZWQiXSwKICAgIFsidGVzdHMvdGVzdF9pbXBvcnQucHkiLCAibm90LW9ic2VydmVkIl0sCiAgICBbInRlc3RzL3Rlc3RfcGFzcy5weSIsICJub3Qtb2JzZXJ2ZWQiXSwKICBdKTsKJycnCmlmIG9sZF9leHBlY3Qgbm90IGluIHRleHQ6CiAgICByYWlzZSBTeXN0ZW1FeGl0KCdleGlzdGluZyBwYXJ0aWFsIGJhdGNoIGV4cGVjdGF0aW9uIG5vdCBmb3VuZCcpCnRleHQgPSB0ZXh0LnJlcGxhY2Uob2xkX2V4cGVjdCwgbmV3X2V4cGVjdCwgMSkKCm9sZF9zdW1tYXJ5ID0gJycnICBhc3NlcnQubWF0Y2godmFsdWVTdW1tYXJ5LCAvdGVzdHNcL3Rlc3RfaW1wb3J0XC5weTogbm90LW9ic2VydmVkLyk7CiAgYXNzZXJ0Lm1hdGNoKHZhbHVlU3VtbWFyeSwgL0luZGVwZW5kZW50bHkgcGFzc2luZyB0YXJnZXQ6IDxjb2RlPnRlc3RzXC90ZXN0X3Bhc3NcLnB5PFwvY29kZT4vKTsKICBhc3NlcnQuZG9lc05vdE1hdGNoKHZhbHVlU3VtbWFyeSwgL0F0dHJpYnV0ZWQgZmFpbGVkIHRhcmdldDogPGNvZGU+dGVzdHNcL3Rlc3RfcGFzc1wucHkvKTsKJycnCm5ld19zdW1tYXJ5ID0gJycnICBhc3NlcnQubWF0Y2godmFsdWVTdW1tYXJ5LCAvdGVzdHNcL3Rlc3RfaW1wb3J0XC5weTogbm90LW9ic2VydmVkLyk7CiAgYXNzZXJ0Lm1hdGNoKHZhbHVlU3VtbWFyeSwgL3Rlc3RzXC90ZXN0X3Bhc3NcLnB5OiBub3Qtb2JzZXJ2ZWQvKTsKICBhc3NlcnQuZG9lc05vdE1hdGNoKHZhbHVlU3VtbWFyeSwgL0luZGVwZW5kZW50bHkgcGFzc2luZyB0YXJnZXQ6IDxjb2RlPnRlc3RzXC90ZXN0X3Bhc3NcLnB5PFwvY29kZT4vKTsKICBhc3NlcnQuZG9lc05vdE1hdGNoKHZhbHVlU3VtbWFyeSwgL0F0dHJpYnV0ZWQgZmFpbGVkIHRhcmdldDogPGNvZGU+dGVzdHNcL3Rlc3RfcGFzc1wucHkvKTsKJycnCmlmIG9sZF9zdW1tYXJ5IG5vdCBpbiB0ZXh0OgogICAgcmFpc2UgU3lzdGVtRXhpdCgnZXhpc3RpbmcgcGFydGlhbCBiYXRjaCBzdW1tYXJ5IGV4cGVjdGF0aW9ucyBub3QgZm91bmQnKQp0ZXN0cy53cml0ZV90ZXh0KHRleHQucmVwbGFjZShvbGRfc3VtbWFyeSwgbmV3X3N1bW1hcnksIDEpKQoKY2hhbmdlbG9nID0gUGF0aCgnQ0hBTkdFTE9HLm1kJykKdGV4dCA9IGNoYW5nZWxvZy5yZWFkX3RleHQoKQphbmNob3IgPSAnIyMjIEZpeGVkXG5cbicKaWYgYW5jaG9yIG5vdCBpbiB0ZXh0OgogICAgcmFpc2UgU3lzdGVtRXhpdCgnQ0hBTkdFTE9HIGZpeGVkIHNlY3Rpb24gbm90IGZvdW5kJykKaXRlbSA9ICctIEZhaWxlZCBjbG9zZWQgb24gdW5hdHRyaWJ1dGVkIHRhcmdldGVkLXJ1bm5lciBwcm9jZXNzIGZhaWx1cmVzIGV2ZW4gd2hlbiBhbm90aGVyIHF1YWxpZmllZCBiYXRjaCB0YXJnZXQgaXMgdW5hdmFpbGFibGUuIEFuIHVuYXZhaWxhYmxlIHRhcmdldCBjYW4gbm8gbG9uZ2VyIGFjdCBhcyBhIHNpbmsgdGhhdCBsZXRzIHVucmVsYXRlZCBvYnNlcnZlZCBwYXNzZXMgc3Vydml2ZSBhbiBhbWJpZ3VvdXMgcHJvY2Vzcy1sZXZlbCBmYWlsdXJlOyBvbmx5IGV4cGxpY2l0bHkgZmFpbGVkIHRhcmdldHMgcmV0YWluIGxvY2FsaXplZCBmYWlsdXJlIGF0dHJpYnV0aW9uLlxuJwpjaGFuZ2Vsb2cud3JpdGVfdGV4dCh0ZXh0LnJlcGxhY2UoYW5jaG9yLCBhbmNob3IgKyBpdGVtLCAxKSkK - run: echo "$PATCH_B64" | base64 -d | python3 - - name: Run full tests - run: npm test - - name: Clean rebuild tracked dist - run: npm run clean && npm run build - - name: Validate diff - run: git diff --check - - name: Commit generated update - run: | - git config user.name "github-actions[bot]" - git config user.email "41898282+github-actions[bot]@users.noreply.github.com" - git add CHANGELOG.md src/checks.ts tests/analyze.test.ts dist - git diff --cached --stat - git commit -m "Fail closed on unattributed batch failures" - git push origin HEAD:fix/unattributed-target-failure-sink