Evolution.The system remembers itself.
This is the engineering memory layer for the portfolio ecosystem. Not the changelog (that lives at /changelog and reads the raw commit firehose). Not the project archive (those live at /architecture). This is the editorial registry of architectural moments the system chooses to remember — versioned, typed, append-only.
01 · The registry
17 architectural events recorded across 2026-05-14 → 2026-05-19. 16 currently active; the rest carry the superseded flag and remain in the archive for the audit trail.
- Architecture
- 1
- Infrastructure
- 3
- AI system
- 7
- Topology
- 2
- Release
- 2
- Milestone
- 2
- Evolution
- 0
02 · Filter by category
Seven categories index the registry. Each one is an architectural axis — not a content type. Pick one to narrow the archive, or stay on the unfiltered view to read the full memory.
EvolutionCross-cutting changes that don't fit one axis but matter as ecosystem evolution.
03 · Scrub the timeline
The slider below is the cursor over the engineering memory. Drag the thumb, click a tick, step with the arrow keys, or press play to let the cursor advance from the present back to genesis. The track is a single WAI-ARIA slider — keyboard, mouse, and touch all work; reduced-motion preserves the slider but removes the easing.
cursorV5 Phase 6 closes — Sensory Awakening complete
04 · The memory
$ evolution.query
No events match this filter.
The registry is append-only; absence here means no architectural event of this kind has been recorded yet — not that one is hidden.
05 · Live adoption
The temporal layer records three kinds of adoption event: the page rendered, a category filter was applied, an event deep-link was followed. All three are aggregate-only — counters by event kind, no per-visitor identifier, no session-id field. The numbers below are cumulative since the layer was first enabled.
view
—
category_view
—
event_view
—
Playback verbsCounters for the five primitive operations the slider exposes — seek (click or keyboard jump), scrub (drag), play (auto-advance), pause, step (single frame). Every counter increments fire-and-forget; the slider never blocks on the network.
seek
—
scrub
—
play
—
pause
—
step
—
Timeline engagementThe slider's lifecycle hash. Each visitor session increments mounted at most once when the slider renders, and engaged at most once on the first scrub, seek, step, or play interaction. The rate captures awareness vs use.
mounted
—
engaged
—
engagement_rate
—
06 · Source files
Every entry in the registry is grounded in code. Click any row to read the file on GitHub.
- Schemalib/v5/temporal/schema.tsThe EvolutionEvent shape, the category + status + provenance allow-lists, and the type guards every registry consumer reads through.
- Registry accessorslib/v5/temporal/registry.tsPure data accessors over the data file. Sorts descending by date, applies the supersedes cascade, exposes per-category / per-system filters.
- Adoption telemetrylib/v5/temporal/telemetry.tsAggregate-only KV hash at v5:temporal:adoption. Three event kinds (view / category_view / event_view). Graceful no-op when KV is unavailable.
- Frame math (7.2)lib/v5/temporal/frames.tsPure interpolation helpers — TemporalFrame, TemporalCursor, buildTemporalFrames, interpolateCursor. Deterministic; no DOM, no Date.now() in the math layer.
- Playback controller (7.2)lib/v5/temporal/playback.tscreateTemporalPlayback factory. seek / scrubTo / nextFrame / prevFrame / play / pause / destroy. Reduced-motion snap, RAF injectable for SSR + tests, idle CPU 0% when scrubber inactive.
- Playback adoption (7.2)lib/v5/temporal/playback-telemetry.tsAggregate-only KV hash at v5:topology:playback. Five event kinds (seek / scrub / play / pause / step). Graceful no-op when KV is unavailable.
- Timeline slider (7.3)components/v5/TimelineSlider.tsxThe first consumer of the 7.2 playback controller. WAI-ARIA slider role, keyboard + mouse + touch all functional, WCAG 2.5.5 AAA hit targets, reduced-motion preserves the slider but removes the thumb transition.
- Timeline engagement (7.3)lib/v5/temporal/timeline-telemetry.tsAggregate-only KV hash at v5:topology:timeline. Two event kinds (mounted / engaged). The engagement_rate the V5 doc names is computed downstream as engaged / mounted.
- Architecture engagement (7.4)lib/v5/temporal/architecture-engagement.tsAggregate-only KV hash at v5:topology:architecture-page. One field per project slug, incremented when the slider on /architecture/<slug> is engaged. Session-deduped client-side per (kind, slug).
- Architecture page section (7.4)app/architecture/_components/ArchitectureTimelineSection.tsxServer-rendered wrapper for the per-architecture slider. Conditional on events.length >= 2 (V4 behavior preserved when registry coverage is insufficient). Hidden below 768px viewport.
- Event datadata/temporal/events.tsThe canonical hand-curated registry. Append-only by convention. Each entry carries id / date / category / summary plus optional version / system / rationale / commitSha / refs / status / supersedes / provenance.
- JSON feedapp/api/v5/temporal/events/route.tsEdge GET endpoint. Returns { summary, events }. Supports ?category= and ?system= filters. CDN-cached for an hour, stale-while-revalidate for a day.
- This pageapp/evolution/page.tsxThe editorial archive surface itself. Static prerender, 1h ISR. No client-side timeline, no canvas, no animation framework beyond the existing Reveal wrapper.
V5 · Phase 7 · Temporal Architecture·Append-only registry·Versioned + typed + provenanced
Phase 7 closes here. Four sub-PRs landed the temporal architecture: 7.1 the schema + registry + archive surface, 7.2 the deterministic playback primitive, 7.3 the WAI-ARIA slider above, and 7.4 the per- project mount on /architecture pages (hidden below 768px viewport, opt-in by registry coverage). The observation window now opens before Phase 8 (cinematic topology); no further temporal surface ships during that window.
