Skip to content

docs(identity): condense the migration plan and the stale Caddy steps - #408

Merged
PBernaerts merged 1 commit into
mainfrom
docs/condense-identity-docs
Aug 21, 2026
Merged

docs(identity): condense the migration plan and the stale Caddy steps#408
PBernaerts merged 1 commit into
mainfrom
docs/condense-identity-docs

Conversation

@PBernaerts

Copy link
Copy Markdown
Owner

What

docs/authentik-migration.md goes from 1646 to 745 lines, docs/landing-page.md from 583 to 543. Docs only, no code, no behaviour change.

Why

The migration plan had accreted a "what actually happened" correction on top of the original plan text for every finished stage, and most of that correction is already written up as usable procedure in identity/README.md. Answering "what is left before 6f" meant reading all 1646 lines, and the two copies of the per-app detail were going to drift.

What changed

  • Status table up front, so the state of 6b/6c/6d/6e/6f is one glance.
  • Finished stages keep their outcome plus only the lessons that are rules for future work (grant_types on an OIDC provider but never on a proxy one, the verified-email scope, "ask how each client keys a returning user", the blueprint status caveats, the !Env container-passthrough trap).
  • Unfinished stages keep full detail: 6e's sitting and its per-gate rollback, 6f-pre, and 6f's evidence gate.
  • Section 1 was rewritten as "what the migration still has to move", with the old scattered Authelia references collected into one 6f sweep list.
  • Per-app OIDC values, break-glass and rollback commands are no longer duplicated; identity/README.md is named as the place for them.

Decision numbering is unchanged. identity/compose.yaml, three blueprints, site.yml.example, docs/ansible/behavior-contract.md, web/caddy/Caddyfile.j2 and two tests cite decisions 6, 8 and 9 by number.

Two facts that only lived inside a stage narrative are now stated where they act:

  • the Postgres 18.x-alpine major pin sits with the rest of decision 2;
  • the local password hash authentik's recovery flow leaves behind is an open question under 6f, not a footnote under a pre-flight check, because 6f is the last point at which there is a second system to fall back on.

docs/landing-page.md section 4 still explained how to hand-edit the Caddyfile, which SITE-7 has rendered since #394, and then said not to. Cut to what the template renders and why (the X-Forwarded-Proto pin, Cache-Control: private, no-store, /whoami and its three limits) plus the staged validate-then-reload order.

Checks

  • bash tests/run.sh - all suites pass, no failures.
  • bash tests/test-opsec.sh - passed=7 failed=0 (no public FQDN reached a tracked file).
  • mkdocs build --strict - clean.
  • pre-commit run --files docs/authentik-migration.md docs/landing-page.md - passed.

authentik-migration.md had grown to 1646 lines because every finished stage
kept both its original plan text and a "what actually happened" correction on
top of it, and most of that correction is already written up as procedure in
identity/README.md. Reading it to answer "what is left" meant reading all of
it.

Restructured around what is still to do. A status table up front says which
stage is where; finished stages keep their outcome and only the lessons that
are rules for future work; the remaining stages (6e's sitting, 6f-pre, 6f)
keep their full detail. Per-app OIDC values, break-glass and rollback commands
are no longer repeated here, since identity/README.md carries them in more
depth and one of the two copies was always going to drift.

Nothing durable is dropped. The decision numbering is unchanged, because
compose.yaml, the blueprints, site.yml.example, the Ansible contract and three
tests all cite decisions 6, 8 and 9 by number. Two facts that only lived in
the stage narratives are now stated where they act: the Postgres major pin
sits with the rest of decision 2, and the local password hash that authentik's
recovery flow leaves behind is an open question for 6f rather than a footnote
under a pre-flight check.

landing-page.md section 4 still explained how to hand-edit the Caddyfile,
which SITE-7 has rendered since PR #394, and then said not to. Cut to what the
template renders and why (the XFP pin, the no-store header, /whoami and its
three limits) plus the staged validate-and-reload order.

1646 -> 745 lines and 583 -> 543.
@PBernaerts
PBernaerts merged commit 9f26891 into main Aug 21, 2026
9 checks passed
@PBernaerts
PBernaerts deleted the docs/condense-identity-docs branch August 21, 2026 08:17
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