docs(launchpad): record ADR-0013 -- config-management tool, Ubuntu baseline, runtime shape - #179
Merged
tucktuck101 merged 1 commit intoAug 16, 2026
Conversation
…seline, runtime shape Records the decision for #24: Ansible as the configuration-management tool, Ubuntu 24.04 LTS (noble) as the supported starting state, and containers via the existing deploy/compose/ bundle as the runtime shape. Ansible matches the PRD's own expectation, is agentless (no resident daemon on the 1 vCPU/1.9Gi VPS), and has real idempotency satisfying Ruling 11's convergence requirement. Containers avoid the upstream-divergence maintenance trap AGENTS.md section 3 already exists to prevent. Folds in the archived deploy/archived/ansible/ attempt as supporting evidence rather than precedent to resume: it already measured these same three answers on a VM matching the VPS spec (563 MB peak, Compose 2.40.3 from Ubuntu's own archive), and its later archival was for a narrow, orthogonal reason -- wrong upstream image selection, already being fixed separately under #144/ADR-0005 -- not a defect in the tool, OS, or runtime-shape choice itself. Includes a contingency for the accepted risk that Ansible may be unfamiliar to the cohort against the milestone deadline: the tool choice does not change if that risk materializes, since shell + systemd was already rejected for failing Ruling 11. The archived role sketches and measured facts serve as reference material instead. Decided directly in conversation with @serina-mcfall on 2026-08-15, following the recommendation and contingency plan both posted as comments on #24. Signed-off-by: Serina Mcfall <serina.mcfall@gmail.com>
serina-mcfall
marked this pull request as ready for review
August 14, 2026 23:57
This was referenced Aug 16, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Records ADR-0013: Ansible as the configuration-management tool, Ubuntu 24.04 LTS (noble) as the supported baseline, and containers via the existing
deploy/compose/bundle as the runtime shape. Folds in the archiveddeploy/archived/ansible/attempt as supporting evidence rather than precedent to resume, since its later archival was for an orthogonal reason (wrong upstream image selection).Related issue
Closes #24
Issue type
ADR
Agent provenance
Objective
Add
launchpad/decisions/ADR-0013-config-management-ubuntu-baseline-runtime-shape.md, recording the bundled decision for #24.Impacted components
launchpad/decisions/ADR-0013-config-management-ubuntu-baseline-runtime-shape.md
launchpad/scripts/test-adr-0013-frontmatter.sh
Approach and rejected alternatives
Followed the recommendation posted on #24 and confirmed by @serina-mcfall in chat on 2026-08-15. Rejected alternatives, per the issue's own Considered options: Ansible managing host-native services in place of
deploy/compose/(discards an upstream-maintained artifact and creates the divergence-at-every-sync maintenance traplaunchpad/AGENTS.mdsection 3 already exists to avoid); shell scripts plus systemd (cannot satisfy Ruling 11's convergence requirement without effectively reimplementing a configuration-management system, called out explicitly in the issue itself); a different configuration-management system such as Salt or Chef (no driver in the issue favors either over Ansible, which is already the PRD's named expectation). Also considered whether to treat the archiveddeploy/archived/ansible/attempt as resumable precedent — rejected, since the archive is marked a failed deployment method; its measured facts are used as evidence for this decision, but no code from it is reused.Verification
Command run:
Raw output:
Not verified
Whether the cohort already has Ansible experience was not checked in this session — the issue's own original caveat, still open. The archived measurements (peak memory, Compose version, all-healthy timing) were read from
launchpad/deploy/archived/temp-handoff.mdandlaunchpad/deploy/archived/ansible/README.md, not re-measured here. No implementation exists yet to verify this ADR's decision against; this PR records the decision, not its execution.Security implications
This ADR determines what confinement means for the rest of #5: container runtime permissions/capabilities/networks (Rulings 4, 5, 9) rather than operating-system users and AppArmor applied directly. It also carries forward the archived attempt's secret-handling pattern (generate
.envsecrets on the target host, never commit them, never template from control-node variables) and the requirement that the private VPS hostname stay out of the committed inventory (inventory/hosts.local.yml, gitignored). No code changes accompany this PR, so no new runtime exposure is introduced by the PR itself.Escalations
None beyond what's already recorded in the ADR's Provenance section — the recommendation and its contingency were both confirmed directly by @serina-mcfall in chat before this PR was opened, per
launchpad/AGENTS.mdrule 1 (agents draft, never decide).