Contracts

doctor-doctrine-json.md

Contract: doctor doctrine --json additive keys (under profile_health.org_drg)

All keys are additive. The frozen top-level profile_health key set (#5729) is unchanged. None of these keys is emitted when no org packs are configured (FR-012).

KeyWhen presentShape
unsanctioned_overridesexisting; non-empty only[{urn, kind, why, legacy_template?: {path, reason}}]
sanctioned_overridesNEW; non-empty only`[{urn, kind, pack, source: "consumer"\
pack_sanction_errorsNEW; non-empty only[str]. Each message is also appended to errors, which drives RC=1.

replaceable-builtins-file.md

Contract: replaceable-builtins.yaml (consumer and pack)

LocationKeys honouredOwner
<repo>/.kittify/doctrine/replaceable-builtins.yamlreplaceable_builtins, revoked_pack_sanctionsconsumer
<org pack root>/replaceable-builtins.yamlreplaceable_builtins onlyorg-pack author
  • Entry grammar: {urn: <kind>:<id>, reason: <str>}. reason is required and must be non-empty when <kind> is directive.
  • Pack scope: a pack entry is effective only for an override whose surviving node has provenance org:<registry name of that pack>.
  • Compatibility: CLIs that predate this contract ignore the pack file and the revoked_pack_sanctions key.
  • Transitional: <pack root>/templates/setup/replaceable-builtins.yaml is never a sanction. Doctor reads it only to print remediation hints, and the read goes away with #2594.