A snapshot: read at commit 707a04c7ce8 on 2026-10-18T00:06:01Z by majordomus 0.29.0. Nothing on this page is read again. See it live
I2653
Every diagram on the site is one interactive, linkable viewer whose node links are inferred, and a derived table can be drawn as a chart
Where it stands
devtask.issue- Readiness
- ready no dependency and no gate holds it; nobody has started it
- Status
- READY
- Can start
- startable
- Milestone
- Milestone status
- ACTIVE
- Wave
0- Waiting on
- none
- Holds back
- Behind it in all
3- Evidence
0of3
Moves
plan.transitionWhat it is
- Objective
- Make every Mermaid diagram the site publishes zoomable, pannable, full-screen, downloadable and addressable by a fragment (#diagram-<name>, and #diagram-<name>:<node> for one node), with a node that names a rule, a decision, a command, a capability, an issue, a milestone or a document linked to that object's page by the build rather than by the diagram's author; and let a table the site already renders from derived data be drawn as an interactive Apache ECharts chart by declaring it, with no second copy of the numbers.
- Why
- ADR 0152. site/diagrams.js initialised Mermaid and nothing else: a wide dependency graph was a horizontal scrollbar, no diagram had an address, and a node that was an issue or a rule was text. Rule project.a-diagram-is-drawn-not-typed says a parseable diagram is what makes linking and checking possible; nothing used that. The site drew no chart at all, although ADR 0135 names ECharts as the library for measured series.
- Now
- Each <pre class=\"mermaid\"> is rendered at its natural width inside a scrolling box. It has no id, no controls and no links. The Mermaid runtime (the heaviest file on the site) is fetched by a blocking script tag. Numbers the generator derives (issues per milestone and state, benchmark percentiles) are tables only.
- Wanted
- scripts/lib/diagrams.mjs names every diagram after the build (an explicit data-diagram, else the heading it sits under), lists its nodes, and writes beside it the links it inferred from site/data/generated; site/diagrams.js turns each into the same viewer; scripts/ci/link-check resolves a node fragment against the diagram's declared nodes; site/charts.js draws any <figure data-chart> from the table inside it, with the vendored ECharts build fetched only when a chart nears the viewport; docs/DIAGRAMS.md is the manual.
- Done when
- unknown: the record declares no `completion`
- Risk
- unknown: the record declares no `risk`
Acceptance
- Every <pre class=\"mermaid\"> of the built site carries a unique id diagram-<name>, the list of its nodes, and tabindex=0; a build that would publish two diagrams with one id on a page is refused
- A node whose id or label is the identity of an object the site has a page for is listed beside the diagram as a link to that page, and scripts/ci/link-check resolves every such link
- A link to #diagram-<name>:<node> is refused by scripts/ci/link-check when the diagram does not declare that node
- In a browser, the viewer zooms, pans and resets from its toolbar and from the keyboard, copies its own link, and opens the diagram and node a fragment names
- A <figure data-chart> is drawn from the table inside it, and the table stays on the page
- The hand-drawn-diagram ratchet stays at diagrams=0
- Validation
node --test scripts/lib/diagrams.test.mjsMJ_TEST_JOBS=2 bash test/run.sh 3006_diagrams_are_interactive_and_linkable 12_site_build 272_diagrams_are_drawnscripts/site-build && scripts/site-checkscripts/ci/diagram-check- Evidence required
diagram_pass_unit_testsdiagram_case_3006site_check_passes- Evidence present
- unknown: the record carries no `evidence` entries
Scope
- Touches
site/diagrams.jssite/charts.jssite/tailwind.csssite/templates/partials/mermaid.htmlsite/templates/partials/charts.htmlsite/templates/components.htmlsite/templates/argument.htmlsite/templates/dag.htmlsite/templates/milestone.htmlsite/templates/plan-section.htmlsite/templates/economics.htmlshare/design/figure.cssscripts/lib/diagrams.mjsscripts/lib/diagrams.test.mjsscripts/lib/interaction-specs/diagram.mjsscripts/lib/interaction-specs/scroll-region.mjsscripts/site-buildscripts/site-checkscripts/ci/link-checktest/cases/3006_diagrams_are_interactive_and_linkable.shdocs/DIAGRAMS.mddocs/claims/a-diagram-is-named-linked-and-addressable.mddocs/CLAIMS.yamldocs/README.mddocs/DESIGN_SYSTEM.mddocs/GITHUB_PAGES_ARCHITECTURE.mdpackage.jsonpackage-lock.json.ai/repo/automation/inventory.jsonl.ai/repo/adrs/0152-a-diagram-and-a-chart-on-the-site-are-one-viewer-each-over-w.md.ai/repo/project/issues/I2653.yaml.ai/repo/project/issues/I2654.yaml.ai/repo/project/issues/I2655.yaml.ai/repo/project/issues/I2656.yaml- Not
The homepage: its story and its byte budget are declared (site/data/homepage.toml) and it carries no diagram by decision; I2655 asks that question on its ownThe Cockpit and majordomus ui: they render their own graphs; sharing this viewer with them is I2656Typing links into a diagram's source with Mermaid's click directive: a link is inferred from an identity or it does not exist- Depends on
- none
- Priority
- p2
- Profile
- implementation
- Parallel safe
- true
- Owner
- unknown: the record declares no `owner`
The work so far
- Branches
- none
- Merged
- none
- Commits
0- Trunk
- master
- Sessions
- none
- Created
- 2026-10-13
- Updated
- 2026-10-13
- Started
- unknown: the record declares no `started_at`
- Verified
- unknown: the record declares no `verified_at`
- Completed
- unknown: the record declares no `completed_at`
Synchronisation
- Adapter
scripts/github-sync- Repository
- unknown: the derived plan's header carries no repository
- External issue
- unknown: a live GitHub state; this executable makes no network call, so only `scripts/github-sync --check` can answer it
- State there
- unknown: a live GitHub state; this executable makes no network call, so only `scripts/github-sync --check` can answer it
Findings
| Level | Code | Message | Reproduce |
|---|---|---|---|
| WARN | scope_conflict | shares docs/GITHUB_PAGES_ARCHITECTURE.md with I2660; they may not run concurrently | majordomus plan validate |
| WARN | scope_conflict | shares scripts/site-build with I2697; they may not run concurrently | majordomus plan validate |
| WARN | scope_conflict | shares test/cases/3006_diagrams_are_interactive_and_linkable.sh with I2713; they may not run concurrently | majordomus plan validate |
| WARN | scope_conflict | shares test/cases/3006_diagrams_are_interactive_and_linkable.sh with I2714; they may not run concurrently | majordomus plan validate |
| WARN | scope_conflict | shares test/cases/3006_diagrams_are_interactive_and_linkable.sh with I2716; they may not run concurrently | majordomus plan validate |
| WARN | scope_conflict | shares test/cases/3006_diagrams_are_interactive_and_linkable.sh with I2717; they may not run concurrently | majordomus plan validate |
| WARN | scope_conflict | shares test/cases/3006_diagrams_are_interactive_and_linkable.sh with I2718; they may not run concurrently | majordomus plan validate |
| WARN | scope_conflict | shares test/cases/3006_diagrams_are_interactive_and_linkable.sh with I2720; they may not run concurrently | majordomus plan validate |
| WARN | scope_conflict | shares test/cases/3006_diagrams_are_interactive_and_linkable.sh with I2723; they may not run concurrently | majordomus plan validate |
| WARN | scope_conflict | shares test/cases/3006_diagrams_are_interactive_and_linkable.sh with I2731; they may not run concurrently | majordomus plan validate |
| WARN | scope_conflict | shares share/design/figure.css with I2747; they may not run concurrently | majordomus plan validate |
| WARN | scope_conflict | shares docs/DESIGN_SYSTEM.md with I2770; they may not run concurrently | majordomus plan validate |