Repository navigation
fix(synapse): scope changeset reads and bound authorization audit - #126
Conversation
|
Premerge focused host verification exposed advisory_snapshot_parity failure: the scoped lookup had changed own-repository snapshot errors and broke the retained 3d78efe transcript digest. Fixed by checking repository identity first, then retaining the established own-repository visibility diagnostic. The complete synapse-api/auth/wire/git focused suites now pass, including the original unchanged frozen transcript. Read-only review also identified GitHub PR projection lookup was unscoped; it now uses get_changeset_in_repo with a foreign-store rejection control and valid projection positive control. crumb verify passed. Alert #47 alone (deterministic nonce in a test-only helper at f1_capability_chains.rs:241) was dismissed as used in tests with explicit Drake/Main authorization and consultant evidence; no other alerts or gates changed. Local logs: /tmp/secship-b/logs/synapse-tests-fixed.log and synapse-projection.log (local observations, not published immutable receipts). No GPU, model, deployment, or historical evidence mutation. |
Findings
Local regression evidence
nice -n 19 cargo test --locked -j2 -p synapse-api repository_grant_cannot_read_foreign_changesets_in_mixed_storePASS (1);nice -n 19 cargo test --locked -j2 -p synapse-auth auditPASS (4);nice -n 19 cargo test --locked -j2 -p synapse-wire auditPASS (2);nice -n 19 cargo test --locked -j2 -p synapse-auth chained_authorization_backpressures_before_evaluating_requestPASS (1). Existing own-repository get/provenance, virtual-tree Git parity, valid wire have-want/accepted durable submission, and audit chain verification serve as positive controls. Unknown changeset yields the same not-found as a foreign ID. Full audit rejects before nonce/rate mutation and before Submit envelope decode.Limitations
Audit is hash-chained and in-memory, not automatically persisted or signed. On full audit it refuses all further authorization until the operator durably preserves and inspects the complete log and starts a fresh enforcer. Reconnecting peers cannot grow audit without bound but can cause fail-closed availability refusal; no deployed listener or durable audit sink was qualified. No merge or deployment is requested.
SecCiReceipts S3: pinned verifier build isolation
Both PR checks and Alpha jobs move the pinned verifier source outside the candidate tree before Cargo runs, build from that external working directory, and explicitly select
$RUNNER_TEMP/aien-test-target. The installed executable comes only from that path. The cache retains registry/git dependencies only, not compiled targets, and uses the newaien-test-isolated-v1namespace so old candidate-configured build caches cannot restore verifier output. Candidate portable gates, trust anchors, verifier pin and Alpha full-bundle requirements are unchanged.Offline regression proof
Local shell replay with Cargo 1.98.1 and rustc 1.98.1 used a dependency-free
aien-testfixture,CARGO_NET_OFFLINE=true,CARGO_BUILD_JOBS=2, andnice -n 19. It replayed the exact workflow move/build shell in each of thechecksandalphajobs..cargo/config.tomlsets a marker-writing, exit-87build.rustc-wrapperand redirectsbuild.target-dirTRUSTED-FIXTURE; executable built under the explicit runner-temp target; candidate poison target absentFinal oracle line:
S3 OFFLINE WORKFLOW PROBE PASS: every before/after/negative assertion passed. These are local fixture observations, not a full pinned aien-test build, a GitHub Actions run, or Alpha/hardware qualification. The local scratch files are not a published durable receipt. No GPU, live endpoint, merge or deployment was used.S3 source baseline: `81ce993d9045353ed61a5e096b46447f4ddac08c
Wall time: 1.33 seconds
. S3 workflow commit:fa0faee`.Pending guide update: aien-dev/omega-harness#19 documents the out-of-tree Cargo CWD, explicit target, dependency-only cache and wrapper negative-control rule.