Files
amethyst/quartz/plans
Claude 1350533850 feat(concord): fragmented Community List, bound dissolution, lossless entity edits
Brings the Concord implementation up to spec main b84554e for the three
changes that landed since we last tracked it, and adds the conformance
review that drives the rest.

CORD-02 §8 — the Community List moves from the retired kind 13302 to
fragmented addressable kind 33302 (d = fragment index):
- ConcordListFragments: the wire codec. Unpadded base64url for every
  32-byte value the section names, snapshots without community_id, seed
  omitted when equal to current (after rewriting its cosmetic fields),
  tombstoned entries dropped, unknown fields verbatim and sorted. Packing
  and bytes match the reference client exactly: the tests pin fragments
  produced by Armada's own listFrag.ts serializer.
- ConcordListFragmentSet: newest copy per index, declared count (ties to
  the larger), completeness, union; writes repack only with the complete
  List and otherwise rewrite just the fragment holding the change, always
  with created_at above the previous copy and under the byte ceiling.
- Leaving now writes a tombstone instead of just dropping the entry.
- The retired 13302 event is still read and unioned in, so the next write
  (or the import, once relays confirm no fragment exists) migrates it.
- Offline backup, cache storage, account-list REQ and amy concord import
  follow the new kind.

CORD-02 §9 — dissolution:
- ConcordDissolution derives dissolved_pk, builds the owner-signed
  tombstone with eid = community_id, and verifies it (owner author,
  plaintext seal, eid bound; the old all-zero eid is refused).
- Sessions subscribe/AUTH the dissolved plane and seal the community on a
  valid tombstone; the Control Plane fold no longer reads vsk 10, which
  skipped the binding check. Owners can dissolve from the app's actions
  and with `amy concord dissolve --yes`.

CORD-02 §6 / CORD-08 — Control entity edits keep what they don't model
(ConcordJson.encodePreserving over the authorized head), so renaming a
community no longer wipes custom fields or turns off another client's
disappearing-messages timer. MetadataEntity parses message_expiration.
The per-channel voice flag is gone (every Channel is callable).

Review: quartz/plans/2026-09-29-concord-spec-conformance.md

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PmuzkD5qdqgv6dMeRMoC5N
2026-09-29 13:33:52 +00:00
..

quartz plans

Audited 2026-09-17. 13 plans: 7 shipped (archived), 0 in-progress, 5 queued, 1 closed (negative result).

Queued

Plan Summary
2026-05-08-local-headers-explorer.md Headers-only Bitcoin P2P client to verify NIP-03 OTS attestations without a trusted block explorer.
2026-06-12-giftwrap-deletion-requests.md Let a recipient-authored kind-5 delete/block a gift wrap (kind 1059) addressed to them.
2026-07-03-incremental-negentropy-storage.md Always-current (created_at, id) index so cold NEG-OPENs stop paying a full scan + seal (~340 ms at 50k vs strfry's ~21 ms).
2026-07-04-small-req-floor.md Small-REQ dispatch floor: decomposed, inline fast path tried and reverted (no wire-level win); floor is transport-side.
2026-08-13-gpu-pow-mining.md GPU NIP-13 mining declined (ARMv8 has SHA-256 in silicon, mobile GPUs do not). Midstate is ~3x on JVM targets; Android hinges on Conscrypt per-digest JNI cost, still unmeasured. created_at refresh while mining shipped.
2026-09-17-cordn-interop.md Cordn (cordn.net) is an alternative binding of MLS onto Nostr, not an alternative to MLS: same ciphersuite 0x0001, byte-identical ChaCha20-Poly1305 seal and NIP-01 envelope, but the delivery service is an MCP server over ContextVM with no key-package event kind. Only the RFC 9420 engine is shareable, and it is not yet Marmot-clean (3 files, 10 imports, 3 hardcoded policies). ContextVM must be written from scratch: full review of the spec + all 12 CEPs, with a per-CEP compliance matrix, CVM-* rule ids and a 5-tier test method (including a fixture server that misbehaves on demand, and RFC 8785 JCS which Quartz lacks). Blocked on the credential-identity encoding (raw 32 bytes vs 64-byte hex ASCII). Includes a coordinator metadata-exposure analysis.
2026-09-08-marmot-spec-resync.md Marmot moved off the MIP-era spec (2026-07-02): group state split into app_data_dictionary components, account identity proof v2, and a convergence engine. Current MDK rejects our groups outright. Gap analysis + 8-stage plan; Stages 0-4 done (mdk interop reference, app_data_dictionary, identity proof v2, the six group components, transport corrections); lifecycle + branch selection landed.
2026-09-22-cyberspace-region-bags.md Open kind 33330 region bags: §2 coordinates, §4 Cantor roots, §7.2 region keys, §7.7 hint sweeps, §7.6 item verification. Reverses SNO's D2 — §7.7 says a seeker's position never enters the cost, and a key is 1.2 ms at h8 against the spec's own 1.3 ms. Three layers: quartz, amy, and a tap-to-search card.

Archived (shipped)

Plan Summary
archive/2026-06-03-fix-nip46-bunker-double-resume-plan.md Fix NIP-46 bunker double-resume crash and retry id-reuse races via Channel-per-request + fresh id per attempt.
archive/2026-06-04-auth-scope-vs-policy.md Move relay-server authenticated-identity state from the policy into the engine-owned connection scope.
archive/2026-06-09-clink.md Implement CLINK (Offers/Debits/Manage) Lightning-over-Nostr pointers, events, and client/server in Quartz.
archive/2026-06-11-runstr-interop.md RUNSTR kind-1301 workout events and supporting fitness kinds in Quartz plus Amethyst fitness screens.
archive/2026-06-19-napplet-nip5a-resolver.md Platform-agnostic NIP-5A static-site resolver verifying content-addressed Blossom blobs against signed manifests.
archive/2026-06-20-powr-interop.md Parse and render the POWR/NIP-101e kind-1301 strength-workout dialect alongside the existing RUNSTR dialect.
archive/2026-06-28-git-smart-http-browser.md Git smart-HTTP v2 client to browse NIP-34 repo file trees and render source from the clone URL.