@caddis/cli 0.4.44 → 0.4.46

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.
Files changed (210) hide show
  1. package/bundles/antigravity-plugin/plugin.json +1 -1
  2. package/bundles/antigravity-plugin/scripts/claude-oss.ps1 +15 -3
  3. package/bundles/antigravity-plugin/scripts/claude-oss.sh +12 -1
  4. package/bundles/antigravity-plugin/skills/_registry.md +1 -0
  5. package/bundles/antigravity-plugin/skills/flow-studio/README.md +92 -0
  6. package/bundles/antigravity-plugin/skills/flow-studio/SKILL.md +102 -0
  7. package/bundles/antigravity-plugin/skills/flow-studio/examples/README.md +19 -0
  8. package/bundles/antigravity-plugin/skills/flow-studio/examples/agent-journey.json +103 -0
  9. package/bundles/antigravity-plugin/skills/flow-studio/examples/approval-flow.json +134 -0
  10. package/bundles/antigravity-plugin/skills/flow-studio/examples/ci-cd-pipeline.json +132 -0
  11. package/bundles/antigravity-plugin/skills/flow-studio/examples/hostile.json +1783 -0
  12. package/bundles/antigravity-plugin/skills/flow-studio/examples/incident-timeline.json +109 -0
  13. package/bundles/antigravity-plugin/skills/flow-studio/examples/lineage.json +1778 -0
  14. package/bundles/antigravity-plugin/skills/flow-studio/examples/order-desk.json +99 -0
  15. package/bundles/antigravity-plugin/skills/flow-studio/examples/service-map.json +133 -0
  16. package/bundles/antigravity-plugin/skills/flow-studio/examples/state-machine.json +106 -0
  17. package/bundles/antigravity-plugin/skills/flow-studio/examples/ticket-lifecycle.json +107 -0
  18. package/bundles/antigravity-plugin/skills/flow-studio/model.schema.json +142 -0
  19. package/bundles/antigravity-plugin/skills/flow-studio/package.json +11 -0
  20. package/bundles/antigravity-plugin/skills/flow-studio/react/FlowStudioView.test.tsx +82 -0
  21. package/bundles/antigravity-plugin/skills/flow-studio/react/FlowStudioView.tsx +67 -0
  22. package/bundles/antigravity-plugin/skills/flow-studio/react/README.md +37 -0
  23. package/bundles/antigravity-plugin/skills/flow-studio/react/index.ts +3 -0
  24. package/bundles/antigravity-plugin/skills/flow-studio/react/native/FlowCanvas.tsx +58 -0
  25. package/bundles/antigravity-plugin/skills/flow-studio/react/native/Inspector.tsx +27 -0
  26. package/bundles/antigravity-plugin/skills/flow-studio/react/native/index.ts +6 -0
  27. package/bundles/antigravity-plugin/skills/flow-studio/react/native/native.css +18 -0
  28. package/bundles/antigravity-plugin/skills/flow-studio/react/native/native.test.tsx +161 -0
  29. package/bundles/antigravity-plugin/skills/flow-studio/react/native/useFlowGeometry.ts +22 -0
  30. package/bundles/antigravity-plugin/skills/flow-studio/react/native/useTrace.ts +29 -0
  31. package/bundles/antigravity-plugin/skills/flow-studio/react/native/useViewport.ts +75 -0
  32. package/bundles/antigravity-plugin/skills/flow-studio/react/states.tsx +13 -0
  33. package/bundles/antigravity-plugin/skills/flow-studio/references/design-language.md +169 -0
  34. package/bundles/antigravity-plugin/skills/flow-studio/references/implement-in-app.md +213 -0
  35. package/bundles/antigravity-plugin/skills/flow-studio/references/model-schema.md +254 -0
  36. package/bundles/antigravity-plugin/skills/flow-studio/references/notes-and-spec.md +74 -0
  37. package/bundles/antigravity-plugin/skills/flow-studio/references/patterns.md +415 -0
  38. package/bundles/antigravity-plugin/skills/flow-studio/references/ux-rules.md +91 -0
  39. package/bundles/antigravity-plugin/skills/flow-studio/references/verify.md +124 -0
  40. package/bundles/antigravity-plugin/skills/flow-studio/scripts/build-engine.mjs +95 -0
  41. package/bundles/antigravity-plugin/skills/flow-studio/scripts/build.mjs +54 -0
  42. package/bundles/antigravity-plugin/skills/flow-studio/scripts/check.mjs +680 -0
  43. package/bundles/antigravity-plugin/skills/flow-studio/scripts/default-notes.json +67 -0
  44. package/bundles/antigravity-plugin/skills/flow-studio/scripts/lib/auto-entry-guard.mjs +5 -0
  45. package/bundles/antigravity-plugin/skills/flow-studio/scripts/lib/auto-entry-guard.test.mjs +14 -0
  46. package/bundles/antigravity-plugin/skills/flow-studio/scripts/lib/auto-entry.test.mjs +31 -0
  47. package/bundles/antigravity-plugin/skills/flow-studio/scripts/lib/build-engine.test.mjs +54 -0
  48. package/bundles/antigravity-plugin/skills/flow-studio/scripts/lib/check-args.mjs +18 -0
  49. package/bundles/antigravity-plugin/skills/flow-studio/scripts/lib/check-args.test.mjs +15 -0
  50. package/bundles/antigravity-plugin/skills/flow-studio/scripts/lib/check-selftest.test.mjs +135 -0
  51. package/bundles/antigravity-plugin/skills/flow-studio/scripts/lib/cli.test.mjs +179 -0
  52. package/bundles/antigravity-plugin/skills/flow-studio/scripts/lib/demo-pack.mjs +23 -0
  53. package/bundles/antigravity-plugin/skills/flow-studio/scripts/lib/demo-pack.test.mjs +34 -0
  54. package/bundles/antigravity-plugin/skills/flow-studio/scripts/lib/docs.test.mjs +128 -0
  55. package/bundles/antigravity-plugin/skills/flow-studio/scripts/lib/embed.mjs +24 -0
  56. package/bundles/antigravity-plugin/skills/flow-studio/scripts/lib/embed.test.mjs +29 -0
  57. package/bundles/antigravity-plugin/skills/flow-studio/scripts/lib/library.test.mjs +26 -0
  58. package/bundles/antigravity-plugin/skills/flow-studio/scripts/lib/react-proof-cleanup.mjs +12 -0
  59. package/bundles/antigravity-plugin/skills/flow-studio/scripts/lib/react-proof-cleanup.test.mjs +45 -0
  60. package/bundles/antigravity-plugin/skills/flow-studio/scripts/lib/react-proof-page.mjs +3 -0
  61. package/bundles/antigravity-plugin/skills/flow-studio/scripts/lib/react-proof-page.test.mjs +9 -0
  62. package/bundles/antigravity-plugin/skills/flow-studio/scripts/react-proof.mjs +92 -0
  63. package/bundles/antigravity-plugin/skills/flow-studio/scripts/validate.mjs +42 -0
  64. package/bundles/antigravity-plugin/skills/flow-studio/src/autolayout.test.ts +78 -0
  65. package/bundles/antigravity-plugin/skills/flow-studio/src/autolayout.ts +132 -0
  66. package/bundles/antigravity-plugin/skills/flow-studio/src/chrome.ts +175 -0
  67. package/bundles/antigravity-plugin/skills/flow-studio/src/controls.ts +239 -0
  68. package/bundles/antigravity-plugin/skills/flow-studio/src/ctx.ts +134 -0
  69. package/bundles/antigravity-plugin/skills/flow-studio/src/diff.test.ts +31 -0
  70. package/bundles/antigravity-plugin/skills/flow-studio/src/diff.ts +34 -0
  71. package/bundles/antigravity-plugin/skills/flow-studio/src/engine.ts +193 -0
  72. package/bundles/antigravity-plugin/skills/flow-studio/src/inspector.ts +126 -0
  73. package/bundles/antigravity-plugin/skills/flow-studio/src/interact.ts +253 -0
  74. package/bundles/antigravity-plugin/skills/flow-studio/src/layout.test.ts +144 -0
  75. package/bundles/antigravity-plugin/skills/flow-studio/src/layout.ts +95 -0
  76. package/bundles/antigravity-plugin/skills/flow-studio/src/lib.ts +20 -0
  77. package/bundles/antigravity-plugin/skills/flow-studio/src/metrics.test.ts +57 -0
  78. package/bundles/antigravity-plugin/skills/flow-studio/src/metrics.ts +29 -0
  79. package/bundles/antigravity-plugin/skills/flow-studio/src/model.test.ts +167 -0
  80. package/bundles/antigravity-plugin/skills/flow-studio/src/model.ts +250 -0
  81. package/bundles/antigravity-plugin/skills/flow-studio/src/notes.ts +100 -0
  82. package/bundles/antigravity-plugin/skills/flow-studio/src/page.ts +21 -0
  83. package/bundles/antigravity-plugin/skills/flow-studio/src/playback.test.ts +104 -0
  84. package/bundles/antigravity-plugin/skills/flow-studio/src/playback.ts +106 -0
  85. package/bundles/antigravity-plugin/skills/flow-studio/src/playbackui.ts +193 -0
  86. package/bundles/antigravity-plugin/skills/flow-studio/src/render.ts +203 -0
  87. package/bundles/antigravity-plugin/skills/flow-studio/src/routing.test.ts +33 -0
  88. package/bundles/antigravity-plugin/skills/flow-studio/src/routing.ts +43 -0
  89. package/bundles/antigravity-plugin/skills/flow-studio/src/rules.test.ts +135 -0
  90. package/bundles/antigravity-plugin/skills/flow-studio/src/rules.ts +86 -0
  91. package/bundles/antigravity-plugin/skills/flow-studio/src/selection.test.ts +12 -0
  92. package/bundles/antigravity-plugin/skills/flow-studio/src/selection.ts +4 -0
  93. package/bundles/antigravity-plugin/skills/flow-studio/src/stateCss.test.ts +73 -0
  94. package/bundles/antigravity-plugin/skills/flow-studio/src/stateCss.ts +45 -0
  95. package/bundles/antigravity-plugin/skills/flow-studio/src/styles.css +190 -0
  96. package/bundles/antigravity-plugin/skills/flow-studio/src/trace.test.ts +40 -0
  97. package/bundles/antigravity-plugin/skills/flow-studio/src/trace.ts +40 -0
  98. package/bundles/antigravity-plugin/skills/flow-studio/src/viewport.test.ts +55 -0
  99. package/bundles/antigravity-plugin/skills/flow-studio/src/viewport.ts +45 -0
  100. package/bundles/antigravity-plugin/skills/flow-studio/templates/engine.html +2656 -0
  101. package/bundles/antigravity-plugin/skills/flow-studio/templates/engine.shell.html +23 -0
  102. package/bundles/antigravity-plugin/skills/flow-studio/templates/flow-studio.css +190 -0
  103. package/bundles/antigravity-plugin/skills/flow-studio/templates/flow-studio.lib.d.mts +1 -0
  104. package/bundles/antigravity-plugin/skills/flow-studio/templates/flow-studio.lib.mjs +2491 -0
  105. package/bundles/antigravity-plugin/skills/flow-studio/templates/shell-body.html +50 -0
  106. package/bundles/antigravity-plugin/skills/flow-studio/tsconfig.json +17 -0
  107. package/bundles/codex/.codex/skills/frontend/flow-studio/README.md +92 -0
  108. package/bundles/codex/.codex/skills/frontend/flow-studio/SKILL.md +102 -0
  109. package/bundles/codex/.codex/skills/frontend/flow-studio/examples/README.md +19 -0
  110. package/bundles/codex/.codex/skills/frontend/flow-studio/examples/agent-journey.json +103 -0
  111. package/bundles/codex/.codex/skills/frontend/flow-studio/examples/approval-flow.json +134 -0
  112. package/bundles/codex/.codex/skills/frontend/flow-studio/examples/ci-cd-pipeline.json +132 -0
  113. package/bundles/codex/.codex/skills/frontend/flow-studio/examples/hostile.json +1783 -0
  114. package/bundles/codex/.codex/skills/frontend/flow-studio/examples/incident-timeline.json +109 -0
  115. package/bundles/codex/.codex/skills/frontend/flow-studio/examples/lineage.json +1778 -0
  116. package/bundles/codex/.codex/skills/frontend/flow-studio/examples/order-desk.json +99 -0
  117. package/bundles/codex/.codex/skills/frontend/flow-studio/examples/service-map.json +133 -0
  118. package/bundles/codex/.codex/skills/frontend/flow-studio/examples/state-machine.json +106 -0
  119. package/bundles/codex/.codex/skills/frontend/flow-studio/examples/ticket-lifecycle.json +107 -0
  120. package/bundles/codex/.codex/skills/frontend/flow-studio/model.schema.json +142 -0
  121. package/bundles/codex/.codex/skills/frontend/flow-studio/package.json +11 -0
  122. package/bundles/codex/.codex/skills/frontend/flow-studio/react/FlowStudioView.test.tsx +82 -0
  123. package/bundles/codex/.codex/skills/frontend/flow-studio/react/FlowStudioView.tsx +67 -0
  124. package/bundles/codex/.codex/skills/frontend/flow-studio/react/README.md +37 -0
  125. package/bundles/codex/.codex/skills/frontend/flow-studio/react/index.ts +3 -0
  126. package/bundles/codex/.codex/skills/frontend/flow-studio/react/native/FlowCanvas.tsx +58 -0
  127. package/bundles/codex/.codex/skills/frontend/flow-studio/react/native/Inspector.tsx +27 -0
  128. package/bundles/codex/.codex/skills/frontend/flow-studio/react/native/index.ts +6 -0
  129. package/bundles/codex/.codex/skills/frontend/flow-studio/react/native/native.css +18 -0
  130. package/bundles/codex/.codex/skills/frontend/flow-studio/react/native/native.test.tsx +161 -0
  131. package/bundles/codex/.codex/skills/frontend/flow-studio/react/native/useFlowGeometry.ts +22 -0
  132. package/bundles/codex/.codex/skills/frontend/flow-studio/react/native/useTrace.ts +29 -0
  133. package/bundles/codex/.codex/skills/frontend/flow-studio/react/native/useViewport.ts +75 -0
  134. package/bundles/codex/.codex/skills/frontend/flow-studio/react/states.tsx +13 -0
  135. package/bundles/codex/.codex/skills/frontend/flow-studio/references/design-language.md +169 -0
  136. package/bundles/codex/.codex/skills/frontend/flow-studio/references/implement-in-app.md +213 -0
  137. package/bundles/codex/.codex/skills/frontend/flow-studio/references/model-schema.md +254 -0
  138. package/bundles/codex/.codex/skills/frontend/flow-studio/references/notes-and-spec.md +74 -0
  139. package/bundles/codex/.codex/skills/frontend/flow-studio/references/patterns.md +415 -0
  140. package/bundles/codex/.codex/skills/frontend/flow-studio/references/ux-rules.md +91 -0
  141. package/bundles/codex/.codex/skills/frontend/flow-studio/references/verify.md +124 -0
  142. package/bundles/codex/.codex/skills/frontend/flow-studio/scripts/build-engine.mjs +95 -0
  143. package/bundles/codex/.codex/skills/frontend/flow-studio/scripts/build.mjs +54 -0
  144. package/bundles/codex/.codex/skills/frontend/flow-studio/scripts/check.mjs +680 -0
  145. package/bundles/codex/.codex/skills/frontend/flow-studio/scripts/default-notes.json +67 -0
  146. package/bundles/codex/.codex/skills/frontend/flow-studio/scripts/lib/auto-entry-guard.mjs +5 -0
  147. package/bundles/codex/.codex/skills/frontend/flow-studio/scripts/lib/auto-entry-guard.test.mjs +14 -0
  148. package/bundles/codex/.codex/skills/frontend/flow-studio/scripts/lib/auto-entry.test.mjs +31 -0
  149. package/bundles/codex/.codex/skills/frontend/flow-studio/scripts/lib/build-engine.test.mjs +54 -0
  150. package/bundles/codex/.codex/skills/frontend/flow-studio/scripts/lib/check-args.mjs +18 -0
  151. package/bundles/codex/.codex/skills/frontend/flow-studio/scripts/lib/check-args.test.mjs +15 -0
  152. package/bundles/codex/.codex/skills/frontend/flow-studio/scripts/lib/check-selftest.test.mjs +135 -0
  153. package/bundles/codex/.codex/skills/frontend/flow-studio/scripts/lib/cli.test.mjs +179 -0
  154. package/bundles/codex/.codex/skills/frontend/flow-studio/scripts/lib/demo-pack.mjs +23 -0
  155. package/bundles/codex/.codex/skills/frontend/flow-studio/scripts/lib/demo-pack.test.mjs +34 -0
  156. package/bundles/codex/.codex/skills/frontend/flow-studio/scripts/lib/docs.test.mjs +128 -0
  157. package/bundles/codex/.codex/skills/frontend/flow-studio/scripts/lib/embed.mjs +24 -0
  158. package/bundles/codex/.codex/skills/frontend/flow-studio/scripts/lib/embed.test.mjs +29 -0
  159. package/bundles/codex/.codex/skills/frontend/flow-studio/scripts/lib/library.test.mjs +26 -0
  160. package/bundles/codex/.codex/skills/frontend/flow-studio/scripts/lib/react-proof-cleanup.mjs +12 -0
  161. package/bundles/codex/.codex/skills/frontend/flow-studio/scripts/lib/react-proof-cleanup.test.mjs +45 -0
  162. package/bundles/codex/.codex/skills/frontend/flow-studio/scripts/lib/react-proof-page.mjs +3 -0
  163. package/bundles/codex/.codex/skills/frontend/flow-studio/scripts/lib/react-proof-page.test.mjs +9 -0
  164. package/bundles/codex/.codex/skills/frontend/flow-studio/scripts/react-proof.mjs +92 -0
  165. package/bundles/codex/.codex/skills/frontend/flow-studio/scripts/validate.mjs +42 -0
  166. package/bundles/codex/.codex/skills/frontend/flow-studio/src/autolayout.test.ts +78 -0
  167. package/bundles/codex/.codex/skills/frontend/flow-studio/src/autolayout.ts +132 -0
  168. package/bundles/codex/.codex/skills/frontend/flow-studio/src/chrome.ts +175 -0
  169. package/bundles/codex/.codex/skills/frontend/flow-studio/src/controls.ts +239 -0
  170. package/bundles/codex/.codex/skills/frontend/flow-studio/src/ctx.ts +134 -0
  171. package/bundles/codex/.codex/skills/frontend/flow-studio/src/diff.test.ts +31 -0
  172. package/bundles/codex/.codex/skills/frontend/flow-studio/src/diff.ts +34 -0
  173. package/bundles/codex/.codex/skills/frontend/flow-studio/src/engine.ts +193 -0
  174. package/bundles/codex/.codex/skills/frontend/flow-studio/src/inspector.ts +126 -0
  175. package/bundles/codex/.codex/skills/frontend/flow-studio/src/interact.ts +253 -0
  176. package/bundles/codex/.codex/skills/frontend/flow-studio/src/layout.test.ts +144 -0
  177. package/bundles/codex/.codex/skills/frontend/flow-studio/src/layout.ts +95 -0
  178. package/bundles/codex/.codex/skills/frontend/flow-studio/src/lib.ts +20 -0
  179. package/bundles/codex/.codex/skills/frontend/flow-studio/src/metrics.test.ts +57 -0
  180. package/bundles/codex/.codex/skills/frontend/flow-studio/src/metrics.ts +29 -0
  181. package/bundles/codex/.codex/skills/frontend/flow-studio/src/model.test.ts +167 -0
  182. package/bundles/codex/.codex/skills/frontend/flow-studio/src/model.ts +250 -0
  183. package/bundles/codex/.codex/skills/frontend/flow-studio/src/notes.ts +100 -0
  184. package/bundles/codex/.codex/skills/frontend/flow-studio/src/page.ts +21 -0
  185. package/bundles/codex/.codex/skills/frontend/flow-studio/src/playback.test.ts +104 -0
  186. package/bundles/codex/.codex/skills/frontend/flow-studio/src/playback.ts +106 -0
  187. package/bundles/codex/.codex/skills/frontend/flow-studio/src/playbackui.ts +193 -0
  188. package/bundles/codex/.codex/skills/frontend/flow-studio/src/render.ts +203 -0
  189. package/bundles/codex/.codex/skills/frontend/flow-studio/src/routing.test.ts +33 -0
  190. package/bundles/codex/.codex/skills/frontend/flow-studio/src/routing.ts +43 -0
  191. package/bundles/codex/.codex/skills/frontend/flow-studio/src/rules.test.ts +135 -0
  192. package/bundles/codex/.codex/skills/frontend/flow-studio/src/rules.ts +86 -0
  193. package/bundles/codex/.codex/skills/frontend/flow-studio/src/selection.test.ts +12 -0
  194. package/bundles/codex/.codex/skills/frontend/flow-studio/src/selection.ts +4 -0
  195. package/bundles/codex/.codex/skills/frontend/flow-studio/src/stateCss.test.ts +73 -0
  196. package/bundles/codex/.codex/skills/frontend/flow-studio/src/stateCss.ts +45 -0
  197. package/bundles/codex/.codex/skills/frontend/flow-studio/src/styles.css +190 -0
  198. package/bundles/codex/.codex/skills/frontend/flow-studio/src/trace.test.ts +40 -0
  199. package/bundles/codex/.codex/skills/frontend/flow-studio/src/trace.ts +40 -0
  200. package/bundles/codex/.codex/skills/frontend/flow-studio/src/viewport.test.ts +55 -0
  201. package/bundles/codex/.codex/skills/frontend/flow-studio/src/viewport.ts +45 -0
  202. package/bundles/codex/.codex/skills/frontend/flow-studio/templates/engine.html +2656 -0
  203. package/bundles/codex/.codex/skills/frontend/flow-studio/templates/engine.shell.html +23 -0
  204. package/bundles/codex/.codex/skills/frontend/flow-studio/templates/flow-studio.css +190 -0
  205. package/bundles/codex/.codex/skills/frontend/flow-studio/templates/flow-studio.lib.d.mts +1 -0
  206. package/bundles/codex/.codex/skills/frontend/flow-studio/templates/flow-studio.lib.mjs +2491 -0
  207. package/bundles/codex/.codex/skills/frontend/flow-studio/templates/shell-body.html +50 -0
  208. package/bundles/codex/.codex/skills/frontend/flow-studio/tsconfig.json +17 -0
  209. package/bundles/manifest.json +2 -2
  210. package/package.json +1 -1
@@ -0,0 +1,1783 @@
1
+ {
2
+ "version": 1,
3
+ "meta": {
4
+ "title": "DATA LINEAGE: WHAT FEEDS WHAT</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
5
+ "help": "Read left to right: source, load, build, serve. A dashed amber lane has no lineage document yet. Scroll to zoom, drag to pan.</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
6
+ "asOf": "2026-09-30",
7
+ "source": "Fictional data for the flow-studio example (Northwind Analytics). Measured links come from a pretend read; declared links from pretend documents. Declared data goes stale, so every declared snapshot carries its date.</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
8
+ "labels": {
9
+ "tileGood": "measured links between groups</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
10
+ "tileNeutral": "declared links between groups</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
11
+ "tileGap": "not recorded: click to show</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
12
+ "tileUpgrade": "measurable now: click to show</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
13
+ "ledgerTitle": "What this read could not establish</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

"
14
+ }
15
+ },
16
+ "layout": "columns-lanes",
17
+ "columns": [
18
+ {
19
+ "id": "source",
20
+ "title": "Source systems</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
21
+ "short": "SOURCE</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
22
+ "width": 150,
23
+ "phase": "ORIGIN</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

"
24
+ },
25
+ {
26
+ "id": "host",
27
+ "title": "DB hosts</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
28
+ "short": "HOST</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
29
+ "width": 130,
30
+ "phase": "ORIGIN</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

"
31
+ },
32
+ {
33
+ "id": "db",
34
+ "title": "Databases</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
35
+ "short": "DATABASE</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
36
+ "width": 150,
37
+ "phase": "ORIGIN</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

"
38
+ },
39
+ {
40
+ "id": "jobs",
41
+ "title": "Jobs and programs</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
42
+ "short": "JOBS</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
43
+ "width": 215,
44
+ "phase": "LOAD</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

"
45
+ },
46
+ {
47
+ "id": "tables",
48
+ "title": "Tables</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
49
+ "short": "TABLES</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
50
+ "width": 205,
51
+ "phase": "LOAD</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

"
52
+ },
53
+ {
54
+ "id": "refresh",
55
+ "title": "App refreshers</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
56
+ "short": "REFRESHERS</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
57
+ "width": 185,
58
+ "phase": "BUILD</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

"
59
+ },
60
+ {
61
+ "id": "report",
62
+ "title": "Reporting tables</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
63
+ "short": "REPORT TABLES</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
64
+ "width": 195,
65
+ "phase": "BUILD</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

"
66
+ },
67
+ {
68
+ "id": "apps",
69
+ "title": "Apps</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
70
+ "short": "APPS</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
71
+ "width": 160,
72
+ "phase": "SERVE</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

"
73
+ },
74
+ {
75
+ "id": "pages",
76
+ "title": "Pages</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
77
+ "short": "PAGES</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
78
+ "width": 160,
79
+ "phase": "SERVE</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

"
80
+ }
81
+ ],
82
+ "lanes": [
83
+ {
84
+ "id": "store",
85
+ "title": "storefront</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
86
+ "badge": "document 2026-09-30</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
87
+ "badgeTone": "ok",
88
+ "note": "complete in the document · the order database itself is never read today</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

"
89
+ },
90
+ {
91
+ "id": "batch",
92
+ "title": "Batch worker batch-02</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
93
+ "badge": "infrastructure</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
94
+ "badgeTone": "muted",
95
+ "note": "36 jobs and the analytics tables · no lineage source reads them</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

"
96
+ },
97
+ {
98
+ "id": "bill",
99
+ "title": "billing</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
100
+ "badge": "document 2026-09-12</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
101
+ "badgeTone": "ok",
102
+ "note": "the document lists 5 to 6 reporting tables · the read measures 20</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

"
103
+ },
104
+ {
105
+ "id": "search",
106
+ "title": "search-app</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
107
+ "badge": "no lineage document</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
108
+ "badgeTone": "warn",
109
+ "gap": true,
110
+ "note": "known: 27 reporting tables, the app · missing: refresher jobs, pages · reads warehouse tables (inferred from code)</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

"
111
+ },
112
+ {
113
+ "id": "reco",
114
+ "title": "recommender</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
115
+ "badge": "no lineage document</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
116
+ "badgeTone": "warn",
117
+ "gap": true,
118
+ "note": "known: one reporting table · missing: loaders, source tables, refresher, pages</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

"
119
+ },
120
+ {
121
+ "id": "desk",
122
+ "title": "support-desk</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
123
+ "badge": "document 2026-09-12</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
124
+ "badgeTone": "ok",
125
+ "note": "no refresher and no reporting tables: it reads its own tables directly</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

"
126
+ },
127
+ {
128
+ "id": "more",
129
+ "title": "6 more apps</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
130
+ "badge": "no lineage document</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
131
+ "badgeTone": "warn",
132
+ "gap": true,
133
+ "note": "they report a health route only</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

"
134
+ },
135
+ {
136
+ "id": "feed",
137
+ "title": "partner-feed</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
138
+ "badge": "document 2026-09-18</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
139
+ "badgeTone": "warn",
140
+ "note": "a file pipeline, not tables and pages: it needs a different model</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

"
141
+ }
142
+ ],
143
+ "states": {
144
+ "measured": {
145
+ "word": "MEASURED</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
146
+ "tone": "ok",
147
+ "border": "solid",
148
+ "edge": "flow",
149
+ "motion": "flow",
150
+ "bucket": "good"
151
+ },
152
+ "declared": {
153
+ "word": "DECLARED</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
154
+ "tone": "muted",
155
+ "border": "dashed",
156
+ "edge": "dash",
157
+ "motion": "flow-slow",
158
+ "bucket": "neutral"
159
+ },
160
+ "inferred": {
161
+ "word": "INFERRED</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
162
+ "tone": "muted",
163
+ "border": "dashed",
164
+ "edge": "dash-short",
165
+ "motion": "flow-slow",
166
+ "bucket": "neutral"
167
+ },
168
+ "unrecorded": {
169
+ "word": "NOT RECORDED</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
170
+ "tone": "warn",
171
+ "border": "dotted",
172
+ "edge": "dot",
173
+ "motion": "breathe",
174
+ "bucket": "gap"
175
+ }
176
+ },
177
+ "nodes": [
178
+ {
179
+ "id": "ORD",
180
+ "kind": "card",
181
+ "lane": "store",
182
+ "col": 0,
183
+ "row": 0,
184
+ "state": "declared",
185
+ "title": "Order feed</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
186
+ "subtitle": "orders share, source system</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
187
+ "members": [
188
+ "orders.fact_order</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
189
+ "orders.dim_customer</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
190
+ "orders.fact_return</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
191
+ "ref.attributes</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
192
+ "ref.topics</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

"
193
+ ],
194
+ "stateIn": {
195
+ "today": "unrecorded"
196
+ }
197
+ },
198
+ {
199
+ "id": "SUP",
200
+ "kind": "card",
201
+ "lane": "store",
202
+ "col": 0,
203
+ "row": 1,
204
+ "state": "declared",
205
+ "title": "Support tool</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
206
+ "subtitle": "ticket extracts, source system</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
207
+ "visibleIn": [
208
+ "complete"
209
+ ]
210
+ },
211
+ {
212
+ "id": "H_DB1",
213
+ "kind": "card",
214
+ "lane": "store",
215
+ "col": 1,
216
+ "row": 1,
217
+ "state": "measured",
218
+ "title": "dbhost-01</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
219
+ "subtitle": "SQL host</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
220
+ "members": [
221
+ "STOREDB</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
222
+ "WAREHOUSE</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

"
223
+ ]
224
+ },
225
+ {
226
+ "id": "H_GPU",
227
+ "kind": "card",
228
+ "lane": "store",
229
+ "col": 1,
230
+ "row": 2,
231
+ "state": "declared",
232
+ "title": "gpuhost-01</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
233
+ "subtitle": "GPU host</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
234
+ "visibleIn": [
235
+ "complete"
236
+ ]
237
+ },
238
+ {
239
+ "id": "H_OLD",
240
+ "kind": "card",
241
+ "lane": "store",
242
+ "col": 1,
243
+ "row": 3,
244
+ "state": "declared",
245
+ "title": "legacy-host</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
246
+ "subtitle": "SQL host, not read today</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
247
+ "stateIn": {
248
+ "today": "unrecorded"
249
+ }
250
+ },
251
+ {
252
+ "id": "D_STORE",
253
+ "kind": "card",
254
+ "lane": "store",
255
+ "col": 2,
256
+ "row": 1,
257
+ "state": "declared",
258
+ "title": "STOREDB</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
259
+ "subtitle": "database, never read today</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
260
+ "upgrade": "probe it: the monitor already reads it for another check</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
261
+ "stateIn": {
262
+ "today": "unrecorded"
263
+ }
264
+ },
265
+ {
266
+ "id": "D_OLD",
267
+ "kind": "card",
268
+ "lane": "store",
269
+ "col": 2,
270
+ "row": 3,
271
+ "state": "declared",
272
+ "title": "5 databases</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
273
+ "subtitle": "on legacy-host</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
274
+ "weight": 5,
275
+ "members": [
276
+ "CRM</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
277
+ "BILLING_OLD</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
278
+ "CUSTOMER</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
279
+ "TICKETS</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
280
+ "ARCHIVE</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

"
281
+ ],
282
+ "visibleIn": [
283
+ "complete"
284
+ ]
285
+ },
286
+ {
287
+ "id": "J_ORD",
288
+ "kind": "group",
289
+ "lane": "store",
290
+ "col": 3,
291
+ "row": 0,
292
+ "state": "declared",
293
+ "title": "4 order ETL pipelines</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
294
+ "subtitle": "on batch-02, no table link today</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
295
+ "weight": 4,
296
+ "members": [
297
+ "Orders core load (10:00)</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
298
+ "Topic job (script)</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
299
+ "Voice pipeline (job not known)</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
300
+ "Chat pipeline (job not known)</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

"
301
+ ],
302
+ "stateIn": {
303
+ "today": "unrecorded"
304
+ }
305
+ },
306
+ {
307
+ "id": "J_CUST",
308
+ "kind": "group",
309
+ "lane": "store",
310
+ "col": 3,
311
+ "row": 1,
312
+ "state": "declared",
313
+ "title": "Customer view + 3 loaders</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
314
+ "subtitle": "07:15 · loaders 06:45 and 08:15</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
315
+ "weight": 4,
316
+ "members": [
317
+ "Customer view daily load (07:15)</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
318
+ "Tickets loader (06:45)</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
319
+ "Cases loader (08:15)</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
320
+ "Interactions loader (job not in repo)</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

"
321
+ ],
322
+ "stateIn": {
323
+ "today": "unrecorded"
324
+ }
325
+ },
326
+ {
327
+ "id": "J_SUM",
328
+ "kind": "card",
329
+ "lane": "store",
330
+ "col": 3,
331
+ "row": 2,
332
+ "state": "declared",
333
+ "title": "summary engine daemon</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
334
+ "subtitle": "on the GPU host</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
335
+ "visibleIn": [
336
+ "complete"
337
+ ]
338
+ },
339
+ {
340
+ "id": "J_EXT",
341
+ "kind": "group",
342
+ "lane": "store",
343
+ "col": 3,
344
+ "row": 3,
345
+ "state": "declared",
346
+ "title": "3 external loaders</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
347
+ "subtitle": "loader unverified in the document</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
348
+ "weight": 3,
349
+ "members": [
350
+ "Legacy CRM side (loader unverified)</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
351
+ "Billing side (loader unverified)</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
352
+ "Contract data owner (loader unverified)</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

"
353
+ ],
354
+ "visibleIn": [
355
+ "complete"
356
+ ]
357
+ },
358
+ {
359
+ "id": "T_ORD",
360
+ "kind": "group",
361
+ "lane": "store",
362
+ "col": 4,
363
+ "row": 0,
364
+ "state": "declared",
365
+ "title": "STOREDB · order tables</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
366
+ "subtitle": "6 tables</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
367
+ "weight": 6,
368
+ "members": [
369
+ "dbo.Orders</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
370
+ "dbo.OrderLines</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
371
+ "dbo.Returns</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
372
+ "dbo.OrderTopics</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
373
+ "dbo.Samples</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
374
+ "dbo.LoadState</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

"
375
+ ],
376
+ "visibleIn": [
377
+ "complete"
378
+ ]
379
+ },
380
+ {
381
+ "id": "T_CUST",
382
+ "kind": "group",
383
+ "lane": "store",
384
+ "col": 4,
385
+ "row": 1,
386
+ "state": "declared",
387
+ "title": "STOREDB · customer tables</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
388
+ "subtitle": "5 tables incl. loaders</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
389
+ "weight": 5,
390
+ "members": [
391
+ "dbo.CustomerEvent</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
392
+ "dbo.LoaderTickets</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
393
+ "dbo.LoaderCases</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
394
+ "dbo.LoaderInteractions</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
395
+ "dbo.LoaderForms</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

"
396
+ ],
397
+ "visibleIn": [
398
+ "complete"
399
+ ]
400
+ },
401
+ {
402
+ "id": "T_SUM",
403
+ "kind": "group",
404
+ "lane": "store",
405
+ "col": 4,
406
+ "row": 2,
407
+ "state": "declared",
408
+ "title": "STOREDB · summary</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
409
+ "subtitle": "2 objects</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
410
+ "weight": 2,
411
+ "members": [
412
+ "dbo.CustomerSummary</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
413
+ "dbo.vw_CurrentSummary</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

"
414
+ ],
415
+ "visibleIn": [
416
+ "complete"
417
+ ]
418
+ },
419
+ {
420
+ "id": "T_EXT",
421
+ "kind": "group",
422
+ "lane": "store",
423
+ "col": 4,
424
+ "row": 3,
425
+ "state": "declared",
426
+ "title": "customer, contract data</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
427
+ "subtitle": "3 objects</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
428
+ "weight": 3,
429
+ "members": [
430
+ "CUSTOMERS (view)</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
431
+ "dbo.mobile_customers</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
432
+ "dbo.contracts</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

"
433
+ ],
434
+ "visibleIn": [
435
+ "complete"
436
+ ]
437
+ },
438
+ {
439
+ "id": "R_STORE",
440
+ "kind": "group",
441
+ "lane": "store",
442
+ "col": 5,
443
+ "row": 1.5,
444
+ "state": "declared",
445
+ "title": "storefront refreshers</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
446
+ "subtitle": "18 app producers</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
447
+ "weight": 18,
448
+ "members": [
449
+ "refresh_job_01</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
450
+ "refresh_job_02</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
451
+ "refresh_job_03</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
452
+ "refresh_job_04</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
453
+ "refresh_job_05</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
454
+ "refresh_job_06</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
455
+ "refresh_job_07</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
456
+ "refresh_job_08</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
457
+ "refresh_job_09</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
458
+ "refresh_job_10</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
459
+ "refresh_job_11</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
460
+ "refresh_job_12</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
461
+ "refresh_job_13</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
462
+ "refresh_job_14</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

"
463
+ ],
464
+ "upgrade": "read the app's refresh_state once the database is probed</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
465
+ "visibleIn": [
466
+ "complete"
467
+ ]
468
+ },
469
+ {
470
+ "id": "T_RS_STORE",
471
+ "kind": "group",
472
+ "lane": "store",
473
+ "col": 6,
474
+ "row": 1.5,
475
+ "state": "declared",
476
+ "title": "rs_storefront</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
477
+ "subtitle": "8 tables the app reads</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
478
+ "weight": 8,
479
+ "members": [
480
+ "dashboard_cache</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
481
+ "identity_map</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
482
+ "source_coverage</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
483
+ "topic_coverage</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
484
+ "explorer</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
485
+ "explorer_topic</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
486
+ "duration_dist</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
487
+ "refresh_state</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

"
488
+ ],
489
+ "visibleIn": [
490
+ "complete"
491
+ ]
492
+ },
493
+ {
494
+ "id": "A_STORE",
495
+ "kind": "card",
496
+ "lane": "store",
497
+ "col": 7,
498
+ "row": 1.5,
499
+ "state": "measured",
500
+ "title": "storefront</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
501
+ "subtitle": "app, health route measured</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
502
+ "members": [
503
+ "/health</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

"
504
+ ]
505
+ },
506
+ {
507
+ "id": "P_STORE",
508
+ "kind": "group",
509
+ "lane": "store",
510
+ "col": 8,
511
+ "row": 1.5,
512
+ "state": "declared",
513
+ "title": "storefront pages</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
514
+ "subtitle": "12 pages · 183 elements</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
515
+ "weight": 12,
516
+ "members": [
517
+ "Customer view and search</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
518
+ "Health</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
519
+ "Analytics</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
520
+ "Overview</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
521
+ "Explorer</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
522
+ "Queues</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
523
+ "Self-service</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
524
+ "Shell</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
525
+ "App analytics</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
526
+ "Data quality</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
527
+ "Settings</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

"
528
+ ],
529
+ "visibleIn": [
530
+ "complete"
531
+ ]
532
+ },
533
+ {
534
+ "id": "H_B2",
535
+ "kind": "card",
536
+ "lane": "batch",
537
+ "col": 1,
538
+ "row": 4.85,
539
+ "state": "measured",
540
+ "title": "batch-02</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
541
+ "subtitle": "batch worker</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
542
+ "members": [
543
+ "ANALYTICS</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
544
+ "36 scheduled jobs</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

"
545
+ ]
546
+ },
547
+ {
548
+ "id": "D_AN",
549
+ "kind": "card",
550
+ "lane": "batch",
551
+ "col": 2,
552
+ "row": 4.85,
553
+ "state": "measured",
554
+ "title": "ANALYTICS</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
555
+ "subtitle": "database</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

"
556
+ },
557
+ {
558
+ "id": "J_B36",
559
+ "kind": "group",
560
+ "lane": "batch",
561
+ "col": 3,
562
+ "row": 4.85,
563
+ "state": "measured",
564
+ "title": "36 jobs on batch-02</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
565
+ "subtitle": "35 read, 1 never read</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
566
+ "weight": 36,
567
+ "members": [
568
+ "NIGHTLY_ETL_STG_TO_LIVE_01</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
569
+ "NIGHTLY_ETL_STG_TO_LIVE_02</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
570
+ "NIGHTLY_ETL_STG_TO_LIVE_03</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
571
+ "NIGHTLY_ETL_STG_TO_LIVE_04</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
572
+ "NIGHTLY_ETL_STG_TO_LIVE_05</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
573
+ "NIGHTLY_ETL_STG_TO_LIVE_06</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
574
+ "NIGHTLY_ETL_STG_TO_LIVE_07</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
575
+ "NIGHTLY_ETL_STG_TO_LIVE_08</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
576
+ "NIGHTLY_ETL_STG_TO_LIVE_09</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
577
+ "NIGHTLY_ETL_STG_TO_LIVE_10</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
578
+ "NIGHTLY_ETL_STG_TO_LIVE_11</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
579
+ "NIGHTLY_ETL_STG_TO_LIVE_12</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
580
+ "NIGHTLY_ETL_STG_TO_LIVE_13</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
581
+ "NIGHTLY_ETL_STG_TO_LIVE_14</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
582
+ "NIGHTLY_ETL_STG_TO_LIVE_15</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
583
+ "NIGHTLY_ETL_STG_TO_LIVE_16</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
584
+ "NIGHTLY_ETL_STG_TO_LIVE_17</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
585
+ "NIGHTLY_ETL_STG_TO_LIVE_18</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
586
+ "NIGHTLY_ETL_STG_TO_LIVE_19</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
587
+ "NIGHTLY_ETL_STG_TO_LIVE_20</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

"
588
+ ]
589
+ },
590
+ {
591
+ "id": "T_AN",
592
+ "kind": "group",
593
+ "lane": "batch",
594
+ "col": 4,
595
+ "row": 4.85,
596
+ "state": "measured",
597
+ "title": "ANALYTICS · dbo</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
598
+ "subtitle": "23 tables, no writer recorded</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
599
+ "weight": 23,
600
+ "members": [
601
+ "dbo.table_01</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
602
+ "dbo.table_02</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
603
+ "dbo.table_03</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
604
+ "dbo.table_04</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
605
+ "dbo.table_05</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
606
+ "dbo.table_06</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
607
+ "dbo.table_07</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
608
+ "dbo.table_08</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
609
+ "dbo.table_09</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
610
+ "dbo.table_10</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
611
+ "dbo.table_11</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
612
+ "dbo.table_12</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
613
+ "dbo.table_13</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
614
+ "dbo.table_14</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
615
+ "dbo.table_15</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
616
+ "dbo.table_16</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
617
+ "dbo.table_17</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
618
+ "dbo.table_18</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

"
619
+ ]
620
+ },
621
+ {
622
+ "id": "ERP",
623
+ "kind": "card",
624
+ "lane": "bill",
625
+ "col": 0,
626
+ "row": 6.6,
627
+ "state": "declared",
628
+ "title": "Legacy ERP</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
629
+ "subtitle": "via linked server</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
630
+ "stateIn": {
631
+ "today": "unrecorded"
632
+ }
633
+ },
634
+ {
635
+ "id": "FILES",
636
+ "kind": "card",
637
+ "lane": "bill",
638
+ "col": 0,
639
+ "row": 7.6,
640
+ "state": "declared",
641
+ "title": "3 SFTP sources</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
642
+ "subtitle": "partner file drops</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
643
+ "weight": 3,
644
+ "members": [
645
+ "Partner A SFTP</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
646
+ "Partner B SFTP</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
647
+ "Partner C SFTP</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

"
648
+ ],
649
+ "visibleIn": [
650
+ "complete"
651
+ ]
652
+ },
653
+ {
654
+ "id": "C_DB1",
655
+ "kind": "chip",
656
+ "lane": "bill",
657
+ "col": 1,
658
+ "row": 7.1,
659
+ "state": "measured",
660
+ "title": "dbhost-01</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
661
+ "subtitle": "shown in the storefront lane</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
662
+ "visibleIn": [
663
+ "complete"
664
+ ],
665
+ "ref": "H_DB1"
666
+ },
667
+ {
668
+ "id": "D_WH",
669
+ "kind": "card",
670
+ "lane": "bill",
671
+ "col": 2,
672
+ "row": 7.1,
673
+ "state": "measured",
674
+ "title": "WAREHOUSE</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
675
+ "subtitle": "database</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

"
676
+ },
677
+ {
678
+ "id": "J_BILL",
679
+ "kind": "group",
680
+ "lane": "bill",
681
+ "col": 3,
682
+ "row": 6.6,
683
+ "state": "declared",
684
+ "title": "11 billing programs</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
685
+ "subtitle": "Python, scheduler, RPA</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
686
+ "weight": 11,
687
+ "members": [
688
+ "etl_erp_to_warehouse.py</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
689
+ "daily_validation.py</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
690
+ "orchestrator.ps1</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
691
+ "tap_load.ps1</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

"
692
+ ],
693
+ "visibleIn": [
694
+ "complete"
695
+ ]
696
+ },
697
+ {
698
+ "id": "J_W47",
699
+ "kind": "group",
700
+ "lane": "bill",
701
+ "col": 3,
702
+ "row": 7.6,
703
+ "state": "measured",
704
+ "title": "47 jobs on dbhost-01</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
705
+ "subtitle": "45 read, 2 never read</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
706
+ "weight": 47,
707
+ "members": [
708
+ "DAILY_LOAD_01</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
709
+ "DAILY_LOAD_02</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
710
+ "DAILY_LOAD_03</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
711
+ "DAILY_LOAD_04</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
712
+ "DAILY_LOAD_05</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
713
+ "DAILY_LOAD_06</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
714
+ "DAILY_LOAD_07</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
715
+ "DAILY_LOAD_08</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
716
+ "DAILY_LOAD_09</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
717
+ "DAILY_LOAD_10</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
718
+ "DAILY_LOAD_11</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
719
+ "DAILY_LOAD_12</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
720
+ "DAILY_LOAD_13</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
721
+ "DAILY_LOAD_14</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
722
+ "DAILY_LOAD_15</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
723
+ "DAILY_LOAD_16</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
724
+ "DAILY_LOAD_17</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
725
+ "DAILY_LOAD_18</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
726
+ "DAILY_LOAD_19</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
727
+ "DAILY_LOAD_20</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
728
+ "DAILY_LOAD_21</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
729
+ "DAILY_LOAD_22</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
730
+ "DAILY_LOAD_23</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
731
+ "DAILY_LOAD_24</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
732
+ "DAILY_LOAD_25</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
733
+ "DAILY_LOAD_26</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
734
+ "DAILY_LOAD_27</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
735
+ "DAILY_LOAD_28</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
736
+ "DAILY_LOAD_29</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
737
+ "DAILY_LOAD_30</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

"
738
+ ]
739
+ },
740
+ {
741
+ "id": "T_WH",
742
+ "kind": "group",
743
+ "lane": "bill",
744
+ "col": 4,
745
+ "row": 7.1,
746
+ "state": "measured",
747
+ "title": "WAREHOUSE · dbo</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
748
+ "subtitle": "138 tables</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
749
+ "weight": 138,
750
+ "members": [
751
+ "dbo.fact_01</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
752
+ "dbo.fact_02</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
753
+ "dbo.fact_03</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
754
+ "dbo.fact_04</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
755
+ "dbo.fact_05</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
756
+ "dbo.fact_06</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
757
+ "dbo.fact_07</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
758
+ "dbo.fact_08</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
759
+ "dbo.fact_09</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
760
+ "dbo.fact_10</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
761
+ "dbo.fact_11</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
762
+ "dbo.fact_12</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
763
+ "dbo.fact_13</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
764
+ "dbo.fact_14</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
765
+ "dbo.fact_15</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
766
+ "dbo.fact_16</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
767
+ "dbo.fact_17</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
768
+ "dbo.fact_18</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
769
+ "dbo.fact_19</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
770
+ "dbo.fact_20</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
771
+ "dbo.fact_21</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
772
+ "dbo.fact_22</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
773
+ "dbo.fact_23</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
774
+ "dbo.fact_24</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
775
+ "dbo.fact_25</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
776
+ "dbo.fact_26</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
777
+ "dbo.fact_27</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
778
+ "dbo.fact_28</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
779
+ "dbo.fact_29</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
780
+ "dbo.fact_30</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

"
781
+ ]
782
+ },
783
+ {
784
+ "id": "R_BILL",
785
+ "kind": "group",
786
+ "lane": "bill",
787
+ "col": 5,
788
+ "row": 7.1,
789
+ "state": "declared",
790
+ "title": "billing refresher</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
791
+ "subtitle": "11 jobs, 300 s loop</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
792
+ "weight": 11,
793
+ "members": [
794
+ "case_recurrence</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
795
+ "cdr_count</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
796
+ "file_delivery</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
797
+ "file_recon</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
798
+ "filter_values</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
799
+ "monthly_cycle</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
800
+ "roaming_daily</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
801
+ "roaming_subscribers</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
802
+ "sms_fraud</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
803
+ "source_coverage</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
804
+ "trends_daily</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

"
805
+ ],
806
+ "upgrade": "read the app's refresh_state: the monitor can already read it</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
807
+ "visibleIn": [
808
+ "complete"
809
+ ]
810
+ },
811
+ {
812
+ "id": "T_RS_BILL",
813
+ "kind": "group",
814
+ "lane": "bill",
815
+ "col": 6,
816
+ "row": 7.1,
817
+ "state": "measured",
818
+ "title": "rs_billing</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
819
+ "subtitle": "20 tables</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
820
+ "weight": 20,
821
+ "members": [
822
+ "rs_billing.table_01</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
823
+ "rs_billing.table_02</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
824
+ "rs_billing.table_03</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
825
+ "rs_billing.table_04</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
826
+ "rs_billing.table_05</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
827
+ "rs_billing.table_06</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
828
+ "rs_billing.table_07</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
829
+ "rs_billing.table_08</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
830
+ "rs_billing.table_09</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
831
+ "rs_billing.table_10</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
832
+ "rs_billing.table_11</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
833
+ "rs_billing.table_12</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
834
+ "rs_billing.table_13</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
835
+ "rs_billing.table_14</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
836
+ "rs_billing.table_15</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
837
+ "rs_billing.table_16</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
838
+ "rs_billing.table_17</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
839
+ "rs_billing.table_18</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
840
+ "rs_billing.table_19</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
841
+ "rs_billing.table_20</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

"
842
+ ]
843
+ },
844
+ {
845
+ "id": "A_BILL",
846
+ "kind": "card",
847
+ "lane": "bill",
848
+ "col": 7,
849
+ "row": 7.1,
850
+ "state": "measured",
851
+ "title": "billing</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
852
+ "subtitle": "app, health route measured</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
853
+ "members": [
854
+ "/health</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

"
855
+ ]
856
+ },
857
+ {
858
+ "id": "P_BILL",
859
+ "kind": "group",
860
+ "lane": "bill",
861
+ "col": 8,
862
+ "row": 7.1,
863
+ "state": "declared",
864
+ "title": "billing pages</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
865
+ "subtitle": "12 pages · 17 elements</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
866
+ "weight": 12,
867
+ "members": [
868
+ "/</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
869
+ "/runs</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
870
+ "/control-totals</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
871
+ "/pipelines</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
872
+ "/exceptions</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
873
+ "/roaming</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
874
+ "/billing-cycles</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
875
+ "/fraud</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
876
+ "/subscribers</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
877
+ "/trends</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

"
878
+ ],
879
+ "visibleIn": [
880
+ "complete"
881
+ ]
882
+ },
883
+ {
884
+ "id": "C_WH",
885
+ "kind": "chip",
886
+ "lane": "search",
887
+ "col": 4,
888
+ "row": 9.4,
889
+ "state": "measured",
890
+ "title": "WAREHOUSE · dbo</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
891
+ "subtitle": "shown in the billing lane</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
892
+ "visibleIn": [
893
+ "complete"
894
+ ],
895
+ "ref": "T_WH"
896
+ },
897
+ {
898
+ "id": "R_SEARCH",
899
+ "kind": "group",
900
+ "lane": "search",
901
+ "col": 5,
902
+ "row": 9.4,
903
+ "state": "unrecorded",
904
+ "title": "search refresher</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
905
+ "subtitle": "6 jobs, not recorded</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
906
+ "weight": 6,
907
+ "upgrade": "read the app's refresh_state</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
908
+ "visibleIn": [
909
+ "complete"
910
+ ]
911
+ },
912
+ {
913
+ "id": "T_RS_SEARCH",
914
+ "kind": "group",
915
+ "lane": "search",
916
+ "col": 6,
917
+ "row": 9.4,
918
+ "state": "measured",
919
+ "title": "rs_search</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
920
+ "subtitle": "27 tables</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
921
+ "weight": 27,
922
+ "members": [
923
+ "rs_search.table_01</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
924
+ "rs_search.table_02</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
925
+ "rs_search.table_03</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
926
+ "rs_search.table_04</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
927
+ "rs_search.table_05</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
928
+ "rs_search.table_06</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
929
+ "rs_search.table_07</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
930
+ "rs_search.table_08</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
931
+ "rs_search.table_09</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
932
+ "rs_search.table_10</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
933
+ "rs_search.table_11</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
934
+ "rs_search.table_12</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
935
+ "rs_search.table_13</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
936
+ "rs_search.table_14</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
937
+ "rs_search.table_15</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
938
+ "rs_search.table_16</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
939
+ "rs_search.table_17</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
940
+ "rs_search.table_18</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
941
+ "rs_search.table_19</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
942
+ "rs_search.table_20</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
943
+ "rs_search.table_21</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
944
+ "rs_search.table_22</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
945
+ "rs_search.table_23</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
946
+ "rs_search.table_24</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
947
+ "rs_search.table_25</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
948
+ "rs_search.table_26</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
949
+ "rs_search.table_27</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

"
950
+ ]
951
+ },
952
+ {
953
+ "id": "A_SEARCH",
954
+ "kind": "card",
955
+ "lane": "search",
956
+ "col": 7,
957
+ "row": 9.4,
958
+ "state": "measured",
959
+ "title": "search-app</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
960
+ "subtitle": "app, health route measured</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
961
+ "members": [
962
+ "/health</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

"
963
+ ]
964
+ },
965
+ {
966
+ "id": "P_SEARCH",
967
+ "kind": "card",
968
+ "lane": "search",
969
+ "col": 8,
970
+ "row": 9.4,
971
+ "state": "unrecorded",
972
+ "title": "search-app pages</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
973
+ "subtitle": "no lineage document yet</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
974
+ "visibleIn": [
975
+ "complete"
976
+ ]
977
+ },
978
+ {
979
+ "id": "C_STORE",
980
+ "kind": "chip",
981
+ "lane": "reco",
982
+ "col": 2,
983
+ "row": 11.15,
984
+ "state": "declared",
985
+ "title": "STOREDB</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
986
+ "subtitle": "shown in the storefront lane</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
987
+ "visibleIn": [
988
+ "complete"
989
+ ],
990
+ "ref": "D_STORE"
991
+ },
992
+ {
993
+ "id": "W_RECO",
994
+ "kind": "placeholder",
995
+ "lane": "reco",
996
+ "col": 3,
997
+ "row": 11.15,
998
+ "state": "unrecorded",
999
+ "title": "recommender loaders, tables and refresher: not recorded</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1000
+ "subtitle": "No lineage document. Close it with a document, the loader's name, or the app's refresh_state.</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1001
+ "colSpan": 3,
1002
+ "weight": 3,
1003
+ "visibleIn": [
1004
+ "complete"
1005
+ ]
1006
+ },
1007
+ {
1008
+ "id": "T_RS_RECO",
1009
+ "kind": "group",
1010
+ "lane": "reco",
1011
+ "col": 6,
1012
+ "row": 11.15,
1013
+ "state": "measured",
1014
+ "title": "rs_reco</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1015
+ "subtitle": "source_coverage read; the rest not read</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1016
+ "members": [
1017
+ "rs_reco.source_coverage</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

"
1018
+ ],
1019
+ "upgrade": "probe the database to list the rest</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1020
+ "visibleIn": [
1021
+ "complete"
1022
+ ]
1023
+ },
1024
+ {
1025
+ "id": "A_RECO",
1026
+ "kind": "card",
1027
+ "lane": "reco",
1028
+ "col": 7,
1029
+ "row": 11.15,
1030
+ "state": "measured",
1031
+ "title": "recommender</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1032
+ "subtitle": "app, health route measured</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1033
+ "members": [
1034
+ "/health</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

"
1035
+ ]
1036
+ },
1037
+ {
1038
+ "id": "P_RECO",
1039
+ "kind": "card",
1040
+ "lane": "reco",
1041
+ "col": 8,
1042
+ "row": 11.15,
1043
+ "state": "unrecorded",
1044
+ "title": "recommender pages</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1045
+ "subtitle": "no lineage document yet</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1046
+ "visibleIn": [
1047
+ "complete"
1048
+ ]
1049
+ },
1050
+ {
1051
+ "id": "H_UAT",
1052
+ "kind": "card",
1053
+ "lane": "desk",
1054
+ "col": 1,
1055
+ "row": 12.9,
1056
+ "state": "declared",
1057
+ "title": "uat-host</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1058
+ "subtitle": "SQL host, not read today</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1059
+ "stateIn": {
1060
+ "today": "unrecorded"
1061
+ }
1062
+ },
1063
+ {
1064
+ "id": "D_FB",
1065
+ "kind": "card",
1066
+ "lane": "desk",
1067
+ "col": 2,
1068
+ "row": 12.9,
1069
+ "state": "declared",
1070
+ "title": "Feedback_DB</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1071
+ "subtitle": "database, never read today</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1072
+ "stateIn": {
1073
+ "today": "unrecorded"
1074
+ }
1075
+ },
1076
+ {
1077
+ "id": "J_DESK",
1078
+ "kind": "group",
1079
+ "lane": "desk",
1080
+ "col": 3,
1081
+ "row": 12.9,
1082
+ "state": "declared",
1083
+ "title": "support-desk pipeline</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1084
+ "subtitle": "12 steps</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1085
+ "weight": 12,
1086
+ "members": [
1087
+ "Extract pending appointments (agent job)</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1088
+ "daily pipeline script</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1089
+ "diagnostics processor</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1090
+ "summary generator</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1091
+ "recommendations saver</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1092
+ "weekly report</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1093
+ "lock reaper (300 s)</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1094
+ "analytics rollup (600 s)</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

"
1095
+ ],
1096
+ "visibleIn": [
1097
+ "complete"
1098
+ ]
1099
+ },
1100
+ {
1101
+ "id": "T_DESK",
1102
+ "kind": "group",
1103
+ "lane": "desk",
1104
+ "col": 4,
1105
+ "row": 12.9,
1106
+ "state": "declared",
1107
+ "title": "Desk tables and legacy DBs</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1108
+ "subtitle": "9 objects</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1109
+ "weight": 9,
1110
+ "members": [
1111
+ "dbo.Pending_Calls</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1112
+ "dbo.Case_Assignment</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1113
+ "dbo.Case_Diagnostics</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1114
+ "dbo.Case_Feedback</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1115
+ "dbo.Case_Recommendation</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1116
+ "dbo.vw_CaseDetail</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1117
+ "LEGACY.CASES</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1118
+ "LEGACY.INTERACTIONS</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1119
+ "LEGACY.OUTAGES</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

"
1120
+ ],
1121
+ "visibleIn": [
1122
+ "complete"
1123
+ ]
1124
+ },
1125
+ {
1126
+ "id": "W_DESK",
1127
+ "kind": "placeholder",
1128
+ "lane": "desk",
1129
+ "col": 5,
1130
+ "row": 12.9,
1131
+ "state": "declared",
1132
+ "title": "No refresher, no reporting tables</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1133
+ "subtitle": "The app reads its own tables directly (no rs_ schema).</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1134
+ "colSpan": 2,
1135
+ "visibleIn": [
1136
+ "complete"
1137
+ ]
1138
+ },
1139
+ {
1140
+ "id": "A_DESK",
1141
+ "kind": "card",
1142
+ "lane": "desk",
1143
+ "col": 7,
1144
+ "row": 12.9,
1145
+ "state": "measured",
1146
+ "title": "support-desk</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1147
+ "subtitle": "app, health route measured</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1148
+ "members": [
1149
+ "/api/health</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

"
1150
+ ]
1151
+ },
1152
+ {
1153
+ "id": "P_DESK",
1154
+ "kind": "group",
1155
+ "lane": "desk",
1156
+ "col": 8,
1157
+ "row": 12.9,
1158
+ "state": "declared",
1159
+ "title": "support-desk pages</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1160
+ "subtitle": "10 pages · 15 elements</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1161
+ "weight": 10,
1162
+ "members": [
1163
+ "/</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1164
+ "/queue</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1165
+ "/cases/$caseId</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1166
+ "/ai-impact</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1167
+ "/map</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1168
+ "/reports</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1169
+ "/app-analytics</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1170
+ "/settings</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

"
1171
+ ],
1172
+ "visibleIn": [
1173
+ "complete"
1174
+ ]
1175
+ },
1176
+ {
1177
+ "id": "W_MORE",
1178
+ "kind": "placeholder",
1179
+ "lane": "more",
1180
+ "col": 0,
1181
+ "row": 14.65,
1182
+ "state": "unrecorded",
1183
+ "title": "six more apps: finance, nps, uni, kiosk, board, monitor</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1184
+ "subtitle": "No lineage document for these apps yet. They report a health route only, so nothing about their data is recorded.</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1185
+ "colSpan": 7,
1186
+ "visibleIn": [
1187
+ "complete"
1188
+ ]
1189
+ },
1190
+ {
1191
+ "id": "A_MORE",
1192
+ "kind": "group",
1193
+ "lane": "more",
1194
+ "col": 7,
1195
+ "row": 14.65,
1196
+ "state": "measured",
1197
+ "title": "6 more apps</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1198
+ "subtitle": "health routes measured</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1199
+ "weight": 6,
1200
+ "members": [
1201
+ "finance /health</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1202
+ "nps /health</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1203
+ "uni /health</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1204
+ "kiosk /health</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1205
+ "board /api/health</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1206
+ "monitor /health</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

"
1207
+ ]
1208
+ },
1209
+ {
1210
+ "id": "P_MORE",
1211
+ "kind": "card",
1212
+ "lane": "more",
1213
+ "col": 8,
1214
+ "row": 14.65,
1215
+ "state": "unrecorded",
1216
+ "title": "their pages</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1217
+ "subtitle": "no lineage document yet</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1218
+ "visibleIn": [
1219
+ "complete"
1220
+ ]
1221
+ },
1222
+ {
1223
+ "id": "W_FEED",
1224
+ "kind": "placeholder",
1225
+ "lane": "feed",
1226
+ "col": 0,
1227
+ "row": 16.4,
1228
+ "state": "unrecorded",
1229
+ "title": "partner-feed: a file pipeline (.in in; .pdf .xml out)</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1230
+ "subtitle": "Its document has no pages, routes or SQL tables, so the standard columns do not apply. Decision needed: how to model files and billing cycles.</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1231
+ "colSpan": 7,
1232
+ "visibleIn": [
1233
+ "complete"
1234
+ ]
1235
+ },
1236
+ {
1237
+ "id": "A_FEED",
1238
+ "kind": "card",
1239
+ "lane": "feed",
1240
+ "col": 7,
1241
+ "row": 16.4,
1242
+ "state": "unrecorded",
1243
+ "title": "partner-feed</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1244
+ "subtitle": "app, not recorded as tables</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1245
+ "visibleIn": [
1246
+ "complete"
1247
+ ]
1248
+ }
1249
+ ],
1250
+ "links": [
1251
+ {
1252
+ "id": "H_DB1-D_STORE",
1253
+ "from": "H_DB1",
1254
+ "to": "D_STORE",
1255
+ "state": "declared"
1256
+ },
1257
+ {
1258
+ "id": "H_DB1-D_WH",
1259
+ "from": "H_DB1",
1260
+ "to": "D_WH",
1261
+ "state": "measured",
1262
+ "visibleIn": [
1263
+ "today"
1264
+ ]
1265
+ },
1266
+ {
1267
+ "id": "H_B2-D_AN",
1268
+ "from": "H_B2",
1269
+ "to": "D_AN",
1270
+ "state": "measured"
1271
+ },
1272
+ {
1273
+ "id": "H_UAT-D_FB",
1274
+ "from": "H_UAT",
1275
+ "to": "D_FB",
1276
+ "state": "declared"
1277
+ },
1278
+ {
1279
+ "id": "H_OLD-D_OLD",
1280
+ "from": "H_OLD",
1281
+ "to": "D_OLD",
1282
+ "state": "declared",
1283
+ "visibleIn": [
1284
+ "complete"
1285
+ ]
1286
+ },
1287
+ {
1288
+ "id": "D_AN-J_B36",
1289
+ "from": "D_AN",
1290
+ "to": "J_B36",
1291
+ "state": "measured",
1292
+ "label": "1 job</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

"
1293
+ },
1294
+ {
1295
+ "id": "J_B36-T_AN",
1296
+ "from": "J_B36",
1297
+ "to": "T_AN",
1298
+ "state": "unrecorded"
1299
+ },
1300
+ {
1301
+ "id": "C_DB1-D_WH",
1302
+ "from": "C_DB1",
1303
+ "to": "D_WH",
1304
+ "state": "measured",
1305
+ "visibleIn": [
1306
+ "complete"
1307
+ ]
1308
+ },
1309
+ {
1310
+ "id": "D_WH-J_W47",
1311
+ "from": "D_WH",
1312
+ "to": "J_W47",
1313
+ "state": "measured",
1314
+ "label": "35 jobs</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

"
1315
+ },
1316
+ {
1317
+ "id": "D_WH-J_BILL",
1318
+ "from": "D_WH",
1319
+ "to": "J_BILL",
1320
+ "state": "declared",
1321
+ "visibleIn": [
1322
+ "complete"
1323
+ ]
1324
+ },
1325
+ {
1326
+ "id": "ERP-J_BILL",
1327
+ "from": "ERP",
1328
+ "to": "J_BILL",
1329
+ "state": "declared",
1330
+ "visibleIn": [
1331
+ "complete"
1332
+ ]
1333
+ },
1334
+ {
1335
+ "id": "FILES-J_W47",
1336
+ "from": "FILES",
1337
+ "to": "J_W47",
1338
+ "state": "declared",
1339
+ "visibleIn": [
1340
+ "complete"
1341
+ ]
1342
+ },
1343
+ {
1344
+ "id": "J_W47-T_WH",
1345
+ "from": "J_W47",
1346
+ "to": "T_WH",
1347
+ "state": "inferred",
1348
+ "label": "69 links</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

"
1349
+ },
1350
+ {
1351
+ "id": "J_BILL-T_WH",
1352
+ "from": "J_BILL",
1353
+ "to": "T_WH",
1354
+ "state": "declared",
1355
+ "visibleIn": [
1356
+ "complete"
1357
+ ]
1358
+ },
1359
+ {
1360
+ "id": "T_WH-R_BILL",
1361
+ "from": "T_WH",
1362
+ "to": "R_BILL",
1363
+ "state": "declared",
1364
+ "visibleIn": [
1365
+ "complete"
1366
+ ]
1367
+ },
1368
+ {
1369
+ "id": "R_BILL-T_RS_BILL",
1370
+ "from": "R_BILL",
1371
+ "to": "T_RS_BILL",
1372
+ "state": "declared",
1373
+ "visibleIn": [
1374
+ "complete"
1375
+ ]
1376
+ },
1377
+ {
1378
+ "id": "T_RS_BILL-A_BILL",
1379
+ "from": "T_RS_BILL",
1380
+ "to": "A_BILL",
1381
+ "state": "declared",
1382
+ "visibleIn": [
1383
+ "complete"
1384
+ ]
1385
+ },
1386
+ {
1387
+ "id": "A_BILL-P_BILL",
1388
+ "from": "A_BILL",
1389
+ "to": "P_BILL",
1390
+ "state": "declared",
1391
+ "label": "17 routes</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1392
+ "visibleIn": [
1393
+ "complete"
1394
+ ]
1395
+ },
1396
+ {
1397
+ "id": "ORD-J_ORD",
1398
+ "from": "ORD",
1399
+ "to": "J_ORD",
1400
+ "state": "declared",
1401
+ "visibleIn": [
1402
+ "complete"
1403
+ ]
1404
+ },
1405
+ {
1406
+ "id": "D_STORE-J_ORD",
1407
+ "from": "D_STORE",
1408
+ "to": "J_ORD",
1409
+ "state": "declared",
1410
+ "visibleIn": [
1411
+ "complete"
1412
+ ]
1413
+ },
1414
+ {
1415
+ "id": "J_ORD-T_ORD",
1416
+ "from": "J_ORD",
1417
+ "to": "T_ORD",
1418
+ "state": "declared",
1419
+ "visibleIn": [
1420
+ "complete"
1421
+ ]
1422
+ },
1423
+ {
1424
+ "id": "SUP-J_CUST",
1425
+ "from": "SUP",
1426
+ "to": "J_CUST",
1427
+ "state": "declared",
1428
+ "visibleIn": [
1429
+ "complete"
1430
+ ]
1431
+ },
1432
+ {
1433
+ "id": "D_STORE-J_CUST",
1434
+ "from": "D_STORE",
1435
+ "to": "J_CUST",
1436
+ "state": "declared",
1437
+ "visibleIn": [
1438
+ "complete"
1439
+ ]
1440
+ },
1441
+ {
1442
+ "id": "J_CUST-T_CUST",
1443
+ "from": "J_CUST",
1444
+ "to": "T_CUST",
1445
+ "state": "declared",
1446
+ "visibleIn": [
1447
+ "complete"
1448
+ ]
1449
+ },
1450
+ {
1451
+ "id": "D_STORE-J_SUM",
1452
+ "from": "D_STORE",
1453
+ "to": "J_SUM",
1454
+ "state": "declared",
1455
+ "visibleIn": [
1456
+ "complete"
1457
+ ]
1458
+ },
1459
+ {
1460
+ "id": "H_GPU-J_SUM",
1461
+ "from": "H_GPU",
1462
+ "to": "J_SUM",
1463
+ "state": "declared",
1464
+ "visibleIn": [
1465
+ "complete"
1466
+ ]
1467
+ },
1468
+ {
1469
+ "id": "J_SUM-T_SUM",
1470
+ "from": "J_SUM",
1471
+ "to": "T_SUM",
1472
+ "state": "declared",
1473
+ "visibleIn": [
1474
+ "complete"
1475
+ ]
1476
+ },
1477
+ {
1478
+ "id": "D_OLD-J_EXT",
1479
+ "from": "D_OLD",
1480
+ "to": "J_EXT",
1481
+ "state": "declared",
1482
+ "visibleIn": [
1483
+ "complete"
1484
+ ]
1485
+ },
1486
+ {
1487
+ "id": "J_EXT-T_EXT",
1488
+ "from": "J_EXT",
1489
+ "to": "T_EXT",
1490
+ "state": "declared",
1491
+ "visibleIn": [
1492
+ "complete"
1493
+ ]
1494
+ },
1495
+ {
1496
+ "id": "T_ORD-R_STORE",
1497
+ "from": "T_ORD",
1498
+ "to": "R_STORE",
1499
+ "state": "declared",
1500
+ "visibleIn": [
1501
+ "complete"
1502
+ ]
1503
+ },
1504
+ {
1505
+ "id": "T_CUST-R_STORE",
1506
+ "from": "T_CUST",
1507
+ "to": "R_STORE",
1508
+ "state": "declared",
1509
+ "visibleIn": [
1510
+ "complete"
1511
+ ]
1512
+ },
1513
+ {
1514
+ "id": "T_SUM-R_STORE",
1515
+ "from": "T_SUM",
1516
+ "to": "R_STORE",
1517
+ "state": "declared",
1518
+ "visibleIn": [
1519
+ "complete"
1520
+ ]
1521
+ },
1522
+ {
1523
+ "id": "T_EXT-R_STORE",
1524
+ "from": "T_EXT",
1525
+ "to": "R_STORE",
1526
+ "state": "declared",
1527
+ "visibleIn": [
1528
+ "complete"
1529
+ ]
1530
+ },
1531
+ {
1532
+ "id": "R_STORE-T_RS_STORE",
1533
+ "from": "R_STORE",
1534
+ "to": "T_RS_STORE",
1535
+ "state": "declared",
1536
+ "visibleIn": [
1537
+ "complete"
1538
+ ]
1539
+ },
1540
+ {
1541
+ "id": "T_RS_STORE-A_STORE",
1542
+ "from": "T_RS_STORE",
1543
+ "to": "A_STORE",
1544
+ "state": "declared",
1545
+ "visibleIn": [
1546
+ "complete"
1547
+ ]
1548
+ },
1549
+ {
1550
+ "id": "A_STORE-P_STORE",
1551
+ "from": "A_STORE",
1552
+ "to": "P_STORE",
1553
+ "state": "declared",
1554
+ "label": "74 routes</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1555
+ "visibleIn": [
1556
+ "complete"
1557
+ ]
1558
+ },
1559
+ {
1560
+ "id": "C_WH-R_SEARCH",
1561
+ "from": "C_WH",
1562
+ "to": "R_SEARCH",
1563
+ "state": "inferred",
1564
+ "visibleIn": [
1565
+ "complete"
1566
+ ]
1567
+ },
1568
+ {
1569
+ "id": "R_SEARCH-T_RS_SEARCH",
1570
+ "from": "R_SEARCH",
1571
+ "to": "T_RS_SEARCH",
1572
+ "state": "unrecorded",
1573
+ "visibleIn": [
1574
+ "complete"
1575
+ ]
1576
+ },
1577
+ {
1578
+ "id": "T_RS_SEARCH-A_SEARCH",
1579
+ "from": "T_RS_SEARCH",
1580
+ "to": "A_SEARCH",
1581
+ "state": "unrecorded",
1582
+ "visibleIn": [
1583
+ "complete"
1584
+ ]
1585
+ },
1586
+ {
1587
+ "id": "A_SEARCH-P_SEARCH",
1588
+ "from": "A_SEARCH",
1589
+ "to": "P_SEARCH",
1590
+ "state": "unrecorded",
1591
+ "visibleIn": [
1592
+ "complete"
1593
+ ]
1594
+ },
1595
+ {
1596
+ "id": "C_STORE-W_RECO",
1597
+ "from": "C_STORE",
1598
+ "to": "W_RECO",
1599
+ "state": "unrecorded",
1600
+ "visibleIn": [
1601
+ "complete"
1602
+ ]
1603
+ },
1604
+ {
1605
+ "id": "W_RECO-T_RS_RECO",
1606
+ "from": "W_RECO",
1607
+ "to": "T_RS_RECO",
1608
+ "state": "unrecorded",
1609
+ "visibleIn": [
1610
+ "complete"
1611
+ ]
1612
+ },
1613
+ {
1614
+ "id": "T_RS_RECO-A_RECO",
1615
+ "from": "T_RS_RECO",
1616
+ "to": "A_RECO",
1617
+ "state": "unrecorded",
1618
+ "visibleIn": [
1619
+ "complete"
1620
+ ]
1621
+ },
1622
+ {
1623
+ "id": "A_RECO-P_RECO",
1624
+ "from": "A_RECO",
1625
+ "to": "P_RECO",
1626
+ "state": "unrecorded",
1627
+ "visibleIn": [
1628
+ "complete"
1629
+ ]
1630
+ },
1631
+ {
1632
+ "id": "D_FB-J_DESK",
1633
+ "from": "D_FB",
1634
+ "to": "J_DESK",
1635
+ "state": "declared",
1636
+ "visibleIn": [
1637
+ "complete"
1638
+ ]
1639
+ },
1640
+ {
1641
+ "id": "J_DESK-T_DESK",
1642
+ "from": "J_DESK",
1643
+ "to": "T_DESK",
1644
+ "state": "declared",
1645
+ "visibleIn": [
1646
+ "complete"
1647
+ ]
1648
+ },
1649
+ {
1650
+ "id": "T_DESK-W_DESK",
1651
+ "from": "T_DESK",
1652
+ "to": "W_DESK",
1653
+ "state": "declared",
1654
+ "visibleIn": [
1655
+ "complete"
1656
+ ]
1657
+ },
1658
+ {
1659
+ "id": "W_DESK-A_DESK",
1660
+ "from": "W_DESK",
1661
+ "to": "A_DESK",
1662
+ "state": "declared",
1663
+ "visibleIn": [
1664
+ "complete"
1665
+ ]
1666
+ },
1667
+ {
1668
+ "id": "A_DESK-P_DESK",
1669
+ "from": "A_DESK",
1670
+ "to": "P_DESK",
1671
+ "state": "declared",
1672
+ "label": "18 routes</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1673
+ "visibleIn": [
1674
+ "complete"
1675
+ ]
1676
+ },
1677
+ {
1678
+ "id": "W_MORE-A_MORE",
1679
+ "from": "W_MORE",
1680
+ "to": "A_MORE",
1681
+ "state": "unrecorded",
1682
+ "visibleIn": [
1683
+ "complete"
1684
+ ]
1685
+ },
1686
+ {
1687
+ "id": "A_MORE-P_MORE",
1688
+ "from": "A_MORE",
1689
+ "to": "P_MORE",
1690
+ "state": "unrecorded",
1691
+ "visibleIn": [
1692
+ "complete"
1693
+ ]
1694
+ },
1695
+ {
1696
+ "id": "W_FEED-A_FEED",
1697
+ "from": "W_FEED",
1698
+ "to": "A_FEED",
1699
+ "state": "unrecorded",
1700
+ "visibleIn": [
1701
+ "complete"
1702
+ ]
1703
+ }
1704
+ ],
1705
+ "views": [
1706
+ {
1707
+ "id": "today",
1708
+ "label": "Today</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

"
1709
+ },
1710
+ {
1711
+ "id": "complete",
1712
+ "label": "Complete</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1713
+ "default": true
1714
+ }
1715
+ ],
1716
+ "inspector": {
1717
+ "relations": [
1718
+ {
1719
+ "id": "up",
1720
+ "label": "Feeds this</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1721
+ "dir": "up"
1722
+ },
1723
+ {
1724
+ "id": "down",
1725
+ "label": "Downstream</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1726
+ "dir": "down"
1727
+ },
1728
+ {
1729
+ "id": "pages",
1730
+ "label": "Pages</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1731
+ "dir": "down",
1732
+ "filter": {
1733
+ "col": 8
1734
+ }
1735
+ }
1736
+ ],
1737
+ "actions": [
1738
+ {
1739
+ "id": "stale",
1740
+ "label": "Simulate: this stops updating</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1741
+ "dir": "down",
1742
+ "staleText": "potentially stale</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

"
1743
+ }
1744
+ ]
1745
+ },
1746
+ "notes": [
1747
+ {
1748
+ "anchor": "#layerstrip",
1749
+ "title": "Completeness strip</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1750
+ "text": "One cell per column: a stacked bar (good, neutral, gap) and 'known / recorded'. Data: node weights by state bucket. An empty column shows a dotted track, never a full bar.</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

"
1751
+ },
1752
+ {
1753
+ "anchor": "#kpis",
1754
+ "title": "Summary tiles</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1755
+ "text": "Links by state bucket, groups with a gap, and groups that can be improved. The last two are buttons that dim everything else (aria-pressed).</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

"
1756
+ },
1757
+ {
1758
+ "anchor": "#modeSwitch",
1759
+ "title": "View switch</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1760
+ "text": "Today shows what the current page can record. Complete adds the declared layer. Both views come from one model: visibleIn and stateIn decide what each view shows.</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

"
1761
+ },
1762
+ {
1763
+ "anchor": "#viewport",
1764
+ "title": "Canvas</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1765
+ "text": "Wheel zooms around the cursor, drag pans, double-click fits. The first view fits the width (zoom 0.6 or more); 0 fits everything.</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

"
1766
+ },
1767
+ {
1768
+ "anchor": "#tools",
1769
+ "title": "Canvas controls</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1770
+ "text": "Select, hand, zoom in and out, fit, 100 percent, zoom to selection and fullscreen. Keys: V H + - 0 1 F and the arrows.</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

"
1771
+ },
1772
+ {
1773
+ "anchor": "#inspector",
1774
+ "title": "Inspector</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1775
+ "text": "Slides in on a click and closes with Esc. The three buttons highlight the groups that feed this one, the groups downstream, and the last column. The red button simulates a failure.</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

"
1776
+ },
1777
+ {
1778
+ "anchor": "<img src=x onerror=window.__pwned=1>",
1779
+ "title": "</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

",
1780
+ "text": "</script><img src=x onerror=\"window.__pwned=1\"><b>\"'&

"
1781
+ }
1782
+ ]
1783
+ }