Skip to content

I2872 — The skeleton a new repository receives is derived from the layout declaration

init seeds a new repository from I2870's declaration instead of lib/init.sh's hand-written list of files, and a derive-check proves share/skeleton's manifest and directory contracts agree with the declaration, so the skeleton cannot drift from the layer it seeds.

BLOCKED wave 2 · p0 · implementation profile · parallel safe

Part of two-folder-integration — A repository that adopts Majordomus gains two directories and two lines, and can give them back.

Blocked. This issue cannot start until I2870 is done. The status is derived from that, not declared.

Objective

init seeds a new repository from I2870's declaration instead of lib/init.sh's hand-written list of files, and a derive-check proves share/skeleton's manifest and directory contracts agree with the declaration, so the skeleton cannot drift from the layer it seeds.

Why

The third slice of I1102. On 2026-10-21 share/skeleton was found hand-copied by lib/init.sh, a second enumeration of the layout, and already drifted: its manifest lacks the `releases` section .ai/manifest.yaml has.

Current state

share/skeleton is 41 hand-written files; lib/init.sh copies them through a hard-coded list and creates the local directories itself; no generator or check covers it.

Desired state

The skeleton is derived from the declaration, and a check fails when they disagree.

Scope

  • share/skeleton
  • lib/init.sh
  • apps/majordomus-cli/src
  • scripts
  • .ai/repo/project/issues/I2872.yaml

Out of scope

  • Adopting an existing repository (the adopter milestones)

Dependencies

What waits on this

Acceptance criteria

  • init's seeded tree is derived from the declaration, not from a second list
  • A check fails when share/skeleton and the declaration disagree; the skeleton's manifest carries `releases`

Validation

  • cargo test --workspace --all-features
  • scripts/derive-check

Evidence required

  • skeleton_derived

Evidence

None recorded. Every token above needs a command or an artifact behind it before this issue can be completed; narrative is refused.

Timeline

started
—
verified
—
completed
—

Those three fields, the evidence above and the state of the dependencies are all the status is made of. There is no status field to disagree with them.

Canonical record: .ai/repo/project/issues/I2872.yaml. Read it back with majordomus plan show I2872.

Searches the titles and descriptions of every page this site publishes.