Skip to content

docs(adr): record the live platform check as outstanding, not done (#263) - #264

Merged
bdelanghe merged 1 commit into
claude/next-kp573hfrom
claude/self-hosting-sessions-rf95k6
Aug 18, 2026
Merged

docs(adr): record the live platform check as outstanding, not done (#263)#264
bdelanghe merged 1 commit into
claude/next-kp573hfrom
claude/self-hosting-sessions-rf95k6

Conversation

@bdelanghe

Copy link
Copy Markdown
Contributor

Closes #263. Stacked on #261 — based on claude/next-kp573h, not main, because the sentence it corrects is introduced by that PR. Merge it into #261 before #261 merges, or cherry-pick the one commit onto that branch; either works and the diff is 32 lines of markdown.

The disagreement

ADR-NETWORK-POSTURE.md said the platform properties were "checked once against a live macOS box." That is the intended posture stated in the present tense — the check has not been run. #261's own body is straight about it ("developed in a Linux container with no podman and no macOS", and now "This PR left draft with that check still outstanding").

So the PR body and the ADR disagreed about whether the mechanism is verified, and the ADR is the artifact that outlives the PR. A reader finding it in six months concludes the curl repro was re-run. That is docs/agentic-code-hygiene.md rule 3 — a gate's own claim about itself is not evidence — landing on the sentence that invokes rule 3.

What changed

Three edits to the record, none to the mechanism:

  1. The not-proven bullet gains the /etc/hosts arbitration, which until now lived only in the PR body — the box pins the door hostname with --add-host, podman may write its own host.containers.internal, and which wins is unconfirmed on a real host. Same epistemic status as the other two, so it belongs on the same list.
  2. An explicit ACCEPTED, UNPROVEN entry, dated, saying the live check is outstanding and that the security: TCP mode grants full unrestricted internet egress to any box holding a non-net door #236 curl should now fail to connect.
  3. A table naming which host settles which item, so the residue is re-enterable rather than rediscovered.

The load-bearing part

Two of the three do not need macOS, despite TCP mode being macOS's default:

item host that settles it
--internal really removes the route any Linux host with rootless podman
socat present in the relay image same
/etc/hosts arbitration needs a mac — podman there is already inside a VM

isTcpMode() is pure/env-driven and the darwin branch in main() only supplies the default, so DOORS_TCP=1 on a Linux podman host runs this exact path — and HOSTING.md already specifies such a host. A Lima VM does not close the third item; it is Linux, so it moves the question rather than answering it.

Why no session in this org could just run the check

.github-private#613 / #614: the org has a session floor (a host a session runs on, #373) and no room floor (a host that can run boxes). The devcontainer floor ships node, github-cli and sshd and is itself a Docker container. So the session that implements platform-specific work structurally cannot be the one that verifies it — which is why this PR records the gap instead of closing it.

Verification

  • bun test467 pass, 28 skip, 1 todo, 0 fail, unchanged from this branch's own baseline.
  • bun x tsc --noEmitnot run. bun-types comes from the nix devshell and this clone has no package.json to install from. Does not reach a markdown-only diff, but it was not seen green.
  • Diff is ADR-NETWORK-POSTURE.md only: 32 insertions, 4 deletions.

[settings] / [org]

None.


Generated by Claude Code

)

ADR-NETWORK-POSTURE's "What is proven where, and what is not" said the
platform properties were "checked once against a live macOS box". That
describes the intended posture in the present tense. The check has not been
run -- this branch was developed in a Linux container with no podman and no
macOS -- so the PR body and the ADR disagreed about whether the mechanism is
verified, and the ADR is the artifact that outlives the PR. A reader finding it
later concludes the curl repro was re-run. Rule 3 applied to the sentence that
invokes rule 3.

Three changes, all to the record, none to the mechanism:

- The not-proven bullet gains the /etc/hosts arbitration, which until now lived
  only in the PR body: the box pins the door hostname with --add-host and
  podman may write its own host.containers.internal entry, and which wins is
  unconfirmed on a real host.
- An explicit ACCEPTED, UNPROVEN entry states that the live check is
  outstanding and that the #236 curl should now fail to connect.
- A table naming which host settles which item, so the residue is re-enterable
  rather than rediscovered.

The last is the load-bearing part. Two of the three do NOT need macOS despite
TCP mode being macOS's default: isTcpMode() is pure/env-driven and the darwin
branch in main() only supplies the default, so DOORS_TCP=1 on a Linux host with
rootless podman runs this exact path, and HOSTING.md already specifies such a
host. Only the /etc/hosts arbitration needs a mac, because podman there is
already inside a VM. A Lima VM does not close it -- it is Linux, so it moves
the question rather than answering it.

Why no session in this org could just run the check: .github-private#613/#614.
The org has a session floor (a host a session runs on) and no room floor (a
host that can run boxes), so the session that implements platform-specific work
structurally cannot be the one that verifies it.

Markdown only; no source, test or flag changes. bun test: 467 pass, 0 fail,
unchanged from this branch's own baseline. tsc not run -- bun-types comes from
the nix devshell and this clone has no package.json to install from -- which
does not reach a markdown-only diff.

Co-authored-by: Claude <noreply@anthropic.com>
@bdelanghe
bdelanghe marked this pull request as ready for review August 18, 2026 19:29
@bdelanghe
bdelanghe merged commit 296d11d into claude/next-kp573h Aug 18, 2026
5 checks passed
@bounded-systems-front-desk bounded-systems-front-desk Bot moved this from Todo to Done in Front Desk Aug 18, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

2 participants