mirror of
https://github.com/norandom/OpenUltraSAST.git
synced 2026-10-18 20:49:28 +00:00
199 lines
14 KiB
Markdown
199 lines
14 KiB
Markdown
# Group 6 implementation and verification
|
||
|
||
The maintainer authorized 6.1–6.4 together on 2026-09-13. A fresh implementer dispatch
|
||
failed with `agent thread limit reached`; the explicit kiro-impl manual fallback applies.
|
||
Reviews below are main-context adversarial reviews, not independent reviewer evidence.
|
||
The design amendment makes measured preparation/discovery costs explicit. Rollout gates
|
||
and the empty default capability registry are unchanged.
|
||
|
||
## Task 6.1 brief
|
||
|
||
Requirements 4.2, 4.3, 4.4 and 7.3; design: Cache and Engine Boundary.
|
||
Backend-owned identities bind readable source paths/bytes, declarations, exclusions,
|
||
frontend/engine versions, overlay implementation and options. Complete graphs require a
|
||
named source census, methods, calls and the dataflow overlay. Loading checks identity and
|
||
streamed graph digest, then issues a disposable copy through the existing CpgResult driver
|
||
contract. Old structural manifests without source paths cannot qualify. Sharded or partial
|
||
graphs cannot qualify. Query locations normalize to repository-relative paths.
|
||
|
||
## Status Report
|
||
- STATUS: READY_FOR_REVIEW
|
||
- TASK: 6.1
|
||
- RED_PHASE_OUTPUT: `/tmp/group6-1-red.log` and `/tmp/group6-1-flag-off.log`: four failures before implementation/with the temporary switch OFF. ON passed; switch removed and five final tests passed.
|
||
- TESTS_RUN: 105 focused tests passed; full suite 1246 passed, 9 skipped (105.31s), followed by the final additional driver integration test and focused rerun. Ruff and mypy passed.
|
||
- EVIDENCE: source-mounted nonroot Docker Joern 4.0.625, network disabled, 3 GiB limit: read 45 JavaScript bytes, census 1 file/4 methods/3 calls, sealed graph loaded through a disposable lease, original digest unchanged after query and cleanup. This is a correctness control, not a latency benchmark.
|
||
- CONCERNS: persistent publication and runner selection belong to 6.2–6.4; this task provides the validated backend lease contract. Main-context review fallback.
|
||
|
||
## Review Verdict
|
||
- VERDICT: APPROVED
|
||
- TASK: 6.1
|
||
- MECHANICAL_RESULTS: focused tests, full regression suite, ruff, mypy and diff whitespace checks passed; no introduced placeholders or secrets.
|
||
- FINDINGS: review repaired unbounded full-graph buffering to streamed hashing/copy; unreadable source walks fail explicitly; single PHP graph census passes through unchanged while sharded graphs cannot seal. Existing driver accepts and releases the leased CpgResult.
|
||
- SUMMARY: Backend identity and isolated leases satisfy task 6.1 within the approved boundary.
|
||
|
||
## Verification Result
|
||
- STATUS: VERIFIED
|
||
- CLAIM_TYPE: TASK
|
||
- CLAIM: Task 6.1 identity and lease behavior, not persistent runner reuse or rollout readiness.
|
||
- EVIDENCE: tests/test_graph_reuse.py, 105 focused passing tests, full suite and real Joern control above; measurement JSON retained in benchmarks/measurements/2026-09-13-graph-lease-control.json.
|
||
- GAPS: Warm push feasibility and independent capability eligibility remain unproven.
|
||
|
||
## Task 6.2 brief and review
|
||
|
||
Requirements 4.1, 4.3, 4.4 and 7.3; design: Cache and Engine Boundary. Private
|
||
0700 cache roots, 0600 files, fixed lock stripes plus a publication lock, streamed payload
|
||
digests, manifest receipts, atomic completed directory publication and size accounting
|
||
(payload plus manifests) implement local storage. Incomplete data is never published as
|
||
complete. A lookup holds a shared lease; eviction requires an exclusive lock and skips
|
||
leased entries. Abandoned private partials count toward the limit and can be reclaimed.
|
||
All lock waits and copying check the caller's absolute deadline; cleanup uses its allowance.
|
||
No graph node mutation, executable deserialization or repository writes are introduced.
|
||
|
||
## Status Report
|
||
- STATUS: READY_FOR_REVIEW
|
||
- TASK: 6.2
|
||
- RED_PHASE_OUTPUT: `/tmp/group6-2-red.log`: seven tests failed with the temporary cache switch OFF. ON passed; switch removed; nine final cache tests passed.
|
||
- TESTS_RUN: 13 cache/audit tests passed, full suite 1256 passed and 9 skipped (104.11s); ruff and mypy passed. Final receipt-validation repair was followed by the 13-test focused rerun.
|
||
- EVIDENCE: concurrent subprocess writers, corrupted payload/manifest, interrupted atomic replace, abandoned partial files, bounded lock contention, leased eviction, unsafe paths and preservation of consumer exceptions.
|
||
|
||
## Review Verdict
|
||
- VERDICT: APPROVED
|
||
- TASK: 6.2
|
||
- MECHANICAL_RESULTS: canonical suite and final focused regression passed; static checks and diff whitespace passed; no new placeholders or secrets.
|
||
- FINDINGS: review added metadata receipt validation and fixed contextmanager exception ownership; lock inodes are retained in 64 bounded stripes to avoid unlink/recreate races. Storage size means bytes of payloads/manifests, not filesystem allocation overhead.
|
||
- SUMMARY: Complete publication or explicit miss is preserved through tested concurrency, corruption and interruption paths.
|
||
|
||
## Verification Result
|
||
- STATUS: VERIFIED
|
||
- CLAIM_TYPE: TASK
|
||
- CLAIM: Task 6.2 bounded local artifact publication and eviction.
|
||
- EVIDENCE: nine cache contract tests and full suite above; production cache implementation, not a mocked storage path.
|
||
- GAPS: Semantic keys and live replay integration follow in 6.3 and 6.4; no warm-latency claim.
|
||
|
||
## Task 6.3 brief
|
||
|
||
Requirements 3.4, 4.3, 4.4, 6.4, 7.2 and 7.3; design: Cache and Engine Boundary
|
||
and Admission Policy. Query keys include graph, actual question parameters/context/depth,
|
||
facts/sanitizers, query versions and configuration. Comparison/final keys additionally bind
|
||
ranking, admission, optional model/prompt, eligibility and mode; comparisons include both
|
||
revisions and actual completed evidence. Ranking-only changes preserve query keys.
|
||
|
||
Comparison reuse is integrated into the existing policy entry point. Only complete, comparable
|
||
evidence can populate/look up comparisons. Unknown outcomes never qualify. Loaded CandidateDelta
|
||
contracts must match revision and semantics ownership. Current admission still runs afterwards;
|
||
the cache never confers eligibility. JSON decoding is non-executable and bounded to 32 MiB.
|
||
|
||
## Status Report
|
||
- STATUS: READY_FOR_REVIEW
|
||
- TASK: 6.3
|
||
- RED_PHASE_OUTPUT: `/tmp/group6-3-red.log`: two failing semantic-key tests with switch OFF; `/tmp/group6-3-policy-red.log`: missing policy cache integration failed. Enabled implementation passed; switch removed.
|
||
- TESTS_RUN: 71 focused policy/admission/cache tests passed; full suite 1260 passed, 9 skipped in 103.17s. Final ruff, formatting and mypy passed.
|
||
- EVIDENCE: real on-disk comparison hit returns identical supported delta; policy/revision changes miss; unanswered comparisons do not populate complete entries; exhaustive key-dimension and final-scope invalidation tests.
|
||
|
||
## Review Verdict
|
||
- VERDICT: APPROVED
|
||
- TASK: 6.3
|
||
- MECHANICAL_RESULTS: full regression suite, 71 focused tests, static checks and whitespace checks passed; no new placeholders or secrets.
|
||
- FINDINGS: cache does not store or replay push permission. Comparison data remains separate from current admission. Query reuse deliberately ignores ranking-only/mode changes, whereas comparison/final keys include them. Decoder and deadline checks were tightened during review.
|
||
- SUMMARY: Semantic identities preserve compatible evidence without transferring obsolete policy eligibility.
|
||
|
||
## Verification Result
|
||
- STATUS: VERIFIED
|
||
- CLAIM_TYPE: TASK
|
||
- CLAIM: Task 6.3 semantic keys and completed comparison evidence reuse.
|
||
- EVIDENCE: production policy integration and cache key tests, 1260 passing suite tests and final static checks.
|
||
- GAPS: Graph/query/preparation reuse must still be connected to replay under 6.4; no rollout claim.
|
||
|
||
## Task 6.4 brief
|
||
|
||
Requirements 1.1, 2.2, 4.1, 4.2, 4.3, 4.4 and 7.3; design: Push Runner and
|
||
Cache and Engine Boundary. Explicit `--cache-dir` integrates the three cache layers;
|
||
omitting it preserves a cold replay control. Complete immutable snapshots are still read
|
||
and verified by the adapter before persisted discovery can be used. Equal base/head revisions
|
||
share one live materialization. Discovery keys include exact file identities and shipped code/facts;
|
||
dependency/declaration changes invalidate them. Graph units remain the existing physical frontend
|
||
partitions. Source changes rebuild the affected unit; all declaration and exclusion context is
|
||
bound. There is no incremental graph mutation or changed-file scope selector.
|
||
|
||
The runner uses backend-issued copies and per-question cached raw answers, then runs the existing
|
||
ranker, arbiter, comparison and current admission. Partial answers are not promoted to complete
|
||
lookups. Complete answers already returned by the engine remain available when persistence cannot
|
||
finish. Query keys include actual parameters and graph bytes; graph keys do not include unrelated
|
||
ranking/security-fact versions. Layout/exclusion facts and frontend adaptation bytes do affect them.
|
||
Integration review repaired the task 6.1 identity to include installed frontend/adaptation bytes,
|
||
rather than relying only on Joern's release label. This is an owning-contract repair, not a new
|
||
frontend or a detector change.
|
||
|
||
The first source-mounted/package integration trial is retained separately from the final
|
||
frozen image run. It showed equal cached/uncached evidence and admission (including one
|
||
new JavaScript injection candidate), a 1.23-second identical-revision hit, and a 30.48-second
|
||
dependency-edit timeout. Those numbers are preliminary control evidence, not the final image
|
||
or rollout measurements. Final review also binds installed runtime identity into admission
|
||
semantics, while avoiding a second backend instance or an unbudgeted availability probe.
|
||
|
||
The cache entry lease ends after its validated bytes are copied into the backend's independent
|
||
working lease. The working copy remains valid if storage later evicts the original entry;
|
||
queries never operate on the stored original. Partial fresh answers cannot borrow a cached
|
||
answer's census. Pure discovery remains in the existing bounded child process; persisted
|
||
JSON is decoded as data, never executable objects.
|
||
|
||
## Status Report
|
||
- STATUS: READY_FOR_REVIEW
|
||
- TASK: 6.4
|
||
- RED_PHASE_OUTPUT: `/tmp/group6-4-red.log`: graph/query reuse and replay discovery/cache-location tests failed before integration (temporary switch OFF). Enabled implementation passed; switch removed. Additional regressions cover mixed cached/fresh census failure and installed runtime provenance.
|
||
- TESTS_RUN: 89 final focused tests passed; full suite 1268 passed, 9 skipped in 108.74s. Ruff, formatting, mypy (114 source files), compileall, detection/map/pair gates and Docker build/packaged CLI smoke passed.
|
||
- EVIDENCE: final packaged JavaScript control exited 0 with exact cached/uncached scope, question outcomes, findings and admission equality. One new injection is retained as diagnostic evidence and denied normal admission by the empty registry. Source/dependency edits invalidate graph reuse and retain timed-out coverage artifacts.
|
||
- CONCERNS: identical-revision hits are development correctness controls, not representative warm p95 or capability qualification. Main-context review fallback remains explicit.
|
||
|
||
## Review Verdict
|
||
- VERDICT: APPROVED
|
||
- TASK: 6.4
|
||
- MECHANICAL_RESULTS: canonical tests and regression gates passed; final image reached the usable CLI and completed real replay controls. No introduced placeholders, secrets or boundary violations found.
|
||
- FINDINGS: installation-byte identity now also binds comparison/admission provenance. The predecessor no-unbudgeted-probe regression caught an unnecessary backend instance in provenance; the repair uses a pure runtime-identity function and the final regression passes. Mixed fresh/cached answers require the fresh query's own valid census before being retained as complete. Snapshot reads, discovery, ranker/driver selection, vendor boundary and independent push/coverage status remain intact.
|
||
- SUMMARY: Task 6.4 integrates valid local reuse and truthful misses under the existing transaction deadline without changing detection or admission rules.
|
||
|
||
## Verification Result
|
||
- STATUS: VERIFIED
|
||
- CLAIM_TYPE: TASK
|
||
- CLAIM: Group 6 implementation (6.1–6.4), with compatible replay evidence and admission equivalence.
|
||
- EVIDENCE: final tests/static checks, native packaged Joern controls, and committed measurement record below.
|
||
- GAPS: Rollout remains NO-GO. Groups 7–8, representative changed-code completion/p95 and independent capability qualification remain pending. Automatic projection limitations are unchanged.
|
||
|
||
## Final packaged evidence
|
||
|
||
Image: `sha256:6622b846996989a321d81bfa6c25e792e3f217984d7ede66f830cff1206a634c`.
|
||
Nonroot, network disabled, 3 GiB memory; controls ran serially without concurrent
|
||
tests/builds. Filesystem cache was not flushed. Each case is one development control,
|
||
not a representative p95 population.
|
||
|
||
| Run | Full CLI seconds | Graph hits | Query-answer hits |
|
||
|---|---:|---:|---:|
|
||
| populate | 154.848 | 0 | 0 |
|
||
| warm-identical | 2.002 | 2 | 37 |
|
||
| uncached | 130.432 | 0 | 0 |
|
||
| dependency-edit | 30.458 | 0 | 0 |
|
||
| one-function-edit | 30.479 | 0 | 0 |
|
||
| uncached, same revisions, 30s budget | 30.606 | 0 | 0 |
|
||
|
||
Cached and uncached laboratory runs have **equal scope, question outcomes, findings and
|
||
admission**, including the known introduced JavaScript injection. The 30-second identical
|
||
cached run retains that same evidence: one completed supported head injection check plus
|
||
four base comparison checks. The same revisions without caching complete zero checks in
|
||
the 30-second control. All six CLI artifacts were retained, including timed-out edits.
|
||
Warm source/dependency edits correctly invalidate the affected graph and produce incomplete
|
||
coverage; they do not replay the old answer. The empty normal capability registry denies the
|
||
new diagnostic candidate for `capability_unavailable`; this is not a clean repository verdict.
|
||
|
||
The manifest, full artifacts and stdout/stderr are retained in
|
||
`benchmarks/measurements/2026-09-13-reuse-control.json` and the associated final/initial
|
||
compressed bundles. Each bundle maps original filenames to exact UTF-8 content; decompression
|
||
was compared with the original files and SHA-256 hashes recorded. The committed reusable
|
||
harness is `benchmarks/push/reuse_control.py`; the extra same-revision 30-second uncached
|
||
command is recorded in the final bundle.
|
||
|
||
**Group 6 implementation: verified. Rollout: NO-GO.** Changed-code feasibility remains
|
||
unmet in these controls, and independent precision/recall/capability populations have not
|
||
qualified. The spec now explicitly requires stage-level investigation of remaining timeouts
|
||
under task 8.2, retaining its original thresholds and population rules. Group 7 is next;
|
||
no hook has been installed and no normal capability enabled.
|