Files
intotheeast-com/docs/reference/superseded-decisions.md
m038andClaude Opus 5 7c9c140a1b Merge main into feat/docs-reconcile; defer to main on two overlapping fixes
main advanced 13 commits while this documentation audit ran — the
location-override work was merged into the outer repo — and it independently
fixed two of the audit's findings. Without this merge the branch would have
REVERTED them, which is the worst outcome for a cleanup pass because it arrives
disguised as an improvement.

Both conflicts resolved in main's favour; main's wording was better informed:

- CLAUDE.md, the single-map-path rule: main's carve-out (829325c) states the
  exception as its own top-level bullet, names MAP_STYLE as the one shared
  thing, and spells out both prohibitions ("do not fold it into initEntryMap",
  "do not add a third path"). Taken verbatim over the version drafted here.
- 2026-07-23-post-form-location-override.md: main (a517331) had already set the
  status to Complete, with far richer detail — the multi-agent review findings,
  the green-run numbers, the DEL4 regression still open, and the merge SHAs.
  Taken in full; the audit's claim that the status "lagged" was dropped, since
  it was true only of this branch's older branch point.

Submodule pin: main bumped user/ to dd19995 and this merge preserves that. The
audit's own no-gitlink-commit discipline applies to bumping the pin as a side
effect of routine work, not to discarding a bump main already made.

main touched none of the other nine corrected documents, so the remaining 18
findings stand unchanged.

Audit notes corrected to match reality rather than left overstated:

- superseded-decisions.md R13 now dates the carve-out to 2026-07-24 (829325c)
  rather than implying this pass introduced it.
- The reconciliation spec gains an "audit baseline moved twice" section: the
  submodule pin lagged real HEAD, and then the base branch advanced mid-audit.
- The compounded learning's section 6 is rewritten from "audit the current
  state" to "re-check the baseline before publishing, not only before starting",
  with the two habits that actually follow: merge the base branch in before
  opening the PR and read conflicts as findings, and when the incoming version
  is better, take it wholesale. An audit has no special authority over the work
  it audits.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-25 00:21:47 +02:00

8.0 KiB

Superseded decisions

Things this project planned, built, and then deliberately reversed. One row per reversal.

Why this file exists. The plans and milestones under docs/working/ are historical records — they say what was decided then, and they are correct as records. But a reader who opens milestones/milestone-2.md finds a confident present-tense description of a Leaflet /map page that has not existed since 2026-07-04. This file is the changelog of "what did we change our mind about", so that question has one answer instead of requiring a re-derivation from the code.

How to use it. Each superseded section in the old docs carries a > **Superseded …** note pointing back here. If you are about to re-create something you found in an old plan, check here first — the reversal is usually deliberate, and several are load-bearing rules in CLAUDE.md.

Keep it current. When a decision is reversed, add a row in the same commit as the reversal. A ledger that lags is worse than no ledger, because it is trusted.


The reversals

# Originally planned Planned in True now Changed Why
R1 A standalone /map page — full-height Leaflet map, marker per entry, popups milestones/milestone-2.md (whole doc); summary.md No /map route. The map renders inline on the trip page through the single shared partials/entry-map.html.twig 2026-07-04 plans/2026-07-04-standalone-page-cleanup.md. One consolidated trip page beat four thin views; a separate map page meant a second map implementation to keep in sync
R2 A standalone /stats page — days on the road, entries, countries, distance milestones/milestone-3.md (whole doc); summary.md No /stats route. Stats render inline on the trip page behind a toggle, via initTripStats() 2026-07-04 Same cleanup. The numbers are trip context, not a destination
R3 A /tracker feed route as the entry list milestones/milestone-1.md §1.6; milestone-2.md; milestone-3.md; summary.md No /tracker. The feed is the trip page plus the home active-trip view, sharing partials/trip-feed-col.html.twig Restructured 2026-06-19 (plans/2026-06-19-trip-entity.md), fully retired 2026-07-04 The Trip entity became the organising unit, so a global tracker had nothing to track
R4 Leaflet.js with OpenStreetMap tiles milestone-2.md; milestone-4.md; summary.md; pm-analysis.md MapLibre GL JS, CartoDB dark-matter basemap. Style URL is single-sourced as MAP_STYLE in js/src/map-style.js 2026-06-20 plans/2026-06-19-maplibre-migration.md. Vector tiles, GPU rendering, and a dark basemap that suits the dark theme
R5 A standalone /dailies journal view and /stories story view plans/2026-06-19-trip-entity.md era Both routes retired. 01.dailies/ and 04.stories/ survive as routable:false data containers whose children the trip page aggregates 2026-07-04 Same cleanup. The folders are load-bearing — retiring a view must never delete its container (see CONCEPTS.md → Container)
R6 Site nav "Journal · Map · Stats" summary.md Home · Trips, plus New Post when authenticated (partials/base.html.twig:27-31) Sub-views retired 2026-07-04; "Past Trips" renamed "Trips" 2026-07 (6cf5092) Nav should not link to views that no longer exist
R7 hero_image frontmatter on entries, to pin a feed-card hero milestone-1.md §1.6; summary.md; pm-analysis.md No hero_image field on journal entries. The hero is the first uploaded photo (entry-journal.html.twig uses entry.media.images|first). Photo order is owner-controlled, so an explicit filename was redundant. Stories still use hero_image 2026-07 plans/2026-07-05-photo-editor-media-api.md gave the owner drag-reorder over photos, which made "first photo" a deliberate choice rather than an accident
R8 Photos optional on an entry milestone-1.md §1.5; guides/posting.md (pre-2026-07-25) Photos are required — minimum 1, maximum 6 (post-form.md:35-46, enforced in post-form.js initValidation) 2026-07 plans/2026-07-04-journal-post-form.md. Photos come first in the form because they anchor what you write
R9 A light-mode colour palette alongside dark reference/design-system-light.md (whole doc); plans/2026-06-19-dark-mode.md Dark only. css/tokens.css has a single :root block; there is no prefers-color-scheme or data-theme switch, and no light-palette hex appears in css/ 2026-06-20 Dark mode shipped as the theme, not as one of two. The light palette was the pre-dark-mode original and was never re-implemented as a switchable theme
R10 shortcode-gallery-plusplus as the entry photo gallery pm-analysis.md Galleries are PhotoSwipe, wired in js/src/main.js against .pswp-gallery markup emitted by partials/entry-journal.html.twig. No [gallery] shortcode is used anywhere in templates/ or pages/ 2026-06-21 (30c8937, "replace custom lightbox with PhotoSwipe v5") A lightbox the theme controls beat a plugin's markup. ⚠️ The plugin is still listed in plugins.txt with no consumer — see recommendations
R11 travel-memories as an in-repo service on :8082, built from ./services/travel-memories plans/2026-06-21-travel-memories.md; specs/2026-06-21-travel-memories-design.md; working/2026-06-21-travel-memories-handover.md Extracted to a separate project. services/ is gitignored and the source is absent from this repo a80b0a9 — "remove travel-memories service from repo (moved to separate project)" It was an independent Flask app with its own lifecycle. ⚠️ docker-compose.yml still declares the service, so make start fails on a clean checkout — see recommendations
R12 Three map template variants (feed-map.html.twig partial with inline init, plus full-page map.html.twig) pre-2026-06-27 templates One display map pathMapUtils.initEntryMap() in js/maplibre-utils.js, invoked through partials/entry-map.html.twig Consolidated 2026-06-27, variants deleted 2026-07-04 plans/2026-06-27-map-init-consolidation.md. Three implementations drifted apart
R13 A single map code path, no exceptions CLAUDE.md (pre-2026-07-24 wording) One display path (R12) plus one sanctioned editorjs/src/location-map.js for the /post pin picker: one draggable marker, no popups/GPX/bounds, maplibre-gl lazy-imported. Shares only MAP_STYLE with the display path 2026-07-24 — user/ dd19995, outer 4450bd6; the rule was carved out in 829325c plans/2026-07-23-post-form-location-override.md. An editor map has none of a display map's concerns; folding them together would have compromised both
R14 post-form.md carries a static pageconfig.parent naming the write target pre-2026-07 form config No parent in post-form.md. cache-on-save derives it from site.active_trip at submit time 2026-07 The two settings silently desynced. Never re-add it — this is a hard rule in CLAUDE.md

Decisions that were not reversed

Worth stating, because their planning docs are old enough to look suspect:

  • The SKIP list in pm-analysis.md still holds. Background GPS tracking, followers, comments, social discovery, reactions, trip reels, 3D flyover, printed books, and AI itinerary building were all deliberately rejected for a solo flat-file blog. That reasoning has not changed — only some of the BUILD items' delivery mechanisms did (R1, R2, R4, R7, R10).
  • Weather via Open-Meteo, no API key, with the eight allowed weather_desc values — still exactly as planned in milestone-1.md §1.2, and still matching the blueprint and the post form.
  • Location badge (📍 City, Country) on cards and entry pages — as planned.
  • Distance/stats computation from frontmatter and GPX — the numbers survived; only their location moved from a /stats page to the trip page (R2).