Functions | |
| dict | page_index () |
| Every documentation page id with the anchors it defines. | |
| tuple | required_obligations (dict record) |
| The obligation ids a record owes. | |
| list | check_satisfaction (str context, str key, spec, dict pages, set published, bool public) |
| Verify one obligation or concern is genuinely answered. | |
| list | validate (list records, dict pages, dict families, set published) |
| Validate every subsystem record against the lifecycle contract. | |
| list | validate_value_ownership (list records, dict families) |
| Check that every capability value has an owning subsystem it does not outrank. | |
| int | main () |
| Report subsystem lifecycle violations. | |
Variables | |
| REPO_ROOT = Path(__file__).resolve().parents[2] | |
| str | RECORDS = REPO_ROOT / "tests" / "tooling" / "subsystem_records.json" |
| str | PAGE_TYPES = REPO_ROOT / "tests" / "tooling" / "page_types.json" |
| str | FAMILIES = REPO_ROOT / "tests" / "tooling" / "capability_families.json" |
| tuple | PAGE_DIRS = ("docs/pages", "docs") |
| tuple | LADDER = ("planned", "internal", "experimental", "supported") |
| dict | LADDER_OBLIGATIONS |
| dict | TERMINAL_OBLIGATIONS |
| tuple | NON_INHERITED = ("not_implemented_status",) |
| tuple | NEEDS_PEAK = ("known-defective", "deprecated", "removed") |
| tuple | INHERITS_LADDER = ("known-defective", "deprecated") |
| VALID_STATUSES = tuple(LADDER) + tuple(TERMINAL_OBLIGATIONS) | |
| dict | TRANSITIONS |
| dict | DEMOTIONS = {("supported", "experimental"), ("known-defective", "planned")} |
| tuple | VALID_VISIBILITY = ("internal", "public") |
| tuple | VALID_CONCERNS |
| dict | RECORD_KEYS |
| int | MIN_REASON_CHARS = 30 |
| dict | FILLER_REASONS = {"n/a", "na", "none", "not applicable", "no", "-", "tbd"} |
Enforce the documentation obligations each subsystem lifecycle status carries.
| dict audit_subsystem_lifecycle.page_index | ( | ) |
Every documentation page id with the anchors it defines.
@section, @subsection, and @anchor names. Definition at line 104 of file audit_subsystem_lifecycle.py.
| tuple audit_subsystem_lifecycle.required_obligations | ( | dict | record | ) |
The obligation ids a record owes.
A record may declare a proposed_status above its claimed one. That is how a subsystem documented to a higher bar waits for the owner to decide whether it has actually earned it: obligations are checked against the proposal, so the writing is held to the higher standard, while the status the documentation publishes stays conservative until a human agrees.
| [in] | record | One subsystem record. |
Definition at line 122 of file audit_subsystem_lifecycle.py.
| list audit_subsystem_lifecycle.check_satisfaction | ( | str | context, |
| str | key, | ||
| spec, | |||
| dict | pages, | ||
| set | published, | ||
| bool | public | ||
| ) |
Verify one obligation or concern is genuinely answered.
An answer is a documentation reference that resolves, or a stated reason for non-applicability, or a literal value where the obligation is a fact rather than prose. An empty or filler answer is a violation.
| [in] | context | Record id, for messages. |
| [in] | key | Obligation or concern id. |
| [in] | spec | The declared answer. |
| [in] | pages | Page index from page_index(). |
| [in] | published | Ids of the pages the site publishes. |
| [in] | public | Whether the subsystem is publicly visible. |
Definition at line 152 of file audit_subsystem_lifecycle.py.
Validate every subsystem record against the lifecycle contract.
| [in] | records | Subsystem records. |
| [in] | pages | Page index from page_index(). |
| [in] | families | Capability family metadata, keyed by family id. |
| [in] | published | Ids of the pages the site publishes. |
Definition at line 207 of file audit_subsystem_lifecycle.py.
Check that every capability value has an owning subsystem it does not outrank.
A value's status and its subsystem's status used to be independent axes, which let a value read supported under a subsystem still experimental: the Newton-Krylov solver value, the periodic handlers, and every storage policy all did. The subsystem status is now a ceiling. The rules need the whole registry, so they are kept out of the per-record validate():
value_metadata[*].subsystem, and that owner must list the family;off_switch: true exempts the single value per family that disables the owning subsystem, since selecting it claims nothing about it.Accepted spellings and deprecated aliases inherit their target's owner and are not checked separately.
| [in] | records | Every subsystem record. |
| [in] | families | Capability family metadata, keyed by family id. |
Definition at line 359 of file audit_subsystem_lifecycle.py.
| int audit_subsystem_lifecycle.main | ( | ) |
Report subsystem lifecycle violations.
Definition at line 449 of file audit_subsystem_lifecycle.py.
| audit_subsystem_lifecycle.REPO_ROOT = Path(__file__).resolve().parents[2] |
Definition at line 12 of file audit_subsystem_lifecycle.py.
| str audit_subsystem_lifecycle.RECORDS = REPO_ROOT / "tests" / "tooling" / "subsystem_records.json" |
Definition at line 13 of file audit_subsystem_lifecycle.py.
| str audit_subsystem_lifecycle.PAGE_TYPES = REPO_ROOT / "tests" / "tooling" / "page_types.json" |
Definition at line 14 of file audit_subsystem_lifecycle.py.
| str audit_subsystem_lifecycle.FAMILIES = REPO_ROOT / "tests" / "tooling" / "capability_families.json" |
Definition at line 15 of file audit_subsystem_lifecycle.py.
| tuple audit_subsystem_lifecycle.PAGE_DIRS = ("docs/pages", "docs") |
Definition at line 16 of file audit_subsystem_lifecycle.py.
| tuple audit_subsystem_lifecycle.LADDER = ("planned", "internal", "experimental", "supported") |
Definition at line 21 of file audit_subsystem_lifecycle.py.
| dict audit_subsystem_lifecycle.LADDER_OBLIGATIONS |
Definition at line 23 of file audit_subsystem_lifecycle.py.
| dict audit_subsystem_lifecycle.TERMINAL_OBLIGATIONS |
Definition at line 35 of file audit_subsystem_lifecycle.py.
| tuple audit_subsystem_lifecycle.NON_INHERITED = ("not_implemented_status",) |
Definition at line 43 of file audit_subsystem_lifecycle.py.
| tuple audit_subsystem_lifecycle.NEEDS_PEAK = ("known-defective", "deprecated", "removed") |
Definition at line 44 of file audit_subsystem_lifecycle.py.
| tuple audit_subsystem_lifecycle.INHERITS_LADDER = ("known-defective", "deprecated") |
Definition at line 46 of file audit_subsystem_lifecycle.py.
| audit_subsystem_lifecycle.VALID_STATUSES = tuple(LADDER) + tuple(TERMINAL_OBLIGATIONS) |
Definition at line 48 of file audit_subsystem_lifecycle.py.
| dict audit_subsystem_lifecycle.TRANSITIONS |
Definition at line 68 of file audit_subsystem_lifecycle.py.
| dict audit_subsystem_lifecycle.DEMOTIONS = {("supported", "experimental"), ("known-defective", "planned")} |
Definition at line 82 of file audit_subsystem_lifecycle.py.
| tuple audit_subsystem_lifecycle.VALID_VISIBILITY = ("internal", "public") |
Definition at line 84 of file audit_subsystem_lifecycle.py.
| tuple audit_subsystem_lifecycle.VALID_CONCERNS |
Definition at line 87 of file audit_subsystem_lifecycle.py.
| dict audit_subsystem_lifecycle.RECORD_KEYS |
Definition at line 95 of file audit_subsystem_lifecycle.py.
| int audit_subsystem_lifecycle.MIN_REASON_CHARS = 30 |
Definition at line 100 of file audit_subsystem_lifecycle.py.
| dict audit_subsystem_lifecycle.FILLER_REASONS = {"n/a", "na", "none", "not applicable", "no", "-", "tbd"} |
Definition at line 101 of file audit_subsystem_lifecycle.py.