mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2026-10-06 11:48:24 +00:00
The Quartz half of the current profile was ready and tested; nothing in the app layer called it. KeyPackage publishing now defaults to the current profile, which is the half that decides whether anyone running the adopted spec can invite us at all — a leaf without the 0x8009 account identity proof is simply not addable to a current-profile group. `createCurrentProfileGroup` builds the group through `CurrentProfileGroupFactory` and hands it to the manager via `adoptGroup`. Group creation is the one place a group cannot be built through the manager: a leaf's identity proof covers its OWN signature key, so the keypair has to be generated and authorized by the account signer before the leaf exists. Switching the KeyPackage path surfaced the mirror image of the bug this whole effort started from. A current-profile leaf advertised only the draft app_data_dictionary extension, and a legacy group REQUIRES 0xF2EE — so our new KeyPackages were un-addable to every group that already exists. Capabilities say "this client can handle it", not "this group uses it", so the leaf now advertises both. Advertising more than a group requires is always fine; advertising less is what gets a leaf rejected. The reference-shape test now states that rule rather than asserting byte-equality with MDK's leaf. The current-profile KeyPackage event also carries neither a `relays` nor an `encoding` tag, both per transports/nostr.md: a KeyPackage is fetched from the account's own inbox relay set, so repeating the relays would be a second drifting source of truth, and the binding forbids `encoding` outright because a receiver that switched decoders on one could be steered into a different parse of the same bytes. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016kCuA6tc4JQzHPCDd39GHq
quartz plans
Audited 2026-09-08. 12 plans: 7 shipped (archived), 0 in-progress, 4 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-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. |
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. |