LearnNewsExamplesServices
Frontmatter
id12981
titleDelete the tickets.json monolith (write-only in neo; last reader is middleware)
stateClosed
labels
enhancementaibuild
assigneesneo-fable-clio
createdAtJun 12, 2026, 11:50 AM
updatedAtJun 12, 2026, 9:24 PM
githubUrlhttps://github.com/neomjs/neo/issues/12981
authorneo-fable-clio
commentsCount2
parentIssuenull
subIssues[]
subIssuesCompleted0
subIssuesTotal0
blockedBy[]
blocking[]
closedAtJun 12, 2026, 9:24 PM

Delete the tickets.json monolith (write-only in neo; last reader is middleware)

Closed v13.1.0/archive-v13-1-0-chunk-1 enhancementaibuild
neo-fable-clio
neo-fable-clio commented on Jun 12, 2026, 11:50 AM

Context

Operator-agreed (2026-06-12, on the #12964 exploration trail): the legacy all-leaves apps/portal/resources/data/tickets.json (1.69 MB, 10k+ entries) is deprecated-in-fact — verified at 4e44dde29:

  • The portal moved off it entirely: apps/portal/store/Tickets.mjs:24-26 loads the chunked tickets/index.json (lazy folders, per-chunk leaf files); zero runtime consumers remain in the portal.
  • The SEO/GEO generators never used it: buildScripts/docs/seo/generate.mjs fast-globs the content tree directly (issues/pulls/discussions + their archives).
  • Repo-wide, its only toucher is its own producer: buildScripts/docs/index/tickets.mjs dual-emits legacy + chunked surfaces.
  • The single true reader anywhere is the private middleware repo's SSG (build.mjs ticketPaths mapping — builds the flat-URL→chunk-path bucket map from the monolith).

Release classification: post-release — pairs with the #12964 middleware work; no v13 surface depends on the deletion.

The Fix (strict ordering — flip the reader before killing the writer)

  1. Middleware first (tracked in #12964, private repo): switch the ticketPaths mapping source from the monolith to the chunked surface (tickets/manifest.json + index.json + per-chunk metadata: chunk nodes carry contentDir/filePrefix, leaves omit repeated paths — the id→subPath mapping is reconstructible from node metadata). Verify a full ticketPaths.json equivalence diff old-vs-new before cutover.
  2. Then neo-side: remove the legacy emit from buildScripts/docs/index/tickets.mjs (keep the chunked emit); git rm apps/portal/resources/data/tickets.json; confirm the hourly data-sync staging globs simply have nothing to stage for it.

Acceptance Criteria

  • Middleware ticketPaths builds from the chunked surface with an equivalence-verified mapping (pre-req, evidenced in #12964).
  • tickets.mjs no longer writes the monolith; the chunked emit unchanged.
  • tickets.json removed from the tree; one full data-sync cycle runs green without recreating it.
  • Portal ticket nav + a sampled /news/tickets/<id> SSG render verified post-deletion.

Out of Scope

  • The ticket-route SSR hang (separate #12964 falsifier) and the middleware's other Phase-0/1/2 items.

Related

  • #12964 (carries the middleware-side flip + the deprecation V-B-A trail) · buildScripts/docs/index/tickets.mjs (dual-emitter) · apps/portal/store/Tickets.mjs (the migration that orphaned the monolith)

Live latest-open sweep: checked latest 15 open issues at 2026-06-12T09:32Z; no equivalent. A2A in-flight sweep: the active claims are the CI-red fixture family (#12973/#12974/#12977/#12980, gpt) — no overlap.

Origin Session ID: c29b5ccc-d711-4cde-8401-32d1e4bbc4f1

Retrieval Hint: "retire tickets.json monolith dual-emit chunked manifest ticketPaths middleware last reader"

Evolution note (2026-06-12, scope extension — operator-pointed): the deletion extends to the pulls.json monolith twin (518KB legacy flat tree, zero readers — the Pulls store loads the chunked pulls/index.json; its only ecosystem reference was its own writer). Verified non-twins stay: discussions.json IS the chunked root index (differently placed, live-consumed), and the remaining small data JSONs (blog/medium/releases/labels/seo/examples) are live-consumed surfaces, not monoliths.

tobiu referenced in commit f70c69b - "feat(portal): delete the tickets.json monolith emit (#12981) (#12998) on Jun 12, 2026, 9:24 PM
tobiu closed this issue on Jun 12, 2026, 9:24 PM