mirror of
https://github.com/PR0M3TH3AN/SeedPass.git
synced 2026-11-05 20:32:05 +00:00
cross-impl: live Python-publishes -> TS-restores relay round trip
Phase F starts the in-process NIP-01 relay, has the real Python NostrClient publish a chunked snapshot to it, then restores that snapshot with the TS CLI on a clean profile and checks the secrets survive. It immediately caught a genuine restore bug: Python's index files wrap the ciphertext in a kdf/ct JSON envelope, and a published snapshot carries whatever the local file held. TS decrypted the fetched bytes directly, so it failed on anything Python published -- invisible to the TS-only tests because TS writes bare ciphertext. Restore (and delta replay) now parse the wrapper first, exactly as decrypt_and_save_index_from_nostr does. Regression test in relay.test.ts publishes a wrapper-format payload through a live relay and restores it. Cutover plan updated: gate 4 (sync protocol) now cites this end-to-end evidence, and gate 5's remaining list drops SSH and migrations. 171 core + 46 CLI tests green; 19/19 cross-implementation checks green. Co-Authored-By: Claude Fable 5 <[email protected]>
This commit is contained in:
1 parent
1eee053ff0
commit
3ebaced2e3
5 files changed
+173
-11
No files matched your search
@@ -42,19 +42,20 @@ P0 gate is green, Python remains the normative reference
|
||||
4. **Sync protocol is compatible.**
|
||||
Evidence: event ids cross-verified against rust-nostr fixtures; snapshot
|
||||
chunking/manifest/delta parity; live relay round trip in
|
||||
`js/packages/core/test/relay.test.ts`. **Green.**
|
||||
Remaining: a live Python-publishes → TS-restores test through one relay
|
||||
(currently each side is tested against the shared protocol, not against
|
||||
the other end to end).
|
||||
`js/packages/core/test/relay.test.ts`, plus a live end-to-end round trip
|
||||
in cross-impl phase F: Python publishes a snapshot through a real relay
|
||||
and the TS CLI restores it with secrets intact. **Green.**
|
||||
|
||||
5. **Feature parity for real daily use.** **Partial.** Missing:
|
||||
- SSH and PGP key material (entries round-trip; derivation not ported)
|
||||
5. **Feature parity for real daily use.** **Partial.** Remaining:
|
||||
- PGP key material (entries round-trip; derivation not ported — highest
|
||||
parity risk, PGPy serialization)
|
||||
- document import/export commands
|
||||
- index schema migrations 0→3 (TS refuses old indexes rather than
|
||||
migrating them — safe, but a Python user with an old profile is stuck)
|
||||
- `semantic` and `api` command groups (deliberately deferred; decide
|
||||
whether they block cutover or ship post-cutover)
|
||||
|
||||
Done since this list was written: SSH key derivation (PEM byte-for-byte)
|
||||
and schema migrations 0→4, so legacy Python profiles now open in TS.
|
||||
|
||||
6. **Packaging and distribution exist.** Not started. Needs: an installable
|
||||
artifact (npm bin, single-file build, or both), checksums and signatures
|
||||
matching the release-integrity workflow, and updated install docs.
|
||||
|
||||
@@ -51,7 +51,7 @@ until a later milestone.
|
||||
|
||||
| Environment | Status |
|
||||
|---|---|
|
||||
| Node 22 (vitest) | green — 170/170 core + 44 CLI |
|
||||
| Node 22 (vitest) | green — 171/171 core + 44 CLI |
|
||||
| jsdom browser-like env | green — 148/148 core (3 transport tests Node-only) |
|
||||
| Real Chromium/Firefox (vitest browser mode) | todo — lands with Milestone 6 web app CI |
|
||||
|
||||
|
||||
Reference in new issue
Block a user