I2653 — Každý diagram na webu je jeden interaktivní, odkazovatelný prohlížeč, jehož odkazy uzlů se odvozují, a odvozenou tabulku lze nakreslit jako graf
Zařídit, aby každý diagram Mermaid, který web publikuje, šel přibližovat, posouvat, zobrazit na celou obrazovku, stáhnout a adresovat fragmentem (#diagram-<name>, a #diagram-<name>:<node> pro jeden uzel), přičemž uzel, který jmenuje pravidlo, rozhodnutí, příkaz, schopnost, úkol, milník nebo dokument, je s stránkou toho objektu spojen buildem, ne autorem diagramu; a nechat tabulku, kterou web už vykresluje z odvozených dat, nakreslit jako interaktivní graf Apache ECharts jejím deklarováním, bez druhé kopie čísel.
HOTOVO vlna 0 · p2 · profil implementation · bezpečné souběžně
Cíl
Zařídit, aby každý diagram Mermaid, který web publikuje, šel přibližovat, posouvat, zobrazit na celou obrazovku, stáhnout a adresovat fragmentem (#diagram-<name>, a #diagram-<name>:<node> pro jeden uzel), přičemž uzel, který jmenuje pravidlo, rozhodnutí, příkaz, schopnost, úkol, milník nebo dokument, je s stránkou toho objektu spojen buildem, ne autorem diagramu; a nechat tabulku, kterou web už vykresluje z odvozených dat, nakreslit jako interaktivní graf Apache ECharts jejím deklarováním, bez druhé kopie čísel.
Proč
ADR 0152. site/diagrams.js inicializoval Mermaid a nic víc: široký graf závislostí byl vodorovný posuvník, žádný diagram neměl adresu a uzel, který byl úkolem nebo pravidlem, byl text. Pravidlo project.a-diagram-is-drawn-not-typed říká, že zpracovatelný diagram je to, co umožňuje odkazování a kontrolu; nic to nevyužívalo. Web nekreslil žádný graf, ačkoli ADR 0135 jmenuje ECharts jako knihovnu pro měřené řady.
Aktuální stav
Každý <pre class=\"mermaid\"> se vykreslí v přirozené šířce uvnitř posouvatelného boxu. Nemá id, ovládací prvky ani odkazy. Runtime Mermaidu (nejtěžší soubor na webu) se načítá blokujícím tagem script. Čísla, která generátor odvozuje (úkoly na milník a stav, percentily měření výkonu), jsou jen tabulky.
Cílový stav
scripts/lib/diagrams.mjs pojmenuje každý diagram po buildu (výslovný data-diagram, jinak nadpis, pod kterým leží), vypíše jeho uzly a vedle něj zapíše odkazy, které odvodil z site/data/generated; site/diagrams.js z každého udělá stejný prohlížeč; scripts/ci/link-check řeší fragment uzlu proti deklarovaným uzlům diagramu; site/charts.js kreslí každý <figure data-chart> z tabulky uvnitř, přičemž vendorovaný build ECharts se stahuje, až když se graf blíží k viewportu; docs/DIAGRAMS.md je příručka.
Rozsah
- site/diagrams.js
- site/charts.js
- site/tailwind.css
- site/templates/partials/mermaid.html
- site/templates/partials/charts.html
- site/templates/components.html
- site/templates/argument.html
- site/templates/dag.html
- site/templates/milestone.html
- site/templates/plan-section.html
- site/templates/economics.html
- share/design/figure.css
- scripts/lib/diagrams.mjs
- scripts/lib/diagrams.test.mjs
- scripts/lib/interaction-specs/diagram.mjs
- scripts/lib/interaction-specs/scroll-region.mjs
- scripts/site-build
- scripts/site-check
- scripts/ci/link-check
- test/cases/3006_diagrams_are_interactive_and_linkable.sh
- docs/DIAGRAMS.md
- docs/claims/a-diagram-is-named-linked-and-addressable.md
- docs/CLAIMS.yaml
- docs/README.md
- docs/DESIGN_SYSTEM.md
- docs/GITHUB_PAGES_ARCHITECTURE.md
- package.json
- package-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
Mimo rozsah
- Domovská stránka: její příběh a rozpočet bajtů jsou deklarovány (site/data/homepage.toml) a podle rozhodnutí nenese žádný diagram; I2655 se na to ptá samostatně
- Cockpit a majordomus ui: vykreslují vlastní grafy; sdílení tohoto prohlížeče s nimi je I2656
- Vpisování odkazů do zdroje diagramu direktivou click v Mermaidu: odkaz se odvozuje z identity, nebo neexistuje
Závislosti
Žádné. Tento úkol je kořenem grafu.
Co na tom čeká
- I2654PŘIPRAVENO Graf je k své tabulce držen kontrolou a tabulky, které jsou měřenými řadami, se kreslí
- I2655PŘIPRAVENO Úvodní stránka rozhoduje, zda nese odvozený údaj, v mezích deklarovaného příběhu a rozpočtu
- I2656PŘIPRAVENO Prohlížeč diagramů slouží Cockpitu a majordomus ui a uzel, který je souborem repozitáře, odkazuje na svůj zdroj
Kritéria přijetí
- Každý <pre class=\"mermaid\"> sestaveného webu nese jedinečné id diagram-<name>, seznam svých uzlů a tabindex=0; build, který by na stránce publikoval dva diagramy s jedním id, se odmítne
- Uzel, jehož id nebo popisek je identitou objektu, pro který web má stránku, je vypsán vedle diagramu jako odkaz na tu stránku a scripts/ci/link-check vyřeší každý takový odkaz
- Odkaz na #diagram-<name>:<node> je odmítnut scripts/ci/link-check, když diagram tento uzel nedeklaruje
- V prohlížeči prohlížeč diagramů přibližuje, posouvá a resetuje z lišty nástrojů i z klávesnice, kopíruje svůj vlastní odkaz a otevře diagram a uzel, které fragment pojmenovává
- <figure data-chart> se kreslí z tabulky uvnitř a tabulka na stránce zůstává
- Ratchet ručně kreslených diagramů zůstává na diagrams=0
Validace
- node --test scripts/lib/diagrams.test.mjs
- MJ_TEST_JOBS=2 bash test/run.sh 3006_diagrams_are_interactive_and_linkable 12_site_build 272_diagrams_are_drawn
- scripts/site-build && scripts/site-check
- scripts/ci/diagram-check
Požadované důkazy
- diagram_pass_unit_tests
- diagram_case_3006
- site_check_passes
Důkazy
| pokrývá | typ | command | výsledek | u commitu |
|---|---|---|---|---|
| diagram_pass_unit_tests | test | node --test scripts/lib/diagrams.test.mjs | # tests 20, # pass 20, # fail 0, # skipped 0 na 09c334079f5 | 09c3340 |
| diagram_case_3006 | test | MJ_TEST_JOBS=2 bash test/run.sh 3006_diagrams_are_interactive_and_linkable 12_site_build 272_diagrams_are_drawn; scripts/ci/diagram-check | ok 3006 2s, ok 272 2s, ok 12_site_build 386s (s npm ci node_modules a target/web/rustdoc ze scripts/rust-check --doc; 0 přeskočeno); diagram-check: v publikovaných dokumentech není žádný ručně kreslený diagram; na 09c334079f5 s programem z #1304 | 09c3340 |
| site_check_passes | test | scripts/site-build && scripts/site-check; scripts/ci/link-check; scripts/interaction-probe --spec diagram; node <scratch>/chart.mjs https://majordomus.dev/plan/ | site-build ok, 2023 tras; site-check: 0 selhání; link-check OK 431283 odkazů na 2023 stránkách se rozlišuje, 21664 fragmentů včetně #diagram-<name>:<node>; interaction-probe OK 798 ovládacích prvků diagramů na 78 stránkách dělá, co říká jejich specifikace (zoom, fit, pan, klávesy, Link, odkazy uzlů); publikovaný /plan/ figure[data-chart=bar] vykreslen jako canvas 1214x1058 z jeho tabulky o 38 řádcích, která zůstává zobrazena; na 09c334079f5; dodáno #1097 ve velkém vrcholu 11e53f5a451 | 09c3340 |
Časová osa
- zahájeno
- 2026-10-16T17:05:18Z
- ověřeno
- 2026-10-16T17:05:23Z
- dokončeno
- 2026-10-16T17:05:34Z
Tato tři pole, důkazy výše a stav závislostí jsou vše, z čeho se stav skládá. Neexistuje žádné pole stavu, které by s nimi mohlo být v rozporu.
Kanonický záznam: .ai/repo/project/issues/I2653.yaml. Načtěte jej zpět pomocí majordomus plan show I2653.