Skip to content

docs: establish the control model, source register, and structural checks - #38

Merged
joey-huckabee merged 1 commit into
mainfrom
docs/control-model-foundation
Sep 19, 2026
Merged

joey-huckabee merged 1 commit into
mainfrom
docs/control-model-foundation

Conversation

@joey-huckabee

Copy link
Copy Markdown
Contributor

Package 5's Foundation stage. The sources the mapping runs against, the shape
every control takes, and the checks that hold it.

Sources: four pinned, three honestly not

Source Status
800-53 Rev 5.2.0 OSCAL catalogue pinned 01f37cf9…
800-53 Rev 5.2.0 HIGH baseline profile pinned 60576970…
DISA Web Server SRG V3R3 pinned 7345e31a…
DISA RHEL 9 STIG V2R4 pinned 0434fd47…
DISA Container Platform SRG unresolved
DISA Application Server SRG unresolved
CIS Benchmark unavailable

The last three are recorded with the reason, not omitted:

  • The DISA SRGs are not at a predictable URL — DISA rotates the release
    identifier inside the filename, so the current package has to be fetched from
    the published index by a person. I stopped guessing URLs rather than
    brute-force the CDN.
  • CIS redirects to auth0/login. It needs an account, and its terms restrict
    redistribution
    — so it can be cited by identifier but never vendored or
    quoted at length. That constrains how it can ever be used here.

The register also raises a scoping question worth answering before pinning: the
Application Server SRG may not apply at all, since this image serves and proxies
HTTP rather than hosting an application runtime.

A correction to ADR-0009

Retrieving the catalogue corrected the scale I gave you when the decision was
taken:

Catalogue, all families 1196 controls and enhancements
HIGH baseline selects 370
Base controls — first pass 188
Enhancements — second pass 182

So the first pass is 188, not "roughly 370 base controls, well over a
thousand with enhancements". Materially smaller than I said. The ADR now
carries the measured figures.

The control model

Six origination values, and only image-owned asserts this project satisfies
anything. Every other value is a hand-off that must say what the other party has
to do.

Two rules that make the scope safe:

  • An image-owned control must cite a requirement from the tree. That is
    what stops a control claiming an obligation the product never stated.
  • A control that is not image-owned may not carry an assessment method.
    Supplying one would describe an assessment this project cannot perform.

Checks before controls

15 checks, in the lint job, verified by injecting three violations:

Injected Caught as
L1-ZZZ-999 cited by cm-6 not a requirement this product states
au-9 (host-inherited) claiming a test method assessment method on a non-image control
sc-8 (deployment-configured) responsible role set to image-project role contradicts origination

There is also a check that the document does not yet claim baseline
coverage
— it fails if the remarks stop saying "Foundation" while fewer than
188 controls exist, so four controls can't be mistaken for a baseline.

Four controls are authored, one per applicable origination, to exercise the
structure rather than to begin the baseline.

Roadmap

Package 5 goes 18 → 16. Three Foundation items close; one is replaced by
resolving the outstanding sources, and one by a scheduled digest re-check so a
replaced DISA package is reported rather than silently mapped against.

🤖 Generated with Claude Code

…ecks

Foundation for the control deliverable: the sources it maps against, the shape
every control entry takes, and the checks that hold that shape.

Four sources are pinned by digest: the 800-53 Rev 5.2.0 OSCAL catalogue, its
High baseline profile, the DISA Web Server SRG V3R3, and the RHEL 9 STIG V2R4.
Three are not, and the register records why rather than omitting them. The DISA
Container Platform and Application Server SRGs are not at a predictable URL,
because DISA rotates the release identifier inside the filename, so the current
package has to be obtained from the published index by a person. The CIS
benchmark needs an authenticated account and its terms restrict redistribution,
so it can be cited by identifier but never vendored or quoted at length.

Retrieving the catalogue corrected the scale recorded in ADR-0009. The High
baseline selects 370 controls: 188 base and 182 enhancements. The first pass is
188, not the "roughly 370 base controls" estimated before the catalogue was in
hand. The ADR now carries the measured figures.

The control model fixes six origination values, a responsible role that must
match the origination, and the rule that only image-owned asserts this project
satisfies anything. Every other value is a hand-off that must name what the
other party has to do. An image-owned control must cite a requirement from the
tree, which is what stops a control claiming an obligation the product never
stated. A control that is not image-owned may not carry an assessment method,
because supplying one would describe an assessment this project cannot perform.

The checks exist before the 188 controls do, which is the point. A rule added
after the bulk authoring has to be retrofitted across every entry, and a
property that is merely conventional is the first thing dropped under deadline.
Verified by injecting three violations: a requirement identifier that does not
exist, a host-inherited control claiming an assessment method, and a
responsible role contradicting its origination.

Four controls are authored to exercise the structure, one per origination that
applies. The component metadata states it does not yet assert baseline
coverage, and a check enforces that claim stays honest until the baseline is
actually complete.
@joey-huckabee
joey-huckabee merged commit 78e0230 into main Sep 19, 2026
7 checks passed
@joey-huckabee
joey-huckabee deleted the docs/control-model-foundation branch September 19, 2026 00:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant