S00-021: Record verified browser OMEMO backend blocker for S00-004
Changes: - Re-ran both committed probes unchanged (smoke exit 0 SMOKE_PASS; wasm-unsupported exit 2 UNSUPPORTED_BLOCKER) and recorded actual outputs in state/evidence/S00-021-auto-crypto-fcef9b6781bf.md. - Verified on the reachable npm proxy that no maintained browser/WASM-capable OMEMO2 package exists: @signalapp/libsignal-client 0.105.0 is native-only (zero .wasm); @signalapp/libsignal, omemo-client, omemo-top, omemo-wasm, @converse/omemo are all E404. - Wrote docs/decisions/0003-crypto-library.md (proposed) documenting the verified audited session/ratchet + persistence capability and the honest blocker for the browser/worker/WASM endpoint and OMEMO2 wire layer, with traceable primary sources. - Wrote state/handoffs/S00-021.md with the reproducible next step for the S00-004 continuation. Validation: - smoke.mjs -> exit 0 (SMOKE_PASS, 631-byte record byte-for-byte reload). - wasm-unsupported.mjs -> exit 2 (wasmFiles 0, native prebuilds only). - npm view E404s confirmed against the same proxy that returns @signalapp/libsignal-client 0.105.0, so responses are genuine. - make check: 72 tooling tests passed (OK). - No source changes outside scope: experiments/** unchanged; only state/tasks.json (workflow metadata) plus the in-scope ADR. S00-004 stays blocked (honest blocker), not bypassed. Task: S00-021 Agent: auto-crypto-fcef9b6781bf Role: crypto Action: claim Status: review Task title: Устранить прерывание: Проверить browser OMEMO backend
This commit is contained in:
1 parent
71675b1cc0
commit
30f7f222d2
8 files changed
+332
-8
No files matched your search
@@ -0,0 +1,14 @@
|
||||
Record verified browser OMEMO backend blocker for S00-004
|
||||
|
||||
Changes:
|
||||
- Re-ran both committed probes unchanged (smoke exit 0 SMOKE_PASS; wasm-unsupported exit 2 UNSUPPORTED_BLOCKER) and recorded actual outputs in state/evidence/S00-021-auto-crypto-fcef9b6781bf.md.
|
||||
- Verified on the reachable npm proxy that no maintained browser/WASM-capable OMEMO2 package exists: @signalapp/libsignal-client 0.105.0 is native-only (zero .wasm); @signalapp/libsignal, omemo-client, omemo-top, omemo-wasm, @converse/omemo are all E404.
|
||||
- Wrote docs/decisions/0003-crypto-library.md (proposed) documenting the verified audited session/ratchet + persistence capability and the honest blocker for the browser/worker/WASM endpoint and OMEMO2 wire layer, with traceable primary sources.
|
||||
- Wrote state/handoffs/S00-021.md with the reproducible next step for the S00-004 continuation.
|
||||
|
||||
Validation:
|
||||
- smoke.mjs -> exit 0 (SMOKE_PASS, 631-byte record byte-for-byte reload).
|
||||
- wasm-unsupported.mjs -> exit 2 (wasmFiles 0, native prebuilds only).
|
||||
- npm view E404s confirmed against the same proxy that returns @signalapp/libsignal-client 0.105.0, so responses are genuine.
|
||||
- make check: 72 tooling tests passed (OK).
|
||||
- No source changes outside scope: experiments/** unchanged; only state/tasks.json (workflow metadata) plus the in-scope ADR. S00-004 stays blocked (honest blocker), not bypassed.
|
||||
@@ -0,0 +1,93 @@
|
||||
# S00-021 - Eliminate interruption cause and prove S00-004 ready - Evidence
|
||||
|
||||
- Agent: `auto-crypto-fcef9b6781bf`
|
||||
- Role: crypto
|
||||
- Task: S00-021 "Устранить прерывание: Проверить browser OMEMO backend"
|
||||
- Remediation of: S00-004
|
||||
- Date-of-run: 2026-10-15
|
||||
|
||||
## 1. Reproduction of the two committed probes (run from project root)
|
||||
|
||||
Blocker cause recorded: "Agent timed out; process terminated before escalation".
|
||||
The probes from the S00-004 handoff were re-run unchanged to confirm the current,
|
||||
reproducible state.
|
||||
|
||||
### 1a. Known-answer session/ratchet + persistence probe
|
||||
```
|
||||
node experiments/0003-crypto-library/session-probe/smoke.mjs
|
||||
```
|
||||
Actual result (exit code 0):
|
||||
```
|
||||
[log:3] Building PreKeyWhisperMessage for: 796abedb-...-4214?.3 with preKeyId: 31337
|
||||
[log:3] decrypted PreKey message from <ACI:9d0652a3-...>.1 with current session state ...
|
||||
KAS_OK known plaintext: known vector: OMEMO session smoke
|
||||
KAS_OK established via sealed-sender PreKey session
|
||||
KAS_OK bob stored session bytes: 631
|
||||
SMOKE_PASS
|
||||
exit code: 0
|
||||
```
|
||||
Verified: an audited session/ratchet engine (real `@signalapp/libsignal-client`
|
||||
APIs) establishes a PreKey session, round-trips the known plaintext, stores a
|
||||
631-byte session record and reloads it byte-for-byte. No homegrown ratchet.
|
||||
|
||||
### 1b. Unsupported browser/WASM backend probe
|
||||
```
|
||||
node experiments/0003-crypto-library/session-probe/wasm-unsupported.mjs
|
||||
```
|
||||
Actual result (exit code 2):
|
||||
```
|
||||
pkgPresent: true
|
||||
wasmFiles: 0
|
||||
prebuilds: darwin-arm64, darwin-x64, linux-arm64, linux-x64, win32-arm64, win32-x64
|
||||
UNSUPPORTED_BLOCKER: no .wasm asset ships in @signalapp/libsignal-client; the
|
||||
distribution is a Node native addon (prebuilds/*/*.node). A browser worker/WASM
|
||||
deployment is NOT established by this npm package ...
|
||||
exit code: 2
|
||||
```
|
||||
Verified: the shipped distribution is native-only (`dist/Native.js` loads via
|
||||
`node-gyp-build`, `prebuilds/*/*.node`, zero `.wasm` files) and cannot run in a
|
||||
browser worker/WASM endpoint.
|
||||
|
||||
## 2. Registry/primary-source availability check (reachable npm proxy, 2026-10-15)
|
||||
|
||||
Queried with `npm view <pkg> version`; actual responses:
|
||||
|
||||
| package | actual response |
|
||||
| --- | --- |
|
||||
| `@signalapp/libsignal-client` | version 0.105.0, license AGPL-3.0-only (exists) |
|
||||
| `@signalapp/libsignal` | E404 Not Found |
|
||||
| `omemo-client` | E404 Not Found |
|
||||
| `omemo-top` | E404 Not Found |
|
||||
| `omemo-wasm` | E404 Not Found |
|
||||
| `@converse/omemo` | E404 Not Found |
|
||||
|
||||
No maintained browser/WASM-capable OMEMO or OMEMO2 package is available on the
|
||||
reachable registry. Signal's WASM web distribution (`@signalapp/libsignal`) is not
|
||||
published there. Access was established earlier (S00-020, S00-019) and the same
|
||||
proxy returns the real version for `@signalapp/libsignal-client`, so the E404
|
||||
responses are genuine, not a network outage.
|
||||
|
||||
## 3. Deliverable in scope
|
||||
|
||||
- Wrote `docs/decisions/0003-crypto-library.md` (proposed) recording the verified
|
||||
audited session/ratchet + persistence capability and the verified blocker for
|
||||
the browser/worker/WASM endpoint and the OMEMO2 wire layer, with traceable
|
||||
primary sources (docs/decisions/0003-crypto-library.md).
|
||||
- No source edits outside scope; no spec/plan/shared-contract change.
|
||||
|
||||
## 4. Focused checks
|
||||
|
||||
1. Reproduce interruption scenario -> both probes re-run: smoke exits 0
|
||||
(SMOKE_PASS), wasm-unsupported exits 2 (blocker line). Reproducible.
|
||||
2. No out-of-scope changes -> git working tree contains only workflow metadata
|
||||
(`state/tasks.json`) plus the in-scope ADR; `experiments/**` unchanged.
|
||||
|
||||
## 5. Honest conclusion
|
||||
|
||||
The audited session/ratchet engine and persistence are established (verified via
|
||||
known-answer probe). The browser/worker/WASM endpoint and the OMEMO2 wire layer
|
||||
are NOT available from any maintained package on the reachable registry and are
|
||||
recorded as a blocker (not success), consistent with ENC-009/ENC-011 and the
|
||||
crypto role rule "unsupported backend — blocker". S00-004 is thereby left with a
|
||||
documented, reproducible state and a clear next step rather than an
|
||||
interrupted/timeout dead-end; it is not declared done by bypassing requirements.
|
||||
@@ -0,0 +1,49 @@
|
||||
# Handoff S00-021 - Browser OMEMO backend remediation
|
||||
|
||||
Agent: `auto-crypto-fcef9b6781bf`
|
||||
Role: crypto
|
||||
Status: submitted for review
|
||||
Original: S00-004; remediation: S00-021 (blocker cause: "Agent timed out; process
|
||||
terminated before escalation").
|
||||
|
||||
## Result
|
||||
Re-ran both committed probes unchanged (exit 0 SMOKE_PASS; exit 2
|
||||
wasm-unsupported) and recorded the actual outputs. Documented the verified
|
||||
capability (audited session/ratchet engine + session-record persistence via
|
||||
`@signalapp/libsignal-client`, no homegrown ratchet) and the verified blocker
|
||||
(browser/worker/WASM endpoint and the OMEMO2 wire layer are not available from
|
||||
any maintained package on the reachable registry; Signal's WASM distribution
|
||||
`@signalapp/libsignal` is E404 there). Wrote `docs/decisions/0003-crypto-library.md`
|
||||
(proposed) with traceable primary sources and honest boundaries.
|
||||
|
||||
## Outputs produced (all inside accepted scope)
|
||||
- `docs/decisions/0003-crypto-library.md` (proposed ADR).
|
||||
- `state/evidence/S00-021-auto-crypto-fcef9b6781bf.md` (this run's evidence).
|
||||
- No source changes elsewhere; `experiments/0003-crypto-library/**` unchanged.
|
||||
|
||||
## Evidence (actual, this run)
|
||||
- `node experiments/0003-crypto-library/session-probe/smoke.mjs` -> exit 0,
|
||||
`SMOKE_PASS` (631-byte session record, byte-for-byte reload).
|
||||
- `node experiments/0003-crypto-library/session-probe/wasm-unsupported.mjs` ->
|
||||
exit 2, `UNSUPPORTED_BLOCKER`, `wasmFiles: 0`.
|
||||
- `npm view` on reachable proxy: `@signalapp/libsignal-client` = 0.105.0
|
||||
(AGPL-3.0-only); `@signalapp/libsignal`, `omemo-client`, `omemo-top`,
|
||||
`omemo-wasm`, `@converse/omemo` = E404.
|
||||
|
||||
## Honest status
|
||||
S00-004 is NOT done; it remains blocked on the browser/worker/WASM OMEMO2
|
||||
backend. This remediation documents that blocker truthfully so the next executor
|
||||
has a reproducible state and a clear next step, instead of re-doing research and
|
||||
timing out again. No requirement bypass; unsupported format recorded as blocker.
|
||||
|
||||
## Next input for S00-004 continuation
|
||||
1. Confirm `node experiments/0003-crypto-library/session-probe/smoke.mjs` (0) and
|
||||
`.../wasm-unsupported.mjs` (2).
|
||||
2. Obtain a verified browser/WASM-capable OMEMO2 backend (real `.wasm`/web build
|
||||
with an OMEMO2/S ce-format mapping) and run a known-answer roundtrip in the
|
||||
web target; or
|
||||
3. Escalate with traceable upstream primary sources resolving ENC-009/ENC-011
|
||||
client-endpoint encryption for the browser transport.
|
||||
4. Only then may acceptance-1 (legacy/OMEMO2 AND worker/wasm AND persistence) be
|
||||
re-evaluated; do not declare S00-004 done on the persistence+Ratchet part
|
||||
alone.
|
||||
+31
-4
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"schema_version": 1,
|
||||
"revision": 57,
|
||||
"revision": 59,
|
||||
"tasks": {
|
||||
"S00-001": {
|
||||
"status": "done",
|
||||
@@ -1279,10 +1279,14 @@
|
||||
"updated_at": "2026-10-15T07:27:20+00:00"
|
||||
},
|
||||
"S00-021": {
|
||||
"status": "todo",
|
||||
"owner": null,
|
||||
"status": "review",
|
||||
"owner": "auto-crypto-fcef9b6781bf",
|
||||
"external_wait": false,
|
||||
"reason": null
|
||||
"reason": null,
|
||||
"started_at": "2026-10-15T08:32:48+00:00",
|
||||
"updated_at": "2026-10-15T08:38:43+00:00",
|
||||
"evidence": "state/evidence/S00-021-auto-crypto-fcef9b6781bf.md",
|
||||
"handoff": "state/handoffs/S00-021.md"
|
||||
}
|
||||
},
|
||||
"events": [
|
||||
@@ -2017,6 +2021,29 @@
|
||||
"from": "in_progress",
|
||||
"to": "blocked",
|
||||
"reason": "Agent timed out; process terminated before escalation"
|
||||
},
|
||||
{
|
||||
"revision": 58,
|
||||
"at": "2026-10-15T08:32:48+00:00",
|
||||
"action": "claim",
|
||||
"task": "S00-021",
|
||||
"agent": "auto-crypto-fcef9b6781bf",
|
||||
"role": "crypto",
|
||||
"from": "todo",
|
||||
"to": "in_progress",
|
||||
"reason": null
|
||||
},
|
||||
{
|
||||
"revision": 59,
|
||||
"at": "2026-10-15T08:38:43+00:00",
|
||||
"action": "submit",
|
||||
"task": "S00-021",
|
||||
"agent": "auto-crypto-fcef9b6781bf",
|
||||
"role": null,
|
||||
"from": "in_progress",
|
||||
"to": "review",
|
||||
"reason": null,
|
||||
"evidence": "state/evidence/S00-021-auto-crypto-fcef9b6781bf.md"
|
||||
}
|
||||
],
|
||||
"retired_agents": [
|
||||
|
||||
Reference in new issue
Block a user