Skip to content

shape-doctor.py: manifest kinds counts a contracts/*.yaml that declares a registered kind as validated though that kind's validator never runs on this kind of root, so a contracts/family.yaml in an assembly root, or a contracts/project.yaml in a family holder, is ok and COMPLIANT where the same bytes at the root are a FINDING #327

Closed

Description

@brettheap

Lane: openreposhape-3 (openRepoShape-3)

What happens. #211's fix (#220) acts on one path: rel == FAMILY_MANIFEST in an assembly root. Every other file under contracts/ that declares a registered kind: goes to MANIFEST_VALIDATORS.get(kind) and is counted validated. Measured on be2790e with a scaffolded assembly root (clean, COMPLIANT before the change) and a family holder made by family.py init:

assembly root + contracts/family.yaml  (kind: family-manifest, one member row, no gitlink)
  ok   manifest kinds   6 manifest(s), every declared kind has a registered validator
  COMPLIANT   (exit 0)

the same bytes as family.yaml at the root
  FINDING  manifest kinds   family.yaml (family-manifest) sits beside project.yaml (project-manifest), and validate-family.py ... never runs on an assembly root ... so nothing checks the 1 member(s) it pins: members/IRRS has no gitlink (mode 160000)
  INVALID (manifest-kinds)   (exit 1)

family holder + contracts/project.yaml  (kind: project-manifest)
  ok   manifest kinds   4 manifest(s), every declared kind has a registered validator
  COMPLIANT   (exit 0)

PR #220's reviewer read the mirror case (a contracts/*.yaml declaring project-manifest in a family) from the code and did not run it; it is run here.

Where. shape-doctor.py:check_manifest_kinds (:1280; the special case at :1319-1322), manifest_candidates (:1141, contracts/*.yaml), ManifestKind.covered_by and MANIFEST_VALIDATORS (:689-705).

Why it matters. The row says "every declared kind has a registered validator", which is true of the registry and false of the root: the gate registered for that kind never runs here. That is #211's claim again at a different path. Direction, either of: count a kind validated only when its covered_by check applies to the root's kind (the general rule #220 states), or run the registered validator for every declared kind found in a root (#211's alternative fix).

Source. PR #220, ## Left out, first and third bullets. Related: #211 (closed).

Activity

  1. brettheap commented on Oct 12, 2026

    @brettheap
    ContributorAuthor

    CLAIMED — lane openRepoShape-3, session b2cc9e59-4dc8-4f43-b01b-81cb99c8b07e@Eagle, 2026-10-12T10:59:27Z, for #327

    Logged in lanes/log/openRepoShape-3.md at 75fbcd090140c70e11fccc1d713cab26b3108f90.

    The three reads (lane-collision-protocol Rule 1):

    1. existing `CLAIMED —` comments on opensoft/openRepoShape#327:
       none
    2. `gh pr list --repo opensoft/openRepoShape --state all --search "#327"`, kept where the row or its body names `#327`:
       none
    3. `git ls-remote --heads git@github.com:opensoft/openRepoShape` branches naming `327` as a whole token:
       none
    
  2. added 5 commits that reference this issue on Oct 12, 2026
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