VSO announcements
VCP / VSO · Announcement ·

VSO publishes five research updates on service permission and receiver evidence history

On 2 November we checked the published source and CI logs for Evidect #30–#34, merged on 1 November. These synthetic experiments cover service permission, saved-report verification, checkpoint expiry, generations, key revocation and receiver rollback checks. The experiments were not rerun for this announcement.

Research status — unadopted; independent reproduction not established

Experimental extensions remain unadopted; independent third-party reproduction is not established. First-party CI and saved-evidence rechecks are distinct from independent fresh execution, adoption, full conformance, production assurance or certification. Separate processes, databases and signing keys do not by themselves establish independent administration.

1. #30: check user delegation and service permission separately

A wrapper around the unchanged synthetic gate requires both user delegation and current service permission. Provider, model, destination and channel are bound to the request; each fallback or non-AI continuation needs its own request and approval. The fixed ten-case experiment uses synthetic labels and an owned in-memory tool, not live banks, model connections or actual provider permission. A negative control re-signs consistently falsified observations with the fixture key: the original checkpoint rejects them, while separately adopting a matching new checkpoint can permit a narrow consistency result. Signatures alone do not establish truthful observations. This is a later bounded implementation of the three questions recorded as future work in #29.

Change / source commit: evidect-site PR #30 · 4e41e0a014d2989ff22029ccd3aca5d38b0b876d · First-party CI record

2. #31: verify saved ten-case reports at the receiver

The receiver verifies a signed receipt against separately selected trust and checkpoint, then binds the exact report size and SHA-256. It checks stored attempt order, routes, decisions and totals, but does not rerun the original operation. Original requests/approvals, historical delegation and service permission, request-to-route binding and nonce use remain NOT_REVERIFIED. local_status: VALID means narrow saved-content consistency, not safety. Overall status remains INDETERMINATE except known invalidity or mismatch. The one-hour demo checkpoint lifetime is separate from the fourteen-day CI artifact retention.

Change / source commit: evidect-site PR #31 · eebb1f067da6fa596cb14320010cc0e16c2047c5 · First-party CI record

3. #32: retain evaluation time and checkpoint identity

The eight-case and ten-case receiver reports now record a shared evaluation time, canonical checkpoint SHA-256 identifier and expiry. The exact expiry boundary is not accepted as valid; known mismatch (INVALID) is distinct from expired trust (INDETERMINATE). Signed input formats are preserved. Outputs remain unsigned first-party experimental reports; neither a local clock nor a checkpoint hash establishes independently attested time or an external trust anchor.

Change / source commit: evidect-site PR #32 · c6c8d0bd0c3b3da4e3c542a8bf9d0508c6532678 · First-party CI record

4. #33: keep receiver-owned generations and local key revocations

A separate opt-in experiment stores per-stream generation high-water marks and local key revocations in explicitly provisioned and adopted SQLite state. It rejects older generations, same-generation conflicts and revoked signers, and rereads state after verification. Missing, corrupt or locked state is not silently recreated as success. A negative control shows that privileged restoration of the entire database defeats this local protection. This is not rollback-proof storage or an external revocation authority.

Change / source commit: evidect-site PR #33 · 51bfeb90197af7eb0a565b2da7a069aea545d281 · First-party CI record

5. #34: challenge a separate saved state to detect receiver-only rollback

A fresh receiver-generated 256-bit challenge binds the stream and exact package/report digests to an Ed25519-signed response from a separate SQLite store and key. Checks reject a receiver behind the witness, same-generation conflicts, retained signer revocation, replayed responses and wrong keys. Witness lag or unavailability never falls back to local success. Test transport uses a separate child on the same host, not an independently operated remote service. The both-stores-restored negative control can regain local consistency while overall status remains INDETERMINATE. Witness compromise, both-store rollback, post-response changes, witness-key revocation and authenticated network transport remain outside the guarantee.

Change / source commit: evidect-site PR #34 · eeeacf7effc8103276106dcf606b2bafb7349081 · First-party CI record

Latest first-party CI: 306 successful tests per OS

Logs for merged commit eeeacf7 confirm 306 successful tests on each of Ubuntu 24.04 and macOS 15: 44 added by #34 (32 contract + 12 integration) and 262 existing tests, using Node.js 22 and Python 3.12. Counts are not added across OS jobs. Contract tests include explicitly stubbed collaborators; integration tests use actual signed receipts, existing eight/ten-case producers, two SQLite stores and a local child process. The alternative #35 was closed unmerged; its results are not substituted for evidence about this merged version.

Change / source commit: evidect-site PR #34 · eeeacf7effc8103276106dcf606b2bafb7349081 · First-party CI record

Preserve historical records, including the 137-test checkpoint

The 1 November #28/#29 announcement and its 137 tests / eight cases remain unchanged as records of that version. The 306 tests cover the later version, not a sum of historical or cross-OS results. Prior 53-case, Explorer API 159 / GUI 26 and other records and fixed distributions remain intact. This website update adds explanatory content and links only; current normative requirements, schemas, existing implementations, signed data, fixed distributions and K3 are unchanged.

Read the 1 November 137-test record