argus/test
Local Dev 23757e7a03 bns: apex content records move off-chain into the signed manifest (v3)
u/s3/ip/h/p for the apex of a BNS name no longer require a chain
transaction to change. They live alongside the subdomain hosts and the
apex DNS block in the owner-signed _records.json on Sia, verified by
the gateway against the current NFT holder. The chain keeps the NFT
identity and one `s3` pointer that anchors the manifest file; every
other edit is a wallet signature with zero satoshis spent.

The trust boundary is unchanged — a signature verified against the
on-chain owner is cryptographically equivalent to a chain update, and
the manifest's seq monotonicity + name-field binding keep replay out.
Legacy names and v1/v2 manifests stay valid; the apex merge is a
no-op when nothing declares it.

Argus:
- manifest.js: SUPPORTED_VERSIONS gains 3; new validateApex and
  effectiveRecords; verifyManifest validates apex and refuses it in v<3
- registrar.js: signRecordsManifest accepts v=3
- public-gateway.mjs: serve() loads manifestFor unconditionally and
  merges chain + apex before pickRecord; /api/dns/<name> response adds
  the verified apex block for clients to merge on their side; a
  successful /api/records POST busts the serve cache so a swap takes
  effect immediately rather than at the 60 s TTL
- test/manifest-apex.test.mjs: 21 tests — validator shape rules,
  merge semantics, v3 round-trip, cross-version refusal, legacy still
  verifies, replay refused

Ariadne daemon:
- cache carries apex alongside the DNS block; mergedRecords(entry, key)
  is the one place the precedence lives. HTTP app and the DNS-answer
  bcnrAnswerFor both read merged records, so an apex ip swap changes
  what the OS gets without waiting on a chain update

Ariadne mobile:
- Entry and DnsCached carry apex; static Bns.mergedRecords(entry) is
  the Java mirror of effectiveRecords; BchFetcher.serve picks from
  the merged view

Hermes.x is the first candidate: chain has `s3: bns/hermes/` + a
redirect `u`, both can collapse to one signed-manifest edit once the
owner publishes their first v3.
2026-10-21 22:18:09 +03:00
..
blocklist.test.mjs bns: a registration is void unless its certificate is the only token of its category 2026-10-04 16:13:04 +02:00
bns-indexer.test.mjs Theseus navigator UI overhaul, BNS-only indexer, site restructure 2026-07-30 08:16:55 +02:00
chipnet-acceptance.mjs Initial commit — Silent Mode baseline (2026-07-29) 2026-07-29 13:54:34 +02:00
chipnet-escrow-refund.mjs Initial commit — Silent Mode baseline (2026-07-29) 2026-07-29 13:54:34 +02:00
chipnet-paybyqr.mjs Initial commit — Silent Mode baseline (2026-07-29) 2026-07-29 13:54:34 +02:00
commit-reveal.test.mjs BNS: commit-reveal for first registrations 2026-10-05 22:29:38 +02:00
connect-shape.test.mjs Initial commit — Silent Mode baseline (2026-07-29) 2026-07-29 13:54:34 +02:00
covenant-family.test.mjs covenants: close the holes an adversarial review found 2026-10-04 16:53:56 +02:00
covenant-names.test.mjs BNS: commit-reveal for first registrations 2026-10-05 22:29:38 +02:00
covenant-registrar.test.mjs covenant names: the actions a dashboard needs, and holdings that list them 2026-10-05 23:51:02 +02:00
dns-server.test.mjs resolver: echo EDNS OPT record so strict clients stop failing 2026-08-02 01:19:09 +02:00
electrum-pool.test.mjs Initial commit — Silent Mode baseline (2026-07-29) 2026-07-29 13:54:34 +02:00
manifest-apex.test.mjs bns: apex content records move off-chain into the signed manifest (v3) 2026-10-21 22:18:09 +03:00
manifest-hosts.test.mjs feat(gateway): a name's owner decides what its subdomains serve 2026-09-28 01:04:36 +02:00
orders.test.mjs Initial commit — Silent Mode baseline (2026-07-29) 2026-07-29 13:54:34 +02:00
password-vault.test.mjs Snapshot in-progress work: Ariadne mobile, Theseus password manager, Hephaestus 2026-08-14 23:17:18 +02:00
plans.test.mjs Initial commit — Silent Mode baseline (2026-07-29) 2026-07-29 13:54:34 +02:00
portfolio-index.test.mjs BNS: a transaction with more than one protocol message carries none 2026-10-04 16:53:58 +02:00
record-picker.test.mjs feat(bns): 'p' reverse-proxy record type — mirror an upstream URL under a BNS name 2026-09-07 00:18:07 +02:00
register-tx.test.mjs Initial commit — Silent Mode baseline (2026-07-29) 2026-07-29 13:54:34 +02:00
registry-covenant.test.mjs covenants: close the holes an adversarial review found 2026-10-04 16:53:56 +02:00
registry-lifecycle.test.mjs Theseus navigator UI overhaul, BNS-only indexer, site restructure 2026-07-30 08:16:55 +02:00
release.test.mjs bns: a registration is void unless its certificate is the only token of its category 2026-10-04 16:13:04 +02:00
sole-certificate.test.mjs BNS: a transaction with more than one protocol message carries none 2026-10-04 16:53:58 +02:00
tld-enforcement.test.mjs BNS: a transaction with more than one protocol message carries none 2026-10-04 16:53:58 +02:00
tld-index.test.mjs BNS: a transaction with more than one protocol message carries none 2026-10-04 16:53:58 +02:00