forma-arch 0.11.1 → 0.11.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -9,16 +9,19 @@ Forma is the companion to `arbiter`: arbiter governs the process, Forma shows th
9
9
  guarantees the picture matches reality.
10
10
 
11
11
  **[▶ Live demo](https://LucaDominici.github.io/forma/)** — **not** this repo. It is `haben`, a
12
- private 53-package Go application, generated by forma at haben commit `b1bb318`: six domains over
13
- 53 packages, 192 edges read from real `import` blocks, and box text quoted from that repo's own
14
- feature matrix. A tool proving itself on its own 28 nodes proves nothing you care about.
12
+ private 53-package Go application, generated by forma at haben commit `4c9b6880`: six domains over
13
+ 53 packages, 193 edges read from real `import` blocks, and box text quoted from that repo's own
14
+ feature matrix. Its five-checkpoint architecture timeline is governed by haben's current product
15
+ boundary: the 63-node AS-IS baseline grows cumulatively to 66 nodes and 196 edges, while the final
16
+ operational checkpoint honestly reports no architecture change. A tool proving itself on its own
17
+ 28 nodes proves nothing you care about.
15
18
 
16
19
  What you are looking at is checked, not asserted: at that commit `node scripts/presentable.mjs`
17
20
  exits 0 on the model — every level under 24 boxes, every box carrying prose rather than a file
18
21
  count, every level with more than one box drawing at least one arrow — and `forma check` exits 0
19
22
  against haben's source at the same commit. The curation that turns 53 flat packages into six
20
- domains is one human decision, checked in at [`docs/demo/curate.mjs`](docs/demo/curate.mjs) with
21
- the commands to rebuild it.
23
+ domains and maps the governed boundary to typed timeline patches is one human decision, checked in
24
+ at [`docs/demo/curate.mjs`](docs/demo/curate.mjs) with the commands to rebuild it.
22
25
 
23
26
  The one thing the demo does not do is regenerate itself: haben is private, so Pages publishes a
24
27
  snapshot committed from a local run rather than cloning it in CI. Nothing automated will notice
@@ -763,11 +763,16 @@ function edgePath(a,b){
763
763
  }
764
764
  function levelName(l){return (STR.lvlNames&&STR.lvlNames[l])||l||"—";}
765
765
  function cssv(v){try{return getComputedStyle(document.documentElement).getPropertyValue(v).trim()||"#2b6e8a";}catch(e){return "#2b6e8a";}}
766
+ function detailState(n,timeline){
767
+ // Function prose says what a box is. It is not also a checkpoint state: unchanged timeline nodes
768
+ // without curated `current` used to repeat the same sentence under both labels.
769
+ return timeline?(n.current||""):(n.current||n.func||n.description||"");
770
+ }
766
771
 
767
772
  function showDetail(n){
768
773
  if(n&&n.__catalog)return showRoster(n);
769
- var src=srcOf(n),cur=n.current||n.func||n.description||"",showSrc=src&&String(cur).indexOf(src)<0;
770
- var timeline=!!(BASE&&BASE.timeline),change=timeline?nodeChange(n.id):null;
774
+ var timeline=!!(BASE&&BASE.timeline),src=srcOf(n),cur=detailState(n,timeline),showSrc=src&&String(cur).indexOf(src)<0;
775
+ var change=timeline?nodeChange(n.id):null;
771
776
  $("detail").innerHTML='<span class="cl" id="dc">'+esc(STR.detClose)+'</span><h3>'+esc(n.name)+' <span class="cat">· '+esc(n.category||n.kind||"")+(n.tech?" · "+esc(n.tech):"")+'</span></h3>'
772
777
  +(n.func?'<div class="row"><span class="lbl">'+esc(STR.detFunc)+'</span><span class="func">'+esc(n.func)+'</span></div>':'')
773
778
  +(cur&&(timeline||cur!==n.func)?'<div class="row"><span class="lbl">'+esc(timeline?STR.detCheckpoint:STR.detNow)+'</span><span class="now">'+esc(cur)+'</span></div>':'')
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "forma-arch",
3
- "version": "0.11.1",
3
+ "version": "0.11.3",
4
4
  "description": "Forma — present your architecture instead of slides. An interactive, stack-agnostic C4 explorer (context → container → component → leaf) generated from your code and kept true to it by a deterministic drift check.",
5
5
  "keywords": [
6
6
  "architecture",