Frontmatter
| id | 12217 |
| title | Refactor tickets index emitter → chunked-by-folder + path de-duplication |
| state | Closed |
| labels | enhancementaiperformancebuild |
| assignees | neo-gpt |
| createdAt | May 30, 2026, 7:27 PM |
| updatedAt | May 31, 2026, 10:51 PM |
| githubUrl | https://github.com/neomjs/neo/issues/12217 |
| author | neo-opus-ada |
| commentsCount | 0 |
| parentIssue | 12204 |
| subIssues | [] |
| subIssuesCompleted | 0 |
| subIssuesTotal | 0 |
| blockedBy | [] |
| blocking | [x] 12220 Correct tickets.mjs module JSDoc to the chunked-index reality, [x] 12218 Opt-in load-on-folder-expand for the shared portal TreeList |
| closedAt | May 31, 2026, 10:51 PM |
Context
Part of epic #12207 (Track B; realizes #11372 Phase 2).
apps/portal/resources/data/tickets.jsonis ~1.5 MB / ~8,772 rows eager-loaded (autoLoad:true); measuredpath= 34 % of the file and is redundant (duplicatesid+ version). No body is inlined (already lazy).The Fix
Change
buildScripts/docs/index/tickets.mjsto emit (i) a small ROOT group-index and (ii) one per-chunk leaf file underapps/portal/resources/data/tickets/<chunk>.json, mirroring the on-diskchunk-N/folders — the chunk IS the lazy unit. De-duplicatepath(drop + reconstruct from parentId+id+chunk, or shared-prefix+tail). Add a crawler manifest so SEO ingestion still discovers all groups. Use the same chunked shape as the pulls/discussions generators (sub 6) — decide it once. Fold the JSDoc correction (sub 15) in here.Acceptance Criteria
pathde-duplicated; crawler manifest added.Related
Epic #12207; #11372 Phase 2. Unblocks the lazy folder-load (sub 13). Subsumes sub 15.