Feature registry draft

projects/shur/dev-sprint-1/feature-registry-draft.md

Feature Registry: Block 2 Draft for Adjudication

Candidate list assembled 2026-07-17 from the codebase inventory, the 2026-07-16 sync, and the project record. Jonny referenced 16 modules and 19 features on the call; this draft proposes candidates for him to prune, merge, rename, and rank into the canonical set. Each surviving feature gets a branch, an issue, and the value schema (scope, outcome, intended user, IP value alone and compound) before sprint entry.

Layer key

Why two layers were added, 2026-07-26. The original four layers had no row type for a presentation form or a data channel. Fourteen proven delivery methods (two-mode insight cards, progress pills, the five ported viewports, the Fiserv temporal canvas, the evidence trail, and the rest) had nowhere to be filed, so each survived only as long as the call it was discussed on. Full evaluation: projects/shur/shuriq-c2/design/2026-07-26-dashboard-delivery-grammar.md.

Binding rule: every Form row cites the Channels it subscribes to. A Form with no Channel is a sketch and does not get a branch.

Revised 2026-07-28 by 2026-07-28-sprint-decisions. Channels gained an honest status and an inputs list (D-10: a channel may subscribe to channels). Forms F-12 to F-20 are deferred as build candidates (F-2). Readers R-02 to R-04 are removed (C-2). The action enum ships two of five types (C-3).

Candidates

# Candidate Layer Status today Source location Intended user
1 Report Studio App Live (prod branch main) outside repo → apps/report-studio/ Internal team, then enterprise clients
2 Report renderer + reskin Module In progress (Alex handoff) report-studio + dbm-brand-read-reskin All report consumers
3 Consumer terminal dashboard App Mockups assigned (Nicholas) new Terminal customers (holding cos, investors)
4 System admin dashboard App Wireframes (KG) new Internal team
5 Attention dashboard (delta ranking) Module Prototype views built ShurIQ analysis outputs Terminal customers
6 SBPI scoring engine Engine Live (9 score sets + terminal health drivers) vault workflows + semantic layer All report types
7 Stack ranking Module Live in reports report workflows Enterprise + terminal
8 Knowledge-graph engine Engine Live (shuriq_kg package) projects/shur/shuriq-kg/engines/kg/ System-internal, feeds everything
9 Slack document agent Module Live in Fiserv channel, gate review pending projects/shur/slack-agent/modules/slack-agent/ Internal team, then clients
10 Transcription ingest Module Nicholas's front end + ShurIQ pipeline, integration spec owed Nicholas's repo + backend spec Enterprise clients, bolt-on subscribers
11 Simulation Studio (audience modeling) Module Live standalone, DBM first audience sense-collective-simulation-studio → monorepo Enterprise clients (messaging tests)
12 OKF interchange layer Interface Live (profile v0.4, tools + gated Worker) projects/shur/okf/interfaces/okf/ Agents, teammates, export boundary
13 Grammar gate CI Interface Live vault-side, moves to CI report-grammar/grammar-gate.py + dotprompts Every report-producing branch
14 Module gallery (callable report modules) Module 6 modules defined (MOD-001..006) report-grammar/module-gallery/ Report Studio build options
15 Generic project intake form Module Proposed (Diana, 2026-07-16) new Whole team
16 Gap analysis / InfraNodus integration Engine Live across engagements workflows + MCP Report builds
17 Viz studio (D3 viewports) Module Live standalone viz-studio → monorepo Reports + dashboards
18 Managed-agent report runs Module Built (71-file workspace, run mode 3) shuriq-report-studio/managed-agent/ (vault) Ops: reports at different price points
19 SBPI nightly autoresearch Engine Live (fixed 2026-05-30) scheduled pipeline Score freshness
20 Semantic layer (RDF store + SPARQL) Engine Live (weekly movers, anomalies, signals) microco/competitive-intel/semantic-layer/ Terminal + briefs
21 Brand dashboard gateway Module State store live (profiles, insight feeds) shuriq-brand-dashboard-gateway/ Enterprise weekly deliverables
22 Model routing + swap layer Interface Implicit today (Claude-specific) across engines System: de-risks Anthropic dependency
23 Report publishing/deploy pipeline Module Live (Cloudflare, gated branches) per-project build scripts Ops
24 Totem Persona intake Module Satellite (myKG bootstrap; rebuild planned) ~/projects/mykg fork Future: per-user identity graphs

Channel candidates (added 2026-07-26)

Twelve producers. A route cannot cite a channel that is not on this list.

Status is a closed vocabulary as of 2026-07-28: live, live-one-client, local-only, unbuilt. Nine are live. Three are not, and before this pass the table read as twelve live producers. An armed route may cite only live or live-one-client; route-gate.py enforces that, and a proposed route may cite anything registered.

Each row also carries inputs, the channels it reads (D-10). All twelve are currently [], meaning each reads the world directly. Derived channels for SBPI scoring, negative-space mapping, and agent reasoning get their rows when they are specified.

ID Channel Layer Status today Source location Cadence
CH-01 SBPI nightly autoresearch Channel Live semantic-layer/scheduler/sbpi-nightly-pipeline.sh Nightly 06:13
CH-02 DKR heartbeat Channel Live system/scripts/dkr-nightly.sh Nightly 04:00
CH-03 Prediction and optimization loop Channel Live kg_interface_optimizer.py, prediction_experiment.py Nightly, steps 4 and 5
CH-04 Cartography swarm Channel Live projects/cartography/PLAYBOOK.md On assignment
CH-05 Weekly stack rank Channel Live competitive-intel/state/current.json plus impact digest Weekly, Monday
CH-06 Editorial viewports Channel Live intelligence-brief skill Per report
CH-07 Next 30 days recommendations Channel Live Editorial report recommendation section Per report
CH-08 Channel intelligence (Slack and Drive watcher) Channel live-one-client (Fiserv) 28-type schema, #fiserv-poc-26-203 watcher Continuous
CH-09 Post-call analysis Channel Live post-call-analysis skill Per call
CH-10 Simulation runs Channel local-only simulation-engine/client-packs/ On assignment
CH-11 Semantic layer queries Channel Live Oxigraph 127.0.0.1:7878, sbpi.ttl On query
CH-12 Reader annotations Channel unbuilt W3C Web Annotation loop, dev task 4 On read

Form candidates (added 2026-07-26)

Twenty forms. Eleven are built and trapped inside report HTML or one Python generator, and zero are callable from anywhere else.

F-12 to F-20 are deferred as build candidates, 2026-07-28, decision F-2. Extraction of a built form outranks invention of a new one, and the condition for undeferring is that at least one of F-01 to F-11 becomes callable outside report HTML. The rows stay in the registry so a route can be declared against a form ahead of its build, which is the reason the form layer is separate from the app layer.

The F-21-onward range is closed, not contested. Decision D-8 is resolved by C-5: neither competing range is allocated. A module is referred to by name until it is built, then takes the next free number at the pull request that builds it.

ID Form Status today Proven on Feeding channels
F-01 Insight card (headline, body, action, sources, confidence) Built Gateway dashboards W19, W20 CH-01, CH-05, CH-07
F-02 Pentagon with dimension readout Built AHA v06, ReelShort CH-05, CH-06
F-03 Gap radar Built AHA v06, ported 1:1 to ReelShort CH-06, CH-11
F-04 Network topology Built AHA v06, ReelShort CH-06
F-05 Negative space map Built AHA v06, ReelShort CH-06
F-06 Composite dashboard Built AHA v06, ReelShort CH-05, CH-06
F-07 Stack rank with movers panel Built ReelShort dashboard CH-05
F-08 Four-week trajectory line Built ReelShort dashboard CH-05
F-09 Progress pills against a prior brief Built ReelShort dashboard CH-07, CH-11
F-10 Business-model temporal canvas, nine blocks by four columns Built Fiserv prosperity package CH-07, CH-08
F-11 Kanban mirrored to a spreadsheet Built Fiserv, Google Sheet mirror CH-07
F-12 Divergence tracks, reality against optimum Proposed Creative session station 1 CH-05, CH-06
F-13 Walkable graph, gap to bridge to action Proposed Station 2 CH-06, CH-11
F-14 Attention board, named attention types Proposed Station 3, KG build item 2026-07-22 CH-08, CH-11
F-15 Ambient ticker and menu-bar indicator Proposed Station 4 CH-01, CH-08, CH-11
F-16 Persona ring, work mode as configuration Proposed Station 5 all
F-17 Matchmaking wheel Proposed Station 6 CH-09, CH-12
F-18 Evidence popover on any figure Should exist, does not Design law 4 CH-11
F-19 Contradiction card, two sources disagree Proposed Rule of Genoa, research report CH-08, CH-11
F-20 Exception queue driven to zero Proposed Scratchpad Zero Boards CH-08, CH-11

The report run modes (enumerated with Jonny, 2026-07-17)

Six modes, spanning contexts, clients, and price points. Each mode is a different cost/control/scale point on the same engine stack:

  1. Manual Claude Code session: full-control build, highest touch, highest quality. Today's gold-standard path.
  2. Report Studio: composed in the app against the rubric, human-edited.
  3. Managed agent: agent-run generation with human gates (workspace exists in the vault report-studio dir).
  4. Scheduled/batch runs: recurring reports (weeklies, nightly rescores) produced unattended on a cadence.
  5. Client self-serve: a terminal or enterprise customer triggers a report from their dashboard.
  6. API/agent-triggered: other systems (Slack agent, partner integrations) invoke generation programmatically.

The AI framework boundary (needs Jonny's definition)

What is Claude/Anthropic-specific today (Claude Code sessions, agent SDK surfaces, dotprompt execution via claude CLI) versus what must stay swappable (inference calls in engines, model routing per the Fable-frames / Opus-bulk rule). Candidate 22 formalizes this as an interface contract.

Sprint-1 cut (decided 2026-07-17)

Anchor: consumer terminal dashboard + system admin dashboard (#3, #4). Supporting features entering sprint 1 with branch + issue + value schema:

Everything else is sprint-2+ or backlog until the edit pass says otherwise.

Naming the two anchor views (2026-07-26)

Candidates #3 and #4 are the two views every design idea has to land in, so they get names, kickoff locations, and owners rather than staying descriptions:

View A View B
Name Dashboard Design Studio (was #4, system admin dashboard) Command Center (was #3, consumer terminal dashboard)
Job Compose routes Consume routes
Status Deferred as a built interface, 2026-07-28 (F-1). A route is a YAML file under PR review, which does the job at no build cost Ships
Reader A Shur analyst, unnamed R-01 Thomas
Repo location modules/dashboard-design-studio/ apps/command-center/
Issue label view:studio view:command-center
Design owner Jonny with KG KG with Alex
Current state Deferred 2026-07-28; its Claude Design prompt is withdrawn KG prototype exported 2026-07-22, 18 modules pending extraction

Both views read the same three registries, which live at registries/ (channels.yaml, forms.yaml, readers.yaml) with route instances under registries/routes/<client>/. Changing what a client sees is a YAML diff with an author and a date. Seeded drafts of all three are in monorepo-seed/registries/.

Adjudication method (decided 2026-07-17)

There is no external canonical drill-down; the lean-canvas material is in Jonny's head and scattered notes, so this registry becomes the canonical product breakdown. Jonny edits this doc directly in Obsidian (merge, kill, rename, renumber to the canonical 16/19); the agent reconciles and formalizes after his pass. Open in the edit pass:

  1. Which candidates merge, split, rename, or die.
  2. Which run modes map to which price points and client contexts.
  3. Priority order within sprint-2+ and backlog.

Related: 2026-07-28-sprint-decisions · 2026-07-26-dashboard-delivery-grammar · 2026-07-28-walked-chain-dbm