Skip to content

SPEC-EVO-003 — Object Registry

Purpose

The Object Registry provides deterministic, generated indexes for discovery, validation, timelines, and graph operations.

Generated artifacts

The default registry SHOULD contain:

registry/
  objects.json
  spaces.json
  relations.json
  versions.json
  tags.json
  timeline.json
  manifest.json

These files MUST be generated and MUST NOT be treated as canonical authoring surfaces.

Object record

Each registry object entry MUST include OID, object type, title, status, version, Research Space, canonical path, content hash, timestamps, tags, and declared relationships.

Requirements

  1. Registry generation MUST be deterministic for identical repository content.
  2. Every generated file MUST declare its format version.
  3. The manifest MUST record generator version and source-tree digest.
  4. Stale registries MUST be detectable.
  5. Unknown fields MUST be preserved or explicitly rejected according to the format-version policy.
  6. Registry writes MUST be atomic.
  7. A failed rebuild MUST NOT leave a partially valid registry.

Acceptance criteria

  • Two clean builds from the same commit produce equivalent registries.
  • Editing a canonical object invalidates the corresponding registry digest.
  • The repository remains usable after deleting the entire registry directory.
  • Duplicate OIDs prevent publication of a valid registry.

Non-goals

The registry is not a manually curated catalog and is not a replacement for Git.