Skip to content

feat(storage): publish compact authenticated graph roots #930

Description

@DecisionNerd

Parent

Native sub-issue of #901. This issue must block #901 and does not expand its acceptance criteria.

Objective

Represent a generation's authoritative graph inventory as a compact authenticated content-addressed root so adding bounded immutable topology shards does not copy a generation-sized manifest or retain unreachable payloads.

Requirements

  • Publish canonical graph payloads and a bounded-fanout authenticated manifest atomically with CURRENT.
  • Reuse unchanged immutable objects without copying their bytes.
  • Trace every live generation, checkpoint, and lease before bounded garbage collection.
  • Preserve v1 migration, crash recovery, integrity, symlink rejection, and ordinary generation readers.
  • Keep publication and GC work aggregate-observable and content-free.

Acceptance criteria

  • Repeated append publications hash/write only changed descriptors and payloads within deterministic bounds.
  • Interrupted publication leaves the prior generation authoritative; acknowledged publication survives reopen.
  • GC never removes objects reachable from CURRENT, retained generations, checkpoints, or live leases.
  • Corrupt, cyclic, oversized, traversal, duplicate-reference, and wrong-digest manifests fail closed.
  • Storage tests and ordinary project reopen cover migration and the compact-root format.

Non-goals

Topology shard writing, UUID endpoint lookup, the public construction session, or Graph500 orchestration; those remain sibling #901 work.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions