Skip to content

Preregister the tool-native profile and add its runner infrastructure - #83

Merged
DavidBakerEffendi merged 1 commit into
mainfrom
dave/native-profile-infra
Aug 27, 2026
Merged

Preregister the tool-native profile and add its runner infrastructure#83
DavidBakerEffendi merged 1 commit into
mainfrom
dave/native-profile-infra

Conversation

@DavidBakerEffendi

Copy link
Copy Markdown
Collaborator

Summary

Issue #16's design document and infrastructure in one PR — no fixtures, no runs, zero corpus changes.

  • docs/native-profile.md: the tool-native probe set — six templates over dependency-free platform APIs (System.getenvRuntime.exec, process.envexecSync, os.environos.system, plus propagator/sanitizer/summary/entrypoint/persistence rows), with the native-binding trap (a same-named local mock defeats shipped-model binding, so only real platform identities qualify; frameworks deferred to a vendored-dependency decision) and the sink-existence scoring rule grounded in an actual sampled Semgrep audit rule. Canonical kernels are skipped natively with rationale: invented endpoints are invisible to shipped models by construction.
  • Preregistered partitions, verified where cheap: CodeQL 6/6 (security-extended suites + --threat-model local confirmed in the shipped packs, with per-identity model rows verified — including preregistered expectations like shlex.quote being a barrier for one query only and get/set property key-matching being unmodeled per an in-tree comment); Bifrost 0/6 (no shipped taint policy — cells cite bifrost-dev #2620/#2691, and #2620's own inventory names these exact APIs); Joern 0/6 (DefaultSemantics ships flow constraints, no endpoint catalog; joern-scan's querydb is a floating download, not shipped); Semgrep 0/6 pending vendoring (snapshot commit scheme pinned: semgrep-rules@40b8c63f; promotion is a dated amendment carrying the vendored commit).
  • A new no-pooling reason found: the CodeQL query packs bundle different library versions than our pinned analysis packs (9.2.4/2.10.0/7.2.4 vs 9.2.3/2.9.0/7.2.3) — recorded.
  • Infra mirrors the modeling shapes: profile-disjoint validators (tool-native and benchmark-controlled populations can never cross-select, tested both directions; modeling_case now filters on profile), four run-<tool>-native commands, the no-benchmark-models gate (rejects all 13 benchmark artifacts, accepts every pinned native shape, activation binds the configuration hash). 16 new tests; 157 total.

Validation

cargo fmt --check · cargo test (157) · validate (816) · validate-reports (54) · validate-freeze · generate-results --check.

🤖 Generated with Claude Code

Adds docs/native-profile.md, the preregistration artifact for the
`tool-native` model profile, plus the runner infrastructure. No fixture,
no vendored ruleset, and no run lands here; the corpus is unchanged.

The profile measures the product rather than the engine: the sources,
sinks, sanitizers, summaries, and entry points each tool ships and
activates by default or by its own documented native configuration. Six
templates over real platform APIs, one per category of the
benchmark-controlled matrix, so the two can be read side by side. It
shares the `modeling` score tier and is separated by `model_profile`
alone, with a corpus-wide check that the two populations never
cross-select — the fault it guards is a selector that filters on the tier
and forgets the profile, which no assertion about a case's own fields
would catch.

The document records the native-binding trap (fixtures must name real
platform APIs by their real identities, or model binding is silently
defeated), why the canonical kernels are not run natively, and how a
finding that fires on sink existence alone is scored: on the cell it
lands in, false positives included.

Preregistered activation partition, with its *to be verified* cells
recorded as unsupported per its own rule: CodeQL 6 of 6, pinned to the
shipped `security-extended` suites of codeql/{java,javascript,python}-queries
with `--threat-model local`; Bifrost, Joern, and Semgrep CE 0 of 6, each
with a verified rationale — no shipped endpoint catalog in the standalone
policy CLI (bifrost-dev #2620, #2691), `DefaultSemantics` shipping flow
constraints but no source or sink catalog with `joern-scan`'s query
database downloaded rather than shipped, and a Semgrep ruleset that is
unpinnable at run time until a snapshot is vendored.

Infrastructure: NATIVE_TEMPLATE_IDS and the category mapping,
NATIVE_PARTITION's twenty-four cells consulted by template identity
before any invocation, profile-disjoint validators, four
`run-<tool>-native --language` commands, fail-fast on an empty population
or a missing pinned activation artifact, and the no-benchmark-models gate
over activation shapes pinned literally by tests.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@DavidBakerEffendi
DavidBakerEffendi merged commit ce371d3 into main Aug 27, 2026
2 checks passed
@DavidBakerEffendi
DavidBakerEffendi deleted the dave/native-profile-infra branch August 27, 2026 13:36
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