Repository navigation
Add report-only Security runs - #558
Merged
Merged
Conversation
On case-insensitive macOS filesystems, the lowercase candidate resolves to the tracked docs/THREAT-MODEL.md file, so discovery named the wrong spelling in the Session prompt. Require an exact match in the audited checkout's tracked paths before selecting an existing document. Keep the end-to-end regression unchanged. It failed with the CI symptom in a local replay of case-insensitive lookup and passes with this fix.
This was referenced Oct 8, 2026
Merged
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
thirdshift secureaudits origin's Base branch and records validated Security findings as private draft advisories. It leaves the Launch directory untouched and deduplicates fingerprints across every advisory state.Closes #538
Testing seams
ghand agent CLIs, real Node.js validators.Evidence
cargo test --test security_run audits_origins_base_without_changing_the_launch_directory -- --exactfailed withnot a GitHub issue URL: secure(exit 2).After: the same test passes, auditing origin's head while preserving local edits and commits.
cargo test --test security_run security_advisories_preserve_python_and_go_manifest_identity -- --exact --nocapturefailed:other/null replaced the Python manifest's package identity.After: the same test passes for Python and Go; both fixtures and the regression are retained.
cargo test --test security_run security_audit_names_the_threat_model_under_docs -- --exact --nocapturefailed because the Session prompt omitteddocs/THREAT-MODEL.md.After: the same test passes; the regression is retained.
cargo testpasses (1521 passed, 1 ignored), including all 13 Security run scenarios;cargo fmt --check,cargo clippy --all-targets -- -D warnings, andgit diff --checkpass. The prompt generator check (UPDATE_PROMPTS=1 cargo test prompts_page) passed.Unaddressed findings
Standards
ghto support advisory creation, listing in every state, and update. The PATCH implementation and routing satisfy that explicit requirement. This is resolved by the Spec and requires no Day shift decision. The shared Pass naming finding was addressed withPassArgsandAbout::SecurityRun.Spec
None. Both findings were reproduced as written, fixed, and retained as regression tests.
Review coverage
Separate Standards and Spec reviews used issue-427 pinned at
cc7e3be78c2fb6d91e4799d28f46b77b1747eb58. Each final files-read list covers all 29 changed files, including generated artifacts. Changed files left unread: none for either axis. Reports and dispositions are saved in.thirdshift-review-0X6fAX/standards.mdand.thirdshift-review-0X6fAX/spec.mdin the implementation workspace.Merge Danger
Door: two-way
The command can be reverted; private draft advisories and local audit artifacts already created persist for the Day shift. Notification delivery, private-repository fallback, reproduction and fixing remain separate tickets.
Blast Radius: Security
The new command uses the shared Pass lock and existing Harness/session infrastructure. It creates private drafts; it never publishes or closes advisories.
CI notes
interrupting_a_live_session_after_cli_exit_stops_the_command_holding_stdoutexceeds its existing two-second interruption/cleanup limit on both issue-538 and issue-427 at bdeac1e; the test and stop path are unchanged, and the exact test passes locally, so no code or checks were changed.Built with codex · gpt-6.1-sol · xhigh