Skip to content
← Capability Graph

Retirement is a process, and it needs a path out.

Marking a capability deprecated does not remove it. The deprecation records a successor or a migration path, and the graph tracks which consumers have moved across and which have not. Removal is evaluated against that record: while consumers remain and no path exists for them, the policy engine refuses it, and no argument, however well phrased, changes that answer. Consumers migrate on their own release schedule, and the queue stays visible while they do.

Deleting is not the same as deprecating

Dropping a published capability from a repository leaves every consumer to find out at build time. The graph treats removal as a state change with preconditions, not as a file operation somebody can do on a Friday.

The way out is part of the record

A deprecation names the successor capability and how consumers move to it. Without that, the deprecation is incomplete, and the removal that would otherwise follow it does not pass the policy check.

The last consumer to move unblocks removal

Each consumer shows as migrated or outstanding against the deprecated version. The last one moving across is what unblocks removal, and that state is read from the graph rather than from someone's recollection.

In this capability

  • Deprecated status
  • Required migration path
  • Removal blocked without one
  • Per-consumer migration state

Stop managing prompts. Start managing software strategy.

Connect your repositories. Let Foundariq understand what you have already built. Then tell it what your portfolio should build next.

Read-only to start · Your code stays in your GitHub · [email protected]