Repository navigation
Phase 0 (7/9): Signal/X3DH/KNOCK + isolation conformance corpus - #41
Closed
Pal Lakatos-Toth (pallakatos) wants to merge 1 commit into
Closed
Pal Lakatos-Toth (pallakatos) wants to merge 1 commit into
Pal Lakatos-Toth (pallakatos) wants to merge 1 commit into
Conversation
Per docs/implementation-plan.md §5.4. Behavioral conformance corpus — the net that catches 'endpoint returned 200 but skipped the crypto step' bugs. tests/conformance/ layout - package.json / tsconfig.json / vitest.config.ts — own workspace, fork-isolated pool so ratchet state doesn't leak across specs. - README.md — corpus table (9 corpora across Phases 0, 1, 3), provider-axis rule (plan §11.3), invariant discipline. - fixtures/README.md — vendored-source policy per principle §0.2 #10. - harness/index.ts — empty scaffold; helpers land per-PR. Phase 0 specs (all 'it.todo', 59 invariants total — vitest reports 59 todo / 0 pass / 0 fail, no false-green): - signal-x3dh.spec.ts (14) — key-exchange shape, symmetric ratchet invariants, base64 input hygiene (vendor patches #3, #4). - signal-knock.spec.ts (15) — KNOCK happy-path, trust threshold, relay disruption, wire-shape parity (vendor patches #5, #7, #8, #1/#2 timestamps, vendored<->AGT byte-identical KNOCK). - signal-negative.spec.ts (13) — ciphertext integrity, replay, session clobber (vendor patch #10), DoS surfaces. - sandbox-isolation.spec.ts (17) — seccomp, Landlock, egress-guard, router-as-only-network-path. Guarded by CONFORMANCE_E2E=1 (requires Kind; compat suite Kind harness wires it in Phase 1). Principle §0.2 #8 ('solid, not look-alike'): it.todo is a documented pending assertion, not a silently-passing no-op. Each spec's top comment cites the vendor patch or production bug it exists to prevent recurring. Principle §0.2 #10: every invariant that references an external protocol cites its upstream source (libsignal, RFC3339 'Z' suffix, Signal Double Ratchet spec) either inline or in the README. ci/no-stubs.sh already allow-lists tests/ subtrees; gate remains PASS. No new dependencies outside the pinned vitest / typescript / @types dev-deps already used by tests/compat/. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Collaborator
Author
|
Closing in favor of an integrated validation on the |
Pal Lakatos-Toth (pallakatos)
deleted the
phase0/conformance-corpus-signal
branch
April 27, 2026 12:58
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.
Phase 0 · conformance corpus skeleton
Adds a behavioural-conformance test workspace with 59
it.todoinvariants covering the Signal/X3DH/KNOCK stack and sandbox isolation.tests/conformance/package.json,tsconfig.json,vitest.config.ts(forks pool — prevents ratchet/session state leakage between specs).specs/signal-x3dh.spec.ts— 14 invariants (key-exchange, ratchet, base64 hygiene; cites vendor patches fix(entrypoint): pre-create OpenClaw temp dirs and fix router log redirect #3, feat: replace hand-rolled governance.rs with agent-governance-toolkit dependency #4).specs/signal-knock.spec.ts— 15 invariants (KNOCK happy-path, trust threshold, wire-shape parity; cites patches security: content safety and prompt shields fail-open is a bypass risk #5, security: inference requests bypass policy evaluation entirely (CRITICAL) #7, security: sub-agent spawn not gated by policy or trust score #8, Bump jsonwebtoken from 9.3.1 to 10.3.0 #1/chore(deps): bump rustls-webpki from 0.103.9 to 0.103.10 #2).specs/signal-negative.spec.ts— 13 invariants (tamper, replay, session-clobber per patch security: inter-agent mesh messages bypass policy evaluation after decryption #10, DoS).specs/sandbox-isolation.spec.ts— 17 invariants (seccomp/Landlock/egress-guard; guarded byCONFORMANCE_E2E=1).harness/index.ts+fixtures/README.mdplaceholders.Why
it.todoPrinciple §0.2 #8 (no false-green). Real assertions land when each Phase 1 provider impl arrives; the skeleton commits to the shape of the invariants so those impls can't silently drop one.
Verification
cd tests/conformance && npm test→ 59 todo / 0 pass / 0 fail.Stack
PR 7/9 — bases on
phase0/compat-agent-sandbox-design(PR 6).