record the core-budget squeeze and why only part of it can move out
Held on the human's call: the code move waits for the idea review, since how much
core room is needed depends on what that review places in core.
Worth recording rather than rediscovering. Core sits at ~35 lines of headroom with
at least four core-bound items before the Arc 2 freeze — the View layer, the Stage
pipeline (roadmap.md Arc 2 item 2, which I had been treating as optional), a
minimal settings cascade the Views counter couples to view selection, and declared
content types.
The relief I recommended was overstated and is corrected here. discover.go (~71
lines) can leave core once ADR-0081's seam passes the live index. feed.go and
web/extras.go cannot: a feed lives at /{section}/feed.xml and extras under a
bundle's own URL, so both are resolver cases while the seam mounts exact paths
only — the limit that ADR's own "revisit if" line predicted and I did not check
before recommending ~196 lines of relief.
So the open choice is extending the seam to resolver participation versus raising
CORE_LOC_MAX with an ADR, and it is the review's to settle.
2 files. No rule or threshold moved.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -149,6 +149,7 @@ with a stated reason. A list nothing drains is a graveyard of known defects.
|
||||
| Sequence resolution rescans the index on every bundle request — two passes over every key, each doing a `Lookup` | Measured at the same time as the pictures (ADR-0044): a whole page is ~63µs, so this is not what costs anything. Remembering it would be a cache with no measurement behind it | A page render exceeding a few milliseconds, which is also what would revive the parked cache model |
|
||||
| The root listing's `<title>` repeats itself — "A Khosra Demo · A Khosra Demo" | Spotted 2026-08-01 by looking at the served page, not by any test: `base.html` joins page title and site title unconditionally, and at the root those are the same string. Cosmetic, and the fix is one `if` in a template — theme layer, not engine | The next time `base.html` is edited for any reason — its old trigger named queue entry G4, which has been dropped |
|
||||
| `khosra check` cannot report a `root/` file shadowing an engine path | The knowledge lives in `internal/ext/passthrough/`, and `verify.sh` fails a feature that imports a sibling — so `check` would need the reserved paths moved into a shared package for a cosmetic gain. The startup warning fires on every boot and cannot be missed, which is louder than a `check` finding anyway (ADR-0081) | A second feature owning routes, at which point reserved paths stop belonging to one feature and want a home of their own |
|
||||
| Core has ~35 lines of headroom and at least four core-bound items remain before the Arc 2 freeze | Held on the human's call until every pending idea has been placed and prioritised, since how much core room is needed depends on that review. The bound items: the View layer, the Stage pipeline (`roadmap.md` Arc 2 item 2), a minimal settings cascade the View counter couples to selection, and declared content types. Moving route-owning code out is only partly possible — `internal/web/discover.go` (~71 lines) fits ADR-0081's seam once it passes the live index, but `feed.go` and `web/extras.go` do not, because feeds and extras are *resolver* cases and the seam mounts exact paths only | The idea review concluding, which decides between extending the seam to resolver participation and raising `CORE_LOC_MAX` with an ADR |
|
||||
| A draft member's absence from a sequence has no test | Proven by hand against the real binary on 2026-08-02 — a three-chapter series with a draft middle lists two members, prev/next closes over the gap, and the draft 404s. It holds by construction: `members()` resolves through `Lookup`, which is the one place ADR-0024 hides unpublished bundles, so there is no second code path to drift | The first change to `members()`, or to how `Lookup` decides visibility |
|
||||
| Under `include: embed`, a fragment's footnotes render where the include sits, so a long one puts an `<hr>` and a numbered list mid-article | Spotted 2026-08-01 by looking at the served page, not by any test. It is ADR-0038's documented consequence, and the ids are correctly namespaced (ADR-0058); only the placement reads badly. Merging is the default since ADR-0076, so this is now something an author opts into by asking for containment | Nothing: it is the documented cost of the model you chose |
|
||||
|
||||
|
||||
@@ -26,6 +26,7 @@ as pending after ADR-0081 built it. Anywhere else that needs one links here.
|
||||
| Math, `$…$` → MathML | wanting it enough to accept the cost. No tagged pure-Go library exists — the only candidate is an untagged 2023 commit — and MathML can be written by hand today, since raw HTML renders (`reference/math-on-the-web.md`) |
|
||||
| Corrections derived from history | the Effect runner, plus a decision on whether the engine may read the content repo's local git history ([corrections-from-history.md](corrections-from-history.md)) |
|
||||
| Write routes — POST and friends | Arc 3. ADR-0081's seam mounts `GET` only, so the first write endpoint extends it |
|
||||
| Features participating in URL *resolution* | wanting to move `feed.go` or `web/extras.go` out of core. ADR-0081 mounts exact mux paths, which is why `discover.go` can leave core and those two cannot: a feed lives at `/{section}/feed.xml` and extras under a bundle's own URL, so both are resolver cases rather than fixed names |
|
||||
| Extension registry, the remaining six fields | a second implementor for whichever field. `Routes` was built at its trigger (ADR-0081); the rest have none |
|
||||
|
||||
## Cache validity model
|
||||
|
||||
Reference in New Issue
Block a user