@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.
- package/bundles/antigravity-plugin/plugin.json +1 -1
- package/bundles/antigravity-plugin/scripts/claude-oss.ps1 +15 -3
- package/bundles/antigravity-plugin/scripts/claude-oss.sh +12 -1
- package/bundles/antigravity-plugin/skills/_registry.md +1 -0
- package/bundles/antigravity-plugin/skills/flow-studio/README.md +92 -0
- package/bundles/antigravity-plugin/skills/flow-studio/SKILL.md +102 -0
- package/bundles/antigravity-plugin/skills/flow-studio/examples/README.md +19 -0
- package/bundles/antigravity-plugin/skills/flow-studio/examples/agent-journey.json +103 -0
- package/bundles/antigravity-plugin/skills/flow-studio/examples/approval-flow.json +134 -0
- package/bundles/antigravity-plugin/skills/flow-studio/examples/ci-cd-pipeline.json +132 -0
- package/bundles/antigravity-plugin/skills/flow-studio/examples/hostile.json +1783 -0
- package/bundles/antigravity-plugin/skills/flow-studio/examples/incident-timeline.json +109 -0
- package/bundles/antigravity-plugin/skills/flow-studio/examples/lineage.json +1778 -0
- package/bundles/antigravity-plugin/skills/flow-studio/examples/order-desk.json +99 -0
- package/bundles/antigravity-plugin/skills/flow-studio/examples/service-map.json +133 -0
- package/bundles/antigravity-plugin/skills/flow-studio/examples/state-machine.json +106 -0
- package/bundles/antigravity-plugin/skills/flow-studio/examples/ticket-lifecycle.json +107 -0
- package/bundles/antigravity-plugin/skills/flow-studio/model.schema.json +142 -0
- package/bundles/antigravity-plugin/skills/flow-studio/package.json +11 -0
- package/bundles/antigravity-plugin/skills/flow-studio/react/FlowStudioView.test.tsx +82 -0
- package/bundles/antigravity-plugin/skills/flow-studio/react/FlowStudioView.tsx +67 -0
- package/bundles/antigravity-plugin/skills/flow-studio/react/README.md +37 -0
- package/bundles/antigravity-plugin/skills/flow-studio/react/index.ts +3 -0
- package/bundles/antigravity-plugin/skills/flow-studio/react/native/FlowCanvas.tsx +58 -0
- package/bundles/antigravity-plugin/skills/flow-studio/react/native/Inspector.tsx +27 -0
- package/bundles/antigravity-plugin/skills/flow-studio/react/native/index.ts +6 -0
- package/bundles/antigravity-plugin/skills/flow-studio/react/native/native.css +18 -0
- package/bundles/antigravity-plugin/skills/flow-studio/react/native/native.test.tsx +161 -0
- package/bundles/antigravity-plugin/skills/flow-studio/react/native/useFlowGeometry.ts +22 -0
- package/bundles/antigravity-plugin/skills/flow-studio/react/native/useTrace.ts +29 -0
- package/bundles/antigravity-plugin/skills/flow-studio/react/native/useViewport.ts +75 -0
- package/bundles/antigravity-plugin/skills/flow-studio/react/states.tsx +13 -0
- package/bundles/antigravity-plugin/skills/flow-studio/references/design-language.md +169 -0
- package/bundles/antigravity-plugin/skills/flow-studio/references/implement-in-app.md +213 -0
- package/bundles/antigravity-plugin/skills/flow-studio/references/model-schema.md +254 -0
- package/bundles/antigravity-plugin/skills/flow-studio/references/notes-and-spec.md +74 -0
- package/bundles/antigravity-plugin/skills/flow-studio/references/patterns.md +415 -0
- package/bundles/antigravity-plugin/skills/flow-studio/references/ux-rules.md +91 -0
- package/bundles/antigravity-plugin/skills/flow-studio/references/verify.md +124 -0
- package/bundles/antigravity-plugin/skills/flow-studio/scripts/build-engine.mjs +95 -0
- package/bundles/antigravity-plugin/skills/flow-studio/scripts/build.mjs +54 -0
- package/bundles/antigravity-plugin/skills/flow-studio/scripts/check.mjs +680 -0
- package/bundles/antigravity-plugin/skills/flow-studio/scripts/default-notes.json +67 -0
- package/bundles/antigravity-plugin/skills/flow-studio/scripts/lib/auto-entry-guard.mjs +5 -0
- package/bundles/antigravity-plugin/skills/flow-studio/scripts/lib/auto-entry-guard.test.mjs +14 -0
- package/bundles/antigravity-plugin/skills/flow-studio/scripts/lib/auto-entry.test.mjs +31 -0
- package/bundles/antigravity-plugin/skills/flow-studio/scripts/lib/build-engine.test.mjs +54 -0
- package/bundles/antigravity-plugin/skills/flow-studio/scripts/lib/check-args.mjs +18 -0
- package/bundles/antigravity-plugin/skills/flow-studio/scripts/lib/check-args.test.mjs +15 -0
- package/bundles/antigravity-plugin/skills/flow-studio/scripts/lib/check-selftest.test.mjs +135 -0
- package/bundles/antigravity-plugin/skills/flow-studio/scripts/lib/cli.test.mjs +179 -0
- package/bundles/antigravity-plugin/skills/flow-studio/scripts/lib/demo-pack.mjs +23 -0
- package/bundles/antigravity-plugin/skills/flow-studio/scripts/lib/demo-pack.test.mjs +34 -0
- package/bundles/antigravity-plugin/skills/flow-studio/scripts/lib/docs.test.mjs +128 -0
- package/bundles/antigravity-plugin/skills/flow-studio/scripts/lib/embed.mjs +24 -0
- package/bundles/antigravity-plugin/skills/flow-studio/scripts/lib/embed.test.mjs +29 -0
- package/bundles/antigravity-plugin/skills/flow-studio/scripts/lib/library.test.mjs +26 -0
- package/bundles/antigravity-plugin/skills/flow-studio/scripts/lib/react-proof-cleanup.mjs +12 -0
- package/bundles/antigravity-plugin/skills/flow-studio/scripts/lib/react-proof-cleanup.test.mjs +45 -0
- package/bundles/antigravity-plugin/skills/flow-studio/scripts/lib/react-proof-page.mjs +3 -0
- package/bundles/antigravity-plugin/skills/flow-studio/scripts/lib/react-proof-page.test.mjs +9 -0
- package/bundles/antigravity-plugin/skills/flow-studio/scripts/react-proof.mjs +92 -0
- package/bundles/antigravity-plugin/skills/flow-studio/scripts/validate.mjs +42 -0
- package/bundles/antigravity-plugin/skills/flow-studio/src/autolayout.test.ts +78 -0
- package/bundles/antigravity-plugin/skills/flow-studio/src/autolayout.ts +132 -0
- package/bundles/antigravity-plugin/skills/flow-studio/src/chrome.ts +175 -0
- package/bundles/antigravity-plugin/skills/flow-studio/src/controls.ts +239 -0
- package/bundles/antigravity-plugin/skills/flow-studio/src/ctx.ts +134 -0
- package/bundles/antigravity-plugin/skills/flow-studio/src/diff.test.ts +31 -0
- package/bundles/antigravity-plugin/skills/flow-studio/src/diff.ts +34 -0
- package/bundles/antigravity-plugin/skills/flow-studio/src/engine.ts +193 -0
- package/bundles/antigravity-plugin/skills/flow-studio/src/inspector.ts +126 -0
- package/bundles/antigravity-plugin/skills/flow-studio/src/interact.ts +253 -0
- package/bundles/antigravity-plugin/skills/flow-studio/src/layout.test.ts +144 -0
- package/bundles/antigravity-plugin/skills/flow-studio/src/layout.ts +95 -0
- package/bundles/antigravity-plugin/skills/flow-studio/src/lib.ts +20 -0
- package/bundles/antigravity-plugin/skills/flow-studio/src/metrics.test.ts +57 -0
- package/bundles/antigravity-plugin/skills/flow-studio/src/metrics.ts +29 -0
- package/bundles/antigravity-plugin/skills/flow-studio/src/model.test.ts +167 -0
- package/bundles/antigravity-plugin/skills/flow-studio/src/model.ts +250 -0
- package/bundles/antigravity-plugin/skills/flow-studio/src/notes.ts +100 -0
- package/bundles/antigravity-plugin/skills/flow-studio/src/page.ts +21 -0
- package/bundles/antigravity-plugin/skills/flow-studio/src/playback.test.ts +104 -0
- package/bundles/antigravity-plugin/skills/flow-studio/src/playback.ts +106 -0
- package/bundles/antigravity-plugin/skills/flow-studio/src/playbackui.ts +193 -0
- package/bundles/antigravity-plugin/skills/flow-studio/src/render.ts +203 -0
- package/bundles/antigravity-plugin/skills/flow-studio/src/routing.test.ts +33 -0
- package/bundles/antigravity-plugin/skills/flow-studio/src/routing.ts +43 -0
- package/bundles/antigravity-plugin/skills/flow-studio/src/rules.test.ts +135 -0
- package/bundles/antigravity-plugin/skills/flow-studio/src/rules.ts +86 -0
- package/bundles/antigravity-plugin/skills/flow-studio/src/selection.test.ts +12 -0
- package/bundles/antigravity-plugin/skills/flow-studio/src/selection.ts +4 -0
- package/bundles/antigravity-plugin/skills/flow-studio/src/stateCss.test.ts +73 -0
- package/bundles/antigravity-plugin/skills/flow-studio/src/stateCss.ts +45 -0
- package/bundles/antigravity-plugin/skills/flow-studio/src/styles.css +190 -0
- package/bundles/antigravity-plugin/skills/flow-studio/src/trace.test.ts +40 -0
- package/bundles/antigravity-plugin/skills/flow-studio/src/trace.ts +40 -0
- package/bundles/antigravity-plugin/skills/flow-studio/src/viewport.test.ts +55 -0
- package/bundles/antigravity-plugin/skills/flow-studio/src/viewport.ts +45 -0
- package/bundles/antigravity-plugin/skills/flow-studio/templates/engine.html +2656 -0
- package/bundles/antigravity-plugin/skills/flow-studio/templates/engine.shell.html +23 -0
- package/bundles/antigravity-plugin/skills/flow-studio/templates/flow-studio.css +190 -0
- package/bundles/antigravity-plugin/skills/flow-studio/templates/flow-studio.lib.d.mts +1 -0
- package/bundles/antigravity-plugin/skills/flow-studio/templates/flow-studio.lib.mjs +2491 -0
- package/bundles/antigravity-plugin/skills/flow-studio/templates/shell-body.html +50 -0
- package/bundles/antigravity-plugin/skills/flow-studio/tsconfig.json +17 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/README.md +92 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/SKILL.md +102 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/examples/README.md +19 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/examples/agent-journey.json +103 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/examples/approval-flow.json +134 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/examples/ci-cd-pipeline.json +132 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/examples/hostile.json +1783 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/examples/incident-timeline.json +109 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/examples/lineage.json +1778 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/examples/order-desk.json +99 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/examples/service-map.json +133 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/examples/state-machine.json +106 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/examples/ticket-lifecycle.json +107 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/model.schema.json +142 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/package.json +11 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/react/FlowStudioView.test.tsx +82 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/react/FlowStudioView.tsx +67 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/react/README.md +37 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/react/index.ts +3 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/react/native/FlowCanvas.tsx +58 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/react/native/Inspector.tsx +27 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/react/native/index.ts +6 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/react/native/native.css +18 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/react/native/native.test.tsx +161 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/react/native/useFlowGeometry.ts +22 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/react/native/useTrace.ts +29 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/react/native/useViewport.ts +75 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/react/states.tsx +13 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/references/design-language.md +169 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/references/implement-in-app.md +213 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/references/model-schema.md +254 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/references/notes-and-spec.md +74 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/references/patterns.md +415 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/references/ux-rules.md +91 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/references/verify.md +124 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/scripts/build-engine.mjs +95 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/scripts/build.mjs +54 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/scripts/check.mjs +680 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/scripts/default-notes.json +67 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/scripts/lib/auto-entry-guard.mjs +5 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/scripts/lib/auto-entry-guard.test.mjs +14 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/scripts/lib/auto-entry.test.mjs +31 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/scripts/lib/build-engine.test.mjs +54 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/scripts/lib/check-args.mjs +18 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/scripts/lib/check-args.test.mjs +15 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/scripts/lib/check-selftest.test.mjs +135 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/scripts/lib/cli.test.mjs +179 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/scripts/lib/demo-pack.mjs +23 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/scripts/lib/demo-pack.test.mjs +34 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/scripts/lib/docs.test.mjs +128 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/scripts/lib/embed.mjs +24 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/scripts/lib/embed.test.mjs +29 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/scripts/lib/library.test.mjs +26 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/scripts/lib/react-proof-cleanup.mjs +12 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/scripts/lib/react-proof-cleanup.test.mjs +45 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/scripts/lib/react-proof-page.mjs +3 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/scripts/lib/react-proof-page.test.mjs +9 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/scripts/react-proof.mjs +92 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/scripts/validate.mjs +42 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/src/autolayout.test.ts +78 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/src/autolayout.ts +132 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/src/chrome.ts +175 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/src/controls.ts +239 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/src/ctx.ts +134 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/src/diff.test.ts +31 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/src/diff.ts +34 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/src/engine.ts +193 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/src/inspector.ts +126 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/src/interact.ts +253 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/src/layout.test.ts +144 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/src/layout.ts +95 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/src/lib.ts +20 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/src/metrics.test.ts +57 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/src/metrics.ts +29 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/src/model.test.ts +167 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/src/model.ts +250 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/src/notes.ts +100 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/src/page.ts +21 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/src/playback.test.ts +104 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/src/playback.ts +106 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/src/playbackui.ts +193 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/src/render.ts +203 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/src/routing.test.ts +33 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/src/routing.ts +43 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/src/rules.test.ts +135 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/src/rules.ts +86 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/src/selection.test.ts +12 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/src/selection.ts +4 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/src/stateCss.test.ts +73 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/src/stateCss.ts +45 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/src/styles.css +190 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/src/trace.test.ts +40 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/src/trace.ts +40 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/src/viewport.test.ts +55 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/src/viewport.ts +45 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/templates/engine.html +2656 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/templates/engine.shell.html +23 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/templates/flow-studio.css +190 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/templates/flow-studio.lib.d.mts +1 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/templates/flow-studio.lib.mjs +2491 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/templates/shell-body.html +50 -0
- package/bundles/codex/.codex/skills/frontend/flow-studio/tsconfig.json +17 -0
- package/bundles/manifest.json +2 -2
- package/package.json +1 -1
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 1,
|
|
3
|
+
"meta": {
|
|
4
|
+
"title": "ORDER DESK: FROM REQUEST TO CLOSE",
|
|
5
|
+
"help": "Follow a fictional order from intake to close. Open the fulfilment group to see its tasks. A request for more details returns to verification.",
|
|
6
|
+
"asOf": "2026-10-05",
|
|
7
|
+
"source": "Fictional Order desk example. No live orders or customer records are used."
|
|
8
|
+
},
|
|
9
|
+
"layout": "auto",
|
|
10
|
+
"columns": [
|
|
11
|
+
{ "id": "intake", "title": "Intake", "width": 150 },
|
|
12
|
+
{ "id": "verify", "title": "Verify", "width": 150 },
|
|
13
|
+
{ "id": "route", "title": "Route", "width": 150 },
|
|
14
|
+
{ "id": "prepare", "title": "Prepare", "width": 150 },
|
|
15
|
+
{ "id": "tasks", "title": "Tasks", "width": 150 },
|
|
16
|
+
{ "id": "fulfil", "title": "Fulfil", "width": 150 },
|
|
17
|
+
{ "id": "update", "title": "Update", "width": 150 },
|
|
18
|
+
{ "id": "close", "title": "Close", "width": 150 }
|
|
19
|
+
],
|
|
20
|
+
"lanes": [
|
|
21
|
+
{ "id": "desk", "title": "Order desk" },
|
|
22
|
+
{ "id": "checks", "title": "Checks" },
|
|
23
|
+
{ "id": "fulfilment", "title": "Fulfilment" }
|
|
24
|
+
],
|
|
25
|
+
"states": {
|
|
26
|
+
"ready": { "word": "READY", "tone": "ok", "border": "solid", "edge": "flow", "motion": "flow", "bucket": "good" },
|
|
27
|
+
"waiting": { "word": "WAITING", "tone": "warn", "border": "dashed", "edge": "dash", "motion": "flow-slow", "bucket": "neutral" },
|
|
28
|
+
"review": { "word": "REVIEW", "tone": "info", "border": "solid", "edge": "dash-short", "motion": "flow-slow", "bucket": "neutral" }
|
|
29
|
+
},
|
|
30
|
+
"nodes": [
|
|
31
|
+
{ "id": "intake", "kind": "start", "lane": "desk", "state": "ready", "title": "New request" },
|
|
32
|
+
{ "id": "verify", "kind": "card", "lane": "desk", "state": "review", "title": "Verify details" },
|
|
33
|
+
{ "id": "route", "kind": "gateway", "lane": "desk", "state": "review", "title": "Ready?" },
|
|
34
|
+
{ "id": "hold", "kind": "card", "lane": "desk", "state": "waiting", "title": "Ask for details", "sla": 60 },
|
|
35
|
+
{ "id": "quote", "kind": "card", "lane": "desk", "state": "ready", "title": "Confirm terms" },
|
|
36
|
+
{ "id": "stock", "kind": "card", "lane": "checks", "state": "review", "title": "Check stock", "metrics": { "label": "Items ready", "value": 8, "max": 10, "unit": "items", "series": [2, 3, 5, 5, 7, 8] } },
|
|
37
|
+
{ "id": "payment", "kind": "card", "lane": "checks", "state": "review", "title": "Check payment", "metrics": { "label": "Checks", "value": 4, "max": 5 } },
|
|
38
|
+
{ "id": "fulfil-group", "kind": "group", "lane": "fulfilment", "col": 5, "state": "ready", "title": "Prepare parcel", "contains": ["pick", "pack", "dispatch"] },
|
|
39
|
+
{ "id": "pick", "kind": "card", "lane": "fulfilment", "state": "ready", "title": "Pick items" },
|
|
40
|
+
{ "id": "pack", "kind": "card", "lane": "fulfilment", "state": "ready", "title": "Pack items" },
|
|
41
|
+
{ "id": "dispatch", "kind": "card", "lane": "fulfilment", "state": "ready", "title": "Dispatch", "metrics": { "label": "Parcels", "value": 3, "unit": "sent" } },
|
|
42
|
+
{ "id": "notify", "kind": "card", "lane": "desk", "state": "ready", "title": "Send update" },
|
|
43
|
+
{ "id": "receipt", "kind": "card", "lane": "desk", "state": "ready", "title": "File receipt" },
|
|
44
|
+
{ "id": "close", "kind": "end", "lane": "desk", "state": "ready", "title": "Close order" }
|
|
45
|
+
],
|
|
46
|
+
"links": [
|
|
47
|
+
{ "id": "l-intake-verify", "from": "intake", "to": "verify", "state": "ready" },
|
|
48
|
+
{ "id": "l-verify-route", "from": "verify", "to": "route", "state": "review" },
|
|
49
|
+
{ "id": "l-route-hold", "from": "route", "to": "hold", "state": "waiting", "label": "Need details" },
|
|
50
|
+
{ "id": "l-hold-verify", "from": "hold", "to": "verify", "state": "waiting", "kind": "loop-back", "label": "Details added" },
|
|
51
|
+
{ "id": "l-route-quote", "from": "route", "to": "quote", "state": "ready", "label": "Ready" },
|
|
52
|
+
{ "id": "l-quote-stock", "from": "quote", "to": "stock", "state": "review" },
|
|
53
|
+
{ "id": "l-quote-payment", "from": "quote", "to": "payment", "state": "review" },
|
|
54
|
+
{ "id": "l-quote-pick", "from": "quote", "to": "pick", "state": "ready" },
|
|
55
|
+
{ "id": "l-quote-pack", "from": "quote", "to": "pack", "state": "ready" },
|
|
56
|
+
{ "id": "l-stock-dispatch", "from": "stock", "to": "dispatch", "state": "review" },
|
|
57
|
+
{ "id": "l-payment-dispatch", "from": "payment", "to": "dispatch", "state": "review" },
|
|
58
|
+
{ "id": "l-pick-dispatch", "from": "pick", "to": "dispatch", "state": "ready" },
|
|
59
|
+
{ "id": "l-pack-dispatch", "from": "pack", "to": "dispatch", "state": "ready" },
|
|
60
|
+
{ "id": "l-dispatch-notify", "from": "dispatch", "to": "notify", "state": "ready" },
|
|
61
|
+
{ "id": "l-dispatch-receipt", "from": "dispatch", "to": "receipt", "state": "ready" },
|
|
62
|
+
{ "id": "l-notify-close", "from": "notify", "to": "close", "state": "ready" },
|
|
63
|
+
{ "id": "l-receipt-close", "from": "receipt", "to": "close", "state": "ready" }
|
|
64
|
+
],
|
|
65
|
+
"scenarios": [
|
|
66
|
+
{ "id": "happy", "label": "Happy path", "steps": [
|
|
67
|
+
{ "link": "l-intake-verify", "at": 0, "caption": "Request reaches verification" },
|
|
68
|
+
{ "link": "l-verify-route", "at": 10, "caption": "Details are checked" },
|
|
69
|
+
{ "link": "l-route-quote", "at": 20, "caption": "Ready to confirm terms" },
|
|
70
|
+
{ "link": "l-quote-stock", "at": 30, "caption": "Stock is checked" },
|
|
71
|
+
{ "link": "l-stock-dispatch", "at": 40, "caption": "Parcel is dispatched" },
|
|
72
|
+
{ "link": "l-dispatch-notify", "at": 50, "caption": "An update is sent" },
|
|
73
|
+
{ "link": "l-notify-close", "at": 60, "caption": "Order is closed" }
|
|
74
|
+
] },
|
|
75
|
+
{ "id": "escalated", "label": "Escalated", "steps": [
|
|
76
|
+
{ "link": "l-intake-verify", "at": 0, "caption": "Request reaches verification" },
|
|
77
|
+
{ "link": "l-verify-route", "at": 20, "caption": "Details need review" },
|
|
78
|
+
{ "link": "l-route-hold", "at": 90, "caption": "More details are needed" },
|
|
79
|
+
{ "link": "l-hold-verify", "at": 120, "caption": "Details arrive" },
|
|
80
|
+
{ "link": "l-verify-route", "at": 140, "caption": "Details are checked again" },
|
|
81
|
+
{ "link": "l-route-quote", "at": 150, "caption": "Terms can proceed" },
|
|
82
|
+
{ "link": "l-quote-stock", "at": 160, "caption": "Stock is checked" },
|
|
83
|
+
{ "link": "l-stock-dispatch", "at": 170, "caption": "Parcel is dispatched" },
|
|
84
|
+
{ "link": "l-dispatch-notify", "at": 180, "caption": "An update is sent" },
|
|
85
|
+
{ "link": "l-notify-close", "at": 190, "caption": "Order is closed" }
|
|
86
|
+
] }
|
|
87
|
+
],
|
|
88
|
+
"inspector": {
|
|
89
|
+
"relations": [
|
|
90
|
+
{ "id": "up", "label": "Came from", "dir": "up" },
|
|
91
|
+
{ "id": "down", "label": "Goes to", "dir": "down" },
|
|
92
|
+
{ "id": "closed", "label": "Closed", "dir": "down", "filter": { "kind": "end" } }
|
|
93
|
+
]
|
|
94
|
+
},
|
|
95
|
+
"notes": [
|
|
96
|
+
{ "anchor": "#n_route", "title": "A decision with named exits", "text": "The desk either asks for more details or confirms the order can move on." },
|
|
97
|
+
{ "anchor": "#n_fulfil-group", "title": "A group that can open", "text": "The parcel preparation tasks are folded into one node until the reader opens the group." }
|
|
98
|
+
]
|
|
99
|
+
}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 1,
|
|
3
|
+
"meta": {
|
|
4
|
+
"title": "MICROSERVICE ESTATE TOPOLOGY",
|
|
5
|
+
"help": "Explore microservice dependencies, traffic weights, and backing data stores across standard and peak operational conditions.",
|
|
6
|
+
"asOf": "2026-10-06",
|
|
7
|
+
"source": "Fictional Contoso Retail service mesh. No real endpoints or credentials are used."
|
|
8
|
+
},
|
|
9
|
+
"layout": "auto",
|
|
10
|
+
"columns": [
|
|
11
|
+
{ "id": "edge", "title": "Edge", "width": 150 },
|
|
12
|
+
{ "id": "auth", "title": "Auth", "width": 150 },
|
|
13
|
+
{ "id": "core", "title": "Core Services", "width": 170 },
|
|
14
|
+
{ "id": "support", "title": "Support Services", "width": 170 },
|
|
15
|
+
{ "id": "data", "title": "Data Stores", "width": 170 }
|
|
16
|
+
],
|
|
17
|
+
"lanes": [
|
|
18
|
+
{ "id": "edge", "title": "Edge Layer" },
|
|
19
|
+
{ "id": "services", "title": "Core Services" },
|
|
20
|
+
{ "id": "support", "title": "Supporting Services" },
|
|
21
|
+
{ "id": "data", "title": "Data Tier" }
|
|
22
|
+
],
|
|
23
|
+
"states": {
|
|
24
|
+
"healthy": { "word": "HEALTHY", "tone": "ok", "border": "solid", "edge": "flow", "motion": "flow", "bucket": "good" },
|
|
25
|
+
"degraded": { "word": "DEGRADED", "tone": "warn", "border": "dashed", "edge": "dash", "motion": "flow-slow", "bucket": "neutral" },
|
|
26
|
+
"down": { "word": "DOWN", "tone": "crit", "border": "dotted", "edge": "dot", "motion": "none", "bucket": "gap" }
|
|
27
|
+
},
|
|
28
|
+
"views": [
|
|
29
|
+
{ "id": "now", "label": "Now", "default": true },
|
|
30
|
+
{ "id": "peak", "label": "Peak" }
|
|
31
|
+
],
|
|
32
|
+
"nodes": [
|
|
33
|
+
{ "id": "gw_web", "kind": "card", "lane": "edge", "state": "healthy", "title": "Web Gateway", "subtitle": "Public web ingress", "weight": 1.0, "metrics": { "label": "Traffic", "value": 3200, "max": 5000, "unit": "req/s", "series": [2400, 2800, 3100, 3200] } },
|
|
34
|
+
{ "id": "gw_mobile", "kind": "card", "lane": "edge", "state": "healthy", "title": "Mobile Gateway", "subtitle": "App client ingress", "weight": 0.8, "metrics": { "label": "Traffic", "value": 1800, "max": 3000, "unit": "req/s", "series": [1200, 1500, 1700, 1800] } },
|
|
35
|
+
{ "id": "cdn_edge", "kind": "card", "lane": "edge", "state": "healthy", "title": "CDN Edge", "subtitle": "Static asset cache", "weight": 0.9 },
|
|
36
|
+
{ "id": "svc_auth", "kind": "card", "lane": "services", "state": "healthy", "title": "Auth Service", "subtitle": "OAuth and JWT tokens", "weight": 0.9 },
|
|
37
|
+
{ "id": "svc_orders", "kind": "card", "lane": "services", "state": "healthy", "title": "Orders API", "subtitle": "Order management", "weight": 0.9, "sla": 100, "metrics": { "label": "Traffic", "value": 1200, "max": 2000, "unit": "req/s", "series": [800, 950, 1100, 1200] } },
|
|
38
|
+
{ "id": "svc_payments", "kind": "card", "lane": "services", "state": "healthy", "title": "Payments API", "subtitle": "Payment processing", "weight": 0.85 },
|
|
39
|
+
{ "id": "svc_inventory", "kind": "card", "lane": "services", "state": "healthy", "title": "Inventory API", "subtitle": "Stock levels", "weight": 0.75 },
|
|
40
|
+
{ "id": "svc_catalog", "kind": "card", "lane": "services", "state": "healthy", "title": "Catalog API", "subtitle": "Product details", "weight": 0.8 },
|
|
41
|
+
{ "id": "svc_search", "kind": "card", "lane": "services", "state": "healthy", "title": "Search API", "subtitle": "Product search", "weight": 0.85, "stateIn": { "peak": "degraded" } },
|
|
42
|
+
{ "id": "svc_cart", "kind": "card", "lane": "services", "state": "healthy", "title": "Cart API", "subtitle": "Shopping baskets", "weight": 0.7 },
|
|
43
|
+
{ "id": "svc_notif", "kind": "card", "lane": "support", "state": "healthy", "title": "Notification API", "subtitle": "Email and SMS alerts", "weight": 0.6 },
|
|
44
|
+
{ "id": "svc_recom", "kind": "card", "lane": "support", "state": "healthy", "title": "Recommendation", "subtitle": "Personalized picks", "weight": 0.5 },
|
|
45
|
+
{ "id": "svc_shipping", "kind": "card", "lane": "support", "state": "healthy", "title": "Shipping API", "subtitle": "Courier dispatch", "weight": 0.65 },
|
|
46
|
+
{ "id": "svc_analytics", "kind": "card", "lane": "support", "state": "healthy", "title": "Analytics API", "subtitle": "Event ingestion", "weight": 0.7 },
|
|
47
|
+
{ "id": "svc_pricing", "kind": "card", "lane": "support", "state": "healthy", "title": "Pricing Engine", "subtitle": "Dynamic discounts", "weight": 0.6 },
|
|
48
|
+
{ "id": "audit_log", "kind": "card", "lane": "support", "state": "healthy", "title": "Audit Service", "subtitle": "Compliance trail", "weight": 0.5 },
|
|
49
|
+
{ "id": "end_client", "kind": "end", "lane": "edge", "state": "healthy", "title": "Client Response", "subtitle": "Rendered payload" },
|
|
50
|
+
{ "id": "end_receipt", "kind": "end", "lane": "services", "state": "healthy", "title": "Order Confirmed", "subtitle": "Receipt issued" },
|
|
51
|
+
{ "id": "ds_group", "kind": "group", "lane": "data", "state": "healthy", "title": "Data stores", "subtitle": "Databases and queues", "contains": ["db_orders", "db_payments", "db_inventory", "redis_cache", "msg_queue"], "collapsed": true },
|
|
52
|
+
{ "id": "db_orders", "kind": "card", "lane": "data", "state": "healthy", "title": "Orders DB", "subtitle": "PostgreSQL relational", "weight": 0.9 },
|
|
53
|
+
{ "id": "db_payments", "kind": "card", "lane": "data", "state": "healthy", "title": "Payments DB", "subtitle": "Encrypted ledger", "weight": 0.85 },
|
|
54
|
+
{ "id": "db_inventory", "kind": "card", "lane": "data", "state": "healthy", "title": "Inventory DB", "subtitle": "Replica cluster", "weight": 0.7 },
|
|
55
|
+
{ "id": "redis_cache", "kind": "card", "lane": "data", "state": "healthy", "title": "Redis Cache", "subtitle": "In-memory cluster", "weight": 0.8, "stateIn": { "peak": "degraded" } },
|
|
56
|
+
{ "id": "msg_queue", "kind": "card", "lane": "data", "state": "healthy", "title": "Kafka Queue", "subtitle": "Event streaming bus", "weight": 0.75, "sla": 100 }
|
|
57
|
+
],
|
|
58
|
+
"links": [
|
|
59
|
+
{ "id": "l_web_auth", "from": "gw_web", "to": "svc_auth", "state": "healthy" },
|
|
60
|
+
{ "id": "l_mob_auth", "from": "gw_mobile", "to": "svc_auth", "state": "healthy" },
|
|
61
|
+
{ "id": "l_web_cdn", "from": "gw_web", "to": "cdn_edge", "state": "healthy" },
|
|
62
|
+
{ "id": "l_web_ord", "from": "gw_web", "to": "svc_orders", "state": "healthy" },
|
|
63
|
+
{ "id": "l_mob_ord", "from": "gw_mobile", "to": "svc_orders", "state": "healthy" },
|
|
64
|
+
{ "id": "l_web_srch", "from": "gw_web", "to": "svc_search", "state": "healthy" },
|
|
65
|
+
{ "id": "l_web_cat", "from": "gw_web", "to": "svc_catalog", "state": "healthy" },
|
|
66
|
+
{ "id": "l_web_cart", "from": "gw_web", "to": "svc_cart", "state": "healthy" },
|
|
67
|
+
{ "id": "l_cat_price", "from": "svc_catalog", "to": "svc_pricing", "state": "healthy" },
|
|
68
|
+
{ "id": "l_srch_recom", "from": "svc_search", "to": "svc_recom", "state": "healthy" },
|
|
69
|
+
{ "id": "l_ord_pay", "from": "svc_orders", "to": "svc_payments", "state": "healthy" },
|
|
70
|
+
{ "id": "l_ord_inv", "from": "svc_orders", "to": "svc_inventory", "state": "healthy" },
|
|
71
|
+
{ "id": "l_ord_dbo", "from": "svc_orders", "to": "db_orders", "state": "healthy" },
|
|
72
|
+
{ "id": "l_ord_ds", "from": "svc_orders", "to": "ds_group", "state": "healthy" },
|
|
73
|
+
{ "id": "l_pay_dbp", "from": "svc_payments", "to": "db_payments", "state": "healthy" },
|
|
74
|
+
{ "id": "l_inv_dbi", "from": "svc_inventory", "to": "db_inventory", "state": "healthy" },
|
|
75
|
+
{ "id": "l_srch_red", "from": "svc_search", "to": "redis_cache", "state": "healthy" },
|
|
76
|
+
{ "id": "l_cart_red", "from": "svc_cart", "to": "redis_cache", "state": "healthy" },
|
|
77
|
+
{ "id": "l_ord_q", "from": "svc_orders", "to": "msg_queue", "state": "healthy" },
|
|
78
|
+
{ "id": "l_q_notif", "from": "msg_queue", "to": "svc_notif", "state": "healthy" },
|
|
79
|
+
{ "id": "l_q_ship", "from": "msg_queue", "to": "svc_shipping", "state": "healthy" },
|
|
80
|
+
{ "id": "l_q_analy", "from": "msg_queue", "to": "svc_analytics", "state": "healthy" },
|
|
81
|
+
{ "id": "l_pay_audit", "from": "svc_payments", "to": "audit_log", "state": "healthy" },
|
|
82
|
+
{ "id": "l_ord_rcpt", "from": "svc_orders", "to": "end_receipt", "state": "healthy" },
|
|
83
|
+
{ "id": "l_cdn_client", "from": "cdn_edge", "to": "end_client", "state": "healthy" }
|
|
84
|
+
],
|
|
85
|
+
"inspector": {
|
|
86
|
+
"relations": [
|
|
87
|
+
{ "id": "upstream", "label": "Called by", "dir": "up" },
|
|
88
|
+
{ "id": "down", "label": "Calls service", "dir": "down" },
|
|
89
|
+
{ "id": "datastores", "label": "Backing data store", "dir": "down" }
|
|
90
|
+
],
|
|
91
|
+
"actions": [
|
|
92
|
+
{
|
|
93
|
+
"id": "sim_down",
|
|
94
|
+
"label": "Simulate: this is down",
|
|
95
|
+
"dir": "down",
|
|
96
|
+
"staleText": "Target service simulated down. Downstream dependencies entering degraded fallback."
|
|
97
|
+
}
|
|
98
|
+
]
|
|
99
|
+
},
|
|
100
|
+
"notes": [
|
|
101
|
+
{ "anchor": "#viewport", "title": "Estate topology", "text": "This map visualizes microservice dependencies and traffic weights across operational tiers." },
|
|
102
|
+
{ "anchor": "#n_ds_group", "title": "Backing storage cluster", "text": "Click to expand databases and message buses supporting the core application layer." },
|
|
103
|
+
{ "anchor": "#tools", "title": "Toolbar actions", "text": "Filter nodes by state or use the view switcher to compare nominal and peak loads." },
|
|
104
|
+
{ "anchor": "#inspector", "title": "Dependency inspector", "text": "Select any microservice to trace inbound callers and backing database links." }
|
|
105
|
+
],
|
|
106
|
+
"scenarios": [
|
|
107
|
+
{
|
|
108
|
+
"id": "asset_cache",
|
|
109
|
+
"label": "Static asset fetch",
|
|
110
|
+
"steps": [
|
|
111
|
+
{ "link": "l_web_cdn", "at": 0, "caption": "Web gateway routes request to CDN edge" },
|
|
112
|
+
{ "link": "l_cdn_client", "at": 10, "caption": "Edge cache serves rendered assets to client" }
|
|
113
|
+
]
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
"id": "order_checkout",
|
|
117
|
+
"label": "Order checkout",
|
|
118
|
+
"steps": [
|
|
119
|
+
{ "link": "l_web_ord", "at": 0, "caption": "Customer initiates order through web gateway" },
|
|
120
|
+
{ "link": "l_ord_rcpt", "at": 30, "caption": "Orders API confirms order and issues receipt" }
|
|
121
|
+
]
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
"id": "peak_surge",
|
|
125
|
+
"label": "Peak surge breach",
|
|
126
|
+
"steps": [
|
|
127
|
+
{ "link": "l_mob_ord", "at": 0, "caption": "Mobile traffic spike reaches ingress gateway" },
|
|
128
|
+
{ "link": "l_ord_q", "at": 110, "caption": "Orders queue depth breaches response SLA threshold" },
|
|
129
|
+
{ "link": "l_q_notif", "at": 130, "caption": "Notification worker dispatches batch alerts" }
|
|
130
|
+
]
|
|
131
|
+
}
|
|
132
|
+
]
|
|
133
|
+
}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 1,
|
|
3
|
+
"meta": {
|
|
4
|
+
"title": "ORDER STATE MACHINE",
|
|
5
|
+
"help": "Track lifecycle transitions of an order across active processing, cancellation, fulfillment, and returns.",
|
|
6
|
+
"asOf": "2026-10-06",
|
|
7
|
+
"source": "Fictional Contoso Retail state machine. No real customer or order records are used."
|
|
8
|
+
},
|
|
9
|
+
"layout": "auto",
|
|
10
|
+
"columns": [
|
|
11
|
+
{ "id": "creation", "title": "Creation", "width": 140 },
|
|
12
|
+
{ "id": "payment", "title": "Payment", "width": 150 },
|
|
13
|
+
{ "id": "fulfillment", "title": "Fulfillment", "width": 160 },
|
|
14
|
+
{ "id": "delivery", "title": "Delivery", "width": 150 },
|
|
15
|
+
{ "id": "post_sale", "title": "Post-Sale", "width": 150 }
|
|
16
|
+
],
|
|
17
|
+
"lanes": [
|
|
18
|
+
{ "id": "order", "title": "Order Lifecycle" },
|
|
19
|
+
{ "id": "logistics", "title": "Fulfillment & Logistics" },
|
|
20
|
+
{ "id": "service", "title": "Returns & Service" }
|
|
21
|
+
],
|
|
22
|
+
"states": {
|
|
23
|
+
"active": { "word": "ACTIVE", "tone": "ok", "border": "solid", "edge": "flow", "motion": "flow", "bucket": "good" },
|
|
24
|
+
"terminal": { "word": "TERMINAL", "tone": "muted", "border": "solid", "edge": "dash-short", "motion": "none", "bucket": "good" },
|
|
25
|
+
"error": { "word": "ERROR", "tone": "crit", "border": "dotted", "edge": "dot", "motion": "breathe", "bucket": "gap" }
|
|
26
|
+
},
|
|
27
|
+
"nodes": [
|
|
28
|
+
{ "id": "st_draft", "kind": "start", "lane": "order", "state": "active", "title": "Draft", "subtitle": "Cart checkout" },
|
|
29
|
+
{ "id": "st_submitted", "kind": "card", "lane": "order", "state": "active", "title": "Submitted", "subtitle": "Awaiting payment" },
|
|
30
|
+
{ "id": "gate_paid", "kind": "gateway", "lane": "order", "state": "active", "title": "Paid?", "subtitle": "Payment verification" },
|
|
31
|
+
{ "id": "st_paid", "kind": "card", "lane": "order", "state": "active", "title": "Paid", "subtitle": "Payment settled" },
|
|
32
|
+
{ "id": "st_packed", "kind": "card", "lane": "logistics", "state": "active", "title": "Packed", "subtitle": "Warehouse parcel" },
|
|
33
|
+
{ "id": "st_shipped", "kind": "card", "lane": "logistics", "state": "active", "title": "Shipped", "subtitle": "In transit" },
|
|
34
|
+
{ "id": "st_delivered", "kind": "card", "lane": "logistics", "state": "terminal", "title": "Delivered", "subtitle": "Handed to customer" },
|
|
35
|
+
{ "id": "st_cancelled", "kind": "card", "lane": "order", "state": "error", "title": "Cancelled", "subtitle": "Order voided" },
|
|
36
|
+
{ "id": "st_ret_req", "kind": "card", "lane": "service", "state": "active", "title": "Return requested", "subtitle": "RMA initiated" },
|
|
37
|
+
{ "id": "st_returned", "kind": "card", "lane": "service", "state": "active", "title": "Returned", "subtitle": "Parcel received" },
|
|
38
|
+
{ "id": "st_refunded", "kind": "card", "lane": "service", "state": "terminal", "title": "Refunded", "subtitle": "Funds credited", "sla": 30 },
|
|
39
|
+
{ "id": "st_pay_fail", "kind": "end", "lane": "order", "state": "error", "title": "Payment failed", "subtitle": "Authorization error" },
|
|
40
|
+
{ "id": "st_archived", "kind": "end", "lane": "logistics", "state": "terminal", "title": "Archived", "subtitle": "Order complete" }
|
|
41
|
+
],
|
|
42
|
+
"links": [
|
|
43
|
+
{ "id": "l_draft_sub", "from": "st_draft", "to": "st_submitted", "state": "active" },
|
|
44
|
+
{ "id": "l_sub_gate", "from": "st_submitted", "to": "gate_paid", "state": "active" },
|
|
45
|
+
{ "id": "l_gate_paid", "from": "gate_paid", "to": "st_paid", "state": "active", "label": "Authorized" },
|
|
46
|
+
{ "id": "l_gate_fail", "from": "gate_paid", "to": "st_pay_fail", "state": "error", "label": "Declined" },
|
|
47
|
+
{ "id": "l_paid_pack", "from": "st_paid", "to": "st_packed", "state": "active" },
|
|
48
|
+
{ "id": "l_paid_canc", "from": "st_paid", "to": "st_cancelled", "state": "error", "label": "Customer cancel" },
|
|
49
|
+
{ "id": "l_pack_ship", "from": "st_packed", "to": "st_shipped", "state": "active" },
|
|
50
|
+
{ "id": "l_ship_deliv", "from": "st_shipped", "to": "st_delivered", "state": "active" },
|
|
51
|
+
{ "id": "l_deliv_arch", "from": "st_delivered", "to": "st_archived", "state": "terminal" },
|
|
52
|
+
{ "id": "l_deliv_ret", "from": "st_delivered", "to": "st_ret_req", "state": "active", "label": "Request return" },
|
|
53
|
+
{ "id": "l_ret_deliv", "from": "st_ret_req", "to": "st_delivered", "state": "active", "kind": "loop-back", "label": "Return rejected" },
|
|
54
|
+
{ "id": "l_ret_done", "from": "st_ret_req", "to": "st_returned", "state": "active", "label": "Return accepted" },
|
|
55
|
+
{ "id": "l_ret_refund", "from": "st_returned", "to": "st_refunded", "state": "terminal" },
|
|
56
|
+
{ "id": "l_canc_draft", "from": "st_cancelled", "to": "st_draft", "state": "active", "kind": "loop-back", "label": "Draft after cancel" },
|
|
57
|
+
{ "id": "l_canc_ref", "from": "st_cancelled", "to": "st_refunded", "state": "terminal", "label": "Refund balance" }
|
|
58
|
+
],
|
|
59
|
+
"inspector": {
|
|
60
|
+
"relations": [
|
|
61
|
+
{ "id": "prior", "label": "Previous state", "dir": "up" },
|
|
62
|
+
{ "id": "down", "label": "Next transition", "dir": "down" },
|
|
63
|
+
{ "id": "terminal", "label": "Settled state", "dir": "down", "filter": { "kind": "end" } }
|
|
64
|
+
],
|
|
65
|
+
"actions": [
|
|
66
|
+
{
|
|
67
|
+
"id": "sim_cancel",
|
|
68
|
+
"label": "Simulate: cancel order",
|
|
69
|
+
"dir": "down",
|
|
70
|
+
"staleText": "Order cancelled by customer. Refund process initiated."
|
|
71
|
+
}
|
|
72
|
+
]
|
|
73
|
+
},
|
|
74
|
+
"notes": [
|
|
75
|
+
{ "anchor": "#viewport", "title": "State transition model", "text": "This diagram defines legal state transitions from draft creation through post-sale settlement." },
|
|
76
|
+
{ "anchor": "#n_gate_paid", "title": "Payment gateway", "text": "Orders branch to fulfillment on successful payment or terminate if payment authorization fails." },
|
|
77
|
+
{ "anchor": "#n_st_ret_req", "title": "Return request evaluation", "text": "Return requests branch either to return acceptance and refund or route back to delivered status if rejected." },
|
|
78
|
+
{ "anchor": "#playbar", "title": "Playback controls", "text": "Step through normal fulfillment or cancellation workflows to inspect transitions and SLA timing." }
|
|
79
|
+
],
|
|
80
|
+
"scenarios": [
|
|
81
|
+
{
|
|
82
|
+
"id": "normal_order",
|
|
83
|
+
"label": "Normal order",
|
|
84
|
+
"steps": [
|
|
85
|
+
{ "link": "l_draft_sub", "at": 0, "caption": "Customer submits order draft" },
|
|
86
|
+
{ "link": "l_sub_gate", "at": 10, "caption": "Payment authorization requested" },
|
|
87
|
+
{ "link": "l_gate_paid", "at": 20, "caption": "Payment confirmed successfully" },
|
|
88
|
+
{ "link": "l_paid_pack", "at": 35, "caption": "Warehouse packs parcel" },
|
|
89
|
+
{ "link": "l_pack_ship", "at": 50, "caption": "Courier picks up shipment" },
|
|
90
|
+
{ "link": "l_ship_deliv", "at": 70, "caption": "Package delivered to customer" },
|
|
91
|
+
{ "link": "l_deliv_arch", "at": 85, "caption": "Order archived after return period expires" }
|
|
92
|
+
]
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"id": "cancel_paid",
|
|
96
|
+
"label": "Cancel after payment",
|
|
97
|
+
"steps": [
|
|
98
|
+
{ "link": "l_draft_sub", "at": 0, "caption": "Customer drafts order" },
|
|
99
|
+
{ "link": "l_sub_gate", "at": 10, "caption": "Payment gateway contacted" },
|
|
100
|
+
{ "link": "l_gate_paid", "at": 20, "caption": "Order paid" },
|
|
101
|
+
{ "link": "l_paid_canc", "at": 30, "caption": "Customer cancels order before shipping" },
|
|
102
|
+
{ "link": "l_canc_ref", "at": 45, "caption": "Refund issued after SLA target threshold" }
|
|
103
|
+
]
|
|
104
|
+
}
|
|
105
|
+
]
|
|
106
|
+
}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 1,
|
|
3
|
+
"meta": {
|
|
4
|
+
"title": "SUPPORT TICKET LIFECYCLE",
|
|
5
|
+
"help": "Track support tickets from submission to resolution across four operational tiers. Follow escalation paths and identify SLA breach risks.",
|
|
6
|
+
"asOf": "2026-10-06",
|
|
7
|
+
"source": "Fictional Contoso Retail support desk data. No real customer or ticket records are used."
|
|
8
|
+
},
|
|
9
|
+
"layout": "columns-lanes",
|
|
10
|
+
"columns": [
|
|
11
|
+
{ "id": "new", "title": "New", "width": 150 },
|
|
12
|
+
{ "id": "triage", "title": "Triage", "width": 150 },
|
|
13
|
+
{ "id": "progress", "title": "In progress", "width": 160 },
|
|
14
|
+
{ "id": "waiting", "title": "Waiting", "width": 150 },
|
|
15
|
+
{ "id": "resolved", "title": "Resolved", "width": 160 },
|
|
16
|
+
{ "id": "closed", "title": "Closed", "width": 150 }
|
|
17
|
+
],
|
|
18
|
+
"lanes": [
|
|
19
|
+
{ "id": "customer", "title": "Customer" },
|
|
20
|
+
{ "id": "l1", "title": "Support L1" },
|
|
21
|
+
{ "id": "l2", "title": "Support L2" },
|
|
22
|
+
{ "id": "billing", "title": "Billing team" }
|
|
23
|
+
],
|
|
24
|
+
"states": {
|
|
25
|
+
"on_time": { "word": "ON TIME", "tone": "ok", "border": "solid", "edge": "flow", "motion": "flow", "bucket": "good" },
|
|
26
|
+
"at_risk": { "word": "AT RISK", "tone": "warn", "border": "dashed", "edge": "dash", "motion": "flow-slow", "bucket": "neutral" },
|
|
27
|
+
"breached": { "word": "BREACHED", "tone": "crit", "border": "dotted", "edge": "dot", "motion": "breathe", "bucket": "gap" },
|
|
28
|
+
"closed": { "word": "CLOSED", "tone": "muted", "border": "solid", "edge": "dash-short", "motion": "none", "bucket": "good" }
|
|
29
|
+
},
|
|
30
|
+
"nodes": [
|
|
31
|
+
{ "id": "cust-submit", "kind": "start", "lane": "customer", "col": 0, "row": 0, "state": "on_time", "title": "Submit ticket" },
|
|
32
|
+
{ "id": "cust-notify", "kind": "event", "lane": "customer", "col": 1, "row": 0, "state": "on_time", "title": "Receipt notice" },
|
|
33
|
+
{ "id": "cust-confirm", "kind": "end", "lane": "customer", "col": 5, "row": 0, "state": "closed", "title": "Confirm resolution" },
|
|
34
|
+
{ "id": "l1-triage", "kind": "gateway", "lane": "l1", "col": 1, "row": 2, "state": "on_time", "title": "Triage issue" },
|
|
35
|
+
{ "id": "l1-work", "kind": "card", "lane": "l1", "col": 2, "row": 2, "state": "on_time", "title": "Apply standard fix", "metrics": { "label": "Active tickets", "value": 9, "max": 15, "unit": "tickets", "series": [4, 6, 7, 9, 8, 9] } },
|
|
36
|
+
{ "id": "l1-wait", "kind": "card", "lane": "l1", "col": 3, "row": 2, "state": "at_risk", "title": "Await customer", "sla": 120, "metrics": { "label": "Hold queue", "value": 5, "max": 10, "unit": "tickets" } },
|
|
37
|
+
{ "id": "l1-resolve", "kind": "card", "lane": "l1", "col": 4, "row": 2, "state": "on_time", "title": "Resolve ticket", "sla": 120, "metrics": { "label": "Resolved today", "value": 24, "unit": "tickets" } },
|
|
38
|
+
{ "id": "l2-investigate", "kind": "card", "lane": "l2", "col": 2, "row": 5, "state": "on_time", "title": "Diagnose fault", "metrics": { "label": "Deep analysis", "value": 4, "max": 8, "unit": "tickets" } },
|
|
39
|
+
{ "id": "l2-qa", "kind": "card", "lane": "l2", "col": 3, "row": 5, "state": "on_time", "title": "Verify fix" },
|
|
40
|
+
{ "id": "l2-resolve", "kind": "card", "lane": "l2", "col": 4, "row": 5, "state": "on_time", "title": "Deploy code fix" },
|
|
41
|
+
{ "id": "bill-review", "kind": "card", "lane": "billing", "col": 2, "row": 8, "state": "on_time", "title": "Review charges" },
|
|
42
|
+
{ "id": "bill-audit", "kind": "card", "lane": "billing", "col": 3, "row": 8, "state": "on_time", "title": "Audit credit" },
|
|
43
|
+
{ "id": "bill-adjust", "kind": "card", "lane": "billing", "col": 4, "row": 8, "state": "on_time", "title": "Issue refund" },
|
|
44
|
+
{ "id": "ticket-close", "kind": "end", "lane": "billing", "col": 5, "row": 8, "state": "closed", "title": "Archive file" }
|
|
45
|
+
],
|
|
46
|
+
"links": [
|
|
47
|
+
{ "id": "l-submit-triage", "from": "cust-submit", "to": "l1-triage", "state": "on_time" },
|
|
48
|
+
{ "id": "l-submit-notify", "from": "cust-submit", "to": "cust-notify", "state": "on_time" },
|
|
49
|
+
{ "id": "l-triage-work", "from": "l1-triage", "to": "l1-work", "state": "on_time", "label": "Tier 1 issue" },
|
|
50
|
+
{ "id": "l-triage-l2", "from": "l1-triage", "to": "l2-investigate", "state": "on_time", "label": "Escalate L2" },
|
|
51
|
+
{ "id": "l-triage-bill", "from": "l1-triage", "to": "bill-review", "state": "on_time", "label": "Billing issue" },
|
|
52
|
+
{ "id": "l-work-wait", "from": "l1-work", "to": "l1-wait", "state": "at_risk", "label": "Request details" },
|
|
53
|
+
{ "id": "l-work-resolve", "from": "l1-work", "to": "l1-resolve", "state": "on_time", "label": "Fix ready" },
|
|
54
|
+
{ "id": "l-wait-resolve", "from": "l1-wait", "to": "l1-resolve", "state": "on_time", "label": "Details given" },
|
|
55
|
+
{ "id": "l-l2-qa", "from": "l2-investigate", "to": "l2-qa", "state": "on_time" },
|
|
56
|
+
{ "id": "l-l2-back", "from": "l2-investigate", "to": "l1-triage", "state": "at_risk", "kind": "loop-back", "label": "Back to triage" },
|
|
57
|
+
{ "id": "l-qa-resolve", "from": "l2-qa", "to": "l2-resolve", "state": "on_time" },
|
|
58
|
+
{ "id": "l-bill-audit", "from": "bill-review", "to": "bill-audit", "state": "on_time" },
|
|
59
|
+
{ "id": "l-audit-adjust", "from": "bill-audit", "to": "bill-adjust", "state": "on_time" },
|
|
60
|
+
{ "id": "l-resolve-confirm", "from": "l1-resolve", "to": "cust-confirm", "state": "on_time" },
|
|
61
|
+
{ "id": "l-l2resolve-confirm", "from": "l2-resolve", "to": "cust-confirm", "state": "on_time" },
|
|
62
|
+
{ "id": "l-adjust-close", "from": "bill-adjust", "to": "ticket-close", "state": "on_time" },
|
|
63
|
+
{ "id": "l-reopen", "from": "cust-confirm", "to": "l1-work", "state": "at_risk", "kind": "loop-back", "label": "Reopened" }
|
|
64
|
+
],
|
|
65
|
+
"scenarios": [
|
|
66
|
+
{
|
|
67
|
+
"id": "happy",
|
|
68
|
+
"label": "Happy path",
|
|
69
|
+
"steps": [
|
|
70
|
+
{ "link": "l-submit-triage", "at": 0, "caption": "Ticket submitted by customer" },
|
|
71
|
+
{ "link": "l-triage-work", "at": 15, "caption": "Triaged as standard Tier 1 fix" },
|
|
72
|
+
{ "link": "l-work-resolve", "at": 45, "caption": "Standard solution applied" },
|
|
73
|
+
{ "link": "l-resolve-confirm", "at": 65, "caption": "Solution submitted for customer review" }
|
|
74
|
+
]
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"id": "escalated",
|
|
78
|
+
"label": "Escalated",
|
|
79
|
+
"steps": [
|
|
80
|
+
{ "link": "l-submit-triage", "at": 0, "caption": "Customer submits urgent ticket" },
|
|
81
|
+
{ "link": "l-triage-work", "at": 15, "caption": "Initial triage begins in Tier 1" },
|
|
82
|
+
{ "link": "l-work-wait", "at": 40, "caption": "Additional system logs requested" },
|
|
83
|
+
{ "link": "l-wait-resolve", "at": 150, "caption": "Customer responds after SLA threshold" },
|
|
84
|
+
{ "link": "l-resolve-confirm", "at": 170, "caption": "Resolution sent to customer" },
|
|
85
|
+
{ "link": "l-reopen", "at": 190, "caption": "Customer reports recurrence" },
|
|
86
|
+
{ "link": "l-work-resolve", "at": 215, "caption": "Secondary remediation verified" },
|
|
87
|
+
{ "link": "l-resolve-confirm", "at": 235, "caption": "Updated fix accepted" }
|
|
88
|
+
]
|
|
89
|
+
}
|
|
90
|
+
],
|
|
91
|
+
"inspector": {
|
|
92
|
+
"relations": [
|
|
93
|
+
{ "id": "preceding", "label": "Came from", "dir": "up" },
|
|
94
|
+
{ "id": "down", "label": "Hands off to", "dir": "down" },
|
|
95
|
+
{ "id": "closing", "label": "Resolution path", "dir": "down", "filter": { "kind": "end" } }
|
|
96
|
+
],
|
|
97
|
+
"actions": [
|
|
98
|
+
{ "id": "sim-breach", "label": "Simulate: SLA breach", "dir": "down", "staleText": "Simulating SLA breach ripple across support queues" }
|
|
99
|
+
]
|
|
100
|
+
},
|
|
101
|
+
"notes": [
|
|
102
|
+
{ "anchor": "#n_l1-triage", "title": "Initial triage gateway", "text": "Tier 1 triage evaluates request urgency and routes tickets to appropriate support queues." },
|
|
103
|
+
{ "anchor": "#n_l1-wait", "title": "Customer response SLA", "text": "Tickets placed on hold await customer details and carry a strict two-hour target window." },
|
|
104
|
+
{ "anchor": "#n_cust-confirm", "title": "Resolution verification", "text": "The ticket is reopened if customer validation fails during final review." },
|
|
105
|
+
{ "anchor": "#playbar", "title": "Scenario playback", "text": "Switch between happy path and escalated breach workflows to observe token movement." }
|
|
106
|
+
]
|
|
107
|
+
}
|