Auditable architecture · Unit 4 of 8
Visible legacy and the migration plan
A dependency may close through a legacy-shaped manifest. This is allowed, but never silent: the report names it (MILPA_LEGACY_CONTRACT_ACTIVE) and the status degrades to legacy_compatible. Legacy compatibility is named so it stays visible instead of decaying into invisible archaeology.
By the end, you'll be able to
- Tell tolerated legacy apart from legacy that is not allowed
- Read the MigrationPlan as a read-only proposal
Understand
A dependency may close through a legacy-shaped manifest. This is allowed, but never silent: the report names it (MILPA_LEGACY_CONTRACT_ACTIVE) and the status degrades to legacy_compatible. Legacy compatibility is named so it stays visible instead of decaying into invisible archaeology.
allowedLegacyContracts in the host profile is a gate, not a note: a legacy path the allowlist does not permit blocks with MILPA_LEGACY_NOT_ALLOWED instead of degrading. And deprecation warns before it breaks: MILPA_DEPRECATED_CONTRACT_USED works today, but the metadata announces that shape is scheduled to leave, and migrating before removal is cheaper than after.
The way out has a plan: coa:migrate:plan changes nothing — it only produces a plan. Per package it lists Detected, Recommended, Steps (with the re-inspect always last), Compatibility and Academy. The compatibility line is honest and goes verbatim: the plan never invents a deadline the code doesn't declare.
See
Open the frontier
The same discipline: when two representations diverge, the divergence is named and repaired from the source of truth, never left to decay in silence.
Do
Run the practice in your checkout and keep the output as evidence.
Verify
Show that you can apply the unit. Progress only advances once you pass the assessment.
Criteria assessed
- Tell the legacy_compatible status apart from the block enforced by allowedLegacyContracts.
- Explain why the migration plan is read-only and its compatibility invents no dates.
Primary sources
Content verified: 2026-07-12