@caddis/cli 0.4.43 → 0.4.45

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 (111) hide show
  1. package/bundles/antigravity-plugin/plugin.json +1 -1
  2. package/bundles/antigravity-plugin/scripts/caddis_file_lock.py +48 -7
  3. package/bundles/antigravity-plugin/scripts/caddis_lanes.py +27 -0
  4. package/bundles/antigravity-plugin/scripts/caddis_todo.py +7 -5
  5. package/bundles/antigravity-plugin/scripts/claude-oss.ps1 +15 -3
  6. package/bundles/antigravity-plugin/scripts/claude-oss.sh +12 -1
  7. package/bundles/antigravity-plugin/skills/_registry.md +5 -4
  8. package/bundles/antigravity-plugin/skills/adopt-app/SKILL.md +6 -1
  9. package/bundles/antigravity-plugin/skills/advisory-hub/SKILL.md +7 -1
  10. package/bundles/antigravity-plugin/skills/decide/SKILL.md +1 -1
  11. package/bundles/antigravity-plugin/skills/flow-studio/README.md +53 -0
  12. package/bundles/antigravity-plugin/skills/flow-studio/SKILL.md +103 -0
  13. package/bundles/antigravity-plugin/skills/flow-studio/examples/README.md +11 -0
  14. package/bundles/antigravity-plugin/skills/flow-studio/examples/hostile.json +1783 -0
  15. package/bundles/antigravity-plugin/skills/flow-studio/examples/lineage.json +1778 -0
  16. package/bundles/antigravity-plugin/skills/flow-studio/model.schema.json +123 -0
  17. package/bundles/antigravity-plugin/skills/flow-studio/package.json +11 -0
  18. package/bundles/antigravity-plugin/skills/flow-studio/references/patterns.md +79 -0
  19. package/bundles/antigravity-plugin/skills/flow-studio/scripts/build-engine.mjs +55 -0
  20. package/bundles/antigravity-plugin/skills/flow-studio/scripts/build.mjs +37 -0
  21. package/bundles/antigravity-plugin/skills/flow-studio/scripts/check.mjs +388 -0
  22. package/bundles/antigravity-plugin/skills/flow-studio/scripts/lib/build-engine.test.mjs +26 -0
  23. package/bundles/antigravity-plugin/skills/flow-studio/scripts/lib/check-selftest.test.mjs +75 -0
  24. package/bundles/antigravity-plugin/skills/flow-studio/scripts/lib/cli.test.mjs +64 -0
  25. package/bundles/antigravity-plugin/skills/flow-studio/scripts/lib/embed.mjs +24 -0
  26. package/bundles/antigravity-plugin/skills/flow-studio/scripts/lib/embed.test.mjs +29 -0
  27. package/bundles/antigravity-plugin/skills/flow-studio/scripts/validate.mjs +38 -0
  28. package/bundles/antigravity-plugin/skills/flow-studio/src/chrome.ts +171 -0
  29. package/bundles/antigravity-plugin/skills/flow-studio/src/controls.ts +231 -0
  30. package/bundles/antigravity-plugin/skills/flow-studio/src/ctx.ts +118 -0
  31. package/bundles/antigravity-plugin/skills/flow-studio/src/engine.ts +142 -0
  32. package/bundles/antigravity-plugin/skills/flow-studio/src/inspector.ts +108 -0
  33. package/bundles/antigravity-plugin/skills/flow-studio/src/interact.ts +240 -0
  34. package/bundles/antigravity-plugin/skills/flow-studio/src/layout.test.ts +69 -0
  35. package/bundles/antigravity-plugin/skills/flow-studio/src/layout.ts +57 -0
  36. package/bundles/antigravity-plugin/skills/flow-studio/src/model.test.ts +107 -0
  37. package/bundles/antigravity-plugin/skills/flow-studio/src/model.ts +165 -0
  38. package/bundles/antigravity-plugin/skills/flow-studio/src/notes.ts +92 -0
  39. package/bundles/antigravity-plugin/skills/flow-studio/src/render.ts +155 -0
  40. package/bundles/antigravity-plugin/skills/flow-studio/src/routing.test.ts +13 -0
  41. package/bundles/antigravity-plugin/skills/flow-studio/src/routing.ts +11 -0
  42. package/bundles/antigravity-plugin/skills/flow-studio/src/rules.test.ts +88 -0
  43. package/bundles/antigravity-plugin/skills/flow-studio/src/rules.ts +35 -0
  44. package/bundles/antigravity-plugin/skills/flow-studio/src/stateCss.test.ts +66 -0
  45. package/bundles/antigravity-plugin/skills/flow-studio/src/stateCss.ts +44 -0
  46. package/bundles/antigravity-plugin/skills/flow-studio/src/styles.css +157 -0
  47. package/bundles/antigravity-plugin/skills/flow-studio/src/trace.test.ts +20 -0
  48. package/bundles/antigravity-plugin/skills/flow-studio/src/trace.ts +22 -0
  49. package/bundles/antigravity-plugin/skills/flow-studio/src/viewport.test.ts +55 -0
  50. package/bundles/antigravity-plugin/skills/flow-studio/src/viewport.ts +45 -0
  51. package/bundles/antigravity-plugin/skills/flow-studio/templates/engine.html +1744 -0
  52. package/bundles/antigravity-plugin/skills/flow-studio/templates/engine.shell.html +61 -0
  53. package/bundles/antigravity-plugin/skills/flow-studio/tsconfig.json +17 -0
  54. package/bundles/antigravity-plugin/skills/implement/SKILL.md +8 -0
  55. package/bundles/antigravity-plugin/skills/particle-art/SKILL.md +6 -1
  56. package/bundles/antigravity-plugin/skills/port-to-github/SKILL.md +6 -1
  57. package/bundles/antigravity-plugin/skills/tech-explainer/SKILL.md +5 -6
  58. package/bundles/antigravity-plugin-extras/plugin.json +1 -1
  59. package/bundles/antigravity-plugin-extras/skills/_registry.md +2 -0
  60. package/bundles/antigravity-plugin-extras/skills/adopt-rbac/SKILL.md +26 -0
  61. package/bundles/antigravity-plugin-extras/skills/case-management/SKILL.md +24 -0
  62. package/bundles/codex/.codex/skills/devops/adopt-app/SKILL.md +6 -1
  63. package/bundles/codex/.codex/skills/devops/port-to-github/SKILL.md +6 -1
  64. package/bundles/codex/.codex/skills/docs/tech-explainer/SKILL.md +5 -6
  65. package/bundles/codex/.codex/skills/frontend/flow-studio/README.md +53 -0
  66. package/bundles/codex/.codex/skills/frontend/flow-studio/SKILL.md +103 -0
  67. package/bundles/codex/.codex/skills/frontend/flow-studio/examples/README.md +11 -0
  68. package/bundles/codex/.codex/skills/frontend/flow-studio/examples/hostile.json +1783 -0
  69. package/bundles/codex/.codex/skills/frontend/flow-studio/examples/lineage.json +1778 -0
  70. package/bundles/codex/.codex/skills/frontend/flow-studio/model.schema.json +123 -0
  71. package/bundles/codex/.codex/skills/frontend/flow-studio/package.json +11 -0
  72. package/bundles/codex/.codex/skills/frontend/flow-studio/references/patterns.md +79 -0
  73. package/bundles/codex/.codex/skills/frontend/flow-studio/scripts/build-engine.mjs +55 -0
  74. package/bundles/codex/.codex/skills/frontend/flow-studio/scripts/build.mjs +37 -0
  75. package/bundles/codex/.codex/skills/frontend/flow-studio/scripts/check.mjs +388 -0
  76. package/bundles/codex/.codex/skills/frontend/flow-studio/scripts/lib/build-engine.test.mjs +26 -0
  77. package/bundles/codex/.codex/skills/frontend/flow-studio/scripts/lib/check-selftest.test.mjs +75 -0
  78. package/bundles/codex/.codex/skills/frontend/flow-studio/scripts/lib/cli.test.mjs +64 -0
  79. package/bundles/codex/.codex/skills/frontend/flow-studio/scripts/lib/embed.mjs +24 -0
  80. package/bundles/codex/.codex/skills/frontend/flow-studio/scripts/lib/embed.test.mjs +29 -0
  81. package/bundles/codex/.codex/skills/frontend/flow-studio/scripts/validate.mjs +38 -0
  82. package/bundles/codex/.codex/skills/frontend/flow-studio/src/chrome.ts +171 -0
  83. package/bundles/codex/.codex/skills/frontend/flow-studio/src/controls.ts +231 -0
  84. package/bundles/codex/.codex/skills/frontend/flow-studio/src/ctx.ts +118 -0
  85. package/bundles/codex/.codex/skills/frontend/flow-studio/src/engine.ts +142 -0
  86. package/bundles/codex/.codex/skills/frontend/flow-studio/src/inspector.ts +108 -0
  87. package/bundles/codex/.codex/skills/frontend/flow-studio/src/interact.ts +240 -0
  88. package/bundles/codex/.codex/skills/frontend/flow-studio/src/layout.test.ts +69 -0
  89. package/bundles/codex/.codex/skills/frontend/flow-studio/src/layout.ts +57 -0
  90. package/bundles/codex/.codex/skills/frontend/flow-studio/src/model.test.ts +107 -0
  91. package/bundles/codex/.codex/skills/frontend/flow-studio/src/model.ts +165 -0
  92. package/bundles/codex/.codex/skills/frontend/flow-studio/src/notes.ts +92 -0
  93. package/bundles/codex/.codex/skills/frontend/flow-studio/src/render.ts +155 -0
  94. package/bundles/codex/.codex/skills/frontend/flow-studio/src/routing.test.ts +13 -0
  95. package/bundles/codex/.codex/skills/frontend/flow-studio/src/routing.ts +11 -0
  96. package/bundles/codex/.codex/skills/frontend/flow-studio/src/rules.test.ts +88 -0
  97. package/bundles/codex/.codex/skills/frontend/flow-studio/src/rules.ts +35 -0
  98. package/bundles/codex/.codex/skills/frontend/flow-studio/src/stateCss.test.ts +66 -0
  99. package/bundles/codex/.codex/skills/frontend/flow-studio/src/stateCss.ts +44 -0
  100. package/bundles/codex/.codex/skills/frontend/flow-studio/src/styles.css +157 -0
  101. package/bundles/codex/.codex/skills/frontend/flow-studio/src/trace.test.ts +20 -0
  102. package/bundles/codex/.codex/skills/frontend/flow-studio/src/trace.ts +22 -0
  103. package/bundles/codex/.codex/skills/frontend/flow-studio/src/viewport.test.ts +55 -0
  104. package/bundles/codex/.codex/skills/frontend/flow-studio/src/viewport.ts +45 -0
  105. package/bundles/codex/.codex/skills/frontend/flow-studio/templates/engine.html +1744 -0
  106. package/bundles/codex/.codex/skills/frontend/flow-studio/templates/engine.shell.html +61 -0
  107. package/bundles/codex/.codex/skills/frontend/flow-studio/tsconfig.json +17 -0
  108. package/bundles/codex/.codex/skills/media/particle-art/SKILL.md +6 -1
  109. package/bundles/codex/.codex/skills/workflow/advisory-hub/SKILL.md +7 -1
  110. package/bundles/manifest.json +3 -3
  111. package/package.json +1 -1
@@ -0,0 +1,1778 @@
1
+ {
2
+ "version": 1,
3
+ "meta": {
4
+ "title": "DATA LINEAGE: WHAT FEEDS WHAT",
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.",
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.",
8
+ "labels": {
9
+ "tileGood": "measured links between groups",
10
+ "tileNeutral": "declared links between groups",
11
+ "tileGap": "not recorded: click to show",
12
+ "tileUpgrade": "measurable now: click to show",
13
+ "ledgerTitle": "What this read could not establish"
14
+ }
15
+ },
16
+ "layout": "columns-lanes",
17
+ "columns": [
18
+ {
19
+ "id": "source",
20
+ "title": "Source systems",
21
+ "short": "SOURCE",
22
+ "width": 150,
23
+ "phase": "ORIGIN"
24
+ },
25
+ {
26
+ "id": "host",
27
+ "title": "DB hosts",
28
+ "short": "HOST",
29
+ "width": 130,
30
+ "phase": "ORIGIN"
31
+ },
32
+ {
33
+ "id": "db",
34
+ "title": "Databases",
35
+ "short": "DATABASE",
36
+ "width": 150,
37
+ "phase": "ORIGIN"
38
+ },
39
+ {
40
+ "id": "jobs",
41
+ "title": "Jobs and programs",
42
+ "short": "JOBS",
43
+ "width": 215,
44
+ "phase": "LOAD"
45
+ },
46
+ {
47
+ "id": "tables",
48
+ "title": "Tables",
49
+ "short": "TABLES",
50
+ "width": 205,
51
+ "phase": "LOAD"
52
+ },
53
+ {
54
+ "id": "refresh",
55
+ "title": "App refreshers",
56
+ "short": "REFRESHERS",
57
+ "width": 185,
58
+ "phase": "BUILD"
59
+ },
60
+ {
61
+ "id": "report",
62
+ "title": "Reporting tables",
63
+ "short": "REPORT TABLES",
64
+ "width": 195,
65
+ "phase": "BUILD"
66
+ },
67
+ {
68
+ "id": "apps",
69
+ "title": "Apps",
70
+ "short": "APPS",
71
+ "width": 160,
72
+ "phase": "SERVE"
73
+ },
74
+ {
75
+ "id": "pages",
76
+ "title": "Pages",
77
+ "short": "PAGES",
78
+ "width": 160,
79
+ "phase": "SERVE"
80
+ }
81
+ ],
82
+ "lanes": [
83
+ {
84
+ "id": "store",
85
+ "title": "storefront",
86
+ "badge": "document 2026-09-30",
87
+ "badgeTone": "ok",
88
+ "note": "complete in the document · the order database itself is never read today"
89
+ },
90
+ {
91
+ "id": "batch",
92
+ "title": "Batch worker batch-02",
93
+ "badge": "infrastructure",
94
+ "badgeTone": "muted",
95
+ "note": "36 jobs and the analytics tables · no lineage source reads them"
96
+ },
97
+ {
98
+ "id": "bill",
99
+ "title": "billing",
100
+ "badge": "document 2026-09-12",
101
+ "badgeTone": "ok",
102
+ "note": "the document lists 5 to 6 reporting tables · the read measures 20"
103
+ },
104
+ {
105
+ "id": "search",
106
+ "title": "search-app",
107
+ "badge": "no lineage document",
108
+ "badgeTone": "warn",
109
+ "gap": true,
110
+ "note": "known: 27 reporting tables, the app · missing: refresher jobs, pages · reads warehouse tables (inferred from code)"
111
+ },
112
+ {
113
+ "id": "reco",
114
+ "title": "recommender",
115
+ "badge": "no lineage document",
116
+ "badgeTone": "warn",
117
+ "gap": true,
118
+ "note": "known: one reporting table · missing: loaders, source tables, refresher, pages"
119
+ },
120
+ {
121
+ "id": "desk",
122
+ "title": "support-desk",
123
+ "badge": "document 2026-09-12",
124
+ "badgeTone": "ok",
125
+ "note": "no refresher and no reporting tables: it reads its own tables directly"
126
+ },
127
+ {
128
+ "id": "more",
129
+ "title": "6 more apps",
130
+ "badge": "no lineage document",
131
+ "badgeTone": "warn",
132
+ "gap": true,
133
+ "note": "they report a health route only"
134
+ },
135
+ {
136
+ "id": "feed",
137
+ "title": "partner-feed",
138
+ "badge": "document 2026-09-18",
139
+ "badgeTone": "warn",
140
+ "note": "a file pipeline, not tables and pages: it needs a different model"
141
+ }
142
+ ],
143
+ "states": {
144
+ "measured": {
145
+ "word": "MEASURED",
146
+ "tone": "ok",
147
+ "border": "solid",
148
+ "edge": "flow",
149
+ "motion": "flow",
150
+ "bucket": "good"
151
+ },
152
+ "declared": {
153
+ "word": "DECLARED",
154
+ "tone": "muted",
155
+ "border": "dashed",
156
+ "edge": "dash",
157
+ "motion": "flow-slow",
158
+ "bucket": "neutral"
159
+ },
160
+ "inferred": {
161
+ "word": "INFERRED",
162
+ "tone": "muted",
163
+ "border": "dashed",
164
+ "edge": "dash-short",
165
+ "motion": "flow-slow",
166
+ "bucket": "neutral"
167
+ },
168
+ "unrecorded": {
169
+ "word": "NOT RECORDED",
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",
186
+ "subtitle": "orders share, source system",
187
+ "members": [
188
+ "orders.fact_order",
189
+ "orders.dim_customer",
190
+ "orders.fact_return",
191
+ "ref.attributes",
192
+ "ref.topics"
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",
206
+ "subtitle": "ticket extracts, source system",
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",
219
+ "subtitle": "SQL host",
220
+ "members": [
221
+ "STOREDB",
222
+ "WAREHOUSE"
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",
233
+ "subtitle": "GPU host",
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",
246
+ "subtitle": "SQL host, not read today",
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",
259
+ "subtitle": "database, never read today",
260
+ "upgrade": "probe it: the monitor already reads it for another check",
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",
273
+ "subtitle": "on legacy-host",
274
+ "weight": 5,
275
+ "members": [
276
+ "CRM",
277
+ "BILLING_OLD",
278
+ "CUSTOMER",
279
+ "TICKETS",
280
+ "ARCHIVE"
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",
294
+ "subtitle": "on batch-02, no table link today",
295
+ "weight": 4,
296
+ "members": [
297
+ "Orders core load (10:00)",
298
+ "Topic job (script)",
299
+ "Voice pipeline (job not known)",
300
+ "Chat pipeline (job not known)"
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",
314
+ "subtitle": "07:15 · loaders 06:45 and 08:15",
315
+ "weight": 4,
316
+ "members": [
317
+ "Customer view daily load (07:15)",
318
+ "Tickets loader (06:45)",
319
+ "Cases loader (08:15)",
320
+ "Interactions loader (job not in repo)"
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",
334
+ "subtitle": "on the GPU host",
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",
347
+ "subtitle": "loader unverified in the document",
348
+ "weight": 3,
349
+ "members": [
350
+ "Legacy CRM side (loader unverified)",
351
+ "Billing side (loader unverified)",
352
+ "Contract data owner (loader unverified)"
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",
366
+ "subtitle": "6 tables",
367
+ "weight": 6,
368
+ "members": [
369
+ "dbo.Orders",
370
+ "dbo.OrderLines",
371
+ "dbo.Returns",
372
+ "dbo.OrderTopics",
373
+ "dbo.Samples",
374
+ "dbo.LoadState"
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",
388
+ "subtitle": "5 tables incl. loaders",
389
+ "weight": 5,
390
+ "members": [
391
+ "dbo.CustomerEvent",
392
+ "dbo.LoaderTickets",
393
+ "dbo.LoaderCases",
394
+ "dbo.LoaderInteractions",
395
+ "dbo.LoaderForms"
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",
409
+ "subtitle": "2 objects",
410
+ "weight": 2,
411
+ "members": [
412
+ "dbo.CustomerSummary",
413
+ "dbo.vw_CurrentSummary"
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",
427
+ "subtitle": "3 objects",
428
+ "weight": 3,
429
+ "members": [
430
+ "CUSTOMERS (view)",
431
+ "dbo.mobile_customers",
432
+ "dbo.contracts"
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",
446
+ "subtitle": "18 app producers",
447
+ "weight": 18,
448
+ "members": [
449
+ "refresh_job_01",
450
+ "refresh_job_02",
451
+ "refresh_job_03",
452
+ "refresh_job_04",
453
+ "refresh_job_05",
454
+ "refresh_job_06",
455
+ "refresh_job_07",
456
+ "refresh_job_08",
457
+ "refresh_job_09",
458
+ "refresh_job_10",
459
+ "refresh_job_11",
460
+ "refresh_job_12",
461
+ "refresh_job_13",
462
+ "refresh_job_14"
463
+ ],
464
+ "upgrade": "read the app's refresh_state once the database is probed",
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",
477
+ "subtitle": "8 tables the app reads",
478
+ "weight": 8,
479
+ "members": [
480
+ "dashboard_cache",
481
+ "identity_map",
482
+ "source_coverage",
483
+ "topic_coverage",
484
+ "explorer",
485
+ "explorer_topic",
486
+ "duration_dist",
487
+ "refresh_state"
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",
501
+ "subtitle": "app, health route measured",
502
+ "members": [
503
+ "/health"
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",
514
+ "subtitle": "12 pages · 183 elements",
515
+ "weight": 12,
516
+ "members": [
517
+ "Customer view and search",
518
+ "Health",
519
+ "Analytics",
520
+ "Overview",
521
+ "Explorer",
522
+ "Queues",
523
+ "Self-service",
524
+ "Shell",
525
+ "App analytics",
526
+ "Data quality",
527
+ "Settings"
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",
541
+ "subtitle": "batch worker",
542
+ "members": [
543
+ "ANALYTICS",
544
+ "36 scheduled jobs"
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",
555
+ "subtitle": "database"
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",
565
+ "subtitle": "35 read, 1 never read",
566
+ "weight": 36,
567
+ "members": [
568
+ "NIGHTLY_ETL_STG_TO_LIVE_01",
569
+ "NIGHTLY_ETL_STG_TO_LIVE_02",
570
+ "NIGHTLY_ETL_STG_TO_LIVE_03",
571
+ "NIGHTLY_ETL_STG_TO_LIVE_04",
572
+ "NIGHTLY_ETL_STG_TO_LIVE_05",
573
+ "NIGHTLY_ETL_STG_TO_LIVE_06",
574
+ "NIGHTLY_ETL_STG_TO_LIVE_07",
575
+ "NIGHTLY_ETL_STG_TO_LIVE_08",
576
+ "NIGHTLY_ETL_STG_TO_LIVE_09",
577
+ "NIGHTLY_ETL_STG_TO_LIVE_10",
578
+ "NIGHTLY_ETL_STG_TO_LIVE_11",
579
+ "NIGHTLY_ETL_STG_TO_LIVE_12",
580
+ "NIGHTLY_ETL_STG_TO_LIVE_13",
581
+ "NIGHTLY_ETL_STG_TO_LIVE_14",
582
+ "NIGHTLY_ETL_STG_TO_LIVE_15",
583
+ "NIGHTLY_ETL_STG_TO_LIVE_16",
584
+ "NIGHTLY_ETL_STG_TO_LIVE_17",
585
+ "NIGHTLY_ETL_STG_TO_LIVE_18",
586
+ "NIGHTLY_ETL_STG_TO_LIVE_19",
587
+ "NIGHTLY_ETL_STG_TO_LIVE_20"
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",
598
+ "subtitle": "23 tables, no writer recorded",
599
+ "weight": 23,
600
+ "members": [
601
+ "dbo.table_01",
602
+ "dbo.table_02",
603
+ "dbo.table_03",
604
+ "dbo.table_04",
605
+ "dbo.table_05",
606
+ "dbo.table_06",
607
+ "dbo.table_07",
608
+ "dbo.table_08",
609
+ "dbo.table_09",
610
+ "dbo.table_10",
611
+ "dbo.table_11",
612
+ "dbo.table_12",
613
+ "dbo.table_13",
614
+ "dbo.table_14",
615
+ "dbo.table_15",
616
+ "dbo.table_16",
617
+ "dbo.table_17",
618
+ "dbo.table_18"
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",
629
+ "subtitle": "via linked server",
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",
642
+ "subtitle": "partner file drops",
643
+ "weight": 3,
644
+ "members": [
645
+ "Partner A SFTP",
646
+ "Partner B SFTP",
647
+ "Partner C SFTP"
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",
661
+ "subtitle": "shown in the storefront lane",
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",
675
+ "subtitle": "database"
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",
685
+ "subtitle": "Python, scheduler, RPA",
686
+ "weight": 11,
687
+ "members": [
688
+ "etl_erp_to_warehouse.py",
689
+ "daily_validation.py",
690
+ "orchestrator.ps1",
691
+ "tap_load.ps1"
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",
705
+ "subtitle": "45 read, 2 never read",
706
+ "weight": 47,
707
+ "members": [
708
+ "DAILY_LOAD_01",
709
+ "DAILY_LOAD_02",
710
+ "DAILY_LOAD_03",
711
+ "DAILY_LOAD_04",
712
+ "DAILY_LOAD_05",
713
+ "DAILY_LOAD_06",
714
+ "DAILY_LOAD_07",
715
+ "DAILY_LOAD_08",
716
+ "DAILY_LOAD_09",
717
+ "DAILY_LOAD_10",
718
+ "DAILY_LOAD_11",
719
+ "DAILY_LOAD_12",
720
+ "DAILY_LOAD_13",
721
+ "DAILY_LOAD_14",
722
+ "DAILY_LOAD_15",
723
+ "DAILY_LOAD_16",
724
+ "DAILY_LOAD_17",
725
+ "DAILY_LOAD_18",
726
+ "DAILY_LOAD_19",
727
+ "DAILY_LOAD_20",
728
+ "DAILY_LOAD_21",
729
+ "DAILY_LOAD_22",
730
+ "DAILY_LOAD_23",
731
+ "DAILY_LOAD_24",
732
+ "DAILY_LOAD_25",
733
+ "DAILY_LOAD_26",
734
+ "DAILY_LOAD_27",
735
+ "DAILY_LOAD_28",
736
+ "DAILY_LOAD_29",
737
+ "DAILY_LOAD_30"
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",
748
+ "subtitle": "138 tables",
749
+ "weight": 138,
750
+ "members": [
751
+ "dbo.fact_01",
752
+ "dbo.fact_02",
753
+ "dbo.fact_03",
754
+ "dbo.fact_04",
755
+ "dbo.fact_05",
756
+ "dbo.fact_06",
757
+ "dbo.fact_07",
758
+ "dbo.fact_08",
759
+ "dbo.fact_09",
760
+ "dbo.fact_10",
761
+ "dbo.fact_11",
762
+ "dbo.fact_12",
763
+ "dbo.fact_13",
764
+ "dbo.fact_14",
765
+ "dbo.fact_15",
766
+ "dbo.fact_16",
767
+ "dbo.fact_17",
768
+ "dbo.fact_18",
769
+ "dbo.fact_19",
770
+ "dbo.fact_20",
771
+ "dbo.fact_21",
772
+ "dbo.fact_22",
773
+ "dbo.fact_23",
774
+ "dbo.fact_24",
775
+ "dbo.fact_25",
776
+ "dbo.fact_26",
777
+ "dbo.fact_27",
778
+ "dbo.fact_28",
779
+ "dbo.fact_29",
780
+ "dbo.fact_30"
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",
791
+ "subtitle": "11 jobs, 300 s loop",
792
+ "weight": 11,
793
+ "members": [
794
+ "case_recurrence",
795
+ "cdr_count",
796
+ "file_delivery",
797
+ "file_recon",
798
+ "filter_values",
799
+ "monthly_cycle",
800
+ "roaming_daily",
801
+ "roaming_subscribers",
802
+ "sms_fraud",
803
+ "source_coverage",
804
+ "trends_daily"
805
+ ],
806
+ "upgrade": "read the app's refresh_state: the monitor can already read it",
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",
819
+ "subtitle": "20 tables",
820
+ "weight": 20,
821
+ "members": [
822
+ "rs_billing.table_01",
823
+ "rs_billing.table_02",
824
+ "rs_billing.table_03",
825
+ "rs_billing.table_04",
826
+ "rs_billing.table_05",
827
+ "rs_billing.table_06",
828
+ "rs_billing.table_07",
829
+ "rs_billing.table_08",
830
+ "rs_billing.table_09",
831
+ "rs_billing.table_10",
832
+ "rs_billing.table_11",
833
+ "rs_billing.table_12",
834
+ "rs_billing.table_13",
835
+ "rs_billing.table_14",
836
+ "rs_billing.table_15",
837
+ "rs_billing.table_16",
838
+ "rs_billing.table_17",
839
+ "rs_billing.table_18",
840
+ "rs_billing.table_19",
841
+ "rs_billing.table_20"
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",
852
+ "subtitle": "app, health route measured",
853
+ "members": [
854
+ "/health"
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",
865
+ "subtitle": "12 pages · 17 elements",
866
+ "weight": 12,
867
+ "members": [
868
+ "/",
869
+ "/runs",
870
+ "/control-totals",
871
+ "/pipelines",
872
+ "/exceptions",
873
+ "/roaming",
874
+ "/billing-cycles",
875
+ "/fraud",
876
+ "/subscribers",
877
+ "/trends"
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",
891
+ "subtitle": "shown in the billing lane",
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",
905
+ "subtitle": "6 jobs, not recorded",
906
+ "weight": 6,
907
+ "upgrade": "read the app's refresh_state",
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",
920
+ "subtitle": "27 tables",
921
+ "weight": 27,
922
+ "members": [
923
+ "rs_search.table_01",
924
+ "rs_search.table_02",
925
+ "rs_search.table_03",
926
+ "rs_search.table_04",
927
+ "rs_search.table_05",
928
+ "rs_search.table_06",
929
+ "rs_search.table_07",
930
+ "rs_search.table_08",
931
+ "rs_search.table_09",
932
+ "rs_search.table_10",
933
+ "rs_search.table_11",
934
+ "rs_search.table_12",
935
+ "rs_search.table_13",
936
+ "rs_search.table_14",
937
+ "rs_search.table_15",
938
+ "rs_search.table_16",
939
+ "rs_search.table_17",
940
+ "rs_search.table_18",
941
+ "rs_search.table_19",
942
+ "rs_search.table_20",
943
+ "rs_search.table_21",
944
+ "rs_search.table_22",
945
+ "rs_search.table_23",
946
+ "rs_search.table_24",
947
+ "rs_search.table_25",
948
+ "rs_search.table_26",
949
+ "rs_search.table_27"
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",
960
+ "subtitle": "app, health route measured",
961
+ "members": [
962
+ "/health"
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",
973
+ "subtitle": "no lineage document yet",
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",
986
+ "subtitle": "shown in the storefront lane",
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",
1000
+ "subtitle": "No lineage document. Close it with a document, the loader's name, or the app's refresh_state.",
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",
1015
+ "subtitle": "source_coverage read; the rest not read",
1016
+ "members": [
1017
+ "rs_reco.source_coverage"
1018
+ ],
1019
+ "upgrade": "probe the database to list the rest",
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",
1032
+ "subtitle": "app, health route measured",
1033
+ "members": [
1034
+ "/health"
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",
1045
+ "subtitle": "no lineage document yet",
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",
1058
+ "subtitle": "SQL host, not read today",
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",
1071
+ "subtitle": "database, never read today",
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",
1084
+ "subtitle": "12 steps",
1085
+ "weight": 12,
1086
+ "members": [
1087
+ "Extract pending appointments (agent job)",
1088
+ "daily pipeline script",
1089
+ "diagnostics processor",
1090
+ "summary generator",
1091
+ "recommendations saver",
1092
+ "weekly report",
1093
+ "lock reaper (300 s)",
1094
+ "analytics rollup (600 s)"
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",
1108
+ "subtitle": "9 objects",
1109
+ "weight": 9,
1110
+ "members": [
1111
+ "dbo.Pending_Calls",
1112
+ "dbo.Case_Assignment",
1113
+ "dbo.Case_Diagnostics",
1114
+ "dbo.Case_Feedback",
1115
+ "dbo.Case_Recommendation",
1116
+ "dbo.vw_CaseDetail",
1117
+ "LEGACY.CASES",
1118
+ "LEGACY.INTERACTIONS",
1119
+ "LEGACY.OUTAGES"
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",
1133
+ "subtitle": "The app reads its own tables directly (no rs_ schema).",
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",
1147
+ "subtitle": "app, health route measured",
1148
+ "members": [
1149
+ "/api/health"
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",
1160
+ "subtitle": "10 pages · 15 elements",
1161
+ "weight": 10,
1162
+ "members": [
1163
+ "/",
1164
+ "/queue",
1165
+ "/cases/$caseId",
1166
+ "/ai-impact",
1167
+ "/map",
1168
+ "/reports",
1169
+ "/app-analytics",
1170
+ "/settings"
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",
1184
+ "subtitle": "No lineage document for these apps yet. They report a health route only, so nothing about their data is recorded.",
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",
1198
+ "subtitle": "health routes measured",
1199
+ "weight": 6,
1200
+ "members": [
1201
+ "finance /health",
1202
+ "nps /health",
1203
+ "uni /health",
1204
+ "kiosk /health",
1205
+ "board /api/health",
1206
+ "monitor /health"
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",
1217
+ "subtitle": "no lineage document yet",
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)",
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.",
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",
1244
+ "subtitle": "app, not recorded as tables",
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"
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"
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"
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",
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",
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",
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"
1709
+ },
1710
+ {
1711
+ "id": "complete",
1712
+ "label": "Complete",
1713
+ "default": true
1714
+ }
1715
+ ],
1716
+ "inspector": {
1717
+ "relations": [
1718
+ {
1719
+ "id": "up",
1720
+ "label": "Feeds this",
1721
+ "dir": "up"
1722
+ },
1723
+ {
1724
+ "id": "down",
1725
+ "label": "Downstream",
1726
+ "dir": "down"
1727
+ },
1728
+ {
1729
+ "id": "pages",
1730
+ "label": "Pages",
1731
+ "dir": "down",
1732
+ "filter": {
1733
+ "col": 8
1734
+ }
1735
+ }
1736
+ ],
1737
+ "actions": [
1738
+ {
1739
+ "id": "stale",
1740
+ "label": "Simulate: this stops updating",
1741
+ "dir": "down",
1742
+ "staleText": "potentially stale"
1743
+ }
1744
+ ]
1745
+ },
1746
+ "notes": [
1747
+ {
1748
+ "anchor": "#layerstrip",
1749
+ "title": "Completeness strip",
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."
1751
+ },
1752
+ {
1753
+ "anchor": "#kpis",
1754
+ "title": "Summary tiles",
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)."
1756
+ },
1757
+ {
1758
+ "anchor": "#modeSwitch",
1759
+ "title": "View switch",
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."
1761
+ },
1762
+ {
1763
+ "anchor": "#viewport",
1764
+ "title": "Canvas",
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."
1766
+ },
1767
+ {
1768
+ "anchor": "#tools",
1769
+ "title": "Canvas controls",
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."
1771
+ },
1772
+ {
1773
+ "anchor": "#inspector",
1774
+ "title": "Inspector",
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."
1776
+ }
1777
+ ]
1778
+ }