Skip to content
V5EvolutionPhase 7 · complete

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-142026-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.

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

2026-05-14
2026-05-19

04 · The memory

  1. AI systemSub-PR 6.3· pacing

    Cinematic pacing engine — multiplier provider + visibility beacon

    Four-tier duration multiplier taxonomy (FULL / MID / SNAPPY / STILL ≡ 1.0 / 0.85 / 0.65 / 0.0) derived from the cognition signal plus the visitor's reduced-motion preference. Exposed as a React Context with `usePacing()`. A once-per-session `pacing-transition` beacon fires on `visibilitychange:hidden` via `navigator.sendBeacon` with sessionStorage dedupe.

    V5 § 2.5 declares pacing an emotional engine, not visual ornament. The four discrete tiers replace the continuous multipliers other sites bikeshed over — a 0.83 vs 0.84 difference is invisible noise, but a 0.85 vs 1.0 difference is a perceptual shift. Spring physics is banned by the type signature, not just by convention.

  2. AI systemSub-PR 6.2· perception

    Cognition-aware navigation — first perception observer

    The cognition state taxonomy (arrival / exploring / engaged) plus a layout-mounted observer that watches `usePathname()` and fires `cognition-signal` and `navigation-flow` events to the 6.1 endpoint when the visitor has opted in. Renders null. Idle CPU is zero — the only work runs on pathname change, which is a user action.

    The three buckets are deliberately few: two collapses to new-vs-returning, four invites bikeshedding without adding decision value. The transitions are monotone in the per-session page counter so the inference layer never regresses a session from engaged back to exploring.

  3. AI systemSub-PR 6.4· memory

    Memory layer V5 — configurable TTL, IPv6 redaction, pages index

    The V4 Lumina memory layer gained four V5 extensions without breaking the V4 storage shape: configurable 14-30 day TTL via `V5_MEMORY_TTL_DAYS`, IPv6 PII redaction ordered before IPv4, a per-session recently-visited pages index at `lumina:session:<id>:pages` (foundation only — no observer yet), and a memory adoption hash that drives the live hit-rate tile on /lumina/brain. V4 visitors' sessions continue to read through the same keys with the same parser.

    Phase 10's ambient awareness needs longer context windows and a pages index it can read without ever revealing perception to the visitor. Shipping those primitives during the Phase 6 foundation pass — rather than at Phase 10 launch — keeps the V5 foundation work fully isolated from the eventual ambient surface.

  4. ArchitectureSub-PR 6.1· perception

    Perception telemetry foundation — schema + endpoint + transparency

    The first commit on the V5 operating constitution. Six perception categories (scroll-velocity, dwell-time, section-engagement, tab-visibility, navigation-flow, adoption) backed by an edge POST endpoint that gates every write behind an operator env switch, a closed schema allow-list, and a same-origin consent cookie. The /v5/perception page documents the contract publicly. No observer ships in 6.1 — the chassis is the deliverable.

    V5 § 4.1 demands that creepiness be architecturally impossible, not merely policy. The endpoint accepts only bucket labels (never raw values); the storage is six HINCRBY counters; the read path returns aggregate maps. The information a `we noticed you spent 8 minutes on X` message would need does not exist anywhere in the system.

  5. MilestoneV5 Phase 6· portfolio

    V5 Phase 6 closes — Sensory Awakening complete

    Five sub-PRs landed Phase 6 of the V5 operating constitution: perception telemetry foundation, cognition observer, cinematic pacing engine, memory layer V5 extensions, and the public transparency page that closed the phase. The 60-90 day observation window opened on the same commit; no further perception surface ships until Phase 7's foundation lands.

    V5 § 0.2 makes the post-phase observation window mandatory — skipping it accumulates maintenance debt the doc treats as a circuit-breaker. The Phase 6 surface area was deliberately small (one transparency page, three observers, one memory extension) so the observation period could measure adoption without competing surfaces drowning out the signal.

  6. AI systemV4 Phase 4 · Sub-PR 4.5· lumina

    First Lumina sub-agent — architecture-critic

    A heuristic router selects between Lumina and the architecture-critic sub-agent based on critique-verb + architecture-noun signals in the user's message. The sub-agent appends its discipline overlay onto Lumina's base system prompt (inheriting the voice and tool registry); a synthetic init tool surfaces the routing decision through the existing tool-pill UI. Routing decisions land in a KV hash for observability.

    A second inference call for routing would have doubled cold-start latency. The deterministic classifier returns in under a millisecond. ONE sub-agent only — the V4 doc explicitly forbids the multi-agent mesh other AI portfolios sprawl into.

  7. AI systemV4 Phase 4 · Sub-PR 4.1· lumina

    Public Lumina transparency — /lumina/brain + /lumina/failures

    Two public surfaces document Lumina end-to-end: `/lumina/brain` exposes the system prompt, the tool registry, the memory contract, and the runtime topology; `/lumina/failures` is an append-only corrections log where every operator-grade mistake gets a what / why / fix paragraph triplet. V4 § 2.3 turned transparency from a footer link into a brand surface.

    Lumina would otherwise read as a black box whose behavior visitors had to take on faith. The transparency pages make every claim grep-able in the public repo, which is the asymmetry V5 § 2.3 later codified as a brand contract.

  8. AI systemV4 Phase 3· luminasuperseded

    Lumina V3 persistent memory — 14-day TTL + redaction + recap

    KV-backed session memory at `lumina:session:<id>`: full thread persistence for 14 days, PII redaction (emails, phones, AWS keys, IPv4, TC Kimlik, API key prefixes), an 8-turn verbatim context window, and a Haiku-generated session summary at `lumina:summary:<id>` once a thread crosses the cap. The chat survives reloads without leaking identity through the redaction net.

    The aim was operator-grade memory without `welcome back, Emre` ambient profile theatre. The redaction net is purely additive; the visitor-facing controls (opt-out + forget-me) shipped as separate sub-PRs once the memory layer itself was stable.

  9. InfrastructureV4 Phase 5· playground

    Experimental playground — namespace + triple-gate access

    A dedicated `/playground` namespace with capabilities-detection infrastructure, lazy-loaded experiment shells, per-experiment funnel telemetry (visit / mount / capability-miss hashes), and the diagnostic `hello-playground` experiment shipped as proof-of-contract. Triple-gate access: env feature flag, browser capability detection, explicit visitor opt-in.

    Quarantining experimental surfaces from the production portfolio's bundle + Lighthouse posture meant the experimentation cadence could rise without dragging the cinematic identity down. Phase 6+ surfaces that need WebGPU, heavy 3D, or experimental APIs land here first.

  10. AI systemV4 Phase 2 · Sub-PR 2.1· lab

    /lab scaffold + IAM Translator — first public AI experiment

    The `/lab` namespace opens with the IAM Translator: a streaming Bedrock-backed endpoint that turns plain-English AWS access requests into hardened least-privilege IAM JSON. Triple-gate budget — per-IP rate limit, per-experiment daily cost cap, server-side allow-list of input shapes — keeps experimentation cheap. Edge runtime; cost telemetry to the V4 dashboard.

    Phase 2's wedge was public-facing AI experiments that DEMONSTRATE Lumina's operating discipline rather than describe it. IAM Translator is the canonical example: the security-sensitive output forces the architecture to handle prompt injection, cost caps, and streaming failure modes correctly.

  11. Release0.1.0· lumina-chat

    @emredogan/lumina-chat published — first OSS release

    Lumina extracted as a standalone React package and published to npm. The portfolio consumes the same package the public consumes — there is no internal-only fork. 23.7 kB unpacked tarball; the package surface tracks Lumina's V3 + V4 invariants exactly.

    Distribution before perfection. The OSS contract enforced a clean API boundary that the V4 + V5 transparency surfaces (and the eventual sub-agent registry) had to respect.

  12. InfrastructureV4 Phase 1 · Sub-PR 1.2· portfolio

    Public telemetry dashboard — /telemetry

    A public `/telemetry` page renders every observable axis the platform tracks: Lumina p95 latency, auto-tweet success rate, npm download counts, MRR, lab adoption funnels. Backed by `lib/telemetry/metrics.ts` — a single allow-listed metric registry that gates every KV write and read against the V4 § 2.13 schema. Graceful no-op when KV is unavailable.

    The telemetry surface became the platform's first explicit operator console — a contract that turned `claims about how the site works` into `live numbers the visitor can audit`. Every subsequent V4 + V5 sub-PR has had to declare which metric slot it occupies before merging.

  13. TopologyV3 Phase 4· cloud-waste-hunter

    CWH topology engine transplanted onto the homepage

    The Three.js + @xyflow/react topology that originally lived on /architecture/cloud-waste-hunter was migrated onto the homepage as the hero constellation. The same scene, with the project-side camera philosophy adapted to a spatial-freedom variant that reacts to scroll. Identical chunk reused across both surfaces — the global bundle didn't grow.

    The CWH topology was the strongest single visual artifact the portfolio had. Moving it to the homepage made the engineering case the FIRST thing a visitor sees, ahead of any biographical / case-study prose. The decision required the topology to support two camera modes (constrained scroll-through on /architecture, free spatial on the home hero) which the same engine had to negotiate.

  14. ReleaseV3 Phase 3· cloud-waste-hunter

    Cloud Waste Hunter Pro — pricing + live metrics shipped

    Cloud Waste Hunter moved from project case study to monetized SaaS surface: a pricing page, a Lemon Squeezy checkout flow, a live-metrics endpoint that surfaces real production numbers, and the embedded CWH Pro CTA that appears on both /projects/aws-waste-hunter and /architecture/cloud-waste-hunter. The portfolio became its own conversion funnel.

    Demonstrating that a single-engineer SaaS can run a production billing flow inside the portfolio itself — instead of linking out to a separate marketing site — is the V3 signal that V4's OSS launch + V5's adaptive recruiter intelligence would each build on. The portfolio became a conversion surface in its own right.

  15. TopologyV3 Phase 2· cloud-waste-hunter

    3D AWS topology — Cloud Waste Hunter explorer

    A WebGL scene representing the Cloud Waste Hunter architecture as a 12-node 3D constellation. Three.js with @react-three/fiber + @react-three/drei; mobile falls back to a 2D hierarchical view. Renders only on the project sub-page (route-isolated chunk) so the global bundle stays cinematic-fast.

    V3's signal experiment: a project case study where the topology is the protagonist, not a static SVG. The route quarantine kept the WebGL cost out of the global bundle; the same pattern is the foundation for Phase 8's cinematic topology (one route, one spectacle).

  16. InfrastructureV3 Phase 1· portfolio

    Edge runtime + KV cache + reduced-motion guard — V3 foundation

    Five small foundation commits hardened the platform for what V4 would later need: the GitHub events feed moved behind an edge KV cache; the Lumina chat endpoint migrated to edge; conversations persisted across reloads; the global reduced-motion guard collapsed every animation to 0.01ms under the OS preference; a sitemap + robots + JSON-LD + skip-to-content + 44px touch targets shipped together.

    The cinematic identity required a performance posture rigid enough to absorb the V4 + V5 AI surface area without ever sacrificing Lighthouse Mobile 98+. Phase 1 was where that contract became architectural rather than aspirational.

  17. MilestoneV1· portfolio

    Cinematic identity — genesis commit

    The initial cinematic identity: black canvas, Geist typography, the #00d2ff accent, the editorial vocabulary the rest of the ecosystem inherits. Three production project case studies (Cloud Waste Hunter, VibingCoderAI, FormAI), three long-form notes, the V3 roadmap document.

    The genesis commit framed the engineering work as a single coherent surface rather than a sequence of demos. Every subsequent system — Lumina, /lab, /telemetry, /v5/perception, /evolution — has had to inherit that voice or be rejected.

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.

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.