F-15 Action Timeline kernel. sanitize* / mergeActionTimelines are pure. The virtualized ledger, SVG overview, and workbench panels live in island.ts and keep _timelineView identity plus the E2E function names. Window contract names are assigned here (not in window-exports.ts).
| File | Responsibility |
|---|---|
api.ts |
Same-origin /api/v1 fetch, optionalApi, hint / later-lane isReady calls. |
dom.ts |
el / iconEl / ghostIconBtn / svgElement / $ / bytes. |
execution-request.ts |
exactExecutionIdentity / scopedExecutionRequest (app.js:3021-3041): an interrupt names the exact execution it stops. |
execution-request.test.ts |
Vitest: the interrupt names an exact execution, and refuses when it cannot. |
index.ts |
bootTimeline: WS handlers + window contract assignments. |
index.test.ts |
installTimeline publishes loadWorkbenchState for later-lane callWindow. |
island.ts |
Imperative island: 46px ledger, overview SVG, five sidebar panels, renderActionTimeline. |
model.ts |
Span / overview geometry, actionTimelineEntryKey, epoch parser. |
s.ts |
createSProxy() alias so nested _timelineView writes keep identity. |
sanitize.ts |
sanitize* family and mergeActionTimelines (app.js:2795-3298). |
sanitize.test.ts |
Vitest for sanitize* and merge. |
types.ts |
Allowlisted projection shapes. |
ws.ts |
action_timeline / execution / recovery / branch / delegation / sandbox handlers. |