This commit is contained in:
2026-07-30 00:34:18 +06:00
commit 54c14a20be
33 changed files with 2730 additions and 0 deletions
+50
View File
@@ -0,0 +1,50 @@
# Engine design review — open items
Status: parked
Raised: 2026-07-28
One review, many decisions. Each item below graduates independently: when one is settled it becomes an
ADR (or a change to its owning doc) and is struck from this list. When the list empties, delete the
file. Graduated so far: site root external to the engine repo (ADR-0011), Effect as the sixth
primitive (ADR-0012), the cache validity model (ADR-0013), declared content types (ADR-0014),
NFC normalisation and slug derivation (ADR-0015), sequence position (ADR-0016), the settings cascade
(ADR-0017), taxonomies and feeds (ADR-0018), template composition (ADR-0019), feature locality (ADR-0027).
## Why it came up
The harness was written for a generic blog engine and then aimed at a site hosting blog posts,
webcomics, art, literary writing, standalone pages and IndieWeb status notes, with a featureset meant
to keep evolving. Several things that are cheap to decide now get expensive once content exists or the
first URL is published.
## Decide before Arc 1 writes code
**Pagination URL shape.** Undecided and permanent — `/posts/page/2/` versus a query parameter. ADR-0008
settled the bundle shape only, and ADR-0016 settled that a slug may contain slashes; this is the last
open piece of the permalink space.
## Decide during Arc 12, as the code arrives
**UI chrome strings and Bengali collation.** i18n covers content variants, not chrome ("Next chapter",
"Read more") — a small message catalog, decided before templates multiply. Separately, byte sort is
wrong for Bengali indexes: adopt collation, or decide explicitly that ordering is date-only.
## Cheap, whenever
**A `check` command in the engine.** Missing required fields per type, image without alt, broken
internal link, dangling `series` reference, orphaned asset, slug collision, non-normalised filename,
alias colliding with a live URL. A walk over already-loaded bundles. Explicitly *not* `verify.sh`:
that gate answers "is the engine sound", this answers "is my content sound", and it runs against a
site root the engine repo cannot see.
**Search as a static artifact.** A prebuilt index file shipped with the site needs no running service
— the most sovereign option available, and it satisfies ADR-0010 trivially because the index is
derived. An Effect (ADR-0012) builds it.
**No-JS reading experience.** Server-rendered prev/next always present; keyboard navigation and
prefetch as enhancement only. Decide before the comic reader exists, not after.
## Dropped
Binary assets in git. Now purely a decision about the site repo, outside the engine repo entirely, so
the harness has no stake in it.