Skip to content

Add verify-or-drop, exclusion list and variant analysis to the security path - #1979

Merged
remigiusz-antczak merged 2 commits into
mainfrom
land/1965c
Oct 24, 2026
Merged

remigiusz-antczak merged 2 commits into
mainfrom
land/1965c

Conversation

@remigiusz-antczak

Copy link
Copy Markdown
Collaborator

Supersedes #1976, #1972 and #1965. Same change, rebuilt as one commit on current main (after #1977), with the fixes for #1976's CI failure.

  • Adds references/appsec-verify.md: a verify-or-drop gate (a security finding needs a source-to-sink file:line path or drops to a question), a default false-positive exclusion list with a repo override (.dcr-security-exclusions), and variant analysis for confirmed findings. scripts/security_verify.py checks claim shape and applies exclusions.
  • Routing: full-map.md's domain-B row names appsec-verify.md with its trigger (size-budget-raise 18829→18889). security-appsec.md gets a one-line index row (yields a finding), so it is 27998 bytes and stays under the 28000-byte cap that scripts/test_appsec_split.py pins. The row is added to that test's ADDED allowlist, and the B row to REWORDED in scripts/test_fullmap_core_split.py.
  • Must-load: web, mobile, api / service and agent / LLM / MCP rise 10 tokens each; the floors rise 15 each. Both are re-pinned in scripts/mustload-budgets.tsv with a comment.
  • Resolves an evals/evals.json conflict with Add whole-app security review mode and opt-in security scanners #1970 by keeping both appended cases.

Local CI repro on this commit: size-ratchet ok against main, mustload ok, both split tests OK, all scripts/ci-tests.d pass. test-ci-gates.sh shows 295 passed and 9 failed; the 9 are the known sandbox-only failures (dcr-gates opt-in, peer pains, reap_own pgrep, tracker socket bind).

🤖 Generated with Claude Code

https://claude.ai/code/session_014QNFFPWVcPUbeuvwM5fk2Z

…ty path

New references/appsec-verify.md (routed from security-appsec.md and full-map.md):
a security finding needs a source-to-sink file:line path or drops to a question,
a default false-positive exclusion list is tunable via .dcr-security-exclusions
(High and Critical are never dropped by it; the override file is untrusted and
non-default additions are surfaced), and a confirmed finding triggers a repo-wide
sibling search. security_verify.py checks claim shape, applies exclusions, emits a
record with active exclusions and override status, and fails closed on bad input;
three evals added.

Not done here per lane contract: INDEX.md, SHA256SUMS, size-budgets.tsv
(the size-budget check fails until the lane owner adds the new file's row).

Tests: 21/21 assert statements in scripts/test_security_verify.py pass

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014QNFFPWVcPUbeuvwM5fk2Z
@remigiusz-antczak
remigiusz-antczak merged commit 1edb0f8 into main Oct 24, 2026
1 check passed
@remigiusz-antczak
remigiusz-antczak deleted the land/1965c branch October 24, 2026 11:04
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.

1 participant