Skip to content

AI-MANIFEST ply: relay items after #731 — two renames, CI wiring, migration, and one owner ruling #732

Description

@hyperpolymath

Follow-ups from #731, which corrected AI-MANIFEST-SPEC.adoc (it forbade the deployed ply scheme) and added the advisory scripts/check-manifest-ply.sh.

Each item below was deliberately not done in #731, for a stated reason. This issue is the handoff so none of them is lost.


1. Rename standards/cartridges/0.2-AI-MANIFEST.a2ml0.1-conversion agent

cartridges/ sits one ply below the repo root, so the manifest declares depth 2 while sitting at depth 1. It is the single reason this repository fails its own new check (scripts/check-manifest-ply.sh . → exit 1).

Not done in #731 because it is a rename of an .a2ml file, and .a2ml renames belong to the conversion agent. #731 changes no file extension anywhere, deliberately, so that it is visibly not that work.

Cause, for the record: the file was added 2026-05-26 by 7c2b8155, the same day boj-server-cartridges was extracted from boj-server. git log --follow confirms it never moved. The extraction itself was correctboj-server-cartridges/0-AI-MANIFEST.a2ml rightly declares ply 0. The defect is in the same-day sibling copy into standards/cartridges/, which carried the pre-split ply-2 number into a ply-1 home.

If the .deed conversion renames this file anyway, fold the ply correction into that rename rather than doing it twice.

2. Rename metadatastician/paint-type/www/0.2-AI-MANIFEST.a2ml0.1-

Different cause, no relation to item 1: introduced by 2ac5684 "Fix CI hygiene: resolve 7 red checks in workflows" (2026-07-26), a commit about workflows. A plain off-by-one that rode in on an unrelated change. The directory has nine correctly-numbered 0.1- siblings (features, session, src, tests, scripts, .github, audits, verification, examples).

3. Wire the gate into CI — blocked on item 1

scripts/check-manifest-ply.sh ships in #731 unwired: no workflow calls it, no required context added. Wiring it before item 1 lands would redden main from the moment it merged.

When item 1 is done, prefer hanging one run: step on an existing workflow over adding a new workflow file — a new file means new action pins, actions.lock, and the banner-insertion traps that come with it.

Keep it advisory. It should not become a required check while item 5 is unresolved.

4. 0.N-0-plyN- migration — PROPOSED, not authorised

The dotted form does not announce its meaning, and 0.1.A- is readily misread as a version number. The successor form 0-ply<N>[-<unit>]-AI-MANIFEST.a2ml fixes both.

#731 records this in the spec as explicitly NOT NORMATIVE and authorises no migration. Do not sweep on it. It needs an owner ruling first, and it interacts with item 5 — a migration that encodes the wrong frame would have to be redone across ~15,000 files.

5. ⚖️ Owner ruling needed — how a unit's children are numbered

Where a subdirectory self-roots (carries its own 0- manifest), do its descendants number their plies:

  • (a) from the repository root, or
  • (b) from the unit?

5,716 manifests — 36.0% of the 15,872 measured — are consistent only with (b).

This is a notation gap, not drift. Until a unit tag existed there was no way for a self-rooting sub-project to say "I number from here", so it numbered from itself and looked wrong to a root-frame reader. The cure under (b) is "add the unit tag, keep the number", not "renumber 5,716 files".

Recommendation: (b). Evidence written up in PREFIX-CANON.adoc (checkpoint, not yet in-repo — say the word and it lands as a docs PR).

Until this is ruled, the gate reports these as UNIT-RELATIVE and never fails them. It hard-fails only what is wrong under every reading, which preserves the decision while still producing the evidence to settle it.


Baseline measurement

Local checkouts, 2026-09-04, 15,872 manifests under hyper-repos. Duplicate checkout trees not deduplicated, per #703.

Class Count % Gate verdict
EQUAL, git-rooted 7,684 48.4% pass
UNIT-RELATIVE 5,716 36.0% reported, never failed
DRIFT, declared < actual 2,468 15.6% warn; fails only under --strict
DRIFT, declared > actual 4 0.0% FAIL
UNPARSEABLE 0 0.0% FAIL
LEGACY-NAME (AI.a2ml) 766 no ply claim to check

The 4 DRIFT-DEEP are items 1 and 2 plus two _GITHUB_INBOX_REMEDIATION_SET duplicate checkouts of the same standards file.

The defect class this exposed

Repo extraction is a ply-shedding event, and nothing watches for it. Splitting a subtree into its own repository decrements the true ply of every descendant. Any manifest copied sideways at that moment keeps its pre-split number and is wrong, silently, indefinitely.

Both DRIFT-DEEP files were born wrong rather than having drifted, which means the durable cure belongs at file-creation and repo-split time, not on a periodic re-scan. A re-scan only ever finds these late.

🤖 Generated with Claude Code

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

    decisionA ruling is required before work can proceed

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions