Skip to content

Introspection ​

Analysis of how the rhi ecosystem is built - patterns, costs, and pain points observed across agent sessions.

These pages are generated from Normalize session analysis (normalize sessions stats, normalize sessions show --analyze) run across all ecosystem repos.

Pages ​

  • Session Analysis - Comprehensive analysis of 2329 Claude Code sessions across the ecosystem (January 2026)
  • Session Deep Dives - Per-session analysis of flagged high-rework, high-cost, and agent sessions

Activity Log ​

Periodic snapshots of ecosystem activity — what's moving, what it costs, what shipped. Aligned to Mon–Sun weeks. Session cost data available from Jan 26 onward.

WeekActive ReposCommitsCostFocus
Dec 15–211709—normalize only: call graphs, external index
Dec 22–281697—normalize only: highlight queries
Dec 29–Jan 41314—normalize only: agent v2
Jan 5–1114729—ecosystem explosion: 14 repos scaffolded
Jan 12–1816388—zone + unshape lead, behavioral patterns rollout
Jan 19–2519923—peak breadth, ecosystem renames, server-less OpenAPI
Jan 26–Feb 121444$4,358crates.io prep, hologram permissions, session analysis
Feb 2–88354$1,617reincarnate emerges, ooxml complete WML, motif scaffolded
Feb 9–159666$1,756"two at a time": reincarnate + existence
Feb 16–226613$1,079reincarnate + existence steady, tightest focus
Feb 23–269594$895crescent scaffolded, rescribe fixtures, ooxml OMML

Patterns ​

What keeps a project active ​

Projects stay active when they have external pull — a reason to keep working beyond the initial scaffolding.

Pull typeProjectsWhy it works
Daily tool usenormalizeYou use it to analyze your own work
External communityreincarnate, ooxmlGameMaker porting community; Office format users
Active usershologramDiscord RP community using it daily
The work demands contentexistenceThe game itself needs writing
Concrete format coveragerescribeMeasurable — N formats supported, fixture pass rates
Upstream dependencyserver-lessnormalize will consume it; actively gaining features

Why things go dormant ​

  • Feature complete: dew (expression language), keybinds (keybind/command palette library, used in ptera.world and reincarnate), ooxml (Office Open XML — codegen'd from schemas)
  • Sufficient for now: unshape — fleshed out, no pressing use case to push further
  • Dependency chains: zone → moonlet → portals all went dormant together. Zone (Lua tooling) lacked a pressing use case, so its runtime (moonlet) and its capability system (portals) had nothing to serve
  • Superseded by sibling: aspect (card-based identity exploration) set aside for existence; moue (BDCC fork) set aside for existence
  • Decomposed into other projects: lotus (MOO framework) → reed → normalize-surface-syntax; lotus's capability-based runtime → moonlet + portals
  • Sunsetted: herbarium (repology-but-worse — repology already did the hard unification work, unusable due to licensing); prose (program synthesis experiment — concluded writing programs is hard, needs more disciplined approach grounded in prior art)
  • On hold / forgotten: pad (file workspace — forgotten about)
  • Waiting for demand: playmate (game primitives without a game that needs them), concord (API codegen without APIs to bind)
  • Reframed: interconnect (was "federation protocol" — now connective substrate for authoritative rooms, with immediate use case in agent steering)

Architecture: tools, not repos ​

The ecosystem is highly modular. normalize has 30 crates — 10+ are standalone tools with their own CLIs that are also composed into a single meta-CLI. server-less is the mechanism that makes this cheap (one impl → many protocols, derive CLI/API/library interfaces from one implementation).

This means repos are organizational boundaries, not product boundaries. "What do you work on next" isn't "which repo" — it's "what capability do you add to the toolbelt." The dormant repos aren't stalled projects; they're namespaces containing crates that can be pulled in as dependencies when something needs them.

The scaffolding question ​

The Jan 5–25 explosion (1→14→19 active repos in 3 weeks) scaffolded the full vision cheaply — most repos got <50 commits. Having structure ready means starting instantly when demand appears. The cost of premature scaffolding is low; the cost of not having it when needed is context-switching to set up infrastructure.

Focus strategy ​

"Two at a time" emerged naturally by Feb 9 — pick two projects with real pull, in complementary cognitive modes (systems/compiler + creative/design). Active repo count dropped from 19 to 6. The remaining repos get maintenance touches, not feature pushes.

Project maturity (as of Feb 26, 2026) ​

Shipped / feature complete:

  • dew, keybinds, ooxml, unshape (sufficient)

Active, with clear trajectory:

  • normalize — daily-use tool, grows with the ecosystem. No "done" state — it's the meta-tool.
  • reincarnate — Harlowe frontend mostly complete. SugarCube, GML, Flash in progress. Goal: support many major runtimes (Ren'Py, RPG Maker, Inform, etc.). Long runway.
  • existence — open-ended by design. Core systems mostly set in stone but perpetually fleshable. Technically usable now.
  • server-less — actively gaining features. normalize will consume it.
  • rescribe — 30+ formats, growing fixture coverage. No product consuming it yet.
  • hologram — stable, active users.
  • crescent — just scaffolded, initial import done.

Scaffolded, waiting for demand:

  • gels, motif, deskspace, concord, interconnect, playmate, dusklight, moonlet, portals, zone