Skip to content

Asset registry proves validity but not completeness: orphan exports pass #79

Description

@qmarcelle

npm run validate:asset-registry currently proves:

every registered asset is valid

It does not prove:

every exported asset is registered

Those are different completeness properties, and only the first is checked. An export directory under assets/exports/ with no manifest entry passes validation today — confirmed while adding readme-poster-impact-2560x756 in #78, which validated clean before it was registered at all.

This matters because assets/manifest.json declares assets/exports/ as its inventoryScope.includedPaths. The registry presents itself as a scan of that directory, so an unregistered export makes the registry quietly incomplete while reporting success. Same shape as the pairedSpread defect in #75: the surface that exists to establish trust is the one asserting something untrue, and it fails in the direction that looks fine.

Proposed invariant

files under assets/exports/
  minus an explicit ignore list
must equal
  paths declared in the asset registry

Fail on:

  • unregistered export directories
  • registered paths that no longer exist (already covered — keep)
  • duplicate registrations (already covered — keep)
  • exports missing capture.json or equivalent provenance, where required

Allow a small explicit ignore list for .DS_Store, temporary files, README files, and any intentionally excluded working artifacts.

Registration must not be silently inferred from directory names: an entry is a claim someone made, and inferring it would reintroduce the same gap one level down.

Scope

Narrow and separate on purpose. It is a real integrity gap but should not interrupt the current README asset sequence (poster → GIF → context-gap SVG → architecture SVG).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions