Skip to content

I1102 — The two namespaces are a typed contract, not a habit

Declare the canonical layout of `.ai/` and `.majordomus/` as typed, versioned data — what each namespace holds, what it must never hold, and which lifecycle each directory's contents carry — so that the boundary can be checked rather than remembered.

BLOCKED wave 1 · p0 · deep-work 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 I1101 is done. The status is derived from that, not declared.

Objective

Declare the canonical layout of `.ai/` and `.majordomus/` as typed, versioned data — what each namespace holds, what it must never hold, and which lifecycle each directory's contents carry — so that the boundary can be checked rather than remembered.

Why

The boundary between portable knowledge and control-plane mechanics is the whole architecture. Stated only in prose it survives until the first subsystem finds it convenient to write an index next to a rule.

Current state

Both namespaces exist and are populated. Nothing declares what belongs in which, and nothing refuses a control-plane artifact written under `.ai/` or a copy of authored knowledge written under `.majordomus/`.

Desired state

The layout is a schema-backed declaration; a check reads it and refuses a path that contradicts it.

Scope

  • share/schemas
  • share/skeleton

Out of scope

  • A configuration file restating what a convention already fixes
  • Moving existing content; that is the migration issue

Dependencies

What waits on this

Acceptance criteria

  • Each namespace declares what it holds, in typed and versioned form, generated from the canonical Rust types where generation is available
  • `.ai/` is defined as portable semantic material that keeps its meaning without this tool and across providers, and `.majordomus/` as control-plane state that must never hold a second copy of it
  • A check refuses an artifact placed in the namespace whose contract excludes it, and names both the path and the contract it violates
  • The skeleton a new repository receives is derived from the same declaration rather than being a parallel copy of it

Validation

  • cargo test --workspace --all-features
  • bin/majordomus doctor

Evidence required

  • layout_declared
  • boundary_checked

Evidence

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

Risk

A layout schema can become a second description of the tree it describes. It declares intent and lifecycle; the tree remains what discovery finds.

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/I1102.yaml. Read it back with majordomus plan show I1102.