Skip to content

TEST-001A2: reject sensitive emitted test artifacts - #181

Merged
daliu merged 1 commit into
mainfrom
codex/issue-177-test-artifact-scrubber
Jul 13, 2026
Merged

daliu merged 1 commit into
mainfrom
codex/issue-177-test-artifact-scrubber

Conversation

@daliu

@daliu daliu commented Jul 13, 2026 •

Copy link
Copy Markdown
Contributor

Outcome

Adds a dependency-free, read-only, fail-closed scanner for explicit test-output folders and makes its deliberate safety suite a required hosted check named Test artifact scrubber. Both protected-release CI rechecks now require that exact successful job. Current CI still uploads no test artifact.

The source is rebased onto 6017493f3366790eefba5d00baf3df7211dfc380, preserving the non-overlapping #178 profile-phone containment.

Safety boundary

  • Accepts only narrow, explicitly named artifact roots and bounded supported text/report formats.
  • Rejects broad/source roots, path escapes, symlinks, archives, binary/unreadable input, malformed structured reports, recognizable credentials/capability URLs, known production authority, and non-reserved identity data.
  • Uses fixed rule IDs and never echoes matched bytes or hostile filenames.
  • Uses only Node built-ins and performs no write, sanitization, upload, network, provider, Firebase, or production operation.
  • Preserves the exact reserved TEST-001A1 synthetic contact.
  • Rejects workflow upload spellings, YAML escape/key/context bypasses, and changes around the exact protected-release checks.
  • This is a documented recognizable-pattern guard, not a general data-loss-prevention guarantee. Later report producers must invoke it before any upload.

Verification

  • Node 20 focused scanner/workflow groups: 22/22 passed.
  • Node 20 combined CI/release/provider/artifact groups: 38/38 passed.
  • Independent adversarial content matrix: 61/61 passed.
  • Frontend Jest: 10 suites, 134/134 tests.
  • SPA callback suite: 10/10.
  • Functions lint: passed.
  • Functions unit: 931 passed, 26 skipped.
  • Auth/Firestore emulator: 932 passed, 25 skipped, exact demo project.
  • Firestore Rules: 311/311, exact demo project.
  • Commerce journal emulator: 25/25, exact demo project and explicit opt-in.
  • Diagnostic frontend build: passed.
  • Workflow YAML safe-load, syntax, diff, exact ten-path scope: passed.
  • Relative links: 16/16 resolved.
  • Two independent exact-snapshot reviews: approved with no findings after adversarial hardening.

Officer impact

Officer impact: Release approvers see one additional required green check, Test artifact scrubber. It proves that the deliberate made-up output safety test ran. It does not prove a report was uploaded or any live service changed.

Officer documentation: OFFICER_START_HERE.md and docs/officers/PUBLISH_AND_CHECK.md. Engineering truth is also updated in SECURITY.md, OPERATIONS_RUNBOOK.md, GITHUB_ISSUES.md, and GITHUB_ISSUE_SLICES.md.

Approver: A repository maintainer may approve this source merge after exact hosted checks. A production release remains separate.

Undo: Revert the exact merge only after confirming no later report-producing workflow depends on the job name. Never bypass the check to make a release pass.

Escalation: Stop and open a security incident if real credentials, member details, or private capabilities appear in output. Do not copy the value into GitHub, screenshots, email, or an AI tool.

Deployment evidence

  • Source changed: yes, exact source commit 88b45e0c71d08ff628223358e5d9d0392969f4e3.
  • Local tests passed: yes, evidence above.
  • Code merged: yes; squash merge 97ec6eeccc99e27d00ca271a0c874cbba9f36420.
  • Hosted CI gate passed: yes; exact-head run 29284254898 and post-merge run 29284449908 passed all five jobs, including Test artifact scrubber.
  • Netlify review preview: ready at exact head; no production publication.
  • Protected-release validation passed locally: yes; no release was requested.
  • Website published: no change requested or performed.
  • runmprc.com verified: not applicable; no website publication.
  • Firebase deployed: no.
  • Outside provider configured/contacted: no.
  • Production behavior verified: no production behavior changed or tested.

Closes #177

@netlify

netlify Bot commented Jul 13, 2026 •

Copy link
Copy Markdown

✅ Deploy Preview for luminous-fox-7c393f ready!

Name Link
🔨 Latest commit 88b45e0
🔍 Latest deploy log https://app.netlify.com/projects/luminous-fox-7c393f/deploys/6a55507a11e63a00080d86ee
😎 Deploy Preview https://deploy-preview-181--luminous-fox-7c393f.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@daliu

daliu commented Jul 13, 2026

Copy link
Copy Markdown
Contributor Author

Exact-head merge evidence — 88b45e0c71d08ff628223358e5d9d0392969f4e3

  • Hosted CI run 29284254898: all five named jobs passed. Test artifact scrubber passed in 11 seconds.
  • Netlify review preview 6a55507a11e63a00080d86ee: ready. Header/Pages checks were neutral because this PR has no public-page change; redirect check passed.
  • Independent exact-snapshot reviews: two approvals. Separate adversarial matrix: 61/61. Combined Node 20 workflow suite: 38/38.
  • Exact diff: ten claimed paths only, based on main 6017493f3366790eefba5d00baf3df7211dfc380; DATA-001C1 — Pause optional My Account phone collection during privacy review #178 behavior is preserved.

Merge authorization: the user explicitly authorized agents to push, merge, and deploy. This source-only CI/docs change does not require a website or Firebase release. Production publication and provider state remain unchanged.

@daliu
daliu merged commit 97ec6ee into main Jul 13, 2026
9 checks passed
@daliu
daliu deleted the codex/issue-177-test-artifact-scrubber branch July 13, 2026 20:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

TEST-001A2 — Reject sensitive emitted test artifacts and require the scrubber gate

1 participant