Skip to content

docs: add .adr/ and record the one-managed-front-door decision#37

Merged
AltanS merged 1 commit into
mainfrom
worktree-adr-front-door
Jul 27, 2026
Merged

docs: add .adr/ and record the one-managed-front-door decision#37
AltanS merged 1 commit into
mainfrom
worktree-adr-front-door

Conversation

@AltanS

@AltanS AltanS commented Jul 26, 2026

Copy link
Copy Markdown
Owner

The reasoning for declining a second managed front door lived in a PR thread — exactly where it gets lost. The next NetBird-shaped proposal (Cloudflare Tunnel, ZeroTier, Twingate) would have re-derived it or quietly reversed it.

What's here

.adr/ — decision records, Nygard format, numbered. Scoped deliberately narrow: decisions that close off an option someone will reasonably propose again, i.e. the ones where you find yourself explaining why not rather than how. Not a second home for things the code, a test name, or CLAUDE.md already say. .adr/README.md states the split against the existing docs and the rule that a superseded ADR is marked, never edited into agreement with the present.

ADR 0001 — Collie manages exactly one front door. Records what was actually measured rather than the summary:

  • the bridge's entire Tailscale coupling is one line (req.headers.get("tailscale-user-login")), so "too tied to Tailscale" was a docs problem, not an architecture one
  • COLLIE_SKIP_SERVE=1 + netbird expose 8787 was already the whole integration — nobody was blocked
  • the credential leak feat: add managed NetBird front door #26 demonstrated (--with-pin / --with-password in argv, /proc/<pid>/cmdline mode 444) as the concrete cost of supervising someone else's authenticated process
  • the criterion — we manage only what we run and can test — and the reversal condition, so it can be superseded deliberately

CLAUDE.md keeps the rule, drops the argument, and gains a short section pointing at .adr/ before reopening a settled question.

Doc-only; no version bump (per CLAUDE.md).

Draft because the scope of .adr/ is a judgment call worth your eye — happy to narrow or widen what qualifies.

The reasoning for declining a second managed front door lived in a PR thread,
which is exactly where it would be lost. The next NetBird-shaped proposal —
Cloudflare Tunnel, ZeroTier, Twingate — would have re-derived it or quietly
reversed it.

.adr/ is for decisions that close off an option someone will reasonably propose
again: the ones where you find yourself explaining why NOT rather than how. Not
for what the code, a test name or CLAUDE.md already says.

ADR 0001 records the front-door decision with what was actually measured — the
one-line Tailscale coupling in the bridge, the credential leak into argv that
PR #26 demonstrated, and that COLLIE_SKIP_SERVE=1 already made every other tunnel
a one-command integration. Also the reversal condition, so it can be superseded
deliberately rather than ignored.

CLAUDE.md keeps the rule and drops the argument, per the split the folder's
README sets out: rules there, reasoning here.

Doc-only, no version bump.

Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
@AltanS
AltanS marked this pull request as ready for review July 27, 2026 07:02
@AltanS
AltanS merged commit 04c87b7 into main Jul 27, 2026
1 check passed
@AltanS
AltanS deleted the worktree-adr-front-door branch July 27, 2026 07:03
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