Skip to content

docs(arch): scope FSDK hard rule to installer - #133

Open
castrojo wants to merge 6 commits into
projectbluefin:mainfrom
castrojo:arch/scope-fsdk-rule
Open

castrojo wants to merge 6 commits into
projectbluefin:mainfrom
castrojo:arch/scope-fsdk-rule

Conversation

@castrojo

Copy link
Copy Markdown
Collaborator

Summary

  • scope AGENTS.md hard rule 1 to the installer image
  • permit digest-pinned Flatcar binary imports for the OS payload
  • add an ADR with the source-rebuild and status-quo-hybrid alternatives rejected
  • add unit coverage for the architecture-rule contract

Closes #124.

Validation

  • python3 .github/scripts/docs-checks.py
  • uv tool run --from pytest pytest tests/unit/test_architecture_rules.py -q
  • just validate reached both version checks, then stopped because this workstation lacks podman and sudo after XDG_RUNTIME_DIR was redirected off read-only /run/user/1000

— hive: backend=omp

Record the Flatcar binary import decision and keep the AGENTS target content aligned with the new installer/OS-payload split.

Assisted-by: GPT-5.5 via GitHub Copilot

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: castrojo <castrojo@users.noreply.github.com>

@hanthor hanthor left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The rule change is the right shape, and the ADR does the work an AGENTS.md one-liner can't — it names the constraint that forces it (systemd-sysinstall doesn't exist in Flatcar), names the contract that makes the split safe (CopyBlocks= is byte-level), and records both rejected alternatives. Keeping DOCUMENTATION_OVERHAUL_PLAN.md's embedded copy in sync is a nice catch.

pytest tests/unit 213 passed / 1 xfailed, docs-checks.py passed.

This must land before #132, #140 and #141. All three import Flatcar binaries into the OS payload, which rule 1 as currently written on main forbids:

1. Compose from FSDK 26.08 `components/*`. Never use `platform.bst`.

One contradiction to resolve — with #123, not with this PR

The ADR rejects "Keep the status quo hybrid" on the grounds that it "preserves the ABI split that the migration is meant to remove." #123, the design doc for this same migration, states the opposite three times — "The build base stays freedesktop-sdk 26.08. Hard rule 1 is unchanged" — and says "ABI parity is explicitly not the goal." Whichever way that lands, both documents shouldn't ship as-is. I've raised it on #123.

One gap worth closing here

The ADR says "Hard rules 2-6 are unchanged […] k0s and container runtimes stay out of the base OS DDI." But #141 adds flatcar-podman.bst, containerd-flatcar.bst and docker-flatcar.bst as runtime depends: of os-stack.bst, each doing unsquashfs -d "%{install-root}" — so all three land inside the DDI, and #141's own comment claims this "honor[s] hard rule 4."

Since this PR is where rule scope gets decided, it's the natural place to either extend the reasoning to rule 4 or state plainly that #141 doesn't satisfy it as written. Leaving rule 4 untouched while three runtimes move into the DDI underneath it just relocates the contradiction.

Minor: test_architecture_rules.py asserts on exact English substrings of AGENTS.md. That's fine for a rule this load-bearing, but a future copy-edit will break it in a way whose failure message won't explain why — a comment saying so would help.


Generated by Claude Code

Signed-off-by: castrojo <castrojo@users.noreply.github.com>
@castrojo

Copy link
Copy Markdown
Collaborator Author

Addressed review feedback:

  1. Clarified the ADR regarding Hard Rule 4: container runtimes (podman, containerd, docker) must remain delivered as standalone system extension images (systemd-sysext .raw files under /usr/lib/sysexts), rather than bundled into the base OS /usr payload filesystem. Staging .raw sysext files under /usr/lib/sysexts for runtime attachment satisfies this boundary.
  2. Added explanatory comments to tests/unit/test_architecture_rules.py documenting the exact contractual phrases being tested.

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.

arch: scope hard rule 1 to the installer so the OS payload can import Flatcar binaries

2 participants