@navels/neal 0.3.0 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -3
- package/docs/assets/neal-core-flow-dark.svg +2 -0
- package/docs/assets/neal-core-flow-light.svg +2 -0
- package/docs/automation.md +3 -1
- package/docs/compat.md +3 -3
- package/docs/compatible-models.md +3 -4
- package/docs/release.md +58 -75
- package/package.json +3 -3
- package/docs/assets/neal-execution-flow.png +0 -0
package/README.md
CHANGED
|
@@ -9,7 +9,11 @@ stable result.
|
|
|
9
9
|
|
|
10
10
|
> **A plan-driven, multi-agent coding loop.** Separate **planner**, **coder**, and **reviewer** roles, each on the provider and model you choose, work together to implement your plan.
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
<picture>
|
|
13
|
+
<source media="(prefers-color-scheme: dark)" srcset="docs/assets/neal-core-flow-dark.svg">
|
|
14
|
+
<source media="(prefers-color-scheme: light)" srcset="docs/assets/neal-core-flow-light.svg">
|
|
15
|
+
<img alt="neal execution flow" src="docs/assets/neal-core-flow-light.svg">
|
|
16
|
+
</picture>
|
|
13
17
|
|
|
14
18
|
neal is a local planner/coder/reviewer loop for your repo. You write a plan, and neal's planner/reviewer loop turns it into a human-reviewable execution plan with an execution shape, manageable scopes, and high-level implementation detail grounded in the current repository. neal then runs each scope with your configured coder and reviewer roles. After every scope is accepted, a final review pass checks the total set of changes against the entire plan. Run artifacts are recorded under `.neal/` so interrupted work can resume.
|
|
15
19
|
|
|
@@ -18,7 +22,15 @@ Two choices explain the design:
|
|
|
18
22
|
- **The coder and reviewer run on different vendors.** The review is genuinely adversarial: a second model with its own blind spots checks the first, instead of one model grading its own work.
|
|
19
23
|
- **Each scope starts the coder from a fresh context.** A long plan doesn't drift the way a single agent does as its context fills up.
|
|
20
24
|
|
|
21
|
-
###
|
|
25
|
+
### Support MusiCares
|
|
26
|
+
|
|
27
|
+
If neal has been useful to you, please consider donating to MusiCares. It's a
|
|
28
|
+
non-profit giving musicians a place to turn to in times of financial, personal,
|
|
29
|
+
or medical crisis.
|
|
30
|
+
|
|
31
|
+
[](https://www.musicares.org/about/?form=FUNKYMLRVWU&fundraiser=NTYJWDJE&member=SHEDDUJS)
|
|
32
|
+
|
|
33
|
+
### What makes neal interesting
|
|
22
34
|
|
|
23
35
|
- **Roles, not one monolithic agent.** Planner, coder, and reviewer are independent, separately configurable roles. Mix vendors and models per role (e.g. Codex codes, Claude reviews).
|
|
24
36
|
- **The reviewer is read-only.** Declared at provider registration and enforced mechanically in each adapter (OS sandbox for Codex, SDK tool allowlist for Claude, a neal-owned jailed toolset for OpenRouter models). See [SECURITY.md](SECURITY.md) and [docs/providers.md](docs/providers.md).
|
|
@@ -274,7 +286,7 @@ neal status --json --all
|
|
|
274
286
|
|
|
275
287
|
## Automation contract
|
|
276
288
|
|
|
277
|
-
neal keeps a stable machine-facing contract for driving it from scripts, CI, and benchmark harnesses: writer exit codes, the `neal status --json` classification schema, patch-submission eligibility, and harness timeout and trace-publishing guidance. See [docs/automation.md](docs/automation.md).
|
|
289
|
+
neal keeps a stable machine-facing contract for driving it from scripts, CI, and benchmark harnesses: writer exit codes, the `neal status --json` classification schema, patch-submission eligibility, and harness timeout and trace-publishing guidance. See [docs/automation.md](docs/automation.md). [neal-swebench](https://github.com/navels/neal-swebench) drives neal through this contract to benchmark role pairings on SWE-bench Pro.
|
|
278
290
|
|
|
279
291
|
## Commands
|
|
280
292
|
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1742.6871929611189 581.5018875438792" width="1742.6871929611189" height="581.5018875438792"><!-- svg-source:excalidraw --><metadata/><defs><style class="style-fonts">
|
|
2
|
+
@font-face { font-family: Nunito; src: url(data:font/woff2;base64,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); }</style></defs><rect x="0" y="0" width="1742.6871929611189" height="581.5018875438792" fill="#161b22" rx="12" ry="12"/><g stroke-linecap="round" transform="translate(262.94598202361897 301.8905594188792) rotate(0 85 40)"><path d="M0 0 L170 0 L170 80 L0 80" stroke="none" stroke-width="0" fill="#1a4d2e"/><path d="M0 0 C43.09 0, 86.19 0, 170 0 M0 0 C34.13 0, 68.26 0, 170 0 M170 0 C170 25.31, 170 50.63, 170 80 M170 0 C170 20.8, 170 41.61, 170 80 M170 80 C125.5 80, 81.01 80, 0 80 M170 80 C115.24 80, 60.48 80, 0 80 M0 80 C0 58.78, 0 37.55, 0 0 M0 80 C0 53.09, 0 26.18, 0 0" stroke="#2f9e44" stroke-width="2" fill="none"/></g><g transform="translate(296.70603756561115 328.3905594188792) rotate(0 51.23994445800781 13.5)"><text x="51.23994445800781" y="20.08" font-family="Nunito, Segoe UI Emoji" font-size="20px" fill="#e6edf3" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Refine plan</text></g><g stroke-linecap="round" transform="translate(512.945982023619 301.6639969188792) rotate(0 84.99999999999994 40)"><path d="M0 0 L170 0 L170 80 L0 80" stroke="none" stroke-width="0" fill="#15426b"/><path d="M0 0 C44.15 0, 88.31 0, 170 0 M0 0 C53.01 0, 106.02 0, 170 0 M170 0 C170 21.32, 170 42.64, 170 80 M170 0 C170 17.07, 170 34.14, 170 80 M170 80 C121.13 80, 72.26 80, 0 80 M170 80 C117.79 80, 65.57 80, 0 80 M0 80 C0 61.7, 0 43.41, 0 0 M0 80 C0 55.64, 0 31.28, 0 0" stroke="#58a6ff" stroke-width="2" fill="none"/></g><g transform="translate(544.5860424484237 314.6639969188792) rotate(0 53.359939575195256 27)"><text x="53.35993957519531" y="20.08" font-family="Nunito, Segoe UI Emoji" font-size="20px" fill="#e6edf3" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Fresh agent</text><text x="53.35993957519531" y="47.08" font-family="Nunito, Segoe UI Emoji" font-size="20px" fill="#e6edf3" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic"> context</text></g><g stroke-linecap="round" transform="translate(762.9459820236189 301.8905594188792) rotate(0 85 40)"><path d="M0 0 L170 0 L170 80 L0 80" stroke="none" stroke-width="0" fill="#15426b"/><path d="M0 0 C35.27 0, 70.54 0, 170 0 M0 0 C62.07 0, 124.14 0, 170 0 M170 0 C170 28.28, 170 56.57, 170 80 M170 0 C170 18.91, 170 37.82, 170 80 M170 80 C132.43 80, 94.86 80, 0 80 M170 80 C113.18 80, 56.36 80, 0 80 M0 80 C0 57.57, 0 35.14, 0 0 M0 80 C0 52.18, 0 24.36, 0 0" stroke="#58a6ff" stroke-width="2" fill="none"/></g><g transform="translate(783.5960522140485 328.3905594188792) rotate(0 64.34992980957031 13.5)"><text x="64.34992980957031" y="20.08" font-family="Nunito, Segoe UI Emoji" font-size="20px" fill="#e6edf3" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Execute scope</text></g><g stroke-linecap="round" transform="translate(1012.9459820236189 301.8905594188792) rotate(0 85 40)"><path d="M0 0 L170 0 L170 80 L0 80" stroke="none" stroke-width="0" fill="#15426b"/><path d="M0 0 C53.64 0, 107.27 0, 170 0 M0 0 C44.06 0, 88.12 0, 170 0 M170 0 C170 31.75, 170 63.51, 170 80 M170 0 C170 31.54, 170 63.07, 170 80 M170 80 C123.64 80, 77.28 80, 0 80 M170 80 C102.9 80, 35.81 80, 0 80 M0 80 C0 55.01, 0 30.02, 0 0 M0 80 C0 60.57, 0 41.13, 0 0" stroke="#58a6ff" stroke-width="2" fill="none"/></g><g transform="translate(1062.7760067428571 328.3905594188792) rotate(0 35.16997528076172 13.5)"><text x="35.16997528076172" y="20.08" font-family="Nunito, Segoe UI Emoji" font-size="20px" fill="#e6edf3" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Commit</text></g><g stroke-linecap="round" transform="translate(1262.687192961119 301.8905594188792) rotate(0 85 40)"><path d="M0 0 L170 0 L170 80 L0 80" stroke="none" stroke-width="0" fill="#15426b"/><path d="M0 0 C50.17 0, 100.34 0, 170 0 M0 0 C58.72 0, 117.44 0, 170 0 M170 0 C170 23.41, 170 46.83, 170 80 M170 0 C170 21.65, 170 43.3, 170 80 M170 80 C133.58 80, 97.17 80, 0 80 M170 80 C108.13 80, 46.27 80, 0 80 M0 80 C0 51, 0 22, 0 0 M0 80 C0 54.68, 0 29.37, 0 0" stroke="#58a6ff" stroke-width="2" fill="none"/></g><g transform="translate(1289.757261320494 328.3905594188792) rotate(0 57.929931640625 13.5)"><text x="57.929931640625" y="20.08" font-family="Nunito, Segoe UI Emoji" font-size="20px" fill="#e6edf3" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Final Review</text></g><g stroke-linecap="round" transform="translate(1512.687192961119 301.8905594188792) rotate(0 84.99999999999989 40)"><path d="M0 0 L170 0 L170 80 L0 80" stroke="none" stroke-width="0" fill="#63391d"/><path d="M0 0 C66.42 0, 132.83 0, 170 0 M0 0 C57.35 0, 114.7 0, 170 0 M170 0 C170 28.36, 170 56.72, 170 80 M170 0 C170 30.17, 170 60.35, 170 80 M170 80 C132.77 80, 95.54 80, 0 80 M170 80 C117.17 80, 64.33 80, 0 80 M0 80 C0 51.63, 0 23.25, 0 0 M0 80 C0 59.69, 0 39.37, 0 0" stroke="#e8590c" stroke-width="2" fill="none"/></g><g transform="translate(1564.107229277037 328.3905594188792) rotate(0 33.57996368408192 13.5)"><text x="33.57996368408203" y="20.08" font-family="Nunito, Segoe UI Emoji" font-size="20px" fill="#e6edf3" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Squash</text></g><g stroke-linecap="round"><g transform="translate(441.94598202361897 341.8905594188792) rotate(0 29.5 0)"><path d="M0 0 C18.9 0, 37.79 0, 59 0 M0 0 C18.89 0, 37.78 0, 59 0" stroke="#8b949e" stroke-width="2" fill="none"/></g><g transform="translate(441.94598202361897 341.8905594188792) rotate(0 29.5 0)"><path d="M59 0 L45.41 6.34 L45.41 -6.34 L59 0" stroke="none" stroke-width="0" fill="#8b949e" fill-rule="evenodd"/><path d="M59 0 C54.65 2.03, 50.29 4.06, 45.41 6.34 M59 0 C54.65 2.03, 50.29 4.06, 45.41 6.34 M45.41 6.34 C45.41 1.85, 45.41 -2.64, 45.41 -6.34 M45.41 6.34 C45.41 3.01, 45.41 -0.32, 45.41 -6.34 M45.41 -6.34 C48.17 -5.05, 50.92 -3.77, 59 0 M45.41 -6.34 C49.58 -4.39, 53.75 -2.45, 59 0 M59 0 C59 0, 59 0, 59 0 M59 0 C59 0, 59 0, 59 0" stroke="#8b949e" stroke-width="2" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(691.9459820236189 341.7657960210282) rotate(0 29.5 0.03502764805136849)"><path d="M0 0 C18.67 0.02, 37.34 0.04, 59 0.07 M0 0 C15.34 0.02, 30.69 0.04, 59 0.07" stroke="#8b949e" stroke-width="2" fill="none"/></g><g transform="translate(691.9459820236189 341.7657960210282) rotate(0 29.5 0.03502764805136849)"><path d="M59 0.07 L45.4 6.39 L45.41 -6.29 L59 0.07" stroke="none" stroke-width="0" fill="#8b949e" fill-rule="evenodd"/><path d="M59 0.07 C54.7 2.07, 50.39 4.07, 45.4 6.39 M59 0.07 C55.46 1.71, 51.93 3.36, 45.4 6.39 M45.4 6.39 C45.4 3.07, 45.41 -0.24, 45.41 -6.29 M45.4 6.39 C45.4 2.31, 45.41 -1.78, 45.41 -6.29 M45.41 -6.29 C49.02 -4.6, 52.62 -2.91, 59 0.07 M45.41 -6.29 C49.98 -4.15, 54.55 -2.01, 59 0.07 M59 0.07 C59 0.07, 59 0.07, 59 0.07 M59 0.07 C59 0.07, 59 0.07, 59 0.07" stroke="#8b949e" stroke-width="2" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(941.9459820236189 341.8905594188792) rotate(0 29.5 0)"><path d="M0 0 C15.72 0, 31.45 0, 59 0 M0 0 C12.59 0, 25.18 0, 59 0" stroke="#8b949e" stroke-width="2" fill="none"/></g><g transform="translate(941.9459820236189 341.8905594188792) rotate(0 29.5 0)"><path d="M59 0 L45.41 6.34 L45.41 -6.34 L59 0" stroke="none" stroke-width="0" fill="#8b949e" fill-rule="evenodd"/><path d="M59 0 C55.38 1.69, 51.75 3.38, 45.41 6.34 M59 0 C56.1 1.35, 53.2 2.71, 45.41 6.34 M45.41 6.34 C45.41 2.69, 45.41 -0.95, 45.41 -6.34 M45.41 6.34 C45.41 2.45, 45.41 -1.45, 45.41 -6.34 M45.41 -6.34 C48.51 -4.89, 51.62 -3.44, 59 0 M45.41 -6.34 C49.55 -4.41, 53.68 -2.48, 59 0 M59 0 C59 0, 59 0, 59 0 M59 0 C59 0, 59 0, 59 0" stroke="#8b949e" stroke-width="2" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(1192.1871929611189 341.8905594188792) rotate(0 29 0)"><path d="M0 0 C20.51 0, 41.01 0, 58 0 M0 0 C13.71 0, 27.42 0, 58 0" stroke="#8b949e" stroke-width="2" fill="none"/></g><g transform="translate(1192.1871929611189 341.8905594188792) rotate(0 29 0)"><path d="M58 0 L44.41 6.34 L44.41 -6.34 L58 0" stroke="none" stroke-width="0" fill="#8b949e" fill-rule="evenodd"/><path d="M58 0 C53.19 2.24, 48.39 4.48, 44.41 6.34 M58 0 C54.79 1.5, 51.57 3, 44.41 6.34 M44.41 6.34 C44.41 3.54, 44.41 0.74, 44.41 -6.34 M44.41 6.34 C44.41 2.1, 44.41 -2.14, 44.41 -6.34 M44.41 -6.34 C48.22 -4.56, 52.03 -2.78, 58 0 M44.41 -6.34 C49.13 -4.13, 53.86 -1.93, 58 0 M58 0 C58 0, 58 0, 58 0 M58 0 C58 0, 58 0, 58 0" stroke="#8b949e" stroke-width="2" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(1442.187192961119 341.8905594188792) rotate(0 29 0)"><path d="M0 0 C23.02 0, 46.04 0, 58 0 M0 0 C22.86 0, 45.73 0, 58 0" stroke="#8b949e" stroke-width="2" fill="none"/></g><g transform="translate(1442.187192961119 341.8905594188792) rotate(0 29 0)"><path d="M58 0 L44.41 6.34 L44.41 -6.34 L58 0" stroke="none" stroke-width="0" fill="#8b949e" fill-rule="evenodd"/><path d="M58 0 C52.6 2.52, 47.21 5.03, 44.41 6.34 M58 0 C52.64 2.5, 47.28 5, 44.41 6.34 M44.41 6.34 C44.41 2.88, 44.41 -0.58, 44.41 -6.34 M44.41 6.34 C44.41 1.34, 44.41 -3.67, 44.41 -6.34 M44.41 -6.34 C48.65 -4.36, 52.9 -2.38, 58 0 M44.41 -6.34 C47.71 -4.8, 51.01 -3.26, 58 0 M58 0 C58 0, 58 0, 58 0 M58 0 C58 0, 58 0, 58 0" stroke="#8b949e" stroke-width="2" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(1105.9713525935056 301.24160820093687) rotate(0 -257.13862305703515 -25.36790720352883)"><path d="M0 0 C0.16 -15.45, 0.82 -29.61, 0.46 -50.74 M0.46 -50.74 C-203.45 -49.33, -406.37 -49.36, -514.73 -50.74 M-514.73 -50.74 C-514.48 -35.22, -513.61 -21.1, -514.73 -4.58" stroke="#c9d1d9" stroke-width="2.5" fill="none" stroke-dasharray="8 10"/></g><g transform="translate(1105.9713525935056 301.24160820093687) rotate(0 -257.13862305703515 -25.36790720352883)"><path d="M-513.93 -6.29 L-519.84 -18.63 L-506.52 -18.98 L-514.46 -6.35" stroke="none" stroke-width="0" fill="#c9d1d9" fill-rule="evenodd"/><path d="M-514.73 -4.58 C-516.24 -9.61, -517.43 -13.62, -520.55 -18.4 M-520.55 -18.4 C-516.46 -18.16, -510.8 -18.02, -507.88 -17.92 M-507.88 -17.92 C-509.91 -12.89, -511.4 -8.95, -514.73 -4.58 M-514.73 -4.58 C-514.73 -4.58, -514.73 -4.58, -514.73 -4.58" stroke="#c9d1d9" stroke-width="2.5" fill="none"/></g></g><mask/><g stroke-linecap="round" transform="translate(764.0054128271904 439.53467214209365) rotate(0 85 40)"><path d="M0 0 L170 0 L170 80 L0 80" stroke="none" stroke-width="0" fill="#4a2c59"/><path d="M0 0 C36.42 0, 72.83 0, 170 0 M0 0 C61.87 0, 123.73 0, 170 0 M170 0 C170 29, 170 58, 170 80 M170 0 C170 25.32, 170 50.63, 170 80 M170 80 C112.9 80, 55.8 80, 0 80 M170 80 C132.74 80, 95.48 80, 0 80 M0 80 C0 54.98, 0 29.96, 0 0 M0 80 C0 53.73, 0 27.46, 0 0" stroke="#c297ea" stroke-width="2" fill="none"/></g><g transform="translate(814.3154409033623 466.03467214209365) rotate(0 34.689971923828125 13.5)"><text x="34.689971923828125" y="20.08" font-family="Nunito, Segoe UI Emoji" font-size="20px" fill="#e6edf3" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Consult</text></g><g stroke-linecap="round" transform="translate(1013.2731304611189 441.5018875438792) rotate(0 85 40)"><path d="M0 0 L170 0 L170 80 L0 80" stroke="none" stroke-width="0" fill="#4a2c59"/><path d="M0 0 C34.51 0, 69.02 0, 170 0 M0 0 C52.19 0, 104.37 0, 170 0 M170 0 C170 27.18, 170 54.36, 170 80 M170 0 C170 16.74, 170 33.49, 170 80 M170 80 C116.69 80, 63.38 80, 0 80 M170 80 C128.54 80, 87.08 80, 0 80 M0 80 C0 61.19, 0 42.38, 0 0 M0 80 C0 50.47, 0 20.94, 0 0" stroke="#c297ea" stroke-width="2" fill="none"/></g><g transform="translate(1065.1331615890485 468.0018875438792) rotate(0 33.13996887207031 13.5)"><text x="33.13996887207031" y="20.08" font-family="Nunito, Segoe UI Emoji" font-size="20px" fill="#e6edf3" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Review</text></g><g stroke-linecap="round" transform="translate(1263.102232023619 441.3544266063792) rotate(0 85 40)"><path d="M0 0 L170 0 L170 80 L0 80" stroke="none" stroke-width="0" fill="#4a2c59"/><path d="M0 0 C38.88 0, 77.76 0, 170 0 M0 0 C51.77 0, 103.54 0, 170 0 M170 0 C170 21.59, 170 43.18, 170 80 M170 0 C170 23.08, 170 46.17, 170 80 M170 80 C127.7 80, 85.4 80, 0 80 M170 80 C105.5 80, 41 80, 0 80 M0 80 C0 52.33, 0 24.66, 0 0 M0 80 C0 55.98, 0 31.96, 0 0" stroke="#c297ea" stroke-width="2" fill="none"/></g><g transform="translate(1314.9622631515488 467.8544266063792) rotate(0 33.13996887207031 13.5)"><text x="33.13996887207031" y="20.08" font-family="Nunito, Segoe UI Emoji" font-size="20px" fill="#e6edf3" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Review</text></g><g stroke-linecap="round"><g transform="translate(821.8011252527858 384.9074865022129) rotate(0 -10.062174479166742 24.93419828869048)"><path d="M0.34 0.02 C-2.97 4.08, -19.12 16.29, -19.82 24.55 C-20.53 32.8, -6.44 45.32, -3.88 49.55" stroke="#c9d1d9" stroke-width="2.5" fill="none" stroke-dasharray="8 10"/></g><g transform="translate(821.8011252527858 384.9074865022129) rotate(0 -10.062174479166742 24.93419828869048)"><path d="M-4.68 50.51 L-17.29 43.89 L-7.77 34.52 L-4.53 49.85" stroke="none" stroke-width="0" fill="#c9d1d9" fill-rule="evenodd"/><path d="M-3.88 49.55 C-8.09 47.99, -11.99 45.86, -17.42 43.1 M-17.42 43.1 C-15.21 40.84, -12.54 38.6, -7.64 35.03 M-7.64 35.03 C-6.51 40.48, -5.54 45.01, -3.88 49.55 M-3.88 49.55 C-3.88 49.55, -3.88 49.55, -3.88 49.55" stroke="#c9d1d9" stroke-width="2.5" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(877.3578282503618 437.32861745459365) rotate(0 10.902312563711916 -25.476190476190595)"><path d="M0.66 0.57 C4.24 -3.94, 21.69 -18.5, 22.28 -27.05 C22.87 -35.61, 7.15 -46.68, 4.2 -50.76" stroke="#c9d1d9" stroke-width="2.5" fill="none" stroke-dasharray="8 10"/></g><g transform="translate(877.3578282503618 437.32861745459365) rotate(0 10.902312563711916 -25.476190476190595)"><path d="M4.46 -49.17 L17.95 -46.71 L8.02 -36.18 L5.93 -50.19" stroke="none" stroke-width="0" fill="#c9d1d9" fill-rule="evenodd"/><path d="M4.2 -50.76 C9.99 -48.4, 13.51 -48.11, 18.21 -45.68 M18.21 -45.68 C15.58 -44.04, 13.06 -41.15, 9.32 -36.76 M9.32 -36.76 C6.83 -41.23, 4.58 -46.12, 4.2 -50.76 M4.2 -50.76 C4.2 -50.76, 4.2 -50.76, 4.2 -50.76" stroke="#c9d1d9" stroke-width="2.5" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(1071.1701842067077 386.325152451304) rotate(0 -10.062174479166629 25.09602864583337)"><path d="M0.48 -0.68 C-3.11 3.3, -20.11 16.09, -20.89 24.48 C-21.67 32.87, -7.08 45.54, -4.21 49.64" stroke="#c9d1d9" stroke-width="2.5" fill="none" stroke-dasharray="8 10"/></g><g transform="translate(1071.1701842067077 386.325152451304) rotate(0 -10.062174479166629 25.09602864583337)"><path d="M-4.47 48.61 L-19.27 44.26 L-6.76 35.83 L-3.29 50.49" stroke="none" stroke-width="0" fill="#c9d1d9" fill-rule="evenodd"/><path d="M-4.21 49.64 C-9.97 46.62, -13.75 45.01, -17.97 43.67 M-17.97 43.67 C-15.07 40.54, -12.71 39.34, -8.49 35.26 M-8.49 35.26 C-8.31 40.55, -6.63 45.08, -4.21 49.64 M-4.21 49.64 C-4.21 49.64, -4.21 49.64, -4.21 49.64" stroke="#c9d1d9" stroke-width="2.5" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(1126.6981789983745 439.0699441179705) rotate(0 10.916666666666629 -25.63802083333337)"><path d="M-0.77 0.2 C2.73 -4.23, 20.48 -18.48, 21.47 -27.25 C22.47 -36.01, 7.86 -48.19, 5.2 -52.36" stroke="#c9d1d9" stroke-width="2.5" fill="none" stroke-dasharray="8 10"/></g><g transform="translate(1126.6981789983745 439.0699441179705) rotate(0 10.916666666666629 -25.63802083333337)"><path d="M3.9 -51.78 L20.53 -45.74 L10.22 -37.19 L3.93 -50.98" stroke="none" stroke-width="0" fill="#c9d1d9" fill-rule="evenodd"/><path d="M5.2 -52.36 C10.03 -50.67, 13.72 -47.91, 18.81 -46.31 M18.81 -46.31 C17.3 -44.8, 15.72 -43.59, 9.3 -38.04 M9.3 -38.04 C6.94 -43.3, 7.32 -46.83, 5.2 -52.36 M5.2 -52.36 C5.2 -52.36, 5.2 -52.36, 5.2 -52.36" stroke="#c9d1d9" stroke-width="2.5" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(1319.601173790041 385.524371201304) rotate(0 -10.062174479166629 25.09602864583337)"><path d="M-0.36 -0.55 C-3.55 3.28, -19.43 14.91, -19.93 23.19 C-20.43 31.48, -6.12 44.69, -3.36 49.17" stroke="#c9d1d9" stroke-width="2.5" fill="none" stroke-dasharray="8 10"/></g><g transform="translate(1319.601173790041 385.524371201304) rotate(0 -10.062174479166629 25.09602864583337)"><path d="M-1.64 49.73 L-15.94 43.46 L-8.28 36 L-2.56 49.44" stroke="none" stroke-width="0" fill="#c9d1d9" fill-rule="evenodd"/><path d="M-3.36 49.17 C-7.25 47.82, -11.1 46.63, -16.85 42.61 M-16.85 42.61 C-13.91 40.23, -12.49 38.07, -7.01 34.62 M-7.01 34.62 C-5.56 39.2, -5.78 42.18, -3.36 49.17 M-3.36 49.17 C-3.36 49.17, -3.36 49.17, -3.36 49.17" stroke="#c9d1d9" stroke-width="2.5" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(1375.129168581708 438.2691628679705) rotate(0 10.916666666666629 -25.63802083333337)"><path d="M0.2 -1.09 C3.98 -5.62, 21.45 -19.33, 22.32 -27.72 C23.19 -36.11, 8.18 -47.38, 5.43 -51.41" stroke="#c9d1d9" stroke-width="2.5" fill="none" stroke-dasharray="8 10"/></g><g transform="translate(1375.129168581708 438.2691628679705) rotate(0 10.916666666666629 -25.63802083333337)"><path d="M6.35 -50.56 L18.02 -44.55 L10.94 -37.01 L4.15 -51.41" stroke="none" stroke-width="0" fill="#c9d1d9" fill-rule="evenodd"/><path d="M5.43 -51.41 C7.79 -49.36, 11.61 -47.94, 19.28 -45.93 M19.28 -45.93 C16.87 -44.6, 14.07 -42.01, 10.14 -37.28 M10.14 -37.28 C8.08 -41.98, 9.18 -44.12, 5.43 -51.41 M5.43 -51.41 C5.43 -51.41, 5.43 -51.41, 5.43 -51.41" stroke="#c9d1d9" stroke-width="2.5" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(196.5947372939562 342.6703833276098) rotate(0 29.25 0)"><path d="M0 0 C17.64 0, 35.28 0, 58.5 0 M0 0 C22.59 0, 45.19 0, 58.5 0" stroke="#8b949e" stroke-width="2" fill="none"/></g><g transform="translate(196.5947372939562 342.6703833276098) rotate(0 29.25 0)"><path d="M58.5 0 L44.91 6.34 L44.91 -6.34 L58.5 0" stroke="none" stroke-width="0" fill="#8b949e" fill-rule="evenodd"/><path d="M58.5 0 C54.4 1.91, 50.3 3.82, 44.91 6.34 M58.5 0 C53.25 2.45, 48 4.9, 44.91 6.34 M44.91 6.34 C44.91 3.68, 44.91 1.02, 44.91 -6.34 M44.91 6.34 C44.91 3.14, 44.91 -0.06, 44.91 -6.34 M44.91 -6.34 C50.13 -3.9, 55.36 -1.46, 58.5 0 M44.91 -6.34 C48.63 -4.6, 52.35 -2.87, 58.5 0 M58.5 0 C58.5 0, 58.5 0, 58.5 0 M58.5 0 C58.5 0, 58.5 0, 58.5 0" stroke="#8b949e" stroke-width="2" fill="none"/></g></g><mask/><g stroke-linecap="round" transform="translate(262.20034555288464 438.98351854308146) rotate(0 85 40)"><path d="M0 0 L170 0 L170 80 L0 80" stroke="none" stroke-width="0" fill="#4a2c59"/><path d="M0 0 C59.58 0, 119.15 0, 170 0 M0 0 C43.28 0, 86.56 0, 170 0 M170 0 C170 18.75, 170 37.49, 170 80 M170 0 C170 23.47, 170 46.94, 170 80 M170 80 C128.04 80, 86.08 80, 0 80 M170 80 C130.51 80, 91.03 80, 0 80 M0 80 C0 52.15, 0 24.3, 0 0 M0 80 C0 60.03, 0 40.05, 0 0" stroke="#c297ea" stroke-width="2" fill="none"/></g><g transform="translate(314.06037668081433 465.48351854308146) rotate(0 33.13996887207031 13.5)"><text x="33.13996887207031" y="20.08" font-family="Nunito, Segoe UI Emoji" font-size="20px" fill="#e6edf3" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Review</text></g><g stroke-linecap="round"><g transform="translate(320.49605797848005 384.8563329032007) rotate(0 -10.312174479166742 24.68419828869048)"><path d="M-0.5 -0.25 C-3.98 3.6, -20.17 15.03, -20.76 23.26 C-21.36 31.49, -6.8 44.77, -4.07 49.1" stroke="#c9d1d9" stroke-width="2.5" fill="none" stroke-dasharray="8 10"/></g><g transform="translate(320.49605797848005 384.8563329032007) rotate(0 -10.312174479166742 24.68419828869048)"><path d="M-3.48 49.66 L-18.55 42 L-7.62 34.94 L-4.87 49.56" stroke="none" stroke-width="0" fill="#c9d1d9" fill-rule="evenodd"/><path d="M-4.07 49.1 C-8.81 46.77, -13.57 45.6, -17.63 42.68 M-17.63 42.68 C-15.61 40.77, -12.14 38.35, -7.87 34.59 M-7.87 34.59 C-6.45 40.69, -5.69 45, -4.07 49.1 M-4.07 49.1 C-4.07 49.1, -4.07 49.1, -4.07 49.1" stroke="#c9d1d9" stroke-width="2.5" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(375.0527609760561 436.27746385558146) rotate(0 11.152312563711916 -25.226190476190595)"><path d="M-0.31 -1.14 C3.78 -5.46, 22.42 -18.18, 23.45 -26.45 C24.49 -34.72, 9.03 -46.8, 5.9 -50.77" stroke="#c9d1d9" stroke-width="2.5" fill="none" stroke-dasharray="8 10"/></g><g transform="translate(375.0527609760561 436.27746385558146) rotate(0 11.152312563711916 -25.226190476190595)"><path d="M4.07 -52.12 L20.37 -44.87 L9.32 -35.83 L5.08 -51.14" stroke="none" stroke-width="0" fill="#c9d1d9" fill-rule="evenodd"/><path d="M5.9 -50.77 C7.39 -48.22, 11.02 -48.02, 19.87 -45.58 M19.87 -45.58 C18.55 -43.7, 15.89 -40.14, 10.9 -36.74 M10.9 -36.74 C7.51 -43.3, 6.21 -49.02, 5.9 -50.77 M5.9 -50.77 C5.9 -50.77, 5.9 -50.77, 5.9 -50.77" stroke="#c9d1d9" stroke-width="2.5" fill="none"/></g></g><mask/><g stroke-linecap="round" transform="translate(60.0 279.7176124656595) rotate(0 57.3193359375 77.412109375)"><path d="M0 0 L114.64 0 L114.64 154.82 L0 154.82" stroke="none" stroke-width="0" fill="#161b22"/><path d="M0 0 C44.32 0, 88.63 0, 114.64 0 M0 0 C42.97 0, 85.94 0, 114.64 0 M114.64 0 C114.64 37.65, 114.64 75.3, 114.64 154.82 M114.64 0 C114.64 35.17, 114.64 70.35, 114.64 154.82 M114.64 154.82 C78.03 154.82, 41.43 154.82, 0 154.82 M114.64 154.82 C91.16 154.82, 67.68 154.82, 0 154.82 M0 154.82 C0 104.58, 0 54.34, 0 0 M0 154.82 C0 114.99, 0 75.15, 0 0" stroke="#c9d1d9" stroke-width="2" fill="none"/></g><g stroke-linecap="round" transform="translate(65.69945484203299 272.8620149381867) rotate(0 57.3193359375 77.412109375)"><path d="M0 0 L114.64 0 L114.64 154.82 L0 154.82" stroke="none" stroke-width="0" fill="#161b22"/><path d="M0 0 C42.04 0, 84.08 0, 114.64 0 M0 0 C26.56 0, 53.13 0, 114.64 0 M114.64 0 C114.64 45.34, 114.64 90.67, 114.64 154.82 M114.64 0 C114.64 61.43, 114.64 122.86, 114.64 154.82 M114.64 154.82 C76.05 154.82, 37.45 154.82, 0 154.82 M114.64 154.82 C74.88 154.82, 35.12 154.82, 0 154.82 M0 154.82 C0 102.3, 0 49.77, 0 0 M0 154.82 C0 114.72, 0 74.61, 0 0" stroke="#c9d1d9" stroke-width="2" fill="none"/></g><g stroke-linecap="round" transform="translate(72.9987980769231 266.25772664835165) rotate(0 57.3193359375 77.412109375)"><path d="M0 0 L114.64 0 L114.64 154.82 L0 154.82" stroke="none" stroke-width="0" fill="#161b22"/><path d="M0 0 C45.21 0, 90.42 0, 114.64 0 M0 0 C43.7 0, 87.4 0, 114.64 0 M114.64 0 C114.64 50.88, 114.64 101.75, 114.64 154.82 M114.64 0 C114.64 36.13, 114.64 72.26, 114.64 154.82 M114.64 154.82 C86 154.82, 57.37 154.82, 0 154.82 M114.64 154.82 C70.06 154.82, 25.47 154.82, 0 154.82 M0 154.82 C0 108.8, 0 62.78, 0 0 M0 154.82 C0 123.11, 0 91.4, 0 0" stroke="#c9d1d9" stroke-width="2" fill="none"/></g><g transform="translate(84.64819688063403 330.16983602335165) rotate(0 45.66993713378906 13.5)"><text x="45.66993713378906" y="20.08" font-family="Nunito, Segoe UI Emoji" font-size="20px" fill="#c9d1d9" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Draft plan</text></g><g stroke-linecap="round" transform="translate(865.0207224416213 60.0) rotate(0 21.26395089285711 21.26395089285711)"><path d="M10.63 0 C18.12 0.24, 25.5 -3.17, 31.9 0 C35.43 1.36, 44.97 6.75, 42.53 10.63 C44.08 15.5, 40.58 25.74, 42.53 31.9 C42.67 42.04, 38.4 44.12, 31.9 42.53 C28.32 44.33, 19.69 42.34, 10.63 42.53 C0.32 41.86, -0.24 37.54, 0 31.9 C3.09 25.1, -0.23 21.45, 0 10.63 C1.16 0.09, 5.48 -2.49, 10.63 0" stroke="none" stroke-width="0" fill="#1a4d2e"/><path d="M10.63 0 C20.62 -0.43, 26.56 1.5, 31.9 0 M10.63 0 C18.93 -0.52, 28.03 -0.51, 31.9 0 M31.9 0 C39.09 1.11, 42.62 3.37, 42.53 10.63 M31.9 0 C37.01 -0.77, 44.77 2.55, 42.53 10.63 M42.53 10.63 C42.25 18.45, 43.09 22.01, 42.53 31.9 M42.53 10.63 C42.79 16.74, 41.85 23.3, 42.53 31.9 M42.53 31.9 C42.94 37.17, 40.81 42.73, 31.9 42.53 M42.53 31.9 C44.62 39.47, 37.92 41.6, 31.9 42.53 M31.9 42.53 C23.88 40.86, 17.47 44.21, 10.63 42.53 M31.9 42.53 C24.7 41.99, 19.54 42.68, 10.63 42.53 M10.63 42.53 C4.9 42.47, 0.86 40.46, 0 31.9 M10.63 42.53 C2.64 42.72, -2.11 39.55, 0 31.9 M0 31.9 C-0.97 25.66, 0.76 18.75, 0 10.63 M0 31.9 C0.49 25.45, 0.33 17.65, 0 10.63 M0 10.63 C0.35 2.69, 1.7 1.35, 10.63 0 M0 10.63 C1.74 3.11, 4.65 -0.13, 10.63 0" stroke="#2f9e44" stroke-width="2" fill="none"/></g><g transform="translate(927.0519724416213 63.66249999999991) rotate(0 49.19597625732422 18.899999999999977)"><text x="0" y="28.112000000000002" font-family="Nunito, Segoe UI Emoji" font-size="28px" fill="#c9d1d9" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Planner</text></g><g stroke-linecap="round" transform="translate(865.4586747557255 117.35435267857133) rotate(0 21.26395089285711 21.26395089285711)"><path d="M10.63 0 C15.06 1.38, 25.47 -1.68, 31.9 0 C35.8 -1.09, 45.94 1.77, 42.53 10.63 C40.92 19.78, 39.62 26.29, 42.53 31.9 C42.97 38.85, 35.86 45.03, 31.9 42.53 C23.98 42.85, 21.98 44.26, 10.63 42.53 C1.05 41.97, -1.55 37.37, 0 31.9 C1.06 22.3, 0.33 16.22, 0 10.63 C2.04 5.91, 3.73 0.05, 10.63 0" stroke="none" stroke-width="0" fill="#15426b"/><path d="M10.63 0 C15.74 1.42, 23.95 0.46, 31.9 0 M10.63 0 C15.66 -0.4, 20.45 0.5, 31.9 0 M31.9 0 C38.15 -0.81, 43.25 3.88, 42.53 10.63 M31.9 0 C39.57 -0.57, 42.57 4.98, 42.53 10.63 M42.53 10.63 C41.79 16.74, 41.58 25.26, 42.53 31.9 M42.53 10.63 C42.55 17.6, 41.94 25, 42.53 31.9 M42.53 31.9 C40.66 39.96, 37.08 42.38, 31.9 42.53 M42.53 31.9 C43.63 41.16, 40.55 41.14, 31.9 42.53 M31.9 42.53 C21.44 42.28, 16.31 43.54, 10.63 42.53 M31.9 42.53 C27.39 42.67, 22.41 42.28, 10.63 42.53 M10.63 42.53 C5.35 41.71, -0.78 38.03, 0 31.9 M10.63 42.53 C2.61 42.91, -1.44 40.81, 0 31.9 M0 31.9 C-0.27 25.06, 0.45 15.49, 0 10.63 M0 31.9 C-0.12 25.02, -0.49 15.28, 0 10.63 M0 10.63 C-0.86 3.94, 3.36 1.79, 10.63 0 M0 10.63 C-2.23 1.91, 4.33 2.09, 10.63 0" stroke="#58a6ff" stroke-width="2" fill="none"/></g><g transform="translate(927.2018388182255 121.01685267857124) rotate(0 37.603981018066406 18.899999999999977)"><text x="0" y="28.112000000000002" font-family="Nunito, Segoe UI Emoji" font-size="28px" fill="#c9d1d9" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Coder</text></g><g stroke-linecap="round" transform="translate(865.3347908271539 175.30412946428555) rotate(0 21.26395089285711 23.900000000000034)"><path d="M10.63 0 C13.98 2.61, 22.61 -2.06, 31.9 0 C38.23 0.74, 43.59 3.62, 42.53 10.63 C45.57 14.92, 45.08 24.25, 42.53 37.17 C40.43 45.27, 42.34 47.56, 31.9 47.8 C25.29 47.75, 18.47 46.41, 10.63 47.8 C5.31 49.31, 2.31 45.9, 0 37.17 C-1.23 31.33, -1.61 25.12, 0 10.63 C1.19 3.63, 6.63 -1.01, 10.63 0" stroke="none" stroke-width="0" fill="#4a2c59"/><path d="M10.63 0 C19.85 -1.32, 28.15 1.1, 31.9 0 M10.63 0 C15.6 0.51, 21.71 0, 31.9 0 M31.9 0 C39.36 1.65, 40.78 4.59, 42.53 10.63 M31.9 0 C37.9 1.81, 44.53 2.01, 42.53 10.63 M42.53 10.63 C44.27 20.29, 43.57 28.64, 42.53 37.17 M42.53 10.63 C42.61 19.92, 43.2 29.54, 42.53 37.17 M42.53 37.17 C41.81 42.68, 37.38 47.58, 31.9 47.8 M42.53 37.17 C40.75 44.93, 40.43 48.56, 31.9 47.8 M31.9 47.8 C24.76 49.47, 14.86 47.7, 10.63 47.8 M31.9 47.8 C23.36 48.21, 15.34 47.63, 10.63 47.8 M10.63 47.8 C1.83 49.75, 0.43 45.46, 0 37.17 M10.63 47.8 C4.98 48.88, -1.1 42.72, 0 37.17 M0 37.17 C0.72 30.31, 0.04 21.04, 0 10.63 M0 37.17 C0.79 28.14, 0.23 17.65, 0 10.63 M0 10.63 C-1.09 4.68, 4.92 -1.77, 10.63 0 M0 10.63 C0.55 3.52, 2.11 1.02, 10.63 0" stroke="#c297ea" stroke-width="2" fill="none"/></g><g transform="translate(927.3660408271539 178.96662946428592) rotate(0 58.869972229003906 18.899999999999977)"><text x="0" y="28.112000000000002" font-family="Nunito, Segoe UI Emoji" font-size="28px" fill="#c9d1d9" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Reviewer</text></g><g transform="translate(610.2606563358518 115.59231627747204) rotate(0 116.1359634399414 24.30000000000001)"><text x="0" y="36.144000000000005" font-family="Nunito, Segoe UI Emoji" font-size="36px" fill="#c9d1d9" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Three models:</text></g></svg>
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1742.6871929611189 581.5018875438792" width="1742.6871929611189" height="581.5018875438792"><!-- svg-source:excalidraw --><metadata/><defs><style class="style-fonts">
|
|
2
|
+
@font-face { font-family: Nunito; src: url(data:font/woff2;base64,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); }</style></defs><rect x="0" y="0" width="1742.6871929611189" height="581.5018875438792" fill="#ffffff"/><g stroke-linecap="round" transform="translate(262.94598202361897 301.8905594188792) rotate(0 85 40)"><path d="M0 0 L170 0 L170 80 L0 80" stroke="none" stroke-width="0" fill="#ebfbee"/><path d="M0 0 C43.09 0, 86.19 0, 170 0 M0 0 C34.13 0, 68.26 0, 170 0 M170 0 C170 25.31, 170 50.63, 170 80 M170 0 C170 20.8, 170 41.61, 170 80 M170 80 C125.5 80, 81.01 80, 0 80 M170 80 C115.24 80, 60.48 80, 0 80 M0 80 C0 58.78, 0 37.55, 0 0 M0 80 C0 53.09, 0 26.18, 0 0" stroke="#2f9e44" stroke-width="2" fill="none"/></g><g transform="translate(296.70603756561115 328.3905594188792) rotate(0 51.23994445800781 13.5)"><text x="51.23994445800781" y="20.08" font-family="Nunito, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Refine plan</text></g><g stroke-linecap="round" transform="translate(512.945982023619 301.6639969188792) rotate(0 84.99999999999994 40)"><path d="M0 0 L170 0 L170 80 L0 80" stroke="none" stroke-width="0" fill="#e7f5ff"/><path d="M0 0 C44.15 0, 88.31 0, 170 0 M0 0 C53.01 0, 106.02 0, 170 0 M170 0 C170 21.32, 170 42.64, 170 80 M170 0 C170 17.07, 170 34.14, 170 80 M170 80 C121.13 80, 72.26 80, 0 80 M170 80 C117.79 80, 65.57 80, 0 80 M0 80 C0 61.7, 0 43.41, 0 0 M0 80 C0 55.64, 0 31.28, 0 0" stroke="#1971c2" stroke-width="2" fill="none"/></g><g transform="translate(544.5860424484237 314.6639969188792) rotate(0 53.359939575195256 27)"><text x="53.35993957519531" y="20.08" font-family="Nunito, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Fresh agent</text><text x="53.35993957519531" y="47.08" font-family="Nunito, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic"> context</text></g><g stroke-linecap="round" transform="translate(762.9459820236189 301.8905594188792) rotate(0 85 40)"><path d="M0 0 L170 0 L170 80 L0 80" stroke="none" stroke-width="0" fill="#e7f5ff"/><path d="M0 0 C35.27 0, 70.54 0, 170 0 M0 0 C62.07 0, 124.14 0, 170 0 M170 0 C170 28.28, 170 56.57, 170 80 M170 0 C170 18.91, 170 37.82, 170 80 M170 80 C132.43 80, 94.86 80, 0 80 M170 80 C113.18 80, 56.36 80, 0 80 M0 80 C0 57.57, 0 35.14, 0 0 M0 80 C0 52.18, 0 24.36, 0 0" stroke="#1971c2" stroke-width="2" fill="none"/></g><g transform="translate(783.5960522140485 328.3905594188792) rotate(0 64.34992980957031 13.5)"><text x="64.34992980957031" y="20.08" font-family="Nunito, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Execute scope</text></g><g stroke-linecap="round" transform="translate(1012.9459820236189 301.8905594188792) rotate(0 85 40)"><path d="M0 0 L170 0 L170 80 L0 80" stroke="none" stroke-width="0" fill="#e7f5ff"/><path d="M0 0 C53.64 0, 107.27 0, 170 0 M0 0 C44.06 0, 88.12 0, 170 0 M170 0 C170 31.75, 170 63.51, 170 80 M170 0 C170 31.54, 170 63.07, 170 80 M170 80 C123.64 80, 77.28 80, 0 80 M170 80 C102.9 80, 35.81 80, 0 80 M0 80 C0 55.01, 0 30.02, 0 0 M0 80 C0 60.57, 0 41.13, 0 0" stroke="#1971c2" stroke-width="2" fill="none"/></g><g transform="translate(1062.7760067428571 328.3905594188792) rotate(0 35.16997528076172 13.5)"><text x="35.16997528076172" y="20.08" font-family="Nunito, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Commit</text></g><g stroke-linecap="round" transform="translate(1262.687192961119 301.8905594188792) rotate(0 85 40)"><path d="M0 0 L170 0 L170 80 L0 80" stroke="none" stroke-width="0" fill="#e7f5ff"/><path d="M0 0 C50.17 0, 100.34 0, 170 0 M0 0 C58.72 0, 117.44 0, 170 0 M170 0 C170 23.41, 170 46.83, 170 80 M170 0 C170 21.65, 170 43.3, 170 80 M170 80 C133.58 80, 97.17 80, 0 80 M170 80 C108.13 80, 46.27 80, 0 80 M0 80 C0 51, 0 22, 0 0 M0 80 C0 54.68, 0 29.37, 0 0" stroke="#1971c2" stroke-width="2" fill="none"/></g><g transform="translate(1289.757261320494 328.3905594188792) rotate(0 57.929931640625 13.5)"><text x="57.929931640625" y="20.08" font-family="Nunito, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Final Review</text></g><g stroke-linecap="round" transform="translate(1512.687192961119 301.8905594188792) rotate(0 84.99999999999989 40)"><path d="M0 0 L170 0 L170 80 L0 80" stroke="none" stroke-width="0" fill="#fff4e6"/><path d="M0 0 C66.42 0, 132.83 0, 170 0 M0 0 C57.35 0, 114.7 0, 170 0 M170 0 C170 28.36, 170 56.72, 170 80 M170 0 C170 30.17, 170 60.35, 170 80 M170 80 C132.77 80, 95.54 80, 0 80 M170 80 C117.17 80, 64.33 80, 0 80 M0 80 C0 51.63, 0 23.25, 0 0 M0 80 C0 59.69, 0 39.37, 0 0" stroke="#e8590c" stroke-width="2" fill="none"/></g><g transform="translate(1564.107229277037 328.3905594188792) rotate(0 33.57996368408192 13.5)"><text x="33.57996368408203" y="20.08" font-family="Nunito, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Squash</text></g><g stroke-linecap="round"><g transform="translate(441.94598202361897 341.8905594188792) rotate(0 29.5 0)"><path d="M0 0 C18.9 0, 37.79 0, 59 0 M0 0 C18.89 0, 37.78 0, 59 0" stroke="#495057" stroke-width="2" fill="none"/></g><g transform="translate(441.94598202361897 341.8905594188792) rotate(0 29.5 0)"><path d="M59 0 L45.41 6.34 L45.41 -6.34 L59 0" stroke="none" stroke-width="0" fill="#495057" fill-rule="evenodd"/><path d="M59 0 C54.65 2.03, 50.29 4.06, 45.41 6.34 M59 0 C54.65 2.03, 50.29 4.06, 45.41 6.34 M45.41 6.34 C45.41 1.85, 45.41 -2.64, 45.41 -6.34 M45.41 6.34 C45.41 3.01, 45.41 -0.32, 45.41 -6.34 M45.41 -6.34 C48.17 -5.05, 50.92 -3.77, 59 0 M45.41 -6.34 C49.58 -4.39, 53.75 -2.45, 59 0 M59 0 C59 0, 59 0, 59 0 M59 0 C59 0, 59 0, 59 0" stroke="#495057" stroke-width="2" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(691.9459820236189 341.7657960210282) rotate(0 29.5 0.03502764805136849)"><path d="M0 0 C18.67 0.02, 37.34 0.04, 59 0.07 M0 0 C15.34 0.02, 30.69 0.04, 59 0.07" stroke="#495057" stroke-width="2" fill="none"/></g><g transform="translate(691.9459820236189 341.7657960210282) rotate(0 29.5 0.03502764805136849)"><path d="M59 0.07 L45.4 6.39 L45.41 -6.29 L59 0.07" stroke="none" stroke-width="0" fill="#495057" fill-rule="evenodd"/><path d="M59 0.07 C54.7 2.07, 50.39 4.07, 45.4 6.39 M59 0.07 C55.46 1.71, 51.93 3.36, 45.4 6.39 M45.4 6.39 C45.4 3.07, 45.41 -0.24, 45.41 -6.29 M45.4 6.39 C45.4 2.31, 45.41 -1.78, 45.41 -6.29 M45.41 -6.29 C49.02 -4.6, 52.62 -2.91, 59 0.07 M45.41 -6.29 C49.98 -4.15, 54.55 -2.01, 59 0.07 M59 0.07 C59 0.07, 59 0.07, 59 0.07 M59 0.07 C59 0.07, 59 0.07, 59 0.07" stroke="#495057" stroke-width="2" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(941.9459820236189 341.8905594188792) rotate(0 29.5 0)"><path d="M0 0 C15.72 0, 31.45 0, 59 0 M0 0 C12.59 0, 25.18 0, 59 0" stroke="#495057" stroke-width="2" fill="none"/></g><g transform="translate(941.9459820236189 341.8905594188792) rotate(0 29.5 0)"><path d="M59 0 L45.41 6.34 L45.41 -6.34 L59 0" stroke="none" stroke-width="0" fill="#495057" fill-rule="evenodd"/><path d="M59 0 C55.38 1.69, 51.75 3.38, 45.41 6.34 M59 0 C56.1 1.35, 53.2 2.71, 45.41 6.34 M45.41 6.34 C45.41 2.69, 45.41 -0.95, 45.41 -6.34 M45.41 6.34 C45.41 2.45, 45.41 -1.45, 45.41 -6.34 M45.41 -6.34 C48.51 -4.89, 51.62 -3.44, 59 0 M45.41 -6.34 C49.55 -4.41, 53.68 -2.48, 59 0 M59 0 C59 0, 59 0, 59 0 M59 0 C59 0, 59 0, 59 0" stroke="#495057" stroke-width="2" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(1192.1871929611189 341.8905594188792) rotate(0 29 0)"><path d="M0 0 C20.51 0, 41.01 0, 58 0 M0 0 C13.71 0, 27.42 0, 58 0" stroke="#495057" stroke-width="2" fill="none"/></g><g transform="translate(1192.1871929611189 341.8905594188792) rotate(0 29 0)"><path d="M58 0 L44.41 6.34 L44.41 -6.34 L58 0" stroke="none" stroke-width="0" fill="#495057" fill-rule="evenodd"/><path d="M58 0 C53.19 2.24, 48.39 4.48, 44.41 6.34 M58 0 C54.79 1.5, 51.57 3, 44.41 6.34 M44.41 6.34 C44.41 3.54, 44.41 0.74, 44.41 -6.34 M44.41 6.34 C44.41 2.1, 44.41 -2.14, 44.41 -6.34 M44.41 -6.34 C48.22 -4.56, 52.03 -2.78, 58 0 M44.41 -6.34 C49.13 -4.13, 53.86 -1.93, 58 0 M58 0 C58 0, 58 0, 58 0 M58 0 C58 0, 58 0, 58 0" stroke="#495057" stroke-width="2" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(1442.187192961119 341.8905594188792) rotate(0 29 0)"><path d="M0 0 C23.02 0, 46.04 0, 58 0 M0 0 C22.86 0, 45.73 0, 58 0" stroke="#495057" stroke-width="2" fill="none"/></g><g transform="translate(1442.187192961119 341.8905594188792) rotate(0 29 0)"><path d="M58 0 L44.41 6.34 L44.41 -6.34 L58 0" stroke="none" stroke-width="0" fill="#495057" fill-rule="evenodd"/><path d="M58 0 C52.6 2.52, 47.21 5.03, 44.41 6.34 M58 0 C52.64 2.5, 47.28 5, 44.41 6.34 M44.41 6.34 C44.41 2.88, 44.41 -0.58, 44.41 -6.34 M44.41 6.34 C44.41 1.34, 44.41 -3.67, 44.41 -6.34 M44.41 -6.34 C48.65 -4.36, 52.9 -2.38, 58 0 M44.41 -6.34 C47.71 -4.8, 51.01 -3.26, 58 0 M58 0 C58 0, 58 0, 58 0 M58 0 C58 0, 58 0, 58 0" stroke="#495057" stroke-width="2" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(1105.9713525935056 301.24160820093687) rotate(0 -257.13862305703515 -25.36790720352883)"><path d="M0 0 C0.16 -15.45, 0.82 -29.61, 0.46 -50.74 M0.46 -50.74 C-203.45 -49.33, -406.37 -49.36, -514.73 -50.74 M-514.73 -50.74 C-514.48 -35.22, -513.61 -21.1, -514.73 -4.58" stroke="#1e1e1e" stroke-width="2.5" fill="none" stroke-dasharray="8 10"/></g><g transform="translate(1105.9713525935056 301.24160820093687) rotate(0 -257.13862305703515 -25.36790720352883)"><path d="M-513.93 -6.29 L-519.84 -18.63 L-506.52 -18.98 L-514.46 -6.35" stroke="none" stroke-width="0" fill="#1e1e1e" fill-rule="evenodd"/><path d="M-514.73 -4.58 C-516.24 -9.61, -517.43 -13.62, -520.55 -18.4 M-520.55 -18.4 C-516.46 -18.16, -510.8 -18.02, -507.88 -17.92 M-507.88 -17.92 C-509.91 -12.89, -511.4 -8.95, -514.73 -4.58 M-514.73 -4.58 C-514.73 -4.58, -514.73 -4.58, -514.73 -4.58" stroke="#1e1e1e" stroke-width="2.5" fill="none"/></g></g><mask/><g stroke-linecap="round" transform="translate(764.0054128271904 439.53467214209365) rotate(0 85 40)"><path d="M0 0 L170 0 L170 80 L0 80" stroke="none" stroke-width="0" fill="#f8f0fc"/><path d="M0 0 C36.42 0, 72.83 0, 170 0 M0 0 C61.87 0, 123.73 0, 170 0 M170 0 C170 29, 170 58, 170 80 M170 0 C170 25.32, 170 50.63, 170 80 M170 80 C112.9 80, 55.8 80, 0 80 M170 80 C132.74 80, 95.48 80, 0 80 M0 80 C0 54.98, 0 29.96, 0 0 M0 80 C0 53.73, 0 27.46, 0 0" stroke="#9c36b5" stroke-width="2" fill="none"/></g><g transform="translate(814.3154409033623 466.03467214209365) rotate(0 34.689971923828125 13.5)"><text x="34.689971923828125" y="20.08" font-family="Nunito, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Consult</text></g><g stroke-linecap="round" transform="translate(1013.2731304611189 441.5018875438792) rotate(0 85 40)"><path d="M0 0 L170 0 L170 80 L0 80" stroke="none" stroke-width="0" fill="#f8f0fc"/><path d="M0 0 C34.51 0, 69.02 0, 170 0 M0 0 C52.19 0, 104.37 0, 170 0 M170 0 C170 27.18, 170 54.36, 170 80 M170 0 C170 16.74, 170 33.49, 170 80 M170 80 C116.69 80, 63.38 80, 0 80 M170 80 C128.54 80, 87.08 80, 0 80 M0 80 C0 61.19, 0 42.38, 0 0 M0 80 C0 50.47, 0 20.94, 0 0" stroke="#9c36b5" stroke-width="2" fill="none"/></g><g transform="translate(1065.1331615890485 468.0018875438792) rotate(0 33.13996887207031 13.5)"><text x="33.13996887207031" y="20.08" font-family="Nunito, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Review</text></g><g stroke-linecap="round" transform="translate(1263.102232023619 441.3544266063792) rotate(0 85 40)"><path d="M0 0 L170 0 L170 80 L0 80" stroke="none" stroke-width="0" fill="#f8f0fc"/><path d="M0 0 C38.88 0, 77.76 0, 170 0 M0 0 C51.77 0, 103.54 0, 170 0 M170 0 C170 21.59, 170 43.18, 170 80 M170 0 C170 23.08, 170 46.17, 170 80 M170 80 C127.7 80, 85.4 80, 0 80 M170 80 C105.5 80, 41 80, 0 80 M0 80 C0 52.33, 0 24.66, 0 0 M0 80 C0 55.98, 0 31.96, 0 0" stroke="#9c36b5" stroke-width="2" fill="none"/></g><g transform="translate(1314.9622631515488 467.8544266063792) rotate(0 33.13996887207031 13.5)"><text x="33.13996887207031" y="20.08" font-family="Nunito, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Review</text></g><g stroke-linecap="round"><g transform="translate(821.8011252527858 384.9074865022129) rotate(0 -10.062174479166742 24.93419828869048)"><path d="M0.34 0.02 C-2.97 4.08, -19.12 16.29, -19.82 24.55 C-20.53 32.8, -6.44 45.32, -3.88 49.55" stroke="#1e1e1e" stroke-width="2.5" fill="none" stroke-dasharray="8 10"/></g><g transform="translate(821.8011252527858 384.9074865022129) rotate(0 -10.062174479166742 24.93419828869048)"><path d="M-4.68 50.51 L-17.29 43.89 L-7.77 34.52 L-4.53 49.85" stroke="none" stroke-width="0" fill="#1e1e1e" fill-rule="evenodd"/><path d="M-3.88 49.55 C-8.09 47.99, -11.99 45.86, -17.42 43.1 M-17.42 43.1 C-15.21 40.84, -12.54 38.6, -7.64 35.03 M-7.64 35.03 C-6.51 40.48, -5.54 45.01, -3.88 49.55 M-3.88 49.55 C-3.88 49.55, -3.88 49.55, -3.88 49.55" stroke="#1e1e1e" stroke-width="2.5" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(877.3578282503618 437.32861745459365) rotate(0 10.902312563711916 -25.476190476190595)"><path d="M0.66 0.57 C4.24 -3.94, 21.69 -18.5, 22.28 -27.05 C22.87 -35.61, 7.15 -46.68, 4.2 -50.76" stroke="#1e1e1e" stroke-width="2.5" fill="none" stroke-dasharray="8 10"/></g><g transform="translate(877.3578282503618 437.32861745459365) rotate(0 10.902312563711916 -25.476190476190595)"><path d="M4.46 -49.17 L17.95 -46.71 L8.02 -36.18 L5.93 -50.19" stroke="none" stroke-width="0" fill="#1e1e1e" fill-rule="evenodd"/><path d="M4.2 -50.76 C9.99 -48.4, 13.51 -48.11, 18.21 -45.68 M18.21 -45.68 C15.58 -44.04, 13.06 -41.15, 9.32 -36.76 M9.32 -36.76 C6.83 -41.23, 4.58 -46.12, 4.2 -50.76 M4.2 -50.76 C4.2 -50.76, 4.2 -50.76, 4.2 -50.76" stroke="#1e1e1e" stroke-width="2.5" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(1071.1701842067077 386.325152451304) rotate(0 -10.062174479166629 25.09602864583337)"><path d="M0.48 -0.68 C-3.11 3.3, -20.11 16.09, -20.89 24.48 C-21.67 32.87, -7.08 45.54, -4.21 49.64" stroke="#1e1e1e" stroke-width="2.5" fill="none" stroke-dasharray="8 10"/></g><g transform="translate(1071.1701842067077 386.325152451304) rotate(0 -10.062174479166629 25.09602864583337)"><path d="M-4.47 48.61 L-19.27 44.26 L-6.76 35.83 L-3.29 50.49" stroke="none" stroke-width="0" fill="#1e1e1e" fill-rule="evenodd"/><path d="M-4.21 49.64 C-9.97 46.62, -13.75 45.01, -17.97 43.67 M-17.97 43.67 C-15.07 40.54, -12.71 39.34, -8.49 35.26 M-8.49 35.26 C-8.31 40.55, -6.63 45.08, -4.21 49.64 M-4.21 49.64 C-4.21 49.64, -4.21 49.64, -4.21 49.64" stroke="#1e1e1e" stroke-width="2.5" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(1126.6981789983745 439.0699441179705) rotate(0 10.916666666666629 -25.63802083333337)"><path d="M-0.77 0.2 C2.73 -4.23, 20.48 -18.48, 21.47 -27.25 C22.47 -36.01, 7.86 -48.19, 5.2 -52.36" stroke="#1e1e1e" stroke-width="2.5" fill="none" stroke-dasharray="8 10"/></g><g transform="translate(1126.6981789983745 439.0699441179705) rotate(0 10.916666666666629 -25.63802083333337)"><path d="M3.9 -51.78 L20.53 -45.74 L10.22 -37.19 L3.93 -50.98" stroke="none" stroke-width="0" fill="#1e1e1e" fill-rule="evenodd"/><path d="M5.2 -52.36 C10.03 -50.67, 13.72 -47.91, 18.81 -46.31 M18.81 -46.31 C17.3 -44.8, 15.72 -43.59, 9.3 -38.04 M9.3 -38.04 C6.94 -43.3, 7.32 -46.83, 5.2 -52.36 M5.2 -52.36 C5.2 -52.36, 5.2 -52.36, 5.2 -52.36" stroke="#1e1e1e" stroke-width="2.5" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(1319.601173790041 385.524371201304) rotate(0 -10.062174479166629 25.09602864583337)"><path d="M-0.36 -0.55 C-3.55 3.28, -19.43 14.91, -19.93 23.19 C-20.43 31.48, -6.12 44.69, -3.36 49.17" stroke="#1e1e1e" stroke-width="2.5" fill="none" stroke-dasharray="8 10"/></g><g transform="translate(1319.601173790041 385.524371201304) rotate(0 -10.062174479166629 25.09602864583337)"><path d="M-1.64 49.73 L-15.94 43.46 L-8.28 36 L-2.56 49.44" stroke="none" stroke-width="0" fill="#1e1e1e" fill-rule="evenodd"/><path d="M-3.36 49.17 C-7.25 47.82, -11.1 46.63, -16.85 42.61 M-16.85 42.61 C-13.91 40.23, -12.49 38.07, -7.01 34.62 M-7.01 34.62 C-5.56 39.2, -5.78 42.18, -3.36 49.17 M-3.36 49.17 C-3.36 49.17, -3.36 49.17, -3.36 49.17" stroke="#1e1e1e" stroke-width="2.5" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(1375.129168581708 438.2691628679705) rotate(0 10.916666666666629 -25.63802083333337)"><path d="M0.2 -1.09 C3.98 -5.62, 21.45 -19.33, 22.32 -27.72 C23.19 -36.11, 8.18 -47.38, 5.43 -51.41" stroke="#1e1e1e" stroke-width="2.5" fill="none" stroke-dasharray="8 10"/></g><g transform="translate(1375.129168581708 438.2691628679705) rotate(0 10.916666666666629 -25.63802083333337)"><path d="M6.35 -50.56 L18.02 -44.55 L10.94 -37.01 L4.15 -51.41" stroke="none" stroke-width="0" fill="#1e1e1e" fill-rule="evenodd"/><path d="M5.43 -51.41 C7.79 -49.36, 11.61 -47.94, 19.28 -45.93 M19.28 -45.93 C16.87 -44.6, 14.07 -42.01, 10.14 -37.28 M10.14 -37.28 C8.08 -41.98, 9.18 -44.12, 5.43 -51.41 M5.43 -51.41 C5.43 -51.41, 5.43 -51.41, 5.43 -51.41" stroke="#1e1e1e" stroke-width="2.5" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(196.5947372939562 342.6703833276098) rotate(0 29.25 0)"><path d="M0 0 C17.64 0, 35.28 0, 58.5 0 M0 0 C22.59 0, 45.19 0, 58.5 0" stroke="#495057" stroke-width="2" fill="none"/></g><g transform="translate(196.5947372939562 342.6703833276098) rotate(0 29.25 0)"><path d="M58.5 0 L44.91 6.34 L44.91 -6.34 L58.5 0" stroke="none" stroke-width="0" fill="#495057" fill-rule="evenodd"/><path d="M58.5 0 C54.4 1.91, 50.3 3.82, 44.91 6.34 M58.5 0 C53.25 2.45, 48 4.9, 44.91 6.34 M44.91 6.34 C44.91 3.68, 44.91 1.02, 44.91 -6.34 M44.91 6.34 C44.91 3.14, 44.91 -0.06, 44.91 -6.34 M44.91 -6.34 C50.13 -3.9, 55.36 -1.46, 58.5 0 M44.91 -6.34 C48.63 -4.6, 52.35 -2.87, 58.5 0 M58.5 0 C58.5 0, 58.5 0, 58.5 0 M58.5 0 C58.5 0, 58.5 0, 58.5 0" stroke="#495057" stroke-width="2" fill="none"/></g></g><mask/><g stroke-linecap="round" transform="translate(262.20034555288464 438.98351854308146) rotate(0 85 40)"><path d="M0 0 L170 0 L170 80 L0 80" stroke="none" stroke-width="0" fill="#f8f0fc"/><path d="M0 0 C59.58 0, 119.15 0, 170 0 M0 0 C43.28 0, 86.56 0, 170 0 M170 0 C170 18.75, 170 37.49, 170 80 M170 0 C170 23.47, 170 46.94, 170 80 M170 80 C128.04 80, 86.08 80, 0 80 M170 80 C130.51 80, 91.03 80, 0 80 M0 80 C0 52.15, 0 24.3, 0 0 M0 80 C0 60.03, 0 40.05, 0 0" stroke="#9c36b5" stroke-width="2" fill="none"/></g><g transform="translate(314.06037668081433 465.48351854308146) rotate(0 33.13996887207031 13.5)"><text x="33.13996887207031" y="20.08" font-family="Nunito, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Review</text></g><g stroke-linecap="round"><g transform="translate(320.49605797848005 384.8563329032007) rotate(0 -10.312174479166742 24.68419828869048)"><path d="M-0.5 -0.25 C-3.98 3.6, -20.17 15.03, -20.76 23.26 C-21.36 31.49, -6.8 44.77, -4.07 49.1" stroke="#1e1e1e" stroke-width="2.5" fill="none" stroke-dasharray="8 10"/></g><g transform="translate(320.49605797848005 384.8563329032007) rotate(0 -10.312174479166742 24.68419828869048)"><path d="M-3.48 49.66 L-18.55 42 L-7.62 34.94 L-4.87 49.56" stroke="none" stroke-width="0" fill="#1e1e1e" fill-rule="evenodd"/><path d="M-4.07 49.1 C-8.81 46.77, -13.57 45.6, -17.63 42.68 M-17.63 42.68 C-15.61 40.77, -12.14 38.35, -7.87 34.59 M-7.87 34.59 C-6.45 40.69, -5.69 45, -4.07 49.1 M-4.07 49.1 C-4.07 49.1, -4.07 49.1, -4.07 49.1" stroke="#1e1e1e" stroke-width="2.5" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(375.0527609760561 436.27746385558146) rotate(0 11.152312563711916 -25.226190476190595)"><path d="M-0.31 -1.14 C3.78 -5.46, 22.42 -18.18, 23.45 -26.45 C24.49 -34.72, 9.03 -46.8, 5.9 -50.77" stroke="#1e1e1e" stroke-width="2.5" fill="none" stroke-dasharray="8 10"/></g><g transform="translate(375.0527609760561 436.27746385558146) rotate(0 11.152312563711916 -25.226190476190595)"><path d="M4.07 -52.12 L20.37 -44.87 L9.32 -35.83 L5.08 -51.14" stroke="none" stroke-width="0" fill="#1e1e1e" fill-rule="evenodd"/><path d="M5.9 -50.77 C7.39 -48.22, 11.02 -48.02, 19.87 -45.58 M19.87 -45.58 C18.55 -43.7, 15.89 -40.14, 10.9 -36.74 M10.9 -36.74 C7.51 -43.3, 6.21 -49.02, 5.9 -50.77 M5.9 -50.77 C5.9 -50.77, 5.9 -50.77, 5.9 -50.77" stroke="#1e1e1e" stroke-width="2.5" fill="none"/></g></g><mask/><g stroke-linecap="round" transform="translate(60.0 279.7176124656595) rotate(0 57.3193359375 77.412109375)"><path d="M0 0 L114.64 0 L114.64 154.82 L0 154.82" stroke="none" stroke-width="0" fill="#ffffff"/><path d="M0 0 C44.32 0, 88.63 0, 114.64 0 M0 0 C42.97 0, 85.94 0, 114.64 0 M114.64 0 C114.64 37.65, 114.64 75.3, 114.64 154.82 M114.64 0 C114.64 35.17, 114.64 70.35, 114.64 154.82 M114.64 154.82 C78.03 154.82, 41.43 154.82, 0 154.82 M114.64 154.82 C91.16 154.82, 67.68 154.82, 0 154.82 M0 154.82 C0 104.58, 0 54.34, 0 0 M0 154.82 C0 114.99, 0 75.15, 0 0" stroke="#1e1e1e" stroke-width="2" fill="none"/></g><g stroke-linecap="round" transform="translate(65.69945484203299 272.8620149381867) rotate(0 57.3193359375 77.412109375)"><path d="M0 0 L114.64 0 L114.64 154.82 L0 154.82" stroke="none" stroke-width="0" fill="#ffffff"/><path d="M0 0 C42.04 0, 84.08 0, 114.64 0 M0 0 C26.56 0, 53.13 0, 114.64 0 M114.64 0 C114.64 45.34, 114.64 90.67, 114.64 154.82 M114.64 0 C114.64 61.43, 114.64 122.86, 114.64 154.82 M114.64 154.82 C76.05 154.82, 37.45 154.82, 0 154.82 M114.64 154.82 C74.88 154.82, 35.12 154.82, 0 154.82 M0 154.82 C0 102.3, 0 49.77, 0 0 M0 154.82 C0 114.72, 0 74.61, 0 0" stroke="#1e1e1e" stroke-width="2" fill="none"/></g><g stroke-linecap="round" transform="translate(72.9987980769231 266.25772664835165) rotate(0 57.3193359375 77.412109375)"><path d="M0 0 L114.64 0 L114.64 154.82 L0 154.82" stroke="none" stroke-width="0" fill="#ffffff"/><path d="M0 0 C45.21 0, 90.42 0, 114.64 0 M0 0 C43.7 0, 87.4 0, 114.64 0 M114.64 0 C114.64 50.88, 114.64 101.75, 114.64 154.82 M114.64 0 C114.64 36.13, 114.64 72.26, 114.64 154.82 M114.64 154.82 C86 154.82, 57.37 154.82, 0 154.82 M114.64 154.82 C70.06 154.82, 25.47 154.82, 0 154.82 M0 154.82 C0 108.8, 0 62.78, 0 0 M0 154.82 C0 123.11, 0 91.4, 0 0" stroke="#1e1e1e" stroke-width="2" fill="none"/></g><g transform="translate(84.64819688063403 330.16983602335165) rotate(0 45.66993713378906 13.5)"><text x="45.66993713378906" y="20.08" font-family="Nunito, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Draft plan</text></g><g stroke-linecap="round" transform="translate(865.0207224416213 60.0) rotate(0 21.26395089285711 21.26395089285711)"><path d="M10.63 0 C18.12 0.24, 25.5 -3.17, 31.9 0 C35.43 1.36, 44.97 6.75, 42.53 10.63 C44.08 15.5, 40.58 25.74, 42.53 31.9 C42.67 42.04, 38.4 44.12, 31.9 42.53 C28.32 44.33, 19.69 42.34, 10.63 42.53 C0.32 41.86, -0.24 37.54, 0 31.9 C3.09 25.1, -0.23 21.45, 0 10.63 C1.16 0.09, 5.48 -2.49, 10.63 0" stroke="none" stroke-width="0" fill="#ebfbee"/><path d="M10.63 0 C20.62 -0.43, 26.56 1.5, 31.9 0 M10.63 0 C18.93 -0.52, 28.03 -0.51, 31.9 0 M31.9 0 C39.09 1.11, 42.62 3.37, 42.53 10.63 M31.9 0 C37.01 -0.77, 44.77 2.55, 42.53 10.63 M42.53 10.63 C42.25 18.45, 43.09 22.01, 42.53 31.9 M42.53 10.63 C42.79 16.74, 41.85 23.3, 42.53 31.9 M42.53 31.9 C42.94 37.17, 40.81 42.73, 31.9 42.53 M42.53 31.9 C44.62 39.47, 37.92 41.6, 31.9 42.53 M31.9 42.53 C23.88 40.86, 17.47 44.21, 10.63 42.53 M31.9 42.53 C24.7 41.99, 19.54 42.68, 10.63 42.53 M10.63 42.53 C4.9 42.47, 0.86 40.46, 0 31.9 M10.63 42.53 C2.64 42.72, -2.11 39.55, 0 31.9 M0 31.9 C-0.97 25.66, 0.76 18.75, 0 10.63 M0 31.9 C0.49 25.45, 0.33 17.65, 0 10.63 M0 10.63 C0.35 2.69, 1.7 1.35, 10.63 0 M0 10.63 C1.74 3.11, 4.65 -0.13, 10.63 0" stroke="#2f9e44" stroke-width="2" fill="none"/></g><g transform="translate(927.0519724416213 63.66249999999991) rotate(0 49.19597625732422 18.899999999999977)"><text x="0" y="28.112000000000002" font-family="Nunito, Segoe UI Emoji" font-size="28px" fill="#1e1e1e" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Planner</text></g><g stroke-linecap="round" transform="translate(865.4586747557255 117.35435267857133) rotate(0 21.26395089285711 21.26395089285711)"><path d="M10.63 0 C15.06 1.38, 25.47 -1.68, 31.9 0 C35.8 -1.09, 45.94 1.77, 42.53 10.63 C40.92 19.78, 39.62 26.29, 42.53 31.9 C42.97 38.85, 35.86 45.03, 31.9 42.53 C23.98 42.85, 21.98 44.26, 10.63 42.53 C1.05 41.97, -1.55 37.37, 0 31.9 C1.06 22.3, 0.33 16.22, 0 10.63 C2.04 5.91, 3.73 0.05, 10.63 0" stroke="none" stroke-width="0" fill="#e7f5ff"/><path d="M10.63 0 C15.74 1.42, 23.95 0.46, 31.9 0 M10.63 0 C15.66 -0.4, 20.45 0.5, 31.9 0 M31.9 0 C38.15 -0.81, 43.25 3.88, 42.53 10.63 M31.9 0 C39.57 -0.57, 42.57 4.98, 42.53 10.63 M42.53 10.63 C41.79 16.74, 41.58 25.26, 42.53 31.9 M42.53 10.63 C42.55 17.6, 41.94 25, 42.53 31.9 M42.53 31.9 C40.66 39.96, 37.08 42.38, 31.9 42.53 M42.53 31.9 C43.63 41.16, 40.55 41.14, 31.9 42.53 M31.9 42.53 C21.44 42.28, 16.31 43.54, 10.63 42.53 M31.9 42.53 C27.39 42.67, 22.41 42.28, 10.63 42.53 M10.63 42.53 C5.35 41.71, -0.78 38.03, 0 31.9 M10.63 42.53 C2.61 42.91, -1.44 40.81, 0 31.9 M0 31.9 C-0.27 25.06, 0.45 15.49, 0 10.63 M0 31.9 C-0.12 25.02, -0.49 15.28, 0 10.63 M0 10.63 C-0.86 3.94, 3.36 1.79, 10.63 0 M0 10.63 C-2.23 1.91, 4.33 2.09, 10.63 0" stroke="#1971c2" stroke-width="2" fill="none"/></g><g transform="translate(927.2018388182255 121.01685267857124) rotate(0 37.603981018066406 18.899999999999977)"><text x="0" y="28.112000000000002" font-family="Nunito, Segoe UI Emoji" font-size="28px" fill="#1e1e1e" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Coder</text></g><g stroke-linecap="round" transform="translate(865.3347908271539 175.30412946428555) rotate(0 21.26395089285711 23.900000000000034)"><path d="M10.63 0 C13.98 2.61, 22.61 -2.06, 31.9 0 C38.23 0.74, 43.59 3.62, 42.53 10.63 C45.57 14.92, 45.08 24.25, 42.53 37.17 C40.43 45.27, 42.34 47.56, 31.9 47.8 C25.29 47.75, 18.47 46.41, 10.63 47.8 C5.31 49.31, 2.31 45.9, 0 37.17 C-1.23 31.33, -1.61 25.12, 0 10.63 C1.19 3.63, 6.63 -1.01, 10.63 0" stroke="none" stroke-width="0" fill="#f8f0fc"/><path d="M10.63 0 C19.85 -1.32, 28.15 1.1, 31.9 0 M10.63 0 C15.6 0.51, 21.71 0, 31.9 0 M31.9 0 C39.36 1.65, 40.78 4.59, 42.53 10.63 M31.9 0 C37.9 1.81, 44.53 2.01, 42.53 10.63 M42.53 10.63 C44.27 20.29, 43.57 28.64, 42.53 37.17 M42.53 10.63 C42.61 19.92, 43.2 29.54, 42.53 37.17 M42.53 37.17 C41.81 42.68, 37.38 47.58, 31.9 47.8 M42.53 37.17 C40.75 44.93, 40.43 48.56, 31.9 47.8 M31.9 47.8 C24.76 49.47, 14.86 47.7, 10.63 47.8 M31.9 47.8 C23.36 48.21, 15.34 47.63, 10.63 47.8 M10.63 47.8 C1.83 49.75, 0.43 45.46, 0 37.17 M10.63 47.8 C4.98 48.88, -1.1 42.72, 0 37.17 M0 37.17 C0.72 30.31, 0.04 21.04, 0 10.63 M0 37.17 C0.79 28.14, 0.23 17.65, 0 10.63 M0 10.63 C-1.09 4.68, 4.92 -1.77, 10.63 0 M0 10.63 C0.55 3.52, 2.11 1.02, 10.63 0" stroke="#6741d9" stroke-width="2" fill="none"/></g><g transform="translate(927.3660408271539 178.96662946428592) rotate(0 58.869972229003906 18.899999999999977)"><text x="0" y="28.112000000000002" font-family="Nunito, Segoe UI Emoji" font-size="28px" fill="#1e1e1e" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Reviewer</text></g><g transform="translate(610.2606563358518 115.59231627747204) rotate(0 116.1359634399414 24.30000000000001)"><text x="0" y="36.144000000000005" font-family="Nunito, Segoe UI Emoji" font-size="36px" fill="#1e1e1e" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Three models:</text></g></svg>
|
package/docs/automation.md
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
# Automation contract
|
|
2
2
|
|
|
3
3
|
The machine-facing contract for driving neal from scripts, CI, and benchmark
|
|
4
|
-
harnesses.
|
|
4
|
+
harnesses. [neal-swebench](https://github.com/navels/neal-swebench) is a working
|
|
5
|
+
example: a harness that drives neal headless through this contract to benchmark
|
|
6
|
+
role pairings on SWE-bench Pro.
|
|
5
7
|
|
|
6
8
|
Noninteractive harnesses should run `neal execute <plan.md>` for an already
|
|
7
9
|
accepted executable plan, or `neal run <plan.md>` when neal should refine and
|
package/docs/compat.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
`neal compat` answers one question per model: **can this OpenAI-compatible model
|
|
4
4
|
drive neal's loop at all**, as a coder, a reviewer, or a planner? It is a
|
|
5
5
|
**compatibility smoke test, not a performance benchmark**. There is no
|
|
6
|
-
resolve-rate, no score,
|
|
6
|
+
resolve-rate, no score, and no ranking. The
|
|
7
7
|
fixtures are deliberately trivial. Any working agent should pass them. A failure
|
|
8
8
|
therefore means something is **fundamentally wrong** with the model's ability to
|
|
9
9
|
operate neal's contract. It does not mean a task was hard.
|
|
@@ -17,8 +17,8 @@ external benchmark assets, no dataset download, no remote runner.
|
|
|
17
17
|
- **Measured:** whether the model can follow neal's contract end to end (valid
|
|
18
18
|
tool calls + structured output, no max-step loops, no unresolved operator
|
|
19
19
|
blocks, a clean finalization) **and** solve a trivial bundled fixture.
|
|
20
|
-
- **Not measured:** skill. No resolve-rate, no scores, no rankings,
|
|
21
|
-
|
|
20
|
+
- **Not measured:** skill. No resolve-rate, no scores, no rankings, trivial
|
|
21
|
+
fixtures only.
|
|
22
22
|
- **Outcome:** a binary **PASS / FAIL per (model, role)**, with a structural
|
|
23
23
|
failure mode recorded for every FAIL.
|
|
24
24
|
|
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
|
|
11
11
|
## How to read this
|
|
12
12
|
|
|
13
|
-
- Scored under the **discrimination criterion** (
|
|
14
|
-
|
|
13
|
+
- Scored under the **discrimination criterion** (`schemaVersion: 2`): a reviewer
|
|
14
|
+
PASSes a fixture iff it raises at least one blocking
|
|
15
15
|
finding on the broken diff **and** strictly fewer on the good diff. Severity
|
|
16
16
|
calibration is not graded. Earlier sweeps (2026-06-18) required zero blocking
|
|
17
17
|
findings on the good diff and are not comparable.
|
|
@@ -163,8 +163,7 @@ neal compat --model <slug> --role all --reference openai-codex --json
|
|
|
163
163
|
```
|
|
164
164
|
|
|
165
165
|
`openai-codex` (gpt-5.5) is the authoritative reference. No OpenRouter model has
|
|
166
|
-
validated as a drop-in reference
|
|
167
|
-
2026-06-18 revision of this file). Throttle to about three concurrent invocations
|
|
166
|
+
validated as a drop-in reference. Throttle to about three concurrent invocations
|
|
168
167
|
for codex capacity.
|
|
169
168
|
|
|
170
169
|
Paid slugs only, never `:free`. Re-run when a slug's backing model version changes.
|
package/docs/release.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# Release process
|
|
2
2
|
|
|
3
|
-
Releases
|
|
4
|
-
and
|
|
5
|
-
|
|
3
|
+
Releases start from the manual GitHub Actions `Publish` workflow. The workflow
|
|
4
|
+
checks and stages the npm package, waits for a maintainer's npm approval, then
|
|
5
|
+
creates the matching GitHub tag and release.
|
|
6
6
|
|
|
7
7
|
## Versioning policy
|
|
8
8
|
|
|
@@ -18,9 +18,9 @@ exit codes, or durable run artifacts require a major version.
|
|
|
18
18
|
|
|
19
19
|
Examples:
|
|
20
20
|
|
|
21
|
-
- Patch: `0.
|
|
21
|
+
- Patch: `0.3.2` fixes a defect or compatibility issue without intentionally
|
|
22
22
|
changing documented behavior.
|
|
23
|
-
- Minor before `1.0.0`: `0.
|
|
23
|
+
- Minor before `1.0.0`: `0.4.0` adds a feature or meaningful behavior change
|
|
24
24
|
while the public contract is still settling.
|
|
25
25
|
- Major: `1.0.0` establishes the stable public contract. Later breaking
|
|
26
26
|
contract changes require `2.0.0`, `3.0.0`, and so on.
|
|
@@ -40,105 +40,86 @@ published CLI package:
|
|
|
40
40
|
|
|
41
41
|
An SDK update should land as a normal dependency pull request that updates both
|
|
42
42
|
`package.json` and `pnpm-lock.yaml`, runs normal CI, and records any provider
|
|
43
|
-
compatibility findings.
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
43
|
+
compatibility findings. Match the neal release to the user-facing impact: use a
|
|
44
|
+
patch release for a compatibility fix that preserves documented behavior, a
|
|
45
|
+
minor release for behavior changes before `1.0.0`, and a major release after
|
|
46
|
+
`1.0.0` if a documented public contract breaks.
|
|
47
47
|
|
|
48
|
-
##
|
|
48
|
+
## Prepare a release
|
|
49
49
|
|
|
50
|
-
|
|
51
|
-
|
|
50
|
+
Bump `package.json.version` and add a nonempty `## [<version>]` section to
|
|
51
|
+
`CHANGELOG.md` in a normal release-preparation pull request:
|
|
52
52
|
|
|
53
53
|
```sh
|
|
54
54
|
pnpm version <version> --no-git-tag-version
|
|
55
55
|
```
|
|
56
56
|
|
|
57
|
-
Run the
|
|
57
|
+
Run the release gates from the repository root:
|
|
58
58
|
|
|
59
59
|
```sh
|
|
60
60
|
RELEASE_VERSION=<version> RELEASE_DRY_RUN=true pnpm run validate:release
|
|
61
61
|
pnpm typecheck
|
|
62
62
|
pnpm test
|
|
63
|
+
pnpm lint
|
|
63
64
|
pnpm build
|
|
64
65
|
node scripts/verify-package.mjs
|
|
65
66
|
```
|
|
66
67
|
|
|
67
|
-
`validate:release` checks
|
|
68
|
-
|
|
69
|
-
availability, and checks remote `v<version>` tag availability when an `origin`
|
|
70
|
-
remote is configured. Package verification confirms the built CLI and packed
|
|
71
|
-
tarball.
|
|
68
|
+
`validate:release` checks the package version, required metadata, direct SDK
|
|
69
|
+
pins, changelog section, npm version availability, and remote tag availability.
|
|
72
70
|
|
|
73
|
-
##
|
|
71
|
+
## Publish
|
|
74
72
|
|
|
75
|
-
After the release-preparation pull request is merged and normal CI passes,
|
|
76
|
-
|
|
73
|
+
After the release-preparation pull request is merged and normal CI passes, open
|
|
74
|
+
**Actions > Publish > Run workflow** on `main`.
|
|
77
75
|
|
|
78
|
-
|
|
79
|
-
|
|
76
|
+
Run it first with the exact version and `dry_run: true`. This runs every gate
|
|
77
|
+
and `npm publish --dry-run` without changing npm or GitHub.
|
|
80
78
|
|
|
81
|
-
|
|
82
|
-
environment, grants `contents: read` and `id-token: write`, installs with
|
|
83
|
-
`pnpm install --frozen-lockfile`, and runs these gates before any publish step:
|
|
79
|
+
Run it again with `dry_run: false` after reviewing the dry run. The workflow:
|
|
84
80
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
81
|
+
1. Runs the same release gates.
|
|
82
|
+
2. Runs `npm stage publish` and writes the stage ID and approval commands to the
|
|
83
|
+
GitHub job summary.
|
|
84
|
+
3. Waits up to 60 minutes for the package to become public.
|
|
85
|
+
4. Verifies npm's signed provenance against the workflow's repository, path,
|
|
86
|
+
branch, and exact commit SHA.
|
|
87
|
+
5. Creates `v<version>` at that commit and a GitHub release from the matching
|
|
88
|
+
changelog section.
|
|
92
89
|
|
|
93
|
-
Review the
|
|
94
|
-
`
|
|
95
|
-
the
|
|
90
|
+
Review the stage with `npm stage view <stage-id>` or
|
|
91
|
+
`npm stage download <stage-id>`. Approve it with 2FA using
|
|
92
|
+
`npm stage approve <stage-id>` or the npmjs.com UI. npm won't publish the
|
|
93
|
+
package until that approval happens.
|
|
96
94
|
|
|
97
|
-
|
|
98
|
-
which places the version in a staged, not-publicly-available state. A
|
|
99
|
-
maintainer then reviews and approves it with 2FA: `npm stage list`,
|
|
100
|
-
`npm stage view <stage-id>` / `npm stage download <stage-id>`, and
|
|
101
|
-
`npm stage approve <stage-id>` (or the npmjs.com UI). Nothing reaches `latest`
|
|
102
|
-
without that human approval, so a compromised workflow cannot ship directly.
|
|
95
|
+
## Recovery
|
|
103
96
|
|
|
104
|
-
|
|
97
|
+
Rerun `Publish` with the same version and `dry_run: false` after a timeout or a
|
|
98
|
+
partial failure. The workflow checks existing state before taking action:
|
|
105
99
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
100
|
+
- If the npm version isn't public, it stages it and waits for approval.
|
|
101
|
+
- If the npm version is public, it skips staging and verifies its signed
|
|
102
|
+
provenance against the current workflow commit.
|
|
103
|
+
- If the tag or GitHub release already exists at the expected commit, it keeps
|
|
104
|
+
it and finishes successfully.
|
|
105
|
+
- If the npm provenance or tag points to another commit, it stops without
|
|
106
|
+
changing the existing release.
|
|
111
107
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
The publish workflow relies on trusted publishing/OIDC and intentionally has no
|
|
115
|
-
npm-token fallback. It grants `id-token: write` for OIDC, keeps repository
|
|
116
|
-
contents read-only, uses the `npm-publish` GitHub environment, and runs
|
|
117
|
-
`npm stage publish` only on the real-publish path (staged publishing requires
|
|
118
|
-
npm >= 11.15.0, so the workflow upgrades npm accordingly).
|
|
119
|
-
|
|
120
|
-
The npm-side configuration for `@navels/neal`:
|
|
108
|
+
If the approval wait times out, approve the existing npm stage before rerunning.
|
|
109
|
+
Do not try to stage the same version a second time.
|
|
121
110
|
|
|
122
|
-
|
|
123
|
-
This blocks every traditional token permanently. Trusted publishers are
|
|
124
|
-
unaffected because they use OIDC, and staged approvals always require a
|
|
125
|
-
maintainer's 2FA.
|
|
126
|
-
- Trusted publisher: owner/repo `navels/neal`, workflow filename
|
|
127
|
-
`publish.yml`, environment `npm-publish`, allowed action **`npm stage
|
|
128
|
-
publish` only** (stage-only, plain `npm publish` is deliberately not
|
|
129
|
-
granted).
|
|
130
|
-
|
|
131
|
-
## Release boundaries
|
|
111
|
+
## Trusted publishing setup
|
|
132
112
|
|
|
133
|
-
The
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
113
|
+
The workflow uses npm trusted publishing with no token fallback. The npm trusted
|
|
114
|
+
publisher is configured for owner/repository `navels/neal`, workflow
|
|
115
|
+
`publish.yml`, environment `npm-publish`, and the **`npm stage publish` only**
|
|
116
|
+
permission. Publishing access requires two-factor authentication and disallows
|
|
117
|
+
traditional tokens.
|
|
138
118
|
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
119
|
+
The workflow grants `id-token: write` for npm's OpenID Connect authentication
|
|
120
|
+
and `contents: write` for the final tag and GitHub release. The `npm-publish`
|
|
121
|
+
environment accepts only `main`. npm's stage-only permission means the workflow
|
|
122
|
+
can't make a package public without a maintainer's 2FA approval.
|
|
142
123
|
|
|
143
124
|
Official references:
|
|
144
125
|
|
|
@@ -146,5 +127,7 @@ Official references:
|
|
|
146
127
|
<https://docs.github.com/en/actions/how-tos/write-workflows/choose-when-workflows-run/trigger-a-workflow>
|
|
147
128
|
- npm trusted publishing:
|
|
148
129
|
<https://docs.npmjs.com/trusted-publishers/>
|
|
130
|
+
- npm staged packages:
|
|
131
|
+
<https://docs.npmjs.com/staged-publishing/>
|
|
149
132
|
- npm trust command:
|
|
150
133
|
<https://docs.npmjs.com/cli/v11/commands/npm-trust/>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@navels/neal",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.2",
|
|
4
4
|
"description": "A source-first multi-agent CLI for planning, executing, reviewing, and resuming scoped code changes.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"publishConfig": {
|
|
@@ -56,8 +56,8 @@
|
|
|
56
56
|
},
|
|
57
57
|
"dependencies": {
|
|
58
58
|
"@ai-sdk/openai-compatible": "3.0.12",
|
|
59
|
-
"@anthropic-ai/claude-agent-sdk": "0.3.
|
|
60
|
-
"@openai/codex-sdk": "0.
|
|
59
|
+
"@anthropic-ai/claude-agent-sdk": "0.3.220",
|
|
60
|
+
"@openai/codex-sdk": "0.146.0",
|
|
61
61
|
"ai": "7.0.31",
|
|
62
62
|
"dotenv": "^17.4.2",
|
|
63
63
|
"yaml": "^2.9.0",
|
|
Binary file
|