Skip to content

docs(launchpad): record ADR-0013 -- config-management tool, Ubuntu baseline, runtime shape - #179

Merged
tucktuck101 merged 1 commit into
launchpadfrom
docs/adr-0013-config-management-ubuntu-baseline-runtime-shape
Aug 16, 2026
Merged

docs(launchpad): record ADR-0013 -- config-management tool, Ubuntu baseline, runtime shape#179
tucktuck101 merged 1 commit into
launchpadfrom
docs/adr-0013-config-management-ubuntu-baseline-runtime-shape

Conversation

@serina-mcfall

Copy link
Copy Markdown

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 archived deploy/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

Field Value
Harness / provider Claude Code
Model claude-sonnet-5
Session reference N/A - harness does not expose a run id/URL in this session
Initiating human @serina-mcfall

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 trap launchpad/AGENTS.md section 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 archived deploy/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:

/home/serina/Launchpad/buzz/launchpad/scripts/test-adr-0013-frontmatter.sh

Raw output:

PASS: ADR-0013 exists at the expected path
PASS: not filed under the issue number (0024)
PASS: frontmatter parses and status is Proposed
PASS: the H1 heading number matches the filename
PASS: no duplicate ADR numbers on this branch (found: none)
PASS: the Ansible-unfamiliarity contingency trigger is stated

===================================================
6 passed, 0 failed
  • Tests or checks were run and the raw output is pasted above
  • The diff is confined to the scope of the linked issue
  • No secrets, keys, tokens or hostnames were added to tracked files

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.md and launchpad/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 .env secrets 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.md rule 1 (agents draft, never decide).

…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 serina-mcfall added the by:agent Filed or authored by an AI agent, not a human label Aug 14, 2026
@serina-mcfall
serina-mcfall marked this pull request as ready for review August 14, 2026 23:57
@tucktuck101
tucktuck101 merged commit 79ae451 into launchpad Aug 16, 2026
23 of 25 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

by:agent Filed or authored by an AI agent, not a human

Projects

None yet

Development

Successfully merging this pull request may close these issues.

adr: configuration-management tool, Ubuntu baseline and service runtime shape

2 participants