Problem
charter adf migrate places newly created modules in ON_DEMAND, but charter doctor subsequently flags them as required DEFAULT_LOAD — creating a post-migrate WARN state that requires manual intervention.
Reproduction
- Run
charter adf migrate --source CLAUDE.md
- Migration creates
core.adf and places it in ON_DEMAND (or omits it from manifest entirely — see related issue)
- Run
charter doctor --adf-only
[warn] adf required wiring: Missing from DEFAULT_LOAD: core.adf
Root cause
Doctor has criteria for what qualifies as "required DEFAULT_LOAD" (apparently filename + content signals like git identity, persona constraints, etc.). Migrate doesn't apply those same criteria when deciding where to route new modules — it defaults to ON_DEMAND without checking against doctor's required-wiring rules.
Expected behavior
Either:
- Migrate applies doctor's required-wiring criteria before assigning load type, so a freshly migrated repo passes doctor without manual edits
- Doctor's WARN includes a resolution hint — e.g. "Add
core.adf to DEFAULT_LOAD in manifest.adf to resolve" — so the fix path is unambiguous
- Both — migrate asks or infers, doctor explains if it still doesn't match
Context
Encountered on Colony OS migration. core.adf received git identity (Mara_AI, mara_ai@stackbilt.dev) and voice constraints — content the doctor correctly identified as always-needed. The gap was silent until doctor ran.
Problem
charter adf migrateplaces newly created modules in ON_DEMAND, butcharter doctorsubsequently flags them as required DEFAULT_LOAD — creating a post-migrate WARN state that requires manual intervention.Reproduction
charter adf migrate --source CLAUDE.mdcore.adfand places it in ON_DEMAND (or omits it from manifest entirely — see related issue)charter doctor --adf-onlyRoot cause
Doctor has criteria for what qualifies as "required DEFAULT_LOAD" (apparently filename + content signals like git identity, persona constraints, etc.). Migrate doesn't apply those same criteria when deciding where to route new modules — it defaults to ON_DEMAND without checking against doctor's required-wiring rules.
Expected behavior
Either:
core.adfto DEFAULT_LOAD in manifest.adf to resolve" — so the fix path is unambiguousContext
Encountered on Colony OS migration.
core.adfreceived git identity (Mara_AI,mara_ai@stackbilt.dev) and voice constraints — content the doctor correctly identified as always-needed. The gap was silent until doctor ran.