S00-004: Record blocked task and remediation handoff
Changes: Preserve incomplete work and blocker metadata for S00-004. This checkpoint does not mark implementation accepted. Validation: Session ended with status blocked. Blocker: Agent timed out; process terminated before escalation Task: S00-004 Agent: auto-crypto-8bf3dcf711b9 Role: crypto Action: claim Status: blocked Task title: Проверить browser OMEMO backend
This commit is contained in:
1 parent
3784fa7b99
commit
71675b1cc0
16 files changed
+711
-14
No files matched your search
@@ -0,0 +1,22 @@
|
||||
# Blocker S00-021
|
||||
|
||||
- Original task: S00-004
|
||||
- Root task: S00-004
|
||||
- Reporter: auto-crypto-8bf3dcf711b9
|
||||
- Role: crypto
|
||||
- Original owner: auto-crypto-8bf3dcf711b9
|
||||
- Waits for user/external condition: False
|
||||
|
||||
## Cause
|
||||
|
||||
Agent timed out; process terminated before escalation
|
||||
|
||||
## One remediation outcome
|
||||
|
||||
Устранить одну указанную причину прерывания и доказать готовность исходной задачи к новому запуску; не выполнять соседние задачи.
|
||||
|
||||
## Evidence / reproduction
|
||||
|
||||
See original handoff and task evidence.
|
||||
|
||||
The reporting agent must stop now. A new agent implements only S00-021.
|
||||
@@ -0,0 +1,105 @@
|
||||
# S00-004 - Browser OMEMO backend spike - Evidence
|
||||
|
||||
- Agent: `auto-crypto-8bf3dcf711b9`
|
||||
- Role: crypto
|
||||
- Task: S00-004 "Проверить browser OMEMO backend"
|
||||
- Date-of-run: 2026-10-15
|
||||
|
||||
## 1. Known-answer session/ratchet + persistence probe (PASS)
|
||||
|
||||
Command and result:
|
||||
|
||||
```
|
||||
cd experiments/0003-crypto-library
|
||||
node session-probe/smoke.mjs
|
||||
```
|
||||
|
||||
Actual output (native libsignal trace + KAS lines):
|
||||
|
||||
```
|
||||
[log:3] Building PreKeyWhisperMessage for: 796abedb-...-4214?.3 with preKeyId: 31337 (session created at 1792052846)
|
||||
[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
|
||||
```
|
||||
|
||||
What is shown: using the canonical real library API
|
||||
(`sealedSenderEncryptMessage`/`sealedSenderDecryptMessage`) an independent
|
||||
A/B pair established a PreKey session; the exact known plaintext string
|
||||
(`known vector: OMEMO session smoke`) round-tripped; the decrypted-stored
|
||||
session record serialized to 631 non-empty bytes and reloaded byte-for-byte
|
||||
via `SessionRecord.deserialize`.
|
||||
|
||||
Verified capability: session/ratchet establishment and session-record
|
||||
persistence on a real, unmodified, audited Signal session library. **No
|
||||
homegrown ratchet.**
|
||||
|
||||
## 2. Unsupported format/backend probe (BLOCKER, exit 2)
|
||||
|
||||
Command and result:
|
||||
|
||||
```
|
||||
cd experiments/0003-crypto-library
|
||||
node session-probe/wasm-unsupported.mjs
|
||||
```
|
||||
|
||||
Actual output:
|
||||
|
||||
```
|
||||
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
|
||||
```
|
||||
|
||||
What is shown: the only maintained, installable, audited session library in
|
||||
this registry (`@signalapp/libsignal-client@0.105.0`, AGPL-3.0-only) ships as a
|
||||
Node native addon and contains no WebAssembly asset. It therefore cannot execute
|
||||
in a browser worker as required by the Web client-endpoint.
|
||||
|
||||
## 3. OMEMO2 wire-format candidate search (no maintained package)
|
||||
|
||||
Registry queries (via proxy, real responses):
|
||||
|
||||
| package | result |
|
||||
| --- | --- |
|
||||
| `omemo2-js` | 404 Not Found |
|
||||
| `@oxjs/omemo` | 404 Not Found |
|
||||
| `omemo-wasm` | 404 Not Found |
|
||||
| `@signalapp/libsignal` | 404 Not Found |
|
||||
| `@signalapp/libsignal-client@0.105.0` | exists (AGPL-3.0-only, native addon) |
|
||||
| `signal-protocol@0.1.3` | exists (GPL-3.0, 2017-era, unmaintained; not a viable maintained OMEMO2 candidate) |
|
||||
|
||||
No maintained browser/WASM-capable OMEMO or OMEMO2 wire-format package is
|
||||
available on the reachable registry. `@signalapp/libsignal-client` provides the
|
||||
session/ratchet engine but does not provide the OMEMO/OMEMO2 XMPP wire mapping
|
||||
(ENC-009/ENC-011 SCE payload/key/MAC stanzas).
|
||||
|
||||
## 4. Honest conclusion (blocker, not success)
|
||||
|
||||
Feasible and verified:
|
||||
- Audited session/ratchet engine + secure session-record persistence (real API,
|
||||
known-answer roundtrip, no homegrown ratchet).
|
||||
|
||||
NOT established and therefore a blocker (per focused-check rule "unsupported
|
||||
format recorded blocker, not success"):
|
||||
- Browser/worker/WASM deployment: distribution is a Node native addon, zero
|
||||
`.wasm` assets; cannot run in the Web client endpoint.
|
||||
- OMEMO/OMEMO2 wire-format layer: no maintained browser-capable OMEMO2 package
|
||||
on the registry; raw `signalDecryptPreKey` re-initiation nuance observed during
|
||||
development was not treated as the acceptance path.
|
||||
|
||||
Task acceptance-1 requires legacy/OMEMO2 AND worker/wasm AND persistence. Two of
|
||||
the three are not established -> escalate a focused remediation that provides or
|
||||
records a verified browser/WASM-capable OMEMO backend and the OMEMO2 wire layer.
|
||||
|
||||
## Reproduction for reviewer
|
||||
- `node experiments/0003-crypto-library/session-probe/smoke.mjs` -> SMOKE_PASS (0)
|
||||
- `node experiments/0003-crypto-library/session-probe/wasm-unsupported.mjs` -> exit 2
|
||||
- `npm view omemo2-js version` -> 404 (proxy-connected registry)
|
||||
@@ -0,0 +1,54 @@
|
||||
# Handoff S00-004 - Browser OMEMO backend spike
|
||||
|
||||
Agent: `auto-crypto-8bf3dcf711b9`
|
||||
Role: crypto
|
||||
Status on handoff: escalated (blocker)
|
||||
|
||||
## Result
|
||||
A focused spike established that an audited Signal session library can provide
|
||||
the session/ratchet engine and session-record persistence **without a homegrown
|
||||
ratchet** (known-answer sealed-sender roundtrip, 631-byte record, reload
|
||||
byte-for-byte). However the same spike established that a browser/worker/WASM
|
||||
deployment and the OMEMO2 wire-format layer are **not available** from any
|
||||
maintained package on the reachable registry:
|
||||
- `@signalapp/libsignal-client@0.105.0` is a Node native addon with zero `.wasm`
|
||||
assets; it cannot run in the Web client endpoint.
|
||||
- No maintained `omemo2-js`/`omemo-wasm`/`@signalapp/libsignal`/OMEMO2 package
|
||||
exists on the registry.
|
||||
|
||||
Per focused-check rule ("unsupported format recorded blocker, not success") and
|
||||
the mandatory escalate protocol, the original task is blocked rather than
|
||||
claimed done.
|
||||
|
||||
## Outputs produced (all inside accepted scope experiments/0003-crypto-library/**)
|
||||
- `experiments/0003-crypto-library/package.json` (exact
|
||||
`@signalapp/libsignal-client@0.105.0`, `--ignore-scripts`).
|
||||
- `experiments/0003-crypto-library/session-probe/smoke.mjs` (known-answer probe,
|
||||
mirrors Signal canonical stores).
|
||||
- `experiments/0003-crypto-library/session-probe/wasm-unsupported.mjs` (unsupported-format probe).
|
||||
- `state/evidence/S00-004-auto-crypto-8bf3dcf711b9.md` (this run's evidence).
|
||||
- ADR `docs/decisions/0003-crypto-library.md` was **not** written because the
|
||||
decision would record an unverified/blocked majority of the acceptance (browser
|
||||
WASM + legacy/OMEMO2) rather than a confirmed capability; the outcome must be
|
||||
that a remediation establishes the browser-capable backend first.
|
||||
|
||||
## Evidence
|
||||
- Known-answer probe: PASS (exit 0), stored 631 bytes, byte-for-byte reload.
|
||||
- Unsupported-format probe: exit 2 (no `.wasm`, native addon only).
|
||||
|
||||
## Next input for the remediation
|
||||
Reproduce intent inside `experiments/0003-crypto-library/**`:
|
||||
1. `node session-probe/smoke.mjs` (expect SMOKE_PASS).
|
||||
2. `node session-probe/wasm-unsupported.mjs` (expect exit 2 / blocker line).
|
||||
3. Establish a verified browser/worker/WASM-capable OMEMO2 backend (library with
|
||||
a real `.wasm`/web build and an OMEMO2 wire mapping), or record with traceable
|
||||
upstream primary sources why the browser endpoint must use a maintained
|
||||
encryption layer consistent with ENC-009/ENC-011 client-endpoint encryption.
|
||||
|
||||
# Blocked handoff
|
||||
|
||||
Original: S00-004; reporter: auto-crypto-8bf3dcf711b9; resolution: S00-021.
|
||||
|
||||
Agent timed out; process terminated before escalation
|
||||
|
||||
Next: complete and review the remediation; only a fresh session may continue.
|
||||
@@ -0,0 +1,30 @@
|
||||
{
|
||||
"title": "Establish a verified browser-capable OMEMO2 backend for the Web client endpoint",
|
||||
"reason": "S00-004 cannot establish the browser/worker/WASM and legacy/OMEMO2 wire-format capabilities its acceptance requires. The only maintained, audited session library on the reachable registry (@signalapp/libsignal-client@0.105.0, AGPL-3.0-only) is a Node native addon with zero .wasm assets, so it cannot run in the Web client endpoint; no maintained OMEMO2/omemo-wasm/@signalapp/libsignal package exists on the registry.",
|
||||
"reproduction": "cd experiments/0003-crypto-library && node session-probe/smoke.mjs (SMOKE_PASS, 0) shows session/ratchet+persistence work; node session-probe/wasm-unsupported.mjs (exit 2) shows wasmFiles:0, prebuilds are native *.node only; npm view omemo2-js => 404. Details: state/evidence/S00-004-auto-crypto-8bf3dcf711b9.md",
|
||||
"role": "crypto",
|
||||
"reviewer_role": "security",
|
||||
"scope": [
|
||||
"experiments/0003-crypto-library/**",
|
||||
"docs/decisions/0003-crypto-library.md"
|
||||
],
|
||||
"outcome": "One independently reviewed probe and ADR establish a real browser/worker/WASM-capable OMEMO2 backend (library with a genuine web/WASM build and an OMEMO2 wire mapping, or traceable upstream primary-source proof covering encodings ENC-009/ENC-011), while retaining the verified audited session/ratchet engine and persistence from the existing spike.",
|
||||
"steps": [
|
||||
"Read S00-004 blocker evidence and accepted ENC-003/ENC-009/ENC-011 requirements and ADRs 0000-0002.",
|
||||
"Identify a maintained browser/worker/WASM-capable OMEMO/OMEMO2 encryption library with a real .wasm or web build and an OMEMO2 wire-format mapping; verify its license, primary-source docs, and web build.",
|
||||
"Run a focused known-answer OMEMO2 probe in the browser-compatible target inside experiments/0003-crypto-library/**; record actual results and any unsupported format as a blocker, not success.",
|
||||
"Write/update docs/decisions/0003-crypto-library.md (proposed) recording the real capability and limitations; submit evidence and handoff for independent security review."
|
||||
],
|
||||
"acceptance": [
|
||||
"A browser/worker/WASM-capable OMEMO2 backend executes a known-answer encryption/decryption roundtrip with an authentic web build recorded in evidence.",
|
||||
"The OMEMO2 wire-format mapping is established from real primary sources and does not bypass ENC-009/ENC-011 client-endpoint encryption.",
|
||||
"No homegrown ratchet, stack/spec change without ADR, secrets in evidence, or out-of-scope edits."
|
||||
],
|
||||
"checks": [
|
||||
"Known-answer OMEMO2 roundtrip in the web/WASM target.",
|
||||
"Web/WASM asset presence verified (non-zero real footprint), license and support checked.",
|
||||
"Independent security review confirms no bypass and no unsupported format counted as success."
|
||||
],
|
||||
"depends_on": [],
|
||||
"requires_user_input": false
|
||||
}
|
||||
+43
-4
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"schema_version": 1,
|
||||
"revision": 55,
|
||||
"revision": 57,
|
||||
"tasks": {
|
||||
"S00-001": {
|
||||
"status": "done",
|
||||
@@ -47,8 +47,17 @@
|
||||
"resumed_after_blocker": true
|
||||
},
|
||||
"S00-004": {
|
||||
"status": "todo",
|
||||
"owner": null
|
||||
"status": "blocked",
|
||||
"owner": "auto-crypto-8bf3dcf711b9",
|
||||
"started_at": "2026-10-15T08:02:39+00:00",
|
||||
"reason": "Agent timed out; process terminated before escalation",
|
||||
"updated_at": "2026-10-15T08:32:40+00:00",
|
||||
"blocked_by": [
|
||||
"S00-021"
|
||||
],
|
||||
"resume_status": "in_progress",
|
||||
"blocker_report": "state/blockers/S00-021.md",
|
||||
"handoff": "state/handoffs/S00-004.md"
|
||||
},
|
||||
"S00-005": {
|
||||
"status": "todo",
|
||||
@@ -1268,6 +1277,12 @@
|
||||
"reason": null,
|
||||
"started_at": "2026-10-15T07:27:20+00:00",
|
||||
"updated_at": "2026-10-15T07:27:20+00:00"
|
||||
},
|
||||
"S00-021": {
|
||||
"status": "todo",
|
||||
"owner": null,
|
||||
"external_wait": false,
|
||||
"reason": null
|
||||
}
|
||||
},
|
||||
"events": [
|
||||
@@ -1979,6 +1994,29 @@
|
||||
"from": "todo",
|
||||
"to": "in_progress",
|
||||
"reason": null
|
||||
},
|
||||
{
|
||||
"revision": 56,
|
||||
"at": "2026-10-15T08:02:39+00:00",
|
||||
"action": "claim",
|
||||
"task": "S00-004",
|
||||
"agent": "auto-crypto-8bf3dcf711b9",
|
||||
"role": "crypto",
|
||||
"from": "todo",
|
||||
"to": "in_progress",
|
||||
"reason": null
|
||||
},
|
||||
{
|
||||
"revision": 57,
|
||||
"at": "2026-10-15T08:32:40+00:00",
|
||||
"action": "escalate",
|
||||
"task": "S00-004",
|
||||
"resolution_task": "S00-021",
|
||||
"agent": "auto-crypto-8bf3dcf711b9",
|
||||
"role": "crypto",
|
||||
"from": "in_progress",
|
||||
"to": "blocked",
|
||||
"reason": "Agent timed out; process terminated before escalation"
|
||||
}
|
||||
],
|
||||
"retired_agents": [
|
||||
@@ -1991,6 +2029,7 @@
|
||||
"auto-protocol-826aa6bc12ef",
|
||||
"auto-protocol-902594b44429",
|
||||
"auto-protocol-dcdf92cd067e",
|
||||
"auto-protocol-59f4d359b339"
|
||||
"auto-protocol-59f4d359b339",
|
||||
"auto-crypto-8bf3dcf711b9"
|
||||
]
|
||||
}
|
||||
Reference in new issue
Block a user