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
- App: a user-facing surface
- Engine: produces intelligence (scores, graphs, analysis)
- Module: a capability that plugs into apps and engines
- Interface: a boundary contract between layers or systems
- Channel: a producer of intelligence with a cadence and an address (added 2026-07-26)
- Form: a way of presenting intelligence, independent of which data fills it (added 2026-07-26)
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
statusand aninputslist (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:
- Manual Claude Code session: full-control build, highest touch, highest quality. Today's gold-standard path.
- Report Studio: composed in the app against the rubric, human-edited.
- Managed agent: agent-run generation with human gates (workspace exists in the vault report-studio dir).
- Scheduled/batch runs: recurring reports (weeklies, nightly rescores) produced unattended on a cadence.
- Client self-serve: a terminal or enterprise customer triggers a report from their dashboard.
- 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:
- #2 Renderer + reskin integration (Alex's track; unblocks all report output styling)
- #10 Transcription ingest integration (Nicholas's track; backend spec + sub-branch owed)
- #9 Slack agent gate + rollout (Diana review gate, then deployment beyond Fiserv)
- #5 Attention dashboard / delta ranking (the scoring view the terminal dashboard anchors on; pairs with KG's scoring breakout)
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:
- Which candidates merge, split, rename, or die.
- Which run modes map to which price points and client contexts.
- 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