Files
the-custodian/state-hub/dashboard/src/docs/extensions.md
tegwick 235355eb58 feat(dashboard): nav restructure, full context-help coverage, 11 new ref docs
Navigation:
- New order: Overview · Todo · Domains · Repos · Workstreams (collapsible,
  open:false, with atomic sub-entries: Decisions, Tasks, Debt, Extends,
  Dependencies) · Contributions · SBOM · Progress · Reference (collapsible)
- Reference section gains path:/reference landing page; all 18 doc pages
  listed in nav (alphabetical) and in reference.md table

New pages:
- todo.md — Internal / Ecosystem / Third-party todo classification
- dependencies.md — dependency edge table derived from state/summary
- reference.md — Reference landing page with full doc index

New reference doc pages (11):
  contributions, debt, dependencies, domains, extensions, overview,
  repos, tasks, todo + reference (meta) already added previously

doc-overlay.js — lazy bubblehelp tooltip:
- _titleCache Map + _fetchDocTitle(docPath): on first hover of any ?
  button, fetches the target doc page, parses <h1>, sets btn.title
- Native browser tooltip appears exactly on the ? circle on subsequent hover

Context-help wired on all 14 dashboard pages:
- h1 withDocHelp added to: index, todo, domains, repos, tasks, techdept,
  extensions, dependencies (contributions/workstreams/decisions/sbom/
  progress/reference were already wired)
- domains.md + repos.md: added missing withDocHelp import and live-data link
- tasks/techdept/extensions: removed duplicate _h1 const that caused
  SyntaxError: Identifier '_h1' has already been declared

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-01 23:46:26 +01:00

2.8 KiB

title
title
Extension Points — Reference

Extension Points — Reference

The Extension Points page tracks known future enhancement opportunities across all six domains — design forks the system could take, parked deliberately for later consideration rather than acted on immediately.


What is an extension point?

An extension point (EP) captures a place in the design where additional capability could be added — an API surface that could be extended, a schema that could grow, an integration that could be built. Recording an EP acknowledges the opportunity without committing to it.

Extension points are distinct from technical debt: debt is a known compromise that should be fixed; EPs are optional future directions that may or may not be pursued.


EP types

Type Examples
api New endpoints, query parameters, response fields
schema New tables, columns, relationships
mcp New MCP tools or resources
dashboard New pages, charts, or components
architecture Structural changes to the system design
integration Connections to external systems
other Anything that doesn't fit the above

Statuses

Status Meaning
open Identified, not yet acted on
in_progress Being implemented as part of an active workstream
addressed The capability has been built
deferred Intentionally postponed
wont_fix Decided not to pursue — kept for documentation

Items are sorted by status (open → in_progress → deferred → addressed → wont_fix) then by priority (critical → high → medium → low).


Priorities

Priority Meaning
critical Needed to unblock other work
high High-value enhancement for the near term
medium Would be useful but not urgent
low Speculative or long-horizon idea

Filters

Filter Effect
Status Multi-select
Priority Multi-select
Domain Multi-select
Type Multi-select

Registering an extension point

Via MCP:

register_extension_point(
  domain       = "custodian",
  title        = "Configurable poll interval per dashboard page",
  ep_type      = "dashboard",
  priority     = "low",
  description  = "Each page hard-codes POLL = 15_000. An env var or per-page config would allow slowing down low-priority pages to reduce API load.",
  location     = "state-hub/dashboard/src/*.md",
  workstream_id = "<uuid>"   # optional
)
update_ep_status(ep_uuid="<uuid>", status="addressed")

Human-readable IDs

Each EP carries an ID in the form EP-<DOMAIN>-NNN (e.g. EP-CUST-001). IDs are optional at creation and auto-assigned if omitted.