@zigrivers/scaffold 3.29.0 → 3.30.0

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 (72) hide show
  1. package/content/guides/AUTHORING.md +143 -0
  2. package/content/guides/cli/index.html +1502 -0
  3. package/content/guides/cli/index.md +206 -0
  4. package/content/guides/concepts/index.html +1617 -0
  5. package/content/guides/concepts/index.md +347 -0
  6. package/content/guides/dashboard/index.html +1560 -0
  7. package/content/guides/dashboard/index.md +264 -0
  8. package/content/guides/index.html +1 -1
  9. package/content/guides/install/.diagrams/diagram-0.svg +1 -0
  10. package/content/guides/install/.diagrams/manifest.json +3 -0
  11. package/content/guides/install/index.html +1300 -0
  12. package/content/guides/install/index.md +186 -0
  13. package/content/guides/knowledge/.diagrams/diagram-0.svg +1 -0
  14. package/content/guides/knowledge/.diagrams/manifest.json +3 -0
  15. package/content/guides/knowledge/index.html +1412 -0
  16. package/content/guides/knowledge/index.md +209 -0
  17. package/content/guides/knowledge-freshness/.diagrams/diagram-0.svg +1 -0
  18. package/content/guides/knowledge-freshness/.diagrams/manifest.json +3 -0
  19. package/content/guides/knowledge-freshness/index.html +2442 -0
  20. package/content/guides/knowledge-freshness/index.md +893 -0
  21. package/content/guides/mmr/index.html +35 -17
  22. package/content/guides/mmr/index.md +39 -16
  23. package/content/guides/multi-agent/.diagrams/diagram-0.svg +1 -0
  24. package/content/guides/multi-agent/.diagrams/manifest.json +3 -0
  25. package/content/guides/multi-agent/index.html +1362 -0
  26. package/content/guides/multi-agent/index.md +243 -0
  27. package/content/guides/observability/.diagrams/diagram-0.svg +1 -0
  28. package/content/guides/observability/.diagrams/diagram-1.svg +1 -0
  29. package/content/guides/observability/.diagrams/diagram-2.svg +1 -0
  30. package/content/guides/observability/.diagrams/diagram-3.svg +1 -0
  31. package/content/guides/observability/.diagrams/manifest.json +6 -0
  32. package/content/guides/observability/index.html +2904 -0
  33. package/content/guides/observability/index.md +1097 -0
  34. package/content/guides/pipeline/.diagrams/diagram-0.svg +1 -0
  35. package/content/guides/pipeline/.diagrams/diagram-1.svg +1 -0
  36. package/content/guides/pipeline/.diagrams/manifest.json +4 -0
  37. package/content/guides/pipeline/index.html +1632 -0
  38. package/content/guides/pipeline/index.md +387 -0
  39. package/content/guides/review-workflow/.diagrams/diagram-0.svg +1 -0
  40. package/content/guides/review-workflow/.diagrams/diagram-1.svg +1 -0
  41. package/content/guides/review-workflow/.diagrams/manifest.json +4 -0
  42. package/content/guides/review-workflow/index.html +1437 -0
  43. package/content/guides/review-workflow/index.md +248 -0
  44. package/dist/guides/build.d.ts.map +1 -1
  45. package/dist/guides/build.js +7 -2
  46. package/dist/guides/build.js.map +1 -1
  47. package/dist/guides/build.test.js +8 -0
  48. package/dist/guides/build.test.js.map +1 -1
  49. package/dist/guides/directives-cite.test.d.ts +2 -0
  50. package/dist/guides/directives-cite.test.d.ts.map +1 -0
  51. package/dist/guides/directives-cite.test.js +26 -0
  52. package/dist/guides/directives-cite.test.js.map +1 -0
  53. package/dist/guides/directives.d.ts +1 -0
  54. package/dist/guides/directives.d.ts.map +1 -1
  55. package/dist/guides/directives.js +24 -0
  56. package/dist/guides/directives.js.map +1 -1
  57. package/dist/guides/links.d.ts +14 -0
  58. package/dist/guides/links.d.ts.map +1 -0
  59. package/dist/guides/links.js +56 -0
  60. package/dist/guides/links.js.map +1 -0
  61. package/dist/guides/links.test.d.ts +2 -0
  62. package/dist/guides/links.test.d.ts.map +1 -0
  63. package/dist/guides/links.test.js +72 -0
  64. package/dist/guides/links.test.js.map +1 -0
  65. package/dist/guides/render.d.ts +1 -0
  66. package/dist/guides/render.d.ts.map +1 -1
  67. package/dist/guides/render.js +1 -1
  68. package/dist/guides/render.js.map +1 -1
  69. package/dist/guides/sanitize.d.ts.map +1 -1
  70. package/dist/guides/sanitize.js +1 -0
  71. package/dist/guides/sanitize.js.map +1 -1
  72. package/package.json +1 -1
@@ -0,0 +1,243 @@
1
+ ---
2
+ title: Parallel Agents & Worktrees
3
+ topic: multi-agent
4
+ description: Running agents in parallel — worktree setup/teardown, the ledger-harvest coupling, and the build-phase entry points
5
+ category: workflows
6
+ order: 45
7
+ ---
8
+
9
+ ## Why worktrees, not just branches
10
+
11
+ Several agents implementing the same project at once need two things: a clean
12
+ checkout each can build and test in, and a shared history they all merge back
13
+ into. A branch alone gives you the second but not the first — switching
14
+ branches mutates one working directory, so two agents on two branches in the
15
+ same checkout collide on every uncommitted file, every `node_modules`, every
16
+ test run.
17
+
18
+ A **git worktree** solves this: it is an independent working directory backed by
19
+ the *same* `.git` repository. Each agent gets its own files and its own checked-out
20
+ branch, but commits, refs and history are shared. The layout is one primary
21
+ checkout plus one sibling directory per agent:
22
+
23
+ ```text
24
+ ~/projects/
25
+ ├── scaffold/ # primary checkout (you work here)
26
+ ├── scaffold-alpha/ # worktree for agent "alpha"
27
+ └── scaffold-beta/ # worktree for agent "beta"
28
+ ```
29
+
30
+ So worktrees give you **filesystem isolation with a shared object store**:
31
+ agents never overwrite each other's working files, but a PR merged from one
32
+ worktree is immediately visible (after a fetch/rebase) to all the others.
33
+
34
+ :::callout{type=note}
35
+ **One worktree, one branch, one agent.** A branch that is checked out in a
36
+ worktree cannot also be checked out in the primary repo — git enforces this.
37
+ That constraint is a feature here: it keeps each agent's work pinned to its own
38
+ branch.
39
+ :::
40
+
41
+ ## Setup — `setup-agent-worktree.sh`
42
+
43
+ `scripts/setup-agent-worktree.sh <agent-name>` creates a permanent worktree for
44
+ one parallel agent. Given a name like `alpha`, it:
45
+
46
+ 1. **Normalizes the name** to a lowercase, hyphenated, alphanumeric slug (so
47
+ `Agent_1` becomes `agent-1`), then derives the worktree directory as a
48
+ *sibling* of the primary repo: `../<repo-name>-<slug>`.
49
+ 2. **Creates the workspace branch** `<slug>-workspace` if it does not already
50
+ exist :cite[scripts/setup-agent-worktree.sh:40], then adds the worktree on
51
+ that branch :cite[scripts/setup-agent-worktree.sh:44]. Re-running for an
52
+ existing worktree is a safe no-op.
53
+ 3. **Writes `.scaffold/identity.json`** — the stable identity that build
54
+ observability stamps onto every event this worktree records. The script
55
+ creates `.scaffold/` :cite[scripts/setup-agent-worktree.sh:52] and, only if no
56
+ identity file exists yet, writes `worktree_id` (a UUID), `worktree_label`
57
+ (the agent slug), and `created_at`
58
+ :cite[scripts/setup-agent-worktree.sh:71].
59
+ 4. **Re-syncs Beads** with a fail-soft `bd doctor --fix` when a `.beads/`
60
+ directory is present :cite[scripts/setup-agent-worktree.sh:88], reconciling the
61
+ worktree's Beads git hooks and project config against the installed `bd`
62
+ version. (Beads DB sharing is automatic — worktrees discover the main repo's
63
+ task DB via git's common directory, so there is nothing for `bd doctor` to
64
+ register.)
65
+
66
+ The `worktree_id` is what later lets the harvester tell one worktree's ledger
67
+ from another's — see the [observability guide](../observability/index.md) for
68
+ how identity flows into events.
69
+
70
+ :::callout{type=tip}
71
+ **The identity write is idempotent.** The script only writes
72
+ `identity.json` when one is absent, so re-running setup never clobbers an
73
+ established worktree id. If you want a fresh id, delete the file first.
74
+ :::
75
+
76
+ ## Which build-phase entry point?
77
+
78
+ Six build-phase commands start or resume implementation work. Pick by two
79
+ questions: *is the work already in the plan?* and *is one agent or several
80
+ working?*
81
+
82
+ ```mermaid
83
+ flowchart TD
84
+ Start["Build-phase work to do"] --> InPlan{"Already in the<br/>implementation plan?"}
85
+ InPlan -->|"No — one-off bug/refactor"| Quick["quick-task<br/>single scoped task"]
86
+ InPlan -->|"No — a whole new feature"| Enh["new-enhancement<br/>update PRD + stories + plan"]
87
+ InPlan -->|"Yes — planned tasks"| HowMany{"One agent or<br/>several in parallel?"}
88
+ HowMany -->|"One agent"| Single{"Fresh start or<br/>resuming?"}
89
+ HowMany -->|"Several agents"| Multi{"Fresh start or<br/>resuming?"}
90
+ Single -->|Fresh| SS["single-agent-start"]
91
+ Single -->|Resuming| SR["single-agent-resume"]
92
+ Multi -->|Fresh| MS["multi-agent-start<br/>(needs a worktree)"]
93
+ Multi -->|Resuming| MR["multi-agent-resume<br/>(in the worktree)"]
94
+ ```
95
+
96
+ ::::tabs
97
+ :::tab{title=Planned work}
98
+ **`single-agent-start`** — one agent claims the next planned task, runs the
99
+ red-green-refactor loop, opens a PR, repeats. The default entry point when one
100
+ agent works the plan sequentially.
101
+
102
+ **`multi-agent-start <agent-name>`** — establishes a *named* agent inside a git
103
+ worktree so several agents run the same loop simultaneously without file
104
+ conflicts. Run `setup-agent-worktree.sh <name>` first; this command verifies the
105
+ worktree environment before claiming tasks.
106
+
107
+ **`single-agent-resume`** / **`multi-agent-resume <agent-name>`** — pick these
108
+ after a break (context reset, paused session, next day). They recover context —
109
+ git state, in-progress work, merged PRs — and continue the loop. The
110
+ multi-agent variant additionally verifies the worktree and syncs with main
111
+ before resuming.
112
+ :::
113
+ :::tab{title=Unplanned work}
114
+ **`quick-task <description>`** — a single, well-scoped task for a bug fix,
115
+ refactor, perf tweak, or small refinement that is *not* in the plan. Produces
116
+ one task with acceptance criteria and a TDD test plan; a complexity gate
117
+ redirects to `new-enhancement` if the scope turns out to be too large.
118
+
119
+ **`new-enhancement <description>`** — the full-weight path for a genuinely new
120
+ feature: impact analysis, then updates to the PRD and user stories, an
121
+ innovation pass, and new implementation tasks that integrate with the existing
122
+ plan. Use this when the work deserves stories and acceptance criteria, not just
123
+ a task.
124
+ :::
125
+ ::::
126
+
127
+ Both unplanned entry points feed back into the planned loop: once `quick-task`
128
+ or `new-enhancement` has created tasks, an agent picks them up with one of the
129
+ `*-start` / `*-resume` commands.
130
+
131
+ ## Working in parallel
132
+
133
+ Several agents merging to `main` at once is fine if every agent keeps its
134
+ footprint small and its branches short. The conflict-prevention rules from
135
+ `docs/git-workflow.md` apply directly:
136
+
137
+ - **Keep branches short-lived** — merge within hours, not days
138
+ :cite[docs/git-workflow.md:131]{mode=advisory}. The longer a branch lives, the
139
+ more `main` drifts underneath it.
140
+ - **Rebase frequently** — other agents are merging while you work
141
+ :cite[docs/git-workflow.md:173]{mode=advisory}. Rebase before you touch a file,
142
+ and again before you open the PR.
143
+ - **Avoid high-contention files in parallel.** `CLAUDE.md` and shared libraries
144
+ are read or edited by every agent; serialize work on them and rebase first
145
+ rather than editing concurrently :cite[docs/git-workflow.md:126]{mode=advisory}.
146
+ - **Don't reformat files you aren't otherwise changing** — gratuitous diffs turn
147
+ into needless conflicts.
148
+
149
+ Each agent otherwise follows the standard PR workflow from its own worktree:
150
+ branch, commit, push, `gh pr create`, wait for CI, squash-merge. The shared
151
+ object store means a merge from `scaffold-alpha` is on `main` for everyone the
152
+ moment it lands.
153
+
154
+ ## Teardown & harvest
155
+
156
+ When an agent's work is merged, retire its worktree. The single command for this
157
+ is `scripts/teardown-agent-worktree.sh <worktree-path>`, and the **order of
158
+ operations is the whole point**.
159
+
160
+ :::callout{type=danger}
161
+ **Harvest the ledger BEFORE removing the worktree — or lose the build record.**
162
+ A worktree's `.scaffold/activity.jsonl` lives *inside* that worktree. Once
163
+ `git worktree remove` deletes the directory, the ledger goes with it — every
164
+ decision, blocker, and task event that worktree recorded is gone, and they were
165
+ never on `main` to begin with. The teardown script harvests the ledger into the
166
+ primary repo's archive *first* :cite[scripts/teardown-agent-worktree.sh:42] and
167
+ only then runs `git worktree remove`
168
+ :cite[scripts/teardown-agent-worktree.sh:50]. **Never** call `git worktree
169
+ remove` by hand on an agent worktree before harvesting — use the script, which
170
+ enforces the ordering.
171
+ :::
172
+
173
+ The script's full sequence:
174
+
175
+ 1. **Resolve the primary repo** from the worktree path via
176
+ `git -C <path> rev-parse --git-common-dir`
177
+ :cite[scripts/teardown-agent-worktree.sh:27], so it works run from anywhere.
178
+ 2. **Read the worktree's branch name** before anything is removed
179
+ :cite[scripts/teardown-agent-worktree.sh:37].
180
+ 3. **Harvest the ledger** (fail-soft — a harvest failure prints a warning but
181
+ does not abort the removal) :cite[scripts/teardown-agent-worktree.sh:42].
182
+ 4. **Remove the worktree** :cite[scripts/teardown-agent-worktree.sh:50].
183
+ 5. **Delete the workspace branch — with guards.**
184
+
185
+ ### The branch-deletion guards
186
+
187
+ The script refuses to delete a branch that would harm the primary repo:
188
+
189
+ - It never deletes the branch the **primary repo currently has checked out**
190
+ :cite[scripts/teardown-agent-worktree.sh:72].
191
+ - It never deletes the repo's **default branch** (`main`/`master`, or whatever
192
+ `origin/HEAD` points at) :cite[scripts/teardown-agent-worktree.sh:74]. This
193
+ matters because `gh pr merge --delete-branch` often leaves the merged worktree
194
+ sitting on the default branch — deleting it here would nuke local `main`.
195
+ - Otherwise it runs `git branch -D <branch>`
196
+ :cite[scripts/teardown-agent-worktree.sh:77], and if that fails (checked out
197
+ elsewhere, already gone) it just notes it and exits cleanly.
198
+
199
+ ### Recovering orphaned ledgers — `--recover`
200
+
201
+ `scaffold observe harvest --recover` only **finalizes already-harvested**
202
+ active-archive entries whose worktree is no longer live. Run it from the primary
203
+ repo: it lists the live worktrees, then rotates any active-archive entry whose
204
+ worktree has gone away into the monthly archive. It does **not** recover a ledger
205
+ that was never harvested — if a worktree's `.scaffold/activity.jsonl` was deleted
206
+ with the worktree before any harvest ran (`git worktree remove` by hand, a deleted
207
+ directory, a crashed machine), that ledger is gone and cannot be recovered. This
208
+ is why teardown must always harvest first. See the
209
+ [observability guide](../observability/index.md) for the active-vs-monthly
210
+ archive mechanics.
211
+
212
+ `scaffold observe harvest` must run from the **primary** repo, not from inside a
213
+ worktree — the CLI rejects a worktree primary root
214
+ :cite[src/cli/commands/observe.ts:191] and warns when the target worktree has no
215
+ `identity.json` to key the archive on :cite[src/cli/commands/observe.ts:194].
216
+
217
+ :::callout{type=note}
218
+ **Empty ledgers are fine.** A worktree that never recorded an event has no
219
+ `activity.jsonl`; harvest is a clean no-op and teardown proceeds normally.
220
+ :::
221
+
222
+ ## Resuming after a break
223
+
224
+ Coming back to parallel work — a context reset, a paused session, the next
225
+ morning — does **not** mean re-running setup. The worktree and its
226
+ `identity.json` persist on disk. Instead:
227
+
228
+ 1. Return to the agent's worktree directory (`../<repo>-<agent>`).
229
+ 2. Run **`multi-agent-resume <agent-name>`** (or `single-agent-resume` for the
230
+ non-worktree case). It verifies the worktree environment, syncs with `main`,
231
+ reconciles task status against any PRs merged while you were away, and
232
+ resumes the TDD loop from wherever the previous session stopped.
233
+
234
+ Only run `setup-agent-worktree.sh` again if the worktree itself was torn down.
235
+ Re-running it on a live worktree is harmless — the identity write is skipped
236
+ when `identity.json` already exists — but it does no useful work.
237
+
238
+ ## See also
239
+
240
+ - [Build Observability](../observability/index.md) — the ledger, harvest, and
241
+ `--recover` archive mechanics this guide defers to.
242
+ - `docs/git-workflow.md` §7 — the canonical worktree commands and conflict
243
+ rules :cite[docs/git-workflow.md:150]{mode=advisory}.
@@ -0,0 +1 @@
1
+ <svg id="my-svg" width="100%" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="flowchart" style="max-width: 2427.98px; background-color: transparent;" viewBox="0 0 2427.984375 825.7999877929688" role="graphics-document document" aria-roledescription="flowchart-v2"><style>#my-svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#000000;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#my-svg .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#my-svg .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#my-svg .error-icon{fill:#552222;}#my-svg .error-text{fill:#552222;stroke:#552222;}#my-svg .edge-thickness-normal{stroke-width:1px;}#my-svg .edge-thickness-thick{stroke-width:3.5px;}#my-svg .edge-pattern-solid{stroke-dasharray:0;}#my-svg .edge-thickness-invisible{stroke-width:0;fill:none;}#my-svg .edge-pattern-dashed{stroke-dasharray:3;}#my-svg .edge-pattern-dotted{stroke-dasharray:2;}#my-svg .marker{fill:#666;stroke:#666;}#my-svg .marker.cross{stroke:#666;}#my-svg svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#my-svg p{margin:0;}#my-svg .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#000000;}#my-svg .cluster-label text{fill:#333;}#my-svg .cluster-label span{color:#333;}#my-svg .cluster-label span p{background-color:transparent;}#my-svg .label text,#my-svg span{fill:#000000;color:#000000;}#my-svg .node rect,#my-svg .node circle,#my-svg .node ellipse,#my-svg .node polygon,#my-svg .node path{fill:#eee;stroke:#999;stroke-width:1px;}#my-svg .rough-node .label text,#my-svg .node .label text,#my-svg .image-shape .label,#my-svg .icon-shape .label{text-anchor:middle;}#my-svg .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#my-svg .rough-node .label,#my-svg .node .label,#my-svg .image-shape .label,#my-svg .icon-shape .label{text-align:center;}#my-svg .node.clickable{cursor:pointer;}#my-svg .root .anchor path{fill:#666!important;stroke-width:0;stroke:#666;}#my-svg .arrowheadPath{fill:#333333;}#my-svg .edgePath .path{stroke:#666;stroke-width:1px;}#my-svg .flowchart-link{stroke:#666;fill:none;}#my-svg .edgeLabel{background-color:white;text-align:center;}#my-svg .edgeLabel p{background-color:white;}#my-svg .edgeLabel rect{opacity:0.5;background-color:white;fill:white;}#my-svg .labelBkg{background-color:rgba(255, 255, 255, 0.5);}#my-svg .cluster rect{fill:hsl(0, 0%, 98.9215686275%);stroke:#707070;stroke-width:1px;}#my-svg .cluster text{fill:#333;}#my-svg .cluster span{color:#333;}#my-svg div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(-160, 0%, 93.3333333333%);border:1px solid #707070;border-radius:2px;pointer-events:none;z-index:100;}#my-svg .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#000000;}#my-svg rect.text{fill:none;stroke-width:0;}#my-svg .icon-shape,#my-svg .image-shape{background-color:white;text-align:center;}#my-svg .icon-shape p,#my-svg .image-shape p{background-color:white;padding:2px;}#my-svg .icon-shape .label rect,#my-svg .image-shape .label rect{opacity:0.5;background-color:white;fill:white;}#my-svg .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#my-svg .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#my-svg .node .neo-node{stroke:#999;}#my-svg [data-look="neo"].node rect,#my-svg [data-look="neo"].cluster rect,#my-svg [data-look="neo"].node polygon{stroke:url(#my-svg-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#my-svg [data-look="neo"].node path{stroke:url(#my-svg-gradient);stroke-width:1px;}#my-svg [data-look="neo"].node .outer-path{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#my-svg [data-look="neo"].node .neo-line path{stroke:#999;filter:none;}#my-svg [data-look="neo"].node circle{stroke:url(#my-svg-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#my-svg [data-look="neo"].node circle .state-start{fill:#000000;}#my-svg [data-look="neo"].icon-shape .icon{fill:url(#my-svg-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#my-svg [data-look="neo"].icon-shape .icon-neo path{stroke:url(#my-svg-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#my-svg :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}</style><g><marker id="my-svg_flowchart-v2-pointEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-pointStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="4.5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"><path d="M 0 5 L 10 10 L 10 0 z" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-pointEnd-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="11.5" refY="7" markerUnits="userSpaceOnUse" markerWidth="10.5" markerHeight="14" orient="auto"><path d="M 0 0 L 11.5 7 L 0 14 z" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-pointStart-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="1" refY="7" markerUnits="userSpaceOnUse" markerWidth="11.5" markerHeight="14" orient="auto"><polygon points="0,7 11.5,14 11.5,0" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-circleEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="11" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-circleStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-1" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-circleEnd-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refY="5" refX="12.25" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-circleStart-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-2" refY="5" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-crossEnd" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="12" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width: 2; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-crossStart" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="-1" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width: 2; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-crossEnd-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="17.7" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"><path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width: 2.5;"/></marker><marker id="my-svg_flowchart-v2-crossStart-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="-3.5" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"><path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width: 2.5; stroke-dasharray: 1, 0;"/></marker><g class="root"><g class="clusters"><g class="cluster" id="my-svg-render" data-look="classic"><rect style="" x="400.88671875" y="701.1999969482422" width="949.5" height="116.5999984741211"/><g class="cluster-label" transform="translate(851.86328125, 701.1999969482422)"><g><rect class="background" style="stroke: none"/><text y="-10.1" style=""><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">render</tspan></tspan></text></g></g></g><g class="cluster" id="my-svg-adapters" data-look="classic"><rect style="" x="566.125" y="149.5999984741211" width="1853.859375" height="116.5999984741211"/><g class="cluster-label" transform="translate(1461.8515625, 149.5999984741211)"><g><rect class="background" style="stroke: none"/><text y="-10.1" style=""><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">adapters</tspan></tspan></text></g></g></g><g class="cluster" id="my-svg-write" data-look="classic"><rect style="" x="8" y="8" width="538.125" height="258.1999969482422"/><g class="cluster-label" transform="translate(258.1796875, 8)"><g><rect class="background" style="stroke: none"/><text y="-10.1" style=""><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">write</tspan></tspan></text></g></g></g></g><g class="edgePaths"><path d="M169.445,99.6L169.445,103.767C169.445,107.933,169.445,116.267,169.445,124.6C169.445,132.933,169.445,141.267,186.561,149.956C203.677,158.645,237.909,167.691,255.025,172.213L272.141,176.736" id="my-svg-L_LW_LF_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_LW_LF_0" data-points="W3sieCI6MTY5LjQ0NTMxMjUsInkiOjk5LjU5OTk5ODQ3NDEyMTF9LHsieCI6MTY5LjQ0NTMxMjUsInkiOjEyNC41OTk5OTg0NzQxMjExfSx7IngiOjE2OS40NDUzMTI1LCJ5IjoxNDkuNTk5OTk4NDc0MTIxMX0seyJ4IjoyNzYuMDA3ODEyNSwieSI6MTc3Ljc1ODA2NjE2MjcxMjM3fV0=" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M418.023,99.6L418.023,103.767C418.023,107.933,418.023,116.267,418.023,124.6C418.023,132.933,418.023,141.267,416.314,148.999C414.605,156.731,411.187,163.862,409.478,167.427L407.769,170.993" id="my-svg-L_HV_LF_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_HV_LF_0" data-points="W3sieCI6NDE4LjAyMzQzNzUsInkiOjk5LjU5OTk5ODQ3NDEyMTF9LHsieCI6NDE4LjAyMzQzNzUsInkiOjEyNC41OTk5OTg0NzQxMjExfSx7IngiOjQxOC4wMjM0Mzc1LCJ5IjoxNDkuNTk5OTk4NDc0MTIxMX0seyJ4Ijo0MDYuMDQwMDI3MTgwMjI5NiwieSI6MTc0LjU5OTk5ODQ3NDEyMTF9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M390.078,241.2L390.078,245.367C390.078,249.533,390.078,257.867,390.078,266.2C390.078,274.533,390.078,282.867,472.673,297.313C555.268,311.759,720.458,332.317,803.053,342.597L885.648,352.876" id="my-svg-L_LF_SY_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_LF_SY_0" data-points="W3sieCI6MzkwLjA3ODEyNSwieSI6MjQxLjE5OTk5Njk0ODI0MjJ9LHsieCI6MzkwLjA3ODEyNSwieSI6MjY2LjE5OTk5Njk0ODI0MjJ9LHsieCI6MzkwLjA3ODEyNSwieSI6MjkxLjE5OTk5Njk0ODI0MjJ9LHsieCI6ODg5LjYxNzE4NzUsInkiOjM1My4zNzAwOTI0ODIxMjgzN31d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M681.617,232.4L681.617,238.033C681.617,243.667,681.617,254.933,681.617,264.733C681.617,274.533,681.617,282.867,715.635,295.145C749.654,307.423,817.69,323.645,851.708,331.756L885.726,339.868" id="my-svg-L_A1_SY_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_A1_SY_0" data-points="W3sieCI6NjgxLjYxNzE4NzUsInkiOjIzMi4zOTk5OTc3MTExODE2NH0seyJ4Ijo2ODEuNjE3MTg3NSwieSI6MjY2LjE5OTk5Njk0ODI0MjJ9LHsieCI6NjgxLjYxNzE4NzUsInkiOjI5MS4xOTk5OTY5NDgyNDIyfSx7IngiOjg4OS42MTcxODc1LCJ5IjozNDAuNzk1MzI0OTc5Mjg4OX1d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M891.523,232.4L891.523,238.033C891.523,243.667,891.523,254.933,891.523,264.733C891.523,274.533,891.523,282.867,896.929,290.818C902.334,298.769,913.145,306.337,918.551,310.122L923.956,313.906" id="my-svg-L_A2_SY_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_A2_SY_0" data-points="W3sieCI6ODkxLjUyMzQzNzUsInkiOjIzMi4zOTk5OTc3MTExODE2NH0seyJ4Ijo4OTEuNTIzNDM3NSwieSI6MjY2LjE5OTk5Njk0ODI0MjJ9LHsieCI6ODkxLjUyMzQzNzUsInkiOjI5MS4xOTk5OTY5NDgyNDIyfSx7IngiOjkyNy4yMzI5NDM1MzQ0MDg3LCJ5IjozMTYuMTk5OTk2OTQ4MjQyMn1d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1108.352,232.4L1108.352,238.033C1108.352,243.667,1108.352,254.933,1108.352,264.733C1108.352,274.533,1108.352,282.867,1102.946,290.818C1097.541,298.769,1086.73,306.337,1081.324,310.122L1075.919,313.906" id="my-svg-L_A3_SY_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_A3_SY_0" data-points="W3sieCI6MTEwOC4zNTE1NjI1LCJ5IjoyMzIuMzk5OTk3NzExMTgxNjR9LHsieCI6MTEwOC4zNTE1NjI1LCJ5IjoyNjYuMTk5OTk2OTQ4MjQyMn0seyJ4IjoxMTA4LjM1MTU2MjUsInkiOjI5MS4xOTk5OTY5NDgyNDIyfSx7IngiOjEwNzIuNjQyMDU2NDY1NTkxNCwieSI6MzE2LjE5OTk5Njk0ODI0MjJ9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1334.938,232.4L1334.938,238.033C1334.938,243.667,1334.938,254.933,1334.938,264.733C1334.938,274.533,1334.938,282.867,1298.141,295.37C1261.345,307.874,1187.752,324.547,1150.955,332.884L1114.159,341.221" id="my-svg-L_A4_SY_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_A4_SY_0" data-points="W3sieCI6MTMzNC45Mzc1LCJ5IjoyMzIuMzk5OTk3NzExMTgxNjR9LHsieCI6MTMzNC45Mzc1LCJ5IjoyNjYuMTk5OTk2OTQ4MjQyMn0seyJ4IjoxMzM0LjkzNzUsInkiOjI5MS4xOTk5OTY5NDgyNDIyfSx7IngiOjExMTAuMjU3ODEyNSwieSI6MzQyLjEwNTAzNzYxNzE0OTY2fV0=" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1562.32,232.4L1562.32,238.033C1562.32,243.667,1562.32,254.933,1562.32,264.733C1562.32,274.533,1562.32,282.867,1487.637,297.113C1412.954,311.359,1263.588,331.517,1188.905,341.597L1114.222,351.676" id="my-svg-L_A5_SY_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_A5_SY_0" data-points="W3sieCI6MTU2Mi4zMjAzMTI1LCJ5IjoyMzIuMzk5OTk3NzExMTgxNjR9LHsieCI6MTU2Mi4zMjAzMTI1LCJ5IjoyNjYuMTk5OTk2OTQ4MjQyMn0seyJ4IjoxNTYyLjMyMDMxMjUsInkiOjI5MS4xOTk5OTY5NDgyNDIyfSx7IngiOjExMTAuMjU3ODEyNSwieSI6MzUyLjIxMTAwODgwMjAwOTc2fV0=" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M999.938,418L999.938,422.167C999.938,426.333,999.938,434.667,999.938,442.333C999.938,450,999.938,457,999.938,460.5L999.938,464" id="my-svg-L_SY_API_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_SY_API_0" data-points="W3sieCI6OTk5LjkzNzUsInkiOjQxOH0seyJ4Ijo5OTkuOTM3NSwieSI6NDQzfSx7IngiOjk5OS45Mzc1LCJ5Ijo0Njh9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1109.859,519.139L1151.412,525.882C1192.965,532.626,1276.07,546.113,1317.623,556.356C1359.176,566.6,1359.176,573.6,1359.176,577.1L1359.176,580.6" id="my-svg-L_API_LENS_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_API_LENS_0" data-points="W3sieCI6MTEwOS44NTkzNzUsInkiOjUxOS4xMzg5ODEyMjUxMDkxfSx7IngiOjEzNTkuMTc1NzgxMjUsInkiOjU1OS41OTk5OTg0NzQxMjExfSx7IngiOjEzNTkuMTc1NzgxMjUsInkiOjU4NC41OTk5OTg0NzQxMjExfV0=" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1437.91,651.2L1447.761,655.367C1457.613,659.533,1477.316,667.867,1487.168,676.2C1497.02,684.533,1497.02,692.867,1497.02,700.533C1497.02,708.2,1497.02,715.2,1497.02,718.7L1497.02,722.2" id="my-svg-L_LENS_FIX_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_LENS_FIX_0" data-points="W3sieCI6MTQzNy45MDk4NjA2NjUxNDQyLCJ5Ijo2NTEuMTk5OTk2OTQ4MjQyMn0seyJ4IjoxNDk3LjAxOTUzMTI1LCJ5Ijo2NzYuMTk5OTk2OTQ4MjQyMn0seyJ4IjoxNDk3LjAxOTUzMTI1LCJ5Ijo3MDEuMTk5OTk2OTQ4MjQyMn0seyJ4IjoxNDk3LjAxOTUzMTI1LCJ5Ijo3MjYuMTk5OTk2OTQ4MjQyMn1d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M890.016,514.642L828.281,522.135C766.546,529.628,643.076,544.614,581.34,561.824C519.605,579.033,519.605,598.467,519.605,617.9C519.605,637.333,519.605,656.767,519.605,670.65C519.605,684.533,519.605,692.867,519.605,702C519.605,711.133,519.605,721.067,519.605,726.033L519.605,731" id="my-svg-L_API_R1_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_API_R1_0" data-points="W3sieCI6ODkwLjAxNTYyNSwieSI6NTE0LjY0MTY5NzkxOTg2MzZ9LHsieCI6NTE5LjYwNTQ2ODc1LCJ5Ijo1NTkuNTk5OTk4NDc0MTIxMX0seyJ4Ijo1MTkuNjA1NDY4NzUsInkiOjYxNy44OTk5OTc3MTExODE2fSx7IngiOjUxOS42MDU0Njg3NSwieSI6Njc2LjE5OTk5Njk0ODI0MjJ9LHsieCI6NTE5LjYwNTQ2ODc1LCJ5Ijo3MDEuMTk5OTk2OTQ4MjQyMn0seyJ4Ijo1MTkuNjA1NDY4NzUsInkiOjczNC45OTk5OTYxODUzMDI3fV0=" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M890.016,527.466L867.516,532.821C845.017,538.177,800.018,548.889,777.519,563.961C755.02,579.033,755.02,598.467,755.02,617.9C755.02,637.333,755.02,656.767,755.02,670.65C755.02,684.533,755.02,692.867,755.02,702C755.02,711.133,755.02,721.067,755.02,726.033L755.02,731" id="my-svg-L_API_R2_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_API_R2_0" data-points="W3sieCI6ODkwLjAxNTYyNSwieSI6NTI3LjQ2NTY3OTM2ODAxNzd9LHsieCI6NzU1LjAxOTUzMTI1LCJ5Ijo1NTkuNTk5OTk4NDc0MTIxMX0seyJ4Ijo3NTUuMDE5NTMxMjUsInkiOjYxNy44OTk5OTc3MTExODE2fSx7IngiOjc1NS4wMTk1MzEyNSwieSI6Njc2LjE5OTk5Njk0ODI0MjJ9LHsieCI6NzU1LjAxOTUzMTI1LCJ5Ijo3MDEuMTk5OTk2OTQ4MjQyMn0seyJ4Ijo3NTUuMDE5NTMxMjUsInkiOjczNC45OTk5OTYxODUzMDI3fV0=" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1004.969,534.6L1005.598,538.767C1006.228,542.933,1007.487,551.267,1008.117,565.15C1008.746,579.033,1008.746,598.467,1008.746,617.9C1008.746,637.333,1008.746,656.767,1008.746,670.65C1008.746,684.533,1008.746,692.867,1008.746,702C1008.746,711.133,1008.746,721.067,1008.746,726.033L1008.746,731" id="my-svg-L_API_R3_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_API_R3_0" data-points="W3sieCI6MTAwNC45Njg4MjM2NTMzOTkxLCJ5Ijo1MzQuNTk5OTk4NDc0MTIxMX0seyJ4IjoxMDA4Ljc0NjA5Mzc1LCJ5Ijo1NTkuNTk5OTk4NDc0MTIxMX0seyJ4IjoxMDA4Ljc0NjA5Mzc1LCJ5Ijo2MTcuODk5OTk3NzExMTgxNn0seyJ4IjoxMDA4Ljc0NjA5Mzc1LCJ5Ijo2NzYuMTk5OTk2OTQ4MjQyMn0seyJ4IjoxMDA4Ljc0NjA5Mzc1LCJ5Ijo3MDEuMTk5OTk2OTQ4MjQyMn0seyJ4IjoxMDA4Ljc0NjA5Mzc1LCJ5Ijo3MzQuOTk5OTk2MTg1MzAyN31d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1290.009,651.2L1281.355,655.367C1272.7,659.533,1255.391,667.867,1246.737,676.2C1238.082,684.533,1238.082,692.867,1238.082,702C1238.082,711.133,1238.082,721.067,1238.082,726.033L1238.082,731" id="my-svg-L_LENS_R4_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_LENS_R4_0" data-points="W3sieCI6MTI5MC4wMDkwMjU5MjYxMDksInkiOjY1MS4xOTk5OTY5NDgyNDIyfSx7IngiOjEyMzguMDgyMDMxMjUsInkiOjY3Ni4xOTk5OTY5NDgyNDIyfSx7IngiOjEyMzguMDgyMDMxMjUsInkiOjcwMS4xOTk5OTY5NDgyNDIyfSx7IngiOjEyMzguMDgyMDMxMjUsInkiOjczNC45OTk5OTYxODUzMDI3fV0=" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/></g><g class="edgeLabels"><g class="edgeLabel"><g class="label" data-id="L_LW_LF_0" transform="translate(0, 0)"><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"/></text></g></g><g><rect class="background" style="stroke: none"/></g><g class="edgeLabel"><g class="label" data-id="L_HV_LF_0" transform="translate(0, 0)"><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"/></text></g></g><g><rect class="background" style="stroke: none"/></g><g class="edgeLabel"><g class="label" data-id="L_LF_SY_0" transform="translate(0, 0)"><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"/></text></g></g><g><rect class="background" style="stroke: none"/></g><g class="edgeLabel"><g class="label" data-id="L_A1_SY_0" transform="translate(0, 0)"><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"/></text></g></g><g><rect class="background" style="stroke: none"/></g><g class="edgeLabel"><g class="label" data-id="L_A2_SY_0" transform="translate(0, 0)"><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"/></text></g></g><g><rect class="background" style="stroke: none"/></g><g class="edgeLabel"><g class="label" data-id="L_A3_SY_0" transform="translate(0, 0)"><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"/></text></g></g><g><rect class="background" style="stroke: none"/></g><g class="edgeLabel"><g class="label" data-id="L_A4_SY_0" transform="translate(0, 0)"><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"/></text></g></g><g><rect class="background" style="stroke: none"/></g><g class="edgeLabel"><g class="label" data-id="L_A5_SY_0" transform="translate(0, 0)"><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"/></text></g></g><g><rect class="background" style="stroke: none"/></g><g class="edgeLabel"><g class="label" data-id="L_SY_API_0" transform="translate(0, 0)"><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"/></text></g></g><g><rect class="background" style="stroke: none"/></g><g class="edgeLabel"><g class="label" data-id="L_API_LENS_0" transform="translate(0, 0)"><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"/></text></g></g><g><rect class="background" style="stroke: none"/></g><g class="edgeLabel"><g class="label" data-id="L_LENS_FIX_0" transform="translate(0, 0)"><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"/></text></g></g><g><rect class="background" style="stroke: none"/></g><g class="edgeLabel"><g class="label" data-id="L_API_R1_0" transform="translate(0, 0)"><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"/></text></g></g><g><rect class="background" style="stroke: none"/></g><g class="edgeLabel"><g class="label" data-id="L_API_R2_0" transform="translate(0, 0)"><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"/></text></g></g><g><rect class="background" style="stroke: none"/></g><g class="edgeLabel"><g class="label" data-id="L_API_R3_0" transform="translate(0, 0)"><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"/></text></g></g><g><rect class="background" style="stroke: none"/></g><g class="edgeLabel"><g class="label" data-id="L_LENS_R4_0" transform="translate(0, 0)"><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"/></text></g></g><g><rect class="background" style="stroke: none"/></g></g><g class="nodes"><g class="node default" id="my-svg-flowchart-LW-0" data-look="classic" transform="translate(169.4453125, 66.29999923706055)"><rect class="basic label-container" style="" x="-126.4453125" y="-33.29999923706055" width="252.890625" height="66.5999984741211"/><g class="label" style="" transform="translate(0, -18.299999237060547)"><rect/><g><rect class="background" style="stroke: none"/><text y="-10.1" style=""><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">ledger</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> writer</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">ledger-writer.ts</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> ·</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> 4</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> KiB</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> cap</tspan></tspan></text></g></g></g><g class="node default" id="my-svg-flowchart-HV-1" data-look="classic" transform="translate(418.0234375, 66.29999923706055)"><rect class="basic label-container" style="" x="-72.1328125" y="-33.29999923706055" width="144.265625" height="66.5999984741211"/><g class="label" style="" transform="translate(0, -18.299999237060547)"><rect/><g><rect class="background" style="stroke: none"/><text y="-10.1" style=""><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">harvester</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">harvester.ts</tspan></tspan></text></g></g></g><g class="node default" id="my-svg-flowchart-LF-2" data-look="classic" transform="translate(390.078125, 207.89999771118164)"><rect class="basic label-container" style="" x="-114.0703125" y="-33.29999923706055" width="228.140625" height="66.5999984741211"/><g class="label" style="" transform="translate(0, -18.299999237060547)"><rect/><g><rect class="background" style="stroke: none"/><text y="-10.1" style=""><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">.scaffold/activity.jsonl</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">append-only</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> ·</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> redacted</tspan></tspan></text></g></g></g><g class="node default" id="my-svg-flowchart-A1-3" data-look="classic" transform="translate(681.6171875, 207.89999771118164)"><rect class="basic label-container" style="" x="-80.4921875" y="-24.5" width="160.984375" height="49"/><g class="label" style="" transform="translate(0, -9.5)"><rect/><g><rect class="background" style="stroke: none"/><text y="-10.1" style=""><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">git</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> ·</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> priority</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> 3</tspan></tspan></text></g></g></g><g class="node default" id="my-svg-flowchart-A2-4" data-look="classic" transform="translate(891.5234375, 207.89999771118164)"><rect class="basic label-container" style="" x="-79.4140625" y="-24.5" width="158.828125" height="49"/><g class="label" style="" transform="translate(0, -9.5)"><rect/><g><rect class="background" style="stroke: none"/><text y="-10.1" style=""><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">gh</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> ·</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> priority</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> 2</tspan></tspan></text></g></g></g><g class="node default" id="my-svg-flowchart-A3-5" data-look="classic" transform="translate(1108.3515625, 207.89999771118164)"><rect class="basic label-container" style="" x="-87.4140625" y="-24.5" width="174.828125" height="49"/><g class="label" style="" transform="translate(0, -9.5)"><rect/><g><rect class="background" style="stroke: none"/><text y="-10.1" style=""><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">mmr</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> ·</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> priority</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> 1</tspan></tspan></text></g></g></g><g class="node default" id="my-svg-flowchart-A4-6" data-look="classic" transform="translate(1334.9375, 207.89999771118164)"><rect class="basic label-container" style="" x="-89.171875" y="-24.5" width="178.34375" height="49"/><g class="label" style="" transform="translate(0, -9.5)"><rect/><g><rect class="background" style="stroke: none"/><text y="-10.1" style=""><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">state</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> ·</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> priority</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> 4</tspan></tspan></text></g></g></g><g class="node default" id="my-svg-flowchart-A5-7" data-look="classic" transform="translate(1562.3203125, 207.89999771118164)"><rect class="basic label-container" style="" x="-88.2109375" y="-24.5" width="176.421875" height="49"/><g class="label" style="" transform="translate(0, -9.5)"><rect/><g><rect class="background" style="stroke: none"/><text y="-10.1" style=""><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">tests</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> ·</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> priority</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> 5</tspan></tspan></text></g></g></g><g class="node default" id="my-svg-flowchart-A6-8" data-look="classic" transform="translate(1808.0546875, 207.89999771118164)"><rect class="basic label-container" style="" x="-107.5234375" y="-24.5" width="215.046875" height="49"/><g class="label" style="" transform="translate(0, -9.5)"><rect/><g><rect class="background" style="stroke: none"/><text y="-10.1" style=""><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">pipeline_docs</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> ·</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> probe</tspan></tspan></text></g></g></g><g class="node default" id="my-svg-flowchart-A7-9" data-look="classic" transform="translate(2044.7421875, 207.89999771118164)"><rect class="basic label-container" style="" x="-79.1640625" y="-24.5" width="158.328125" height="49"/><g class="label" style="" transform="translate(0, -9.5)"><rect/><g><rect class="background" style="stroke: none"/><text y="-10.1" style=""><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">beads</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> ·</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> probe</tspan></tspan></text></g></g></g><g class="node default" id="my-svg-flowchart-A8-10" data-look="classic" transform="translate(2279.4453125, 207.89999771118164)"><rect class="basic label-container" style="" x="-105.5390625" y="-24.5" width="211.078125" height="49"/><g class="label" style="" transform="translate(0, -9.5)"><rect/><g><rect class="background" style="stroke: none"/><text y="-10.1" style=""><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">audit_history</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> ·</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> probe</tspan></tspan></text></g></g></g><g class="node default" id="my-svg-flowchart-SY-11" data-look="classic" transform="translate(999.9375, 367.0999984741211)"><rect class="basic label-container" style="" x="-110.3203125" y="-50.900001525878906" width="220.640625" height="101.80000305175781"/><g class="label" style="" transform="translate(0, -35.900001525878906)"><rect/><g><rect class="background" style="stroke: none"/><text y="-10.1" style=""><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">synthesizer</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">composeReplay</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> ·</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="2.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">correlation_id</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> dedup</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> ·</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="3.2em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">source</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> priority</tspan></tspan></text></g></g></g><g class="node default" id="my-svg-flowchart-API-12" data-look="classic" transform="translate(999.9375, 501.29999923706055)"><rect class="basic label-container" style="" x="-109.921875" y="-33.29999923706055" width="219.84375" height="66.5999984741211"/><g class="label" style="" transform="translate(0, -18.299999237060547)"><rect/><g><rect class="background" style="stroke: none"/><text y="-10.1" style=""><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">engine</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> API</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">runAudit</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> ·</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> runProgress</tspan></tspan></text></g></g></g><g class="node default" id="my-svg-flowchart-LENS-13" data-look="classic" transform="translate(1359.17578125, 617.8999977111816)"><rect class="basic label-container" style="" x="-98.4140625" y="-33.29999923706055" width="196.828125" height="66.5999984741211"/><g class="label" style="" transform="translate(0, -18.299999237060547)"><rect/><g><rect class="background" style="stroke: none"/><text y="-10.1" style=""><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">checks</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> —</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> lenses</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> A–I</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">registry</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> ·</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> runner</tspan></tspan></text></g></g></g><g class="node default" id="my-svg-flowchart-FIX-14" data-look="classic" transform="translate(1497.01953125, 759.4999961853027)"><rect class="basic label-container" style="" x="-111.6328125" y="-33.29999923706055" width="223.265625" height="66.5999984741211"/><g class="label" style="" transform="translate(0, -18.299999237060547)"><rect/><g><rect class="background" style="stroke: none"/><text y="-10.1" style=""><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">--fix</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> loop</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">plan</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> ·</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> dispatch</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> ·</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> verify</tspan></tspan></text></g></g></g><g class="node default" id="my-svg-flowchart-R1-15" data-look="classic" transform="translate(519.60546875, 759.4999961853027)"><rect class="basic label-container" style="" x="-83.71875" y="-24.5" width="167.4375" height="49"/><g class="label" style="" transform="translate(0, -9.5)"><rect/><g><rect class="background" style="stroke: none"/><text y="-10.1" style=""><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">terminal</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> ·</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> ANSI</tspan></tspan></text></g></g></g><g class="node default" id="my-svg-flowchart-R2-16" data-look="classic" transform="translate(755.01953125, 759.4999961853027)"><rect class="basic label-container" style="" x="-101.6953125" y="-24.5" width="203.390625" height="49"/><g class="label" style="" transform="translate(0, -9.5)"><rect/><g><rect class="background" style="stroke: none"/><text y="-10.1" style=""><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">markdown</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> +</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> sidecar</tspan></tspan></text></g></g></g><g class="node default" id="my-svg-flowchart-R3-17" data-look="classic" transform="translate(1008.74609375, 759.4999961853027)"><rect class="basic label-container" style="" x="-102.03125" y="-24.5" width="204.0625" height="49"/><g class="label" style="" transform="translate(0, -9.5)"><rect/><g><rect class="background" style="stroke: none"/><text y="-10.1" style=""><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">dashboard</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> fragment</tspan></tspan></text></g></g></g><g class="node default" id="my-svg-flowchart-R4-18" data-look="classic" transform="translate(1238.08203125, 759.4999961853027)"><rect class="basic label-container" style="" x="-77.3046875" y="-24.5" width="154.609375" height="49"/><g class="label" style="" transform="translate(0, -9.5)"><rect/><g><rect class="background" style="stroke: none"/><text y="-10.1" style=""><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">mmr-findings</tspan></tspan></text></g></g></g></g></g></g><defs><filter id="my-svg-drop-shadow" height="130%" width="130%"><feDropShadow dx="4" dy="4" stdDeviation="0" flood-opacity="0.06" flood-color="#000000"/></filter></defs><defs><filter id="my-svg-drop-shadow-small" height="150%" width="150%"><feDropShadow dx="2" dy="2" stdDeviation="0" flood-opacity="0.06" flood-color="#000000"/></filter></defs><linearGradient id="my-svg-gradient" gradientUnits="objectBoundingBox" x1="0%" y1="0%" x2="100%" y2="0%"><stop offset="0%" stop-color="hsl(0, 0%, 83.3333333333%)" stop-opacity="1"/><stop offset="100%" stop-color="hsl(0, 0%, 88.9215686275%)" stop-opacity="1"/></linearGradient></svg>
@@ -0,0 +1 @@
1
+ <svg id="my-svg" width="100%" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="flowchart" style="max-width: 1273.34px; background-color: transparent;" viewBox="0 0 1273.34375 190.39999389648438" role="graphics-document document" aria-roledescription="flowchart-v2"><style>#my-svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#000000;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#my-svg .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#my-svg .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#my-svg .error-icon{fill:#552222;}#my-svg .error-text{fill:#552222;stroke:#552222;}#my-svg .edge-thickness-normal{stroke-width:1px;}#my-svg .edge-thickness-thick{stroke-width:3.5px;}#my-svg .edge-pattern-solid{stroke-dasharray:0;}#my-svg .edge-thickness-invisible{stroke-width:0;fill:none;}#my-svg .edge-pattern-dashed{stroke-dasharray:3;}#my-svg .edge-pattern-dotted{stroke-dasharray:2;}#my-svg .marker{fill:#666;stroke:#666;}#my-svg .marker.cross{stroke:#666;}#my-svg svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#my-svg p{margin:0;}#my-svg .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#000000;}#my-svg .cluster-label text{fill:#333;}#my-svg .cluster-label span{color:#333;}#my-svg .cluster-label span p{background-color:transparent;}#my-svg .label text,#my-svg span{fill:#000000;color:#000000;}#my-svg .node rect,#my-svg .node circle,#my-svg .node ellipse,#my-svg .node polygon,#my-svg .node path{fill:#eee;stroke:#999;stroke-width:1px;}#my-svg .rough-node .label text,#my-svg .node .label text,#my-svg .image-shape .label,#my-svg .icon-shape .label{text-anchor:middle;}#my-svg .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#my-svg .rough-node .label,#my-svg .node .label,#my-svg .image-shape .label,#my-svg .icon-shape .label{text-align:center;}#my-svg .node.clickable{cursor:pointer;}#my-svg .root .anchor path{fill:#666!important;stroke-width:0;stroke:#666;}#my-svg .arrowheadPath{fill:#333333;}#my-svg .edgePath .path{stroke:#666;stroke-width:1px;}#my-svg .flowchart-link{stroke:#666;fill:none;}#my-svg .edgeLabel{background-color:white;text-align:center;}#my-svg .edgeLabel p{background-color:white;}#my-svg .edgeLabel rect{opacity:0.5;background-color:white;fill:white;}#my-svg .labelBkg{background-color:rgba(255, 255, 255, 0.5);}#my-svg .cluster rect{fill:hsl(0, 0%, 98.9215686275%);stroke:#707070;stroke-width:1px;}#my-svg .cluster text{fill:#333;}#my-svg .cluster span{color:#333;}#my-svg div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(-160, 0%, 93.3333333333%);border:1px solid #707070;border-radius:2px;pointer-events:none;z-index:100;}#my-svg .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#000000;}#my-svg rect.text{fill:none;stroke-width:0;}#my-svg .icon-shape,#my-svg .image-shape{background-color:white;text-align:center;}#my-svg .icon-shape p,#my-svg .image-shape p{background-color:white;padding:2px;}#my-svg .icon-shape .label rect,#my-svg .image-shape .label rect{opacity:0.5;background-color:white;fill:white;}#my-svg .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#my-svg .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#my-svg .node .neo-node{stroke:#999;}#my-svg [data-look="neo"].node rect,#my-svg [data-look="neo"].cluster rect,#my-svg [data-look="neo"].node polygon{stroke:url(#my-svg-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#my-svg [data-look="neo"].node path{stroke:url(#my-svg-gradient);stroke-width:1px;}#my-svg [data-look="neo"].node .outer-path{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#my-svg [data-look="neo"].node .neo-line path{stroke:#999;filter:none;}#my-svg [data-look="neo"].node circle{stroke:url(#my-svg-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#my-svg [data-look="neo"].node circle .state-start{fill:#000000;}#my-svg [data-look="neo"].icon-shape .icon{fill:url(#my-svg-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#my-svg [data-look="neo"].icon-shape .icon-neo path{stroke:url(#my-svg-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#my-svg :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}</style><g><marker id="my-svg_flowchart-v2-pointEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-pointStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="4.5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"><path d="M 0 5 L 10 10 L 10 0 z" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-pointEnd-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="11.5" refY="7" markerUnits="userSpaceOnUse" markerWidth="10.5" markerHeight="14" orient="auto"><path d="M 0 0 L 11.5 7 L 0 14 z" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-pointStart-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="1" refY="7" markerUnits="userSpaceOnUse" markerWidth="11.5" markerHeight="14" orient="auto"><polygon points="0,7 11.5,14 11.5,0" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-circleEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="11" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-circleStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-1" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-circleEnd-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refY="5" refX="12.25" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-circleStart-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-2" refY="5" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-crossEnd" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="12" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width: 2; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-crossStart" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="-1" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width: 2; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-crossEnd-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="17.7" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"><path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width: 2.5;"/></marker><marker id="my-svg_flowchart-v2-crossStart-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="-3.5" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"><path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width: 2.5; stroke-dasharray: 1, 0;"/></marker><g class="root"><g class="clusters"/><g class="edgePaths"><path d="M196.906,104L201.073,104C205.24,104,213.573,104,221.24,104C228.906,104,235.906,104,239.406,104L242.906,104" id="my-svg-L_CLI_MC_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_CLI_MC_0" data-points="W3sieCI6MTk2LjkwNjI1LCJ5IjoxMDMuOTk5OTk4MDkyNjUxMzd9LHsieCI6MjIxLjkwNjI1LCJ5IjoxMDMuOTk5OTk4MDkyNjUxMzd9LHsieCI6MjQ2LjkwNjI1LCJ5IjoxMDMuOTk5OTk4MDkyNjUxMzd9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M476.688,78.291L497.685,73.593C518.682,68.894,560.677,59.497,602.005,54.799C643.333,50.1,683.995,50.1,704.326,50.1L724.656,50.1" id="my-svg-L_MC_RPA_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_MC_RPA_0" data-points="W3sieCI6NDc2LjY4NzUsInkiOjc4LjI5MTIwODcwNTMyMzA3fSx7IngiOjYwMi42NzE4NzUsInkiOjUwLjA5OTk5ODQ3NDEyMTA5NH0seyJ4Ijo3MjguNjU2MjUsInkiOjUwLjA5OTk5ODQ3NDEyMTA5NH1d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M962.078,50.1L966.245,50.1C970.411,50.1,978.745,50.1,986.411,50.1C994.078,50.1,1001.078,50.1,1004.578,50.1L1008.078,50.1" id="my-svg-L_RPA_OUT_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_RPA_OUT_0" data-points="W3sieCI6OTYyLjA3ODEyNSwieSI6NTAuMDk5OTk4NDc0MTIxMDk0fSx7IngiOjk4Ny4wNzgxMjUsInkiOjUwLjA5OTk5ODQ3NDEyMTA5NH0seyJ4IjoxMDEyLjA3ODEyNSwieSI6NTAuMDk5OTk4NDc0MTIxMDk0fV0=" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M476.688,129.709L497.685,134.407C518.682,139.106,560.677,148.503,610.118,153.201C659.56,157.9,716.448,157.9,744.892,157.9L773.336,157.9" id="my-svg-L_MC_NG_0" class="edge-thickness-normal edge-pattern-dotted edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_MC_NG_0" data-points="W3sieCI6NDc2LjY4NzUsInkiOjEyOS43MDg3ODc0Nzk5Nzk2Nn0seyJ4Ijo2MDIuNjcxODc1LCJ5IjoxNTcuODk5OTk3NzExMTgxNjR9LHsieCI6Nzc3LjMzNTkzNzUsInkiOjE1Ny44OTk5OTc3MTExODE2NH1d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/></g><g class="edgeLabels"><g class="edgeLabel"><g class="label" data-id="L_CLI_MC_0" transform="translate(0, 0)"><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"/></text></g></g><g><rect class="background" style="stroke: none"/></g><g class="edgeLabel"><g class="label" data-id="L_MC_RPA_0" transform="translate(0, 0)"><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"/></text></g></g><g><rect class="background" style="stroke: none"/></g><g class="edgeLabel"><g class="label" data-id="L_RPA_OUT_0" transform="translate(0, 0)"><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"/></text></g></g><g><rect class="background" style="stroke: none"/></g><g class="edgeLabel" transform="translate(602.671875, 157.89999771118164)"><g class="label" data-id="L_MC_NG_0" transform="translate(0, -19.299999237060547)"><g><rect class="background" style="" x="-100.984375" y="-1" width="201.96875" height="40.599998474121094"/><text y="-10.1" text-anchor="middle" style=""><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">state</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> already</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> saved</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> —</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> audit</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em" text-anchor="middle"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">error</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> never</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> rolls</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> it</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> back</tspan></tspan></text></g></g></g></g><g class="nodes"><g class="node default" id="my-svg-flowchart-CLI-0" data-look="classic" transform="translate(102.453125, 103.99999809265137)"><rect class="basic label-container" style="" x="-94.453125" y="-24.5" width="188.90625" height="49"/><g class="label" style="" transform="translate(0, -9.5)"><rect/><g><rect class="background" style="stroke: none"/><text y="-10.1" style=""><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">scaffold</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> complete</tspan></tspan></text></g></g></g><g class="node default" id="my-svg-flowchart-MC-1" data-look="classic" transform="translate(361.796875, 103.99999809265137)"><rect class="basic label-container" style="" x="-114.890625" y="-42.099998474121094" width="229.78125" height="84.19999694824219"/><g class="label" style="" transform="translate(0, -27.099998474121094)"><rect/><g><rect class="background" style="stroke: none"/><text y="-10.1" style=""><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">markCompleted</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> (async)</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">saveState</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> →</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> set</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="2.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">completed_at</tspan></tspan></text></g></g></g><g class="node default" id="my-svg-flowchart-RPA-3" data-look="classic" transform="translate(845.3671875, 50.099998474121094)"><rect class="basic label-container" style="" x="-116.7109375" y="-33.29999923706055" width="233.421875" height="66.5999984741211"/><g class="label" style="" transform="translate(0, -18.299999237060547)"><rect/><g><rect class="background" style="stroke: none"/><text y="-10.1" style=""><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">runPhaseAudit</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">H-cross-doc</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> ·</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> docs</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> ·</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> fast</tspan></tspan></text></g></g></g><g class="node default" id="my-svg-flowchart-OUT-5" data-look="classic" transform="translate(1138.7109375, 50.099998474121094)"><rect class="basic label-container" style="" x="-126.6328125" y="-42.099998474121094" width="253.265625" height="84.19999694824219"/><g class="label" style="" transform="translate(0, -27.099998474121094)"><rect/><g><rect class="background" style="stroke: none"/><text y="-10.1" style=""><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">docs/audits/id.md</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> +</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> .json</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">PhaseAuditResult</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> →</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> stdout</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="2.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">line</tspan></tspan></text></g></g></g><g class="node default" id="my-svg-flowchart-NG-7" data-look="classic" transform="translate(845.3671875, 157.89999771118164)"><rect class="basic label-container" style="" x="-68.03125" y="-24.5" width="136.0625" height="49"/><g class="label" style="" transform="translate(0, -9.5)"><rect/><g><rect class="background" style="stroke: none"/><text y="-10.1" style=""><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">non-gating</tspan></tspan></text></g></g></g></g></g></g><defs><filter id="my-svg-drop-shadow" height="130%" width="130%"><feDropShadow dx="4" dy="4" stdDeviation="0" flood-opacity="0.06" flood-color="#000000"/></filter></defs><defs><filter id="my-svg-drop-shadow-small" height="150%" width="150%"><feDropShadow dx="2" dy="2" stdDeviation="0" flood-opacity="0.06" flood-color="#000000"/></filter></defs><linearGradient id="my-svg-gradient" gradientUnits="objectBoundingBox" x1="0%" y1="0%" x2="100%" y2="0%"><stop offset="0%" stop-color="hsl(0, 0%, 83.3333333333%)" stop-opacity="1"/><stop offset="100%" stop-color="hsl(0, 0%, 88.9215686275%)" stop-opacity="1"/></linearGradient></svg>
@@ -0,0 +1 @@
1
+ <svg id="my-svg" width="100%" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="flowchart" style="max-width: 1433.47px; background-color: transparent;" viewBox="0 0 1433.46875 100.19999694824219" role="graphics-document document" aria-roledescription="flowchart-v2"><style>#my-svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#000000;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#my-svg .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#my-svg .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#my-svg .error-icon{fill:#552222;}#my-svg .error-text{fill:#552222;stroke:#552222;}#my-svg .edge-thickness-normal{stroke-width:1px;}#my-svg .edge-thickness-thick{stroke-width:3.5px;}#my-svg .edge-pattern-solid{stroke-dasharray:0;}#my-svg .edge-thickness-invisible{stroke-width:0;fill:none;}#my-svg .edge-pattern-dashed{stroke-dasharray:3;}#my-svg .edge-pattern-dotted{stroke-dasharray:2;}#my-svg .marker{fill:#666;stroke:#666;}#my-svg .marker.cross{stroke:#666;}#my-svg svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#my-svg p{margin:0;}#my-svg .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#000000;}#my-svg .cluster-label text{fill:#333;}#my-svg .cluster-label span{color:#333;}#my-svg .cluster-label span p{background-color:transparent;}#my-svg .label text,#my-svg span{fill:#000000;color:#000000;}#my-svg .node rect,#my-svg .node circle,#my-svg .node ellipse,#my-svg .node polygon,#my-svg .node path{fill:#eee;stroke:#999;stroke-width:1px;}#my-svg .rough-node .label text,#my-svg .node .label text,#my-svg .image-shape .label,#my-svg .icon-shape .label{text-anchor:middle;}#my-svg .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#my-svg .rough-node .label,#my-svg .node .label,#my-svg .image-shape .label,#my-svg .icon-shape .label{text-align:center;}#my-svg .node.clickable{cursor:pointer;}#my-svg .root .anchor path{fill:#666!important;stroke-width:0;stroke:#666;}#my-svg .arrowheadPath{fill:#333333;}#my-svg .edgePath .path{stroke:#666;stroke-width:1px;}#my-svg .flowchart-link{stroke:#666;fill:none;}#my-svg .edgeLabel{background-color:white;text-align:center;}#my-svg .edgeLabel p{background-color:white;}#my-svg .edgeLabel rect{opacity:0.5;background-color:white;fill:white;}#my-svg .labelBkg{background-color:rgba(255, 255, 255, 0.5);}#my-svg .cluster rect{fill:hsl(0, 0%, 98.9215686275%);stroke:#707070;stroke-width:1px;}#my-svg .cluster text{fill:#333;}#my-svg .cluster span{color:#333;}#my-svg div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(-160, 0%, 93.3333333333%);border:1px solid #707070;border-radius:2px;pointer-events:none;z-index:100;}#my-svg .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#000000;}#my-svg rect.text{fill:none;stroke-width:0;}#my-svg .icon-shape,#my-svg .image-shape{background-color:white;text-align:center;}#my-svg .icon-shape p,#my-svg .image-shape p{background-color:white;padding:2px;}#my-svg .icon-shape .label rect,#my-svg .image-shape .label rect{opacity:0.5;background-color:white;fill:white;}#my-svg .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#my-svg .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#my-svg .node .neo-node{stroke:#999;}#my-svg [data-look="neo"].node rect,#my-svg [data-look="neo"].cluster rect,#my-svg [data-look="neo"].node polygon{stroke:url(#my-svg-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#my-svg [data-look="neo"].node path{stroke:url(#my-svg-gradient);stroke-width:1px;}#my-svg [data-look="neo"].node .outer-path{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#my-svg [data-look="neo"].node .neo-line path{stroke:#999;filter:none;}#my-svg [data-look="neo"].node circle{stroke:url(#my-svg-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#my-svg [data-look="neo"].node circle .state-start{fill:#000000;}#my-svg [data-look="neo"].icon-shape .icon{fill:url(#my-svg-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#my-svg [data-look="neo"].icon-shape .icon-neo path{stroke:url(#my-svg-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#my-svg :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}</style><g><marker id="my-svg_flowchart-v2-pointEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-pointStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="4.5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"><path d="M 0 5 L 10 10 L 10 0 z" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-pointEnd-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="11.5" refY="7" markerUnits="userSpaceOnUse" markerWidth="10.5" markerHeight="14" orient="auto"><path d="M 0 0 L 11.5 7 L 0 14 z" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-pointStart-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="1" refY="7" markerUnits="userSpaceOnUse" markerWidth="11.5" markerHeight="14" orient="auto"><polygon points="0,7 11.5,14 11.5,0" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-circleEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="11" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-circleStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-1" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-circleEnd-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refY="5" refX="12.25" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-circleStart-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-2" refY="5" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-crossEnd" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="12" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width: 2; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-crossStart" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="-1" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width: 2; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-crossEnd-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="17.7" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"><path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width: 2.5;"/></marker><marker id="my-svg_flowchart-v2-crossStart-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="-3.5" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"><path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width: 2.5; stroke-dasharray: 1, 0;"/></marker><g class="root"><g class="clusters"/><g class="edgePaths"><path d="M246.266,50.1L250.432,50.1C254.599,50.1,262.932,50.1,270.599,50.1C278.266,50.1,285.266,50.1,288.766,50.1L292.266,50.1" id="my-svg-L_P1_P2_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_P1_P2_0" data-points="W3sieCI6MjQ2LjI2NTYyNSwieSI6NTAuMDk5OTk4NDc0MTIxMDk0fSx7IngiOjI3MS4yNjU2MjUsInkiOjUwLjA5OTk5ODQ3NDEyMTA5NH0seyJ4IjoyOTYuMjY1NjI1LCJ5Ijo1MC4wOTk5OTg0NzQxMjEwOTR9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M549.031,50.1L553.198,50.1C557.365,50.1,565.698,50.1,573.365,50.1C581.031,50.1,588.031,50.1,591.531,50.1L595.031,50.1" id="my-svg-L_P2_P3_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_P2_P3_0" data-points="W3sieCI6NTQ5LjAzMTI1LCJ5Ijo1MC4wOTk5OTg0NzQxMjEwOTR9LHsieCI6NTc0LjAzMTI1LCJ5Ijo1MC4wOTk5OTg0NzQxMjEwOTR9LHsieCI6NTk5LjAzMTI1LCJ5Ijo1MC4wOTk5OTg0NzQxMjEwOTR9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M821.594,50.1L825.76,50.1C829.927,50.1,838.26,50.1,845.927,50.1C853.594,50.1,860.594,50.1,864.094,50.1L867.594,50.1" id="my-svg-L_P3_P4_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_P3_P4_0" data-points="W3sieCI6ODIxLjU5Mzc1LCJ5Ijo1MC4wOTk5OTg0NzQxMjEwOTR9LHsieCI6ODQ2LjU5Mzc1LCJ5Ijo1MC4wOTk5OTg0NzQxMjEwOTR9LHsieCI6ODcxLjU5Mzc1LCJ5Ijo1MC4wOTk5OTg0NzQxMjEwOTR9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1121.234,50.1L1125.401,50.1C1129.568,50.1,1137.901,50.1,1145.568,50.1C1153.234,50.1,1160.234,50.1,1163.734,50.1L1167.234,50.1" id="my-svg-L_P4_P5_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_P4_P5_0" data-points="W3sieCI6MTEyMS4yMzQzNzUsInkiOjUwLjA5OTk5ODQ3NDEyMTA5NH0seyJ4IjoxMTQ2LjIzNDM3NSwieSI6NTAuMDk5OTk4NDc0MTIxMDk0fSx7IngiOjExNzEuMjM0Mzc1LCJ5Ijo1MC4wOTk5OTg0NzQxMjEwOTR9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/></g><g class="edgeLabels"><g class="edgeLabel"><g class="label" data-id="L_P1_P2_0" transform="translate(0, 0)"><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"/></text></g></g><g><rect class="background" style="stroke: none"/></g><g class="edgeLabel"><g class="label" data-id="L_P2_P3_0" transform="translate(0, 0)"><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"/></text></g></g><g><rect class="background" style="stroke: none"/></g><g class="edgeLabel"><g class="label" data-id="L_P3_P4_0" transform="translate(0, 0)"><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"/></text></g></g><g><rect class="background" style="stroke: none"/></g><g class="edgeLabel"><g class="label" data-id="L_P4_P5_0" transform="translate(0, 0)"><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"/></text></g></g><g><rect class="background" style="stroke: none"/></g></g><g class="nodes"><g class="node default" id="my-svg-flowchart-P1-0" data-look="classic" transform="translate(127.1328125, 50.099998474121094)"><rect class="basic label-container" style="" x="-119.1328125" y="-33.29999923706055" width="238.265625" height="66.5999984741211"/><g class="label" style="" transform="translate(0, -18.299999237060547)"><rect/><g><rect class="background" style="stroke: none"/><text y="-10.1" style=""><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">1</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> ·</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> audit</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">collect</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> findings</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> +</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> verdict</tspan></tspan></text></g></g></g><g class="node default" id="my-svg-flowchart-P2-1" data-look="classic" transform="translate(422.6484375, 50.099998474121094)"><rect class="basic label-container" style="" x="-126.3828125" y="-42.099998474121094" width="252.765625" height="84.19999694824219"/><g class="label" style="" transform="translate(0, -27.099998474121094)"><rect/><g><rect class="background" style="stroke: none"/><text y="-10.1" style=""><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">2</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> ·</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> buildFixPlan</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">keep</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> open</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> &amp;</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> ≥</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> threshold;</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="2.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">order</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> by</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> severity</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> then</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> lens</tspan></tspan></text></g></g></g><g class="node default" id="my-svg-flowchart-P3-3" data-look="classic" transform="translate(710.3125, 50.099998474121094)"><rect class="basic label-container" style="" x="-111.28125" y="-42.099998474121094" width="222.5625" height="84.19999694824219"/><g class="label" style="" transform="translate(0, -27.099998474121094)"><rect/><g><rect class="background" style="stroke: none"/><text y="-10.1" style=""><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">3</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> ·</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> dispatchFixAgent</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">subprocess,</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> prompt</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> on</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="2.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">stdin</tspan></tspan></text></g></g></g><g class="node default" id="my-svg-flowchart-P4-5" data-look="classic" transform="translate(996.4140625, 50.099998474121094)"><rect class="basic label-container" style="" x="-124.8203125" y="-42.099998474121094" width="249.640625" height="84.19999694824219"/><g class="label" style="" transform="translate(0, -27.099998474121094)"><rect/><g><rect class="background" style="stroke: none"/><text y="-10.1" style=""><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">4</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> ·</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> verify</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">re-run</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> that</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> one</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> lens;</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> retry</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="2.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">≤</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> 3</tspan></tspan></text></g></g></g><g class="node default" id="my-svg-flowchart-P5-7" data-look="classic" transform="translate(1298.3515625, 50.099998474121094)"><rect class="basic label-container" style="" x="-127.1171875" y="-42.099998474121094" width="254.234375" height="84.19999694824219"/><g class="label" style="" transform="translate(0, -27.099998474121094)"><rect/><g><rect class="background" style="stroke: none"/><text y="-10.1" style=""><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">5</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> ·</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> post-fix</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> report</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">docs/audits/id-postfix.{md</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="2.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">,json}</tspan></tspan></text></g></g></g></g></g></g><defs><filter id="my-svg-drop-shadow" height="130%" width="130%"><feDropShadow dx="4" dy="4" stdDeviation="0" flood-opacity="0.06" flood-color="#000000"/></filter></defs><defs><filter id="my-svg-drop-shadow-small" height="150%" width="150%"><feDropShadow dx="2" dy="2" stdDeviation="0" flood-opacity="0.06" flood-color="#000000"/></filter></defs><linearGradient id="my-svg-gradient" gradientUnits="objectBoundingBox" x1="0%" y1="0%" x2="100%" y2="0%"><stop offset="0%" stop-color="hsl(0, 0%, 83.3333333333%)" stop-opacity="1"/><stop offset="100%" stop-color="hsl(0, 0%, 88.9215686275%)" stop-opacity="1"/></linearGradient></svg>
@@ -0,0 +1 @@
1
+ <svg id="my-svg" width="100%" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="flowchart" style="max-width: 1087.94px; background-color: transparent;" viewBox="0 0 1087.9375 100.19999694824219" role="graphics-document document" aria-roledescription="flowchart-v2"><style>#my-svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#000000;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#my-svg .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#my-svg .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#my-svg .error-icon{fill:#552222;}#my-svg .error-text{fill:#552222;stroke:#552222;}#my-svg .edge-thickness-normal{stroke-width:1px;}#my-svg .edge-thickness-thick{stroke-width:3.5px;}#my-svg .edge-pattern-solid{stroke-dasharray:0;}#my-svg .edge-thickness-invisible{stroke-width:0;fill:none;}#my-svg .edge-pattern-dashed{stroke-dasharray:3;}#my-svg .edge-pattern-dotted{stroke-dasharray:2;}#my-svg .marker{fill:#666;stroke:#666;}#my-svg .marker.cross{stroke:#666;}#my-svg svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#my-svg p{margin:0;}#my-svg .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#000000;}#my-svg .cluster-label text{fill:#333;}#my-svg .cluster-label span{color:#333;}#my-svg .cluster-label span p{background-color:transparent;}#my-svg .label text,#my-svg span{fill:#000000;color:#000000;}#my-svg .node rect,#my-svg .node circle,#my-svg .node ellipse,#my-svg .node polygon,#my-svg .node path{fill:#eee;stroke:#999;stroke-width:1px;}#my-svg .rough-node .label text,#my-svg .node .label text,#my-svg .image-shape .label,#my-svg .icon-shape .label{text-anchor:middle;}#my-svg .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#my-svg .rough-node .label,#my-svg .node .label,#my-svg .image-shape .label,#my-svg .icon-shape .label{text-align:center;}#my-svg .node.clickable{cursor:pointer;}#my-svg .root .anchor path{fill:#666!important;stroke-width:0;stroke:#666;}#my-svg .arrowheadPath{fill:#333333;}#my-svg .edgePath .path{stroke:#666;stroke-width:1px;}#my-svg .flowchart-link{stroke:#666;fill:none;}#my-svg .edgeLabel{background-color:white;text-align:center;}#my-svg .edgeLabel p{background-color:white;}#my-svg .edgeLabel rect{opacity:0.5;background-color:white;fill:white;}#my-svg .labelBkg{background-color:rgba(255, 255, 255, 0.5);}#my-svg .cluster rect{fill:hsl(0, 0%, 98.9215686275%);stroke:#707070;stroke-width:1px;}#my-svg .cluster text{fill:#333;}#my-svg .cluster span{color:#333;}#my-svg div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(-160, 0%, 93.3333333333%);border:1px solid #707070;border-radius:2px;pointer-events:none;z-index:100;}#my-svg .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#000000;}#my-svg rect.text{fill:none;stroke-width:0;}#my-svg .icon-shape,#my-svg .image-shape{background-color:white;text-align:center;}#my-svg .icon-shape p,#my-svg .image-shape p{background-color:white;padding:2px;}#my-svg .icon-shape .label rect,#my-svg .image-shape .label rect{opacity:0.5;background-color:white;fill:white;}#my-svg .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#my-svg .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#my-svg .node .neo-node{stroke:#999;}#my-svg [data-look="neo"].node rect,#my-svg [data-look="neo"].cluster rect,#my-svg [data-look="neo"].node polygon{stroke:url(#my-svg-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#my-svg [data-look="neo"].node path{stroke:url(#my-svg-gradient);stroke-width:1px;}#my-svg [data-look="neo"].node .outer-path{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#my-svg [data-look="neo"].node .neo-line path{stroke:#999;filter:none;}#my-svg [data-look="neo"].node circle{stroke:url(#my-svg-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#my-svg [data-look="neo"].node circle .state-start{fill:#000000;}#my-svg [data-look="neo"].icon-shape .icon{fill:url(#my-svg-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#my-svg [data-look="neo"].icon-shape .icon-neo path{stroke:url(#my-svg-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#my-svg :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}</style><g><marker id="my-svg_flowchart-v2-pointEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-pointStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="4.5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"><path d="M 0 5 L 10 10 L 10 0 z" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-pointEnd-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="11.5" refY="7" markerUnits="userSpaceOnUse" markerWidth="10.5" markerHeight="14" orient="auto"><path d="M 0 0 L 11.5 7 L 0 14 z" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-pointStart-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="1" refY="7" markerUnits="userSpaceOnUse" markerWidth="11.5" markerHeight="14" orient="auto"><polygon points="0,7 11.5,14 11.5,0" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-circleEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="11" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-circleStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-1" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-circleEnd-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refY="5" refX="12.25" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-circleStart-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-2" refY="5" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-crossEnd" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="12" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width: 2; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-crossStart" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="-1" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width: 2; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-crossEnd-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="17.7" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"><path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width: 2.5;"/></marker><marker id="my-svg_flowchart-v2-crossStart-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="-3.5" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"><path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width: 2.5; stroke-dasharray: 1, 0;"/></marker><g class="root"><g class="clusters"/><g class="edgePaths"><path d="M231.297,50.1L240.193,50.1C249.089,50.1,266.88,50.1,284.005,50.1C301.13,50.1,317.589,50.1,325.818,50.1L334.047,50.1" id="my-svg-L_WT_AA_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_WT_AA_0" data-points="W3sieCI6MjMxLjI5Njg3NSwieSI6NTAuMDk5OTk4NDc0MTIxMDk0fSx7IngiOjI4NC42NzE4NzUsInkiOjUwLjA5OTk5ODQ3NDEyMTA5NH0seyJ4IjozMzguMDQ2ODc1LCJ5Ijo1MC4wOTk5OTg0NzQxMjEwOTR9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M596,50.1L615.043,50.1C634.086,50.1,672.172,50.1,709.591,50.1C747.01,50.1,783.763,50.1,802.139,50.1L820.516,50.1" id="my-svg-L_AA_MA_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_AA_MA_0" data-points="W3sieCI6NTk2LCJ5Ijo1MC4wOTk5OTg0NzQxMjEwOTR9LHsieCI6NzEwLjI1NzgxMjUsInkiOjUwLjA5OTk5ODQ3NDEyMTA5NH0seyJ4Ijo4MjQuNTE1NjI1LCJ5Ijo1MC4wOTk5OTg0NzQxMjEwOTR9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/></g><g class="edgeLabels"><g class="edgeLabel" transform="translate(284.671875, 50.099998474121094)"><g class="label" data-id="L_WT_AA_0" transform="translate(0, -10.5)"><g><rect class="background" style="" x="-28.375" y="-1" width="56.75" height="23"/><text y="-10.1" text-anchor="middle" style=""><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">harvest</tspan></tspan></text></g></g></g><g class="edgeLabel" transform="translate(710.2578125, 50.099998474121094)"><g class="label" data-id="L_AA_MA_0" transform="translate(0, -10.5)"><g><rect class="background" style="" x="-89.2578125" y="-1" width="178.515625" height="23"/><text y="-10.1" text-anchor="middle" style=""><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">recover</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> (worktree</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> gone)</tspan></tspan></text></g></g></g></g><g class="nodes"><g class="node default" id="my-svg-flowchart-WT-0" data-look="classic" transform="translate(119.6484375, 50.099998474121094)"><rect class="basic label-container" style="" x="-111.6484375" y="-33.29999923706055" width="223.296875" height="66.5999984741211"/><g class="label" style="" transform="translate(0, -18.299999237060547)"><rect/><g><rect class="background" style="stroke: none"/><text y="-10.1" style=""><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">worktree</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> ledger</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">.scaffold/activity.jsonl</tspan></tspan></text></g></g></g><g class="node default" id="my-svg-flowchart-AA-1" data-look="classic" transform="translate(467.0234375, 50.099998474121094)"><rect class="basic label-container" style="" x="-128.9765625" y="-42.099998474121094" width="257.953125" height="84.19999694824219"/><g class="label" style="" transform="translate(0, -27.099998474121094)"><rect/><g><rect class="background" style="stroke: none"/><text y="-10.1" style=""><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">active-archive</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">activity-archive/active/id.j</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="2.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">sonl</tspan></tspan></text></g></g></g><g class="node default" id="my-svg-flowchart-MA-3" data-look="classic" transform="translate(952.2265625, 50.099998474121094)"><rect class="basic label-container" style="" x="-127.7109375" y="-42.099998474121094" width="255.421875" height="84.19999694824219"/><g class="label" style="" transform="translate(0, -27.099998474121094)"><rect/><g><rect class="background" style="stroke: none"/><text y="-10.1" style=""><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">monthly</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> archive</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">activity-archive/YYYY-MM.j</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="2.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">sonl</tspan></tspan></text></g></g></g></g></g></g><defs><filter id="my-svg-drop-shadow" height="130%" width="130%"><feDropShadow dx="4" dy="4" stdDeviation="0" flood-opacity="0.06" flood-color="#000000"/></filter></defs><defs><filter id="my-svg-drop-shadow-small" height="150%" width="150%"><feDropShadow dx="2" dy="2" stdDeviation="0" flood-opacity="0.06" flood-color="#000000"/></filter></defs><linearGradient id="my-svg-gradient" gradientUnits="objectBoundingBox" x1="0%" y1="0%" x2="100%" y2="0%"><stop offset="0%" stop-color="hsl(0, 0%, 83.3333333333%)" stop-opacity="1"/><stop offset="100%" stop-color="hsl(0, 0%, 88.9215686275%)" stop-opacity="1"/></linearGradient></svg>
@@ -0,0 +1,6 @@
1
+ {
2
+ "diagram-0": "aed3b2d1d68bd7d3",
3
+ "diagram-1": "ac0683fce388aaf0",
4
+ "diagram-2": "7de314aabfc80282",
5
+ "diagram-3": "a2f81c0910fab6c1"
6
+ }