Walking skeleton: live-render aura + data-server docs from Gitea, themed and navigated #1
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Goal
The first runnable DocSite server: a single-source-of-truth LAN
documentation server that renders project docs live from their canonical
Gitea repositories, with one consistent theme. This is the walking
skeleton — the minimal end-to-end proof of the live-render pipeline — and
the reference issue for the
/bosscycle that builds it.Ratified design (from brainstorm)
read-only raw/API at the pushed
mainrevision; the cache is keyed onthe source commit SHA. DocSite holds no content clone and never writes
to a source repo (a read-only Gitea token in config covers private
repos).
auraanddata-server. Directives:code(syntect highlighting) andtable(native Markdown) only.
accents; prose in a reading typeface, code/tables in monospace. One
global theme for all projects.
registry.toml. Each project entrycarries its Gitea coordinates (
repo,branch,docs) plus orderednav sections. Only listed pages are reachable; everything unlisted
(
docs/specs,docs/plans, postmortems) is structurally unservable.serving, async leaves room for a later file-watch/SSE live-reload).
MVP navigation (from the doc inventory)
repo=Brummel/aura,docs=docs):glossary.mddesign/INDEX.mdproject-layout.mdis obsolete — excluded.)repo=Brummel/data-server,docs=.):README.mdLoad-bearing invariants
only a revision-keyed cache; rendered HTML is a pure function of
(source at a revision + config).
startup/reload path validation, a visible render-time error block for
an unresolved reference, and a
docsite checksubcommand validatingevery reference against the current Gitea sources (report + exit code).
Out of scope (later iterations)
code-include,mermaiddirectives.(
Brummel/Aura#150).docsite checkseamis prepared for it, not yet wired).
publish.toml(would be authored by the project's ownpipeline; never grants DocSite write access).
Acceptance (walking skeleton)
Gitea
main, wrapped in the theme shell with nav fromregistry.toml.docs/specsfile) returns 404 — neverleaked.
docsite checkvalidates the configured nav references against thecurrent Gitea sources and reports broken ones with a non-zero exit.
Design reconciliation (specify)
Spec:
0001-walking-skeleton. Recording the load-bearing forks and theirbasis before the spec is written (this issue is the run's reference /
decision log).
Fork: doc source → fetch live from Gitea (raw/API, pushed
main,SHA-keyed cache).
Basis: user decision — chose "Gitea als Live-Quelle" over local working
trees / DocSite-owned clones (2026-06-28), keeping the single copy on the
Gitea host and publishing the canonical pushed revision.
Fork: MVP scope → two sources (
aura,data-server), two directives(
code,table).Basis: user decision — chose the "Walking Skeleton" boundary over the
larger first-cut options.
Fork: theme → dark, prose-optimized, Catppuccin accents (prose in a
reading face, code/tables monospace).
Basis: user decision — chose "dunkel, prosa-optimiert" over
aura-tool-consistent all-monospace / a light classic theme.
Fork: HTTP stack → Rust + axum.
Basis: derived — Rust was the user's "own server" decision; axum chosen
for light routing, trivial static-asset serving, and async headroom for a
later file-watch/SSE live-reload. No competing stack carried a groundable
advantage at this scale.
Fork: whitelist & nav location → DocSite's own
registry.toml, notthe source repos.
Basis: derived — required to keep DocSite read-only on source repos
(invariant 1); a project-owned
publish.tomlwould need a write into aforeign repo and is deferred.
Fork: cache key → source commit SHA (not mtime).
Basis: derived — follows from the Gitea-live source; revision-exact and
unaffected by the absence of a local working-tree mtime.
Fork: reference integrity → detect-and-report (fail-loud) +
docsite check, never enforce-by-writing.Basis: derived — a necessary consequence of read-only: DocSite cannot
repair a source, so its duty is lossless detection.
Sign-off: grounding-check override (user)
Spec
0001-walking-skeletonreached the Step-5 grounding-check as a BLOCK.The BLOCK is a greenfield artifact: grounding-check ratifies a spec's
assumptions against existing green tests, and a project's first spec has
none to ground against — the empty extraction is itself the BLOCK, not a
spec weakness. Its one substantial external assumption — the source files
exist on the foreign repos'
main— was verified before sign-off:Brummel/auramaina517899:docs/glossary.md,docs/design/INDEX.mdBrummel/data-servermain694f96f:README.mdThe remaining assumptions (Gitea raw/API contract, comrak/syntect
behaviour) are delivered by the implementation and its tests, not a prior
mechanism to wait on, so the BLOCK failure-mode (retire +
depends on)does not apply. User reviewed and overrode the BLOCK; proceeding to planner.
Walking skeleton shipped and cycle-closed.
docsite serverenders theaura + data-server docs live from Gitea
main(dark theme, whitelist nav);docsite checkvalidates the nav references against the live sources with anexit code. 41 tests green (32 lib + 8 e2e via an injected fetcher + 1 gated
live smoke that reached the real Gitea), clippy clean.
The cycle-close audit was drift-clean after
iter 0001.tidylanded the missingregistry.toml, the cache-before-fetch data-flow, and registry slug/pageescaping. Two carry-on items are filed as follow-ups (the render directive
seam; a unit test for the Gitea 404->NotFound mapping).
Commits
0060fea..056db1c. Closing as done.