@su-record/vibe 4.1.25 → 4.1.27

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 (99) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/.codex-plugin/plugin.json +1 -1
  4. package/README.md +45 -13
  5. package/card.md +9 -9
  6. package/dist/cli/common.js +4 -2
  7. package/dist/cli/common.js.map +1 -1
  8. package/dist/cli/human.js +2 -2
  9. package/dist/cli/human.js.map +1 -1
  10. package/dist/cli/session.js +16 -0
  11. package/dist/cli/session.js.map +1 -0
  12. package/dist/cli/work.js +60 -26
  13. package/dist/cli/work.js.map +1 -1
  14. package/dist/cli.js +9 -4
  15. package/dist/cli.js.map +1 -1
  16. package/dist/core/check-process.js +51 -0
  17. package/dist/core/check-process.js.map +1 -0
  18. package/dist/core/check.js +94 -49
  19. package/dist/core/check.js.map +1 -1
  20. package/dist/core/checks/eval.js +10 -19
  21. package/dist/core/checks/eval.js.map +1 -1
  22. package/dist/core/checks/file.js +4 -0
  23. package/dist/core/checks/file.js.map +1 -1
  24. package/dist/core/checks/http.js +22 -3
  25. package/dist/core/checks/http.js.map +1 -1
  26. package/dist/core/checks/review.js +13 -9
  27. package/dist/core/checks/review.js.map +1 -1
  28. package/dist/core/checks/run.js +7 -29
  29. package/dist/core/checks/run.js.map +1 -1
  30. package/dist/core/config.js +5 -3
  31. package/dist/core/config.js.map +1 -1
  32. package/dist/core/consent.js +33 -0
  33. package/dist/core/consent.js.map +1 -0
  34. package/dist/core/context.js +11 -2
  35. package/dist/core/context.js.map +1 -1
  36. package/dist/core/evidence.js +35 -0
  37. package/dist/core/evidence.js.map +1 -0
  38. package/dist/core/failure-message.js +23 -0
  39. package/dist/core/failure-message.js.map +1 -0
  40. package/dist/core/failure.js +54 -0
  41. package/dist/core/failure.js.map +1 -0
  42. package/dist/core/handoff-results.js +44 -0
  43. package/dist/core/handoff-results.js.map +1 -0
  44. package/dist/core/handoff.js +65 -0
  45. package/dist/core/handoff.js.map +1 -0
  46. package/dist/core/inspect.js +136 -0
  47. package/dist/core/inspect.js.map +1 -0
  48. package/dist/core/intent.js +33 -9
  49. package/dist/core/intent.js.map +1 -1
  50. package/dist/core/ledger.js.map +1 -1
  51. package/dist/core/output-capture.js +31 -0
  52. package/dist/core/output-capture.js.map +1 -0
  53. package/dist/core/private-store.js +17 -0
  54. package/dist/core/private-store.js.map +1 -0
  55. package/dist/core/read-guard.js +6 -0
  56. package/dist/core/read-guard.js.map +1 -0
  57. package/dist/core/readerSession.js +8 -27
  58. package/dist/core/readerSession.js.map +1 -1
  59. package/dist/core/regress.js +1 -1
  60. package/dist/core/regress.js.map +1 -1
  61. package/dist/core/repair.js +39 -0
  62. package/dist/core/repair.js.map +1 -0
  63. package/dist/core/run-id.js +29 -0
  64. package/dist/core/run-id.js.map +1 -0
  65. package/dist/core/scenarios.js +11 -0
  66. package/dist/core/scenarios.js.map +1 -1
  67. package/dist/core/session.js +29 -0
  68. package/dist/core/session.js.map +1 -0
  69. package/dist/core/source-basis.js +75 -0
  70. package/dist/core/source-basis.js.map +1 -0
  71. package/dist/core/state.js.map +1 -1
  72. package/dist/core/view.js +36 -15
  73. package/dist/core/view.js.map +1 -1
  74. package/dist/install/hooks.js +2 -2
  75. package/dist/install/hooks.js.map +1 -1
  76. package/dist/install/plugin.js +13 -7
  77. package/dist/install/plugin.js.map +1 -1
  78. package/dist/install/tree.js +2 -2
  79. package/dist/install/tree.js.map +1 -1
  80. package/hooks/codex-hooks.json +2 -2
  81. package/hooks/hooks.json +2 -2
  82. package/hooks/notify.js +29 -71
  83. package/hooks/private-store.cjs +59 -0
  84. package/hooks/session-context.cjs +59 -0
  85. package/hooks/session-files.cjs +81 -0
  86. package/hooks/session-repair.cjs +24 -0
  87. package/hooks/session-state.cjs +177 -0
  88. package/hooks/session.js +17 -66
  89. package/hooks/slice-command.cjs +121 -0
  90. package/hooks/slice-guard.cjs +41 -0
  91. package/hooks/slice-store.cjs +72 -0
  92. package/package.json +1 -1
  93. package/skills/vibe/SKILL.md +4 -3
  94. package/skills/vibe-build/SKILL.md +3 -2
  95. package/skills/vibe-discover/SKILL.md +12 -11
  96. package/skills/vibe-discover/work-opportunities.md +13 -0
  97. package/skills/vibe-handoff/SKILL.md +1 -0
  98. package/skills/vibe-prove/SKILL.md +7 -11
  99. package/skills/vibe-scope/SKILL.md +6 -4
@@ -6,14 +6,14 @@
6
6
  },
7
7
  "metadata": {
8
8
  "description": "An AX/FDE harness for Claude Code, Codex CLI and ChatGPT desktop. Say what you need, approve the scenarios once; the harness proves the work by running the checks itself. Memory in plain files, human tokens for irreversible actions, a ledger instead of claims.",
9
- "version": "4.1.25"
9
+ "version": "4.1.27"
10
10
  },
11
11
  "plugins": [
12
12
  {
13
13
  "name": "vibe",
14
14
  "source": "./",
15
15
  "description": "An AX/FDE harness for Claude Code, Codex CLI and ChatGPT desktop. Say what you need, approve the scenarios once; the harness proves the work by running the checks itself. Memory in plain files, human tokens for irreversible actions, a ledger instead of claims.",
16
- "version": "4.1.25",
16
+ "version": "4.1.27",
17
17
  "category": "productivity"
18
18
  }
19
19
  ]
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vibe",
3
- "version": "4.1.25",
3
+ "version": "4.1.27",
4
4
  "description": "An AX/FDE harness for Claude Code, Codex CLI and ChatGPT desktop. Say what you need, approve the scenarios once; the harness proves the work by running the checks itself. Memory in plain files, human tokens for irreversible actions, a ledger instead of claims.",
5
5
  "author": {
6
6
  "name": "su-record",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vibe",
3
- "version": "4.1.25",
3
+ "version": "4.1.27",
4
4
  "description": "An AX/FDE harness for Claude Code, Codex CLI and ChatGPT desktop. Say what you need, approve the scenarios once; the harness proves the work by running the checks itself. Memory in plain files, human tokens for irreversible actions, a ledger instead of claims.",
5
5
  "author": {
6
6
  "name": "su-record",
package/README.md CHANGED
@@ -1,8 +1,8 @@
1
1
  # vibe 4
2
2
 
3
- **The experience of having an AX/FDE next to you** — an agent-experience engineer, the forward-deployed kind who sits with the customer and makes the model do the actual job. Say what you need in plain words. vibe turns it into checkable scenarios, builds it, proves it by running the checks itself, and hands it over to whoever will run it. Vibe-coding quality is the by-product of that discipline.
3
+ **Use AI as an FDE.** Start with the customer's problem, agree on what success means, build, prove the result, and hand it to the person who will run it. vibe carries that procedure across clients and sessions, with executable checks and recorded decisions.
4
4
 
5
- What vibe promises, and what its own bench supports — every number is in `bench/claims/`, written before each run, on a fair bench the harness cannot read the answer from. On a task the model finishes in one pass, vibe costs 0.7–1.2× the bare model's tokens on Claude Code and 0.8–1.0× on Codex, at equal quality. Where there is something to carry, it costs less than the bare model: a task split across two sessions 0.69× on Claude Code and 0.81× on Codex; the same task started on Claude Code and finished on Codex, with no memory between, 0.75×; a cross-cutting change in a 54-file repository 0.61× and 0.50×, because `vibe state` names the files each scenario is about and the model reads those and nothing else. Saying what counts as success is not free: an arm that scopes for itself — the card, the skills and the hooks, no intent — spends 1.3× to 5.8× the tokens and reaches the same quality. No prevention number is claimed: six trap tasks in a row failed to separate the arms, and each is named and retired in the claim files. The mechanism is the same on both clients: hooks that hand over the state when a session starts, gate the irreversible at the tool call, run the verdict when a turn ends without it, and name a completion claim the verdict does not support.
5
+ The [4.1.25 measurements](bench/claims/2026-09-09-4.1.25.md) are historical evidence toward that purpose: equal observed final artifact scores, with the supplied-scope arm using 0.69× and 0.81× bare weighted input tokens on a two-session task, 0.75× on a Claude-to-Codex handover, and 0.61× and 0.50× on the brownfield task. The arm that wrote its own scope used 1.3–5.8× bare weighted input tokens. Those final scores did not measure the quality of discovery or agreement. Six trap attempts failed to separate the arms; no prevention number is claimed. The 4.1.26 comparison evaluates the agreement separately and requires new evidence before any new quality or cost claim.
6
6
 
7
7
  Main surfaces: Claude Code · Codex CLI · ChatGPT desktop app · Hermes Agent · Claude desktop app (interview, approval, verdict, handoff).
8
8
 
@@ -31,16 +31,44 @@ Then, in chat:
31
31
  ## The flow
32
32
 
33
33
  ```
34
- request `vibe state` says the stage and the next step (the session hook hands it over on Claude Code)
35
- → interview discover: at most three questions, sample profiling, anomalies said first
36
- → scenarios scope: each scenario bound to a check · research · skills needed → one approval
34
+ request `vibe state` says the stage and the next step; bind the host session to this worktree
35
+ → discover evidence first; ask only about consequential unknowns, up to three per round
36
+ → scenarios sufficient agreement · executable checks · needed tools → one approval
37
37
  → build everything first, then one `vibe check --all`; on a failure, fix what the check names; `vibe context <id>` when that is not enough
38
- → prove `vibe check --all` — every scenario plus every regression, ordered by the work graph; the Stop hook runs it if a turn ends without it
38
+ → prove explicitly run `vibe check --all` — every scenario plus every regression, ordered by the work graph
39
39
  → report from the check output; HANDOFF.md only when the intent asks; irreversible steps need a token
40
40
  ```
41
41
 
42
42
  Any client can pick the work up: `vibe state` says where you are, because the state lives in plain files inside the repository. There is no handoff document — the state is the handoff.
43
43
 
44
+ In the intended worktree, run `vibe session bind` once per host session. It uses `CODEX_THREAD_ID` or `CLAUDE_SESSION_ID`; if the host supplies only a hook `session_id`, pass that exact value with `--session <id>`. `vibe session status` reports the association. Binding is explicit and private to the local machine: a copied ledger, parent repository or sibling worktree cannot choose the session's target. Missing or conflicting identifiers leave Stop unavailable until the association is corrected.
45
+
46
+ SessionStart and Stop perform bounded local reads with packaged modules. They run no checks, models, services or PATH commands. Stop recognizes completion only from a fresh explicit-check record for the exact canonical worktree, revision, contract and files. It blocks unchanged unfinished work at most twice, then releases it as unmet. An inbox wait or scenario handoff also releases without success. Titles, check output, transcript claims and handoff reasons never become Stop instructions.
47
+
48
+ Session bindings, retry counters and explicit-check proofs live outside the project in `~/.vibe-runtime`, with private directory/file permissions and linked-entry rejection. Rebinding does not clear an existing retry counter. On Windows, confidentiality still depends on the user's home ACL; POSIX mode bits cannot prove it. A project fingerprint is bounded to 10,000 entries, 64 MiB total, 8 MiB per file and a 1.5-second traversal budget. Unsupported files, changing inputs or exceeded limits produce a private unavailable snapshot while preserving the explicit check's verdict. Stop then reports unavailable and unmet. Failure to write the private proof itself remains an error. Git metadata, dependency trees and client configuration directories are excluded from this fingerprint; contract files, configuration and regressions under `.vibe/` remain included.
49
+
50
+ The private proof also retains the reviewed execution plan. Stop compares the local consent receipt, PATH/PATHEXT, shell and Node paths, selected environment values, declared working directories and verifier hashes without executing them. External declared verifier files are included in that comparison. Reads are capped at 512 distinct verifier files, 32 MiB total and one second; unavailable or changed context cannot become verified completion. Undeclared shell dependencies and same-user hostile processes remain outside this guarantee.
51
+
52
+ Read fewer relevant files, each in full: Claude Code uses Read, Codex uses `cat`. The Bash hook blocks recognized slices of the current state's files, `.vibe/intent.md`, `scenarios.yaml` and `spec/` or `specs/`; other source/document slices receive a warning each time. `grep -n`/`rg -n` locate lines, `-l` locates files; file-fed `head`, `tail`, `sed -n`, `cut` and `awk` excerpts do not replace reading the source. Logs, `.dev/` and pipelines carrying command output remain exempt. The recognizer does not execute or expand shell variables, aliases or heredocs. An unavailable state-file mirror is reported, and the built-in contract/spec rules still apply.
53
+
54
+ Slice-read counters contain only blocked/warned counts in the private runtime store. Benchmark initialization distinguishes a measured zero from a missing or unreadable counter; each session records the difference and each attempt records the sum. No shell command or file excerpt is copied into these counter records.
55
+
56
+ A clear request needs no ceremonial interview. Relevant documents and sample profiles can answer questions before the customer is asked. An unanswered material question remains unanswered even if a default was proposed. Research and new integrations are used for a specific unresolved need, not on every local task.
57
+
58
+ An intent can record its stable evidence files with `sources` in the `intent draft --stdin` payload. Their content hashes become part of the approval; `vibe intent show --json` reports `sourceBasis` and names changed or missing inputs. Reuse unchanged findings and re-evaluate affected decisions when the evidence changes. Generated outputs, session prompts, and files the implementation will edit are not stable evidence inputs.
59
+
60
+ ## Find work AI can take over
61
+
62
+ ```text
63
+ /vibe Look at these work logs, exported mail, documents and meeting notes. Find recurring work worth automating, agree on one item with me, and build a checked local pilot.
64
+ ```
65
+
66
+ vibe establishes the observation window, counts distinct work events, and records which have measured active time. The same event in a message and a meeting note counts once. Missing duration stays unknown; meeting length and a vendor's productivity claim do not establish time saved.
67
+
68
+ Each grounded opportunity names its sources, input/output, tool or connection, setup, failure cases, permission and human-review boundaries, rollback, and an executable check. Rank up to three feasible candidates against the customer's objective, then agree on one to build. Fewer than three is a valid result. A request to find opportunities does not itself authorize an external installation, send, payment, or deletion.
69
+
70
+ The selected local pilot must work on changed input, handle a failure, preserve source data, and support rerun and rollback. Report its actual behavior and machine runtime. Human time saved or ROI requires a comparable manual baseline and measured setup, correction, review, and maintenance effort; without those, the value remains unknown.
71
+
44
72
  ## Five things the harness does (and nothing else)
45
73
 
46
74
  1. **Independent verdict.** Every scenario carries a check: `run` (exit code), `file` (exists / regex / contains / JSON Schema / column sum), `http` (status / JSON Schema / latency ceiling), `eval` (count of matching labelled cases through a runner), or `human` (no verdict — goes to the inbox). Only what `vibe check` executed itself becomes evidence. A model saying "done" changes nothing; DONE is void the moment a file changes.
@@ -103,6 +131,7 @@ The policy is per project (`.vibe/config.json`); `vibe tokens` alone prints it.
103
131
  ```
104
132
  setup update [--check] · status · tokens · uninstall [--purge-state] · plugin build | mcpb | install | status
105
133
  work state [--graph] · read <file…> [--ask "…"] · profile <file> · intent draft | show | analyze · approve · check [id…] [--all] · evidence · abandon
134
+ session session bind [--session id] · session status [--session id]
106
135
  checks run · file · http · eval · review · human · size [--max-file 400] [--max-function 50]
107
136
  map map · symbols <file> · callers <symbol> · blast · context <scenario> · conventions
108
137
  human ask · authorize --action <action> · inbox [answer <id> "…" | resolve <id>]
@@ -118,6 +147,8 @@ ledger ledger · ledger compare --metric checks|turns|cost|ms|tokens [--paire
118
147
 
119
148
  `vibe research --from-intent` turns the intent title, the hosts its `http` checks target and the stack into queries, searches GitHub repositories, code (`SKILL.md` files — needs a token) and skill catalogs, and ranks up to five candidates — what moved inside the research window first (`--days N`, default 30: the latest releases, else the latest commit, one or two requests per repository), then keyword match, recency, stars and license; evidence outside the window is demoted, never dropped. Each candidate carries one action: `vibe skill add …`, a knowledge note, or none. The note lands in `.vibe/knowledge/research/`; the same query is cached for a day. Nothing fetched is executed or installed.
120
149
 
150
+ Run it when a consequential tool or technical choice remains unresolved after inspecting the available capabilities. Reuse an installed tool when it already meets the agreed check.
151
+
121
152
  Default catalogs: `anthropics/skills`, `vercel-labs/agent-skills`, `NousResearch/hermes-agent` (a skill is any directory with a `SKILL.md`, at any depth). Add your own under `catalogs` in `.vibe/config.json`. Without a GitHub token (`GITHUB_TOKEN`, or `gh auth login`) code search is skipped and catalogs are read within the public limits.
122
153
 
123
154
  ## Skills
@@ -137,7 +168,7 @@ vibe skill add owner/repo[@name] [--pin <sha>] [--yes] # shows the commands in
137
168
  vibe skill search <keyword> · list · used <name> · prune [--unused-runs 10] · dismiss <ref>
138
169
  ```
139
170
 
140
- Proposals are proposals: the harness never installs a proposed skill, runs remote commands, or writes anything but its own six skills, card and hook outside the project. A dismissed proposal is not repeated.
171
+ Proposals are proposals: the harness never installs a proposed skill or runs remote commands without an explicit action. Its local installation and private runtime records live outside the project. A dismissed proposal is not repeated.
141
172
 
142
173
  ## Language
143
174
 
@@ -148,6 +179,7 @@ The always-on card (1KB), the skills and every record vibe writes are English. T
148
179
  ```
149
180
  intent.md what and why — the one page you approve
150
181
  scenarios.yaml given / when / then + the check that judges each + needs (the work graph)
182
+ source-basis.json optional evidence-file hashes bound to the approval
151
183
  evidence/ what the harness actually ran, per run
152
184
  ledger.jsonl state changes, client, model, results, cost, typed edges
153
185
  inbox.jsonl questions, STUCK notices, token hashes
@@ -164,23 +196,23 @@ config.json token policy · skill catalogs · reader and reviewer model set
164
196
 
165
197
  ## Bench — the ledger is the benchmark
166
198
 
167
- `bench/run.js` runs the same task under different arms (Claude Code · Codex, harness on · off), judges every run with the same scenarios, and appends one `check` line per run to `bench/ledger.jsonl`. `vibe ledger compare --by harness --metric checks --ledger bench/ledger.jsonl` answers with one of four verdicts and never a ratio. See `bench/README.md`.
199
+ `bench/run.js` gives each arm the same public evidence and runnable check capability. `on` receives a public scope; `scoped` writes its own. Approval snapshots retain the agent's scope and check files, and private grading runs in a separate copy. Agent verification and the private artifact score are recorded separately. New-protocol experiments use an isolated ledger; the 4.1.25 ledger stays fixed. See `bench/README.md` for the cohort and comparison rules.
168
200
 
169
201
  ## The basic harness — structure, context, conventions, a gate at the tool call
170
202
 
171
- Alone, vibe already makes the model do better; with other harnesses installed it does more and says so. What the model misses is waste and wrong direction, and both start before the first check runs.
203
+ The mechanisms below support the FDE procedure. Their effect on a particular task is a measurement, not a guarantee of a better answer.
172
204
 
173
205
  - **`vibe map [path]`** builds the codebase map — files, symbols with a one-line signature and line range, import edges — from the lexers `vibe size` already has (ts js py go java kt rs swift rb cs php), cached by content hash under `.vibe/cache/map.json` so a warm run re-reads only what changed. `vibe symbols <file>` is a file's skeleton; `vibe callers <symbol> [--depth N]` names who calls it, each caller marked `import` (the edge is confirmed) or `name` (the name alone); `vibe blast` takes the working tree's changed symbols from `git diff` and follows their callers. A `review … changed: true` on code takes its dependents from `blast`, and the bundle opens with the changed and affected symbols; `vibe read --ask` on code prepends each file's skeleton.
174
- - **`vibe context <scenario>`** hands the model what one scenario needs, most relevant first and each with its source: the check, the files and symbols it touches with their neighbours, the conventions, the ledger events that touched those files (decisions, regressions, REJECTs with their KEEP lines), the knowledge notes that match, and the global notes — within 12,000 characters. The build skill reads it before building a scenario; the prove skill on STUCK.
206
+ - **`vibe context <scenario>`** hands the model what one scenario needs, most relevant first and each with its source: the check, files, nearby symbols, conventions, relevant ledger events and knowledge notes, within 12,000 characters. Use it when the files named by a failed check do not answer the question; it is not a mandatory read before building.
175
207
  - **`vibe conventions`** writes `.vibe/knowledge/conventions.md`: what the repository declares (lint and formatter configs, `tsconfig` strictness, the test and lint scripts, an `AGENTS.md` heading) and what the harness learned — a REJECT reason or a KEEP line that recurs, every regression title, every decision recorded at approval — one line each with its source, append-only. `vibe knowledge add --global` keeps a note under `~/.config/vibe/knowledge/` for every project.
176
208
  - **`vibe intent analyze`** is the read-only check before approval: each bullet of "What counts as success" against the scenarios — `uncovered` bullets, `unrequested` scenarios, a `human` check where a file or a command is named is `weak`. The scope skill resolves `uncovered` before it asks for the approval.
177
- - **The hooks carry the procedure.** On Claude Code the `SessionStart` hook hands over the card (plugin mode) and, inside a project, the `vibe state` output — the first command already run, in plugin and settings mode alike; the `Stop` hook runs `vibe check --all` when a turn ends with an approved intent still building and returns the verdict as the reason the turn is not over (once; a turn already continued this way is let go), and when the model's last message claims completion — done, finished, passed — that the verdict does not support, the reason opens with `unverified: "<claim>"`; so "done" is a structure, not a rule. Codex runs the same hooks — SessionStart, PreToolUse, PostToolUse, Stop — once their trust is granted (Codex records a `trusted_hash` per hook in `~/.codex/config.toml`; it asks on first use, and the bench passes `--dangerously-bypass-hook-trust` for the workspace's own hooks); the card lives in `~/.codex/AGENTS.md`.
209
+ - **The hooks report bounded status.** SessionStart hands over the card when needed and reports the explicit session/worktree association. Stop reads existing check proof and can release unfinished work without calling it complete; it never executes the next step. Run `vibe state` for the procedure and `vibe check` for a verdict. Claude Code and Codex use the same packaged readers once the client trusts the hooks; client trust does not turn repository text or a copied ledger into a session binding.
178
210
  - **The hook gates the irreversible.** Under the `strict` and `irreversible` token policies (opt-in: the default is `off`) the `PreToolUse` hook blocks (exit 2) a command with no authorize record in the last ten minutes that does what the check gate calls irreversible — `restore`, `reset`, `drop`, `truncate`, `seed`, `migrate … down`, `rm -rf`, `git push`, `deploy`, `publish`, `terraform apply`, plus a send — the same action words `vibe authorize --action` takes, so a blocked tool call and a blocked check ask for the same record; a command that only reads (`grep`, `cat`, `git log` …) is never gated; under `off` it warns, and `vibe tokens off` says once that `off` belongs inside a container or a VM.
179
211
  - **Other tools are used when present, never listed.** `graft` and `trace` (map, callers, blast), `claude` and `codex` (reader, reviewer), `pdftotext` (pdf), `agent-browser` and `playwright` (a screenshot for the art director) are detected and used through one convention; absent, vibe does the work itself. The scope skill puts a one-line install in the approval message when a project would use one. Nothing is installed by vibe, and `vibe status` shows the install, not a tool table.
180
212
  - **The bench is a gate.** `bench/tasks/` holds three deterministic tasks (`settlement`, `vibe-fix`, `report`); `bench/run.js --task all --parallel 4` runs the arms side by side and records turns, reported cost, cost recomputed from tokens with the published cache multipliers, tokens by kind, wall-clock and pass; `vibe ledger compare --metric ms --paired` compares only runs both arms passed; `checks/bench-gate.js` passes when every task has five runs per arm and the `on` arm is not worse on checks. A release that claims a saving writes the claim in its intent before the bench runs and quotes the verdict; a claim that lands `inconclusive` is not made.
181
- - **`vibe state` says what to do next.** Its `next` line is the procedure — `build a, b, c — then one vibe check --all` · `approve — …` · `report — DONE r-3; …` — each scenario line names its check (`— check: node --test tests/add.test.cjs`) and, for a scenario still to pass, the files it is about (`— files: …` — the check's files plus one hop of imports from the codebase map, built on the way), so the state is the brief, no record needs opening, and card rule 8 says: read whole what the state names, open nothing else until a check fails; `vibe check` ends with the same `next` line; the card starts at `vibe state` and loads only the skill `next` names; with an approved intent the model never re-enters scope. Every size takes the **fast path**: build everything, then one `check --all`, no `vibe context` before building, no HANDOFF.md unless the intent asks, and no check after DONE; `size: full` (an irreversible scenario, a review/http/eval check, a needs chain two deep, or more than eight scenarios — a count of five is not a reason) adds only the failure handling — `vibe context <id>` and `vibe check <id>` for a scenario that failed. `vibe map` and `vibe context` are tools for a question, not steps. A regression is recorded only for a failure `vibe check` reported, never for the task's own bug. This is what the first clean bench said the harness was paying for: procedure, on tasks that did not need it.
213
+ - **`vibe state` says what to do next.** Its `next` line is the procedure — `build a, b, c — then one vibe check --all` · `approve — …` · `report — DONE r-3; …` — each scenario line names its check (`— check: node --test tests/add.test.cjs`) and, for a scenario still to pass, the files it is about (`— files: …` — the check's files plus one hop of imports from the codebase map, built on the way), so the state is the brief, no record needs opening, and card rule 8 says: read whole what the state names, open nothing else until a check fails; `vibe check` ends with the same `next` line; the card starts at `vibe state` and loads only the skill `next` names; the model reuses an approved intent unless the requested outcome, constraints, or evidence basis changes. Every size takes the **fast path**: build everything, then one `check --all`, no `vibe context` before building, no HANDOFF.md unless the intent asks, and no check after DONE; `size: full` (an irreversible scenario, a review/http/eval check, a needs chain two deep, or more than eight scenarios — a count of five is not a reason) adds only the failure handling — `vibe context <id>` and `vibe check <id>` for a scenario that failed. `vibe map` and `vibe context` are tools for a question, not steps. A regression is recorded only for a failure `vibe check` reported, never for the task's own bug. This is what the first clean bench said the harness was paying for: procedure, on tasks that did not need it.
182
214
  - **A check observes.** A `run` command that would change the world — `restore`, `reset`, `drop`, `truncate`, `seed`, `migrate … down/fresh/rollback`, `rm -rf`, `git push`, `deploy`, `publish`, `terraform apply` — is detected at parse time and marked `irreversible` with its action (a scenario may declare its own). `vibe check --all` and `vibe check <id>` never execute an irreversible scenario without an `authorize` record for that action in the last ten minutes: the outcome is `blocked` with the reason, DONE stays out of reach, the run is not STUCK for it. `vibe regress record` refuses to copy such a check. This is the fix for an incident where a regression that carried a database restore was re-run by `check --all` after seeding and overwrote the seed.
183
- - **The bench has two sets.** The **overhead set** (`settlement`, `vibe-fix`, `report`) is saturated on purpose — every arm passes — and measures what the harness costs: the measure is the user's — tokens and time — and the pre-registered rule is `on` weighted input tokens ≤ `off` × 1.25 and `on` time ≤ `off` × 1.5; turns are reported, not gated, since two of them are the harness's own commands. The **direction set** (`anomaly`, `handover`, `session-split`) is where the bare model goes wrong, and measures what the harness prevents: on `anomaly` (an export with a repeated id, a refund and a euro row, and finance rules the brief does not mention) `on` or `scoped` must score higher on checks; on `handover` (one task, two clients) and `session-split` (one task, two sessions with no memory between, the sum measured) `on` must not be worse on checks and must spend no more tokens over its two sessions; a task that does neither is retired as one the bare model already gets right. `ask` (a quote whose terms only the customer knows — both bare models asked once the fake user answered any question about the quote), `irreversible-trap` (a data reset in the brief's natural path, judged by whether the seeded row survived — the bare model never ran it) and the four 4.1.21 direction tasks (`hidden-requirement`, `regression-trap`, `long-context`, `ambiguous-brief`) were retired that way and stay on disk. `bench/run.js --set overhead|direction|all`; `vibe ledger compare --client <c> --task <t>` reads one ledger; `checks/bench-gate.js` judges both rules per set. The `on` arm carries the six common skills only.
215
+ - **The existing release sets retain their rules.** Overhead (`settlement`, `vibe-fix`, `report`) requires `on` weighted input tokens ≤ `off` × 1.25 and time ≤ `off` × 1.5, without a quality regression. Direction contains `handover` and `session-split`: `on` must retain quality and use no more weighted input tokens over the sessions. Context is `brownfield`, described below. `anomaly`, `ask`, `irreversible-trap`, `hidden-requirement`, `regression-trap`, `long-context`, and `ambiguous-brief` remain retired diagnostics runnable by name. The separate discovery cohort measures agreement quality and whole-flow cost; it does not change those historical thresholds or require a contrived trap to separate.
184
216
  - **The context set.** `brownfield` is this repository at the release commit, built, with one cross-cutting change to make (a `lines` rule for the `file` check, wired through validation, the check, the README table and the scope skill), judged by tests; five scenarios, so the `on` arm runs `full` with the map and `vibe context` on. `vibe ledger compare --metric tokens` compares weighted input (`input + 0.1 × cacheRead + 1.25 × cacheWrite`); the pre-registered rule is `on` ≤ `off` × 0.7 at equal quality — the saving Graft measures on rediscovery, measured here on vibe's own map.
185
217
  - CI runs the platform-independent tests on Windows as well as Linux and drives the CLI through npm's `.cmd` shim (`vibe --version`, `vibe state`, `vibe read --ask` against a fake reader); the fixtures that fake a client CLI with a POSIX shim stay Linux-only until they are ported.
186
218
 
package/card.md CHANGED
@@ -1,10 +1,10 @@
1
1
  You work inside vibe. Rules:
2
- 1. Start from `vibe state`: `next` is the procedure; each scenario line names its check and files; load only the skill `next` names.
3
- 2. Done is only what `vibe check --all` says: build all first, one `check --all`; on a failure, fix what the check names; `vibe context <id>` when that is not enough.
4
- 3. Human token: show the number, wait in chat; never invent it.
5
- 4. Same failure twice: `vibe ask`.
6
- 5. Surface up to three unasked things, each with a reason.
7
- 6. `vibe regress record` only for a failure `vibe check` reported and fixed.
8
- 7. Talk in the user's language; every record in English.
9
- 8. Read whole the files the state names; others after a failed check. Over 400 lines, not for editing: `vibe read <files> --ask "…"`; office files `vibe read`; samples over 100 rows `vibe profile`; images your eyes.
10
- 9. Report what changed beyond what `vibe check` verified; unchecked is unverified. Keep the caveat that moves the next step. An error: cause and fix. Answer first; no praise or offer.
2
+ 1. Start `vibe state`; follow `next` and its skill. Bind the host with `vibe session bind`.
3
+ 2. Build all first, then one `vibe check --all`; on a failure, fix what the check names; `vibe context <id>` when that is not enough. DONE is its verdict. Stop never checks.
4
+ 3. Token: show it, wait in chat; never invent it.
5
+ 4. Same failure twice: diagnose and change approach; ask at five or outside authority.
6
+ 5. At most three unasked findings, with reasons.
7
+ 6. `vibe regress record` only for fixed `vibe check` failures.
8
+ 7. User's language in chat; English records.
9
+ 8. Read fewer files from state, in full: Claude Read, Codex `cat`. grep/rg/find locate only; never content slices. Over 400 lines, not editing: `vibe read --ask`. Office: `vibe read`; samples over 100 rows: `vibe profile`; images: your eyes.
10
+ 9. Report changes and evidence; unchecked is unverified. Give cause/fix and next-step limits. Answer first; no praise or offer.
@@ -3,7 +3,7 @@ import path from 'node:path';
3
3
  import { usage } from '../core/errors.js';
4
4
  import { packageRoot } from '../core/paths.js';
5
5
  import { readJson } from '../core/store.js';
6
- const BOOLEAN_FLAGS = new Set(['json', 'all', 'stdin', 'purge-state', 'dry-run', 'yes', 'help', 'version']);
6
+ const BOOLEAN_FLAGS = new Set(['json', 'all', 'stdin', 'purge-state', 'dry-run', 'yes', 'help', 'version', 'preview', 'diagnostics']);
7
7
  export function parseArgs(argv) {
8
8
  const positionals = [];
9
9
  const flags = {};
@@ -39,7 +39,9 @@ export const HELP = `vibe — an AX/FDE harness. The harness judges; a human app
39
39
  plugin build [--check] (manifests from package.json) · plugin mcpb [--out vibe.mcpb] (Claude desktop app bundle) · plugin install | status [--home <dir>]
40
40
  work state [--graph] · read <file…> [--sheet] [--pages] (xlsx·docx·pptx·pdf·hwp·hwpx·html·tables·code) · read <file…> --ask "question" (a low-reasoning model reads, only the answer returns)
41
41
  profile <file> [--sheet] (csv·tsv·jsonl·json·xlsx) · intent draft <intent.md> <scenarios.yaml> | --stdin · intent show
42
- approve [token] · check [id…] [--all] · evidence [run] · abandon --reason "…"
42
+ intent inspect [intent.md scenarios.yaml] · approve [token] [--preview] · check [id…] [--all] [--diagnostics] · evidence [run]
43
+ abandon --reason "…" [--scenario id --category environment --next "…" --owner "…"] · reopen <scenario> --reason "…"
44
+ session bind [--session id] · session status [--session id] (Stop reports this worktree; it never checks)
43
45
  checks run (exit code; a mutating command is irreversible and needs vibe authorize) · file (exists·pattern·contains·absent·schema·sum·traceable·a11y) · http (status·schema·maxMs) · eval (matching cases ≥ expect.pass)
44
46
  review (pack ko|en|design|code, path, changed, screenshot — two reviewer stages, PASS only) · human (inbox, no verdict)
45
47
  size [paths…] [--max-file 400] [--max-function 50] — a built-in check for a scenario: exit 1 when a file or function is over
@@ -1 +1 @@
1
- {"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/cli/common.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/cli/common.ts"],"names":[],"mappings":"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"}
package/dist/cli/human.js CHANGED
@@ -21,8 +21,8 @@ export function cmdAsk(root, args, flags) {
21
21
  const policy = readConfig(root).tokens;
22
22
  if (needsRaw === 'approve') {
23
23
  const state = readState(root);
24
- if (state.state !== 'DRAFT' || !state.intentHash)
25
- throw denied('an approval token can only be issued in DRAFT');
24
+ if (!['DRAFT', 'APPROVED', 'RUNNING', 'STUCK', 'DONE'].includes(state.state) || !state.intentHash)
25
+ throw denied('an approval token needs an active drafted contract');
26
26
  if (policy === 'strict')
27
27
  needs = { kind: 'approve', target: state.intentHash };
28
28
  }
@@ -1 +1 @@
1
- {"version":3,"file":"human.js","sourceRoot":"","sources":["../../src/cli/human.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"human.js","sourceRoot":"","sources":["../../src/cli/human.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { bindSession, sessionStatus } from '../core/session.js';
2
+ import { usage } from '../core/errors.js';
3
+ import { flagString } from './common.js';
4
+ export function cmdSession(root, sub, flags) {
5
+ const requested = flagString(flags, 'session');
6
+ if (sub === 'bind') {
7
+ const view = bindSession(root, requested);
8
+ return { json: view, text: `Session bound to ${view.root}; revision ${view.revision}. Stop reports status; explicit checks still determine completion.`, code: 0 };
9
+ }
10
+ if (sub === 'status') {
11
+ const view = sessionStatus(requested);
12
+ return { json: view, text: `${view.status}; root=${view.root ?? 'unavailable'}; revision=${view.revision ?? 'unavailable'}; no check executed`, code: view.status === 'bound' ? 0 : 1 };
13
+ }
14
+ throw usage('session bind [--session id] | session status [--session id]');
15
+ }
16
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/cli/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,UAAU,EAA2B,MAAM,aAAa,CAAC;AAElE,MAAM,UAAU,UAAU,CAAC,IAAY,EAAE,GAAuB,EAAE,KAAY;IAC5E,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAC/C,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;QACnB,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC1C,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,oBAAoB,IAAI,CAAC,IAAI,cAAc,IAAI,CAAC,QAAQ,oEAAoE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IACrK,CAAC;IACD,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;QACrB,MAAM,IAAI,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;QACtC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,UAAU,IAAI,CAAC,IAAI,IAAI,aAAa,cAAc,IAAI,CAAC,QAAQ,IAAI,aAAa,qBAAqB,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1L,CAAC;IACD,MAAM,KAAK,CAAC,6DAA6D,CAAC,CAAC;AAC7E,CAAC"}
package/dist/cli/work.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import fs from 'node:fs';
2
2
  import path from 'node:path';
3
3
  import { analyzeIntent, renderAnalysis } from '../core/analyze.js';
4
+ import { failureLine } from '../core/failure.js';
4
5
  import { runChecks } from '../core/check.js';
5
6
  import { readDocument } from '../core/docs/read.js';
6
7
  import { usage } from '../core/errors.js';
@@ -12,9 +13,14 @@ import { measureSize } from '../core/size.js';
12
13
  import { listRegressions } from '../core/regress.js';
13
14
  import { graphMermaid } from '../core/scenarios.js';
14
15
  import { readJson, readText } from '../core/store.js';
16
+ import { sourceValidity } from '../core/source-basis.js';
15
17
  import { buildStateView } from '../core/view.js';
16
18
  import { ensureProject } from '../install/project.js';
17
19
  import { flagString, readStdin } from './common.js';
20
+ import { executionPlan, inspectContract } from '../core/inspect.js';
21
+ import { consentStatus } from '../core/consent.js';
22
+ import { renderEvidence } from '../core/evidence.js';
23
+ import { handoffScenario, reopenScenario } from '../core/handoff.js';
18
24
  const GLYPH = { pass: '✔', fail: '✘', pending: '?', blocked: '⊘', never: '·', stale: '↻' };
19
25
  export function cmdState(root, flags) {
20
26
  const view = buildStateView(root);
@@ -82,11 +88,37 @@ export function cmdProfile(root, file, flags) {
82
88
  ];
83
89
  return { json: p, text: lines.join('\n'), code: 0 };
84
90
  }
91
+ function draftInput(root, args, flags) {
92
+ if (flags['sources'] === true)
93
+ throw usage('--sources requires comma-separated input file paths');
94
+ if (flags['stdin'] === true) {
95
+ if (flags['sources'] !== undefined)
96
+ throw usage('with --stdin, supply sources in the JSON payload');
97
+ return JSON.parse(readStdin());
98
+ }
99
+ const [intentFile, scenariosFile] = args;
100
+ if (!intentFile || !scenariosFile)
101
+ throw usage('intent draft <intent.md> <scenarios.yaml> [--sources a,b] or --stdin');
102
+ const intent = readText(path.resolve(root, intentFile)) ?? '';
103
+ const scenarios = readText(path.resolve(root, scenariosFile)) ?? '';
104
+ if (!intent)
105
+ throw usage(`cannot read ${intentFile}`);
106
+ if (!scenarios)
107
+ throw usage(`cannot read ${scenariosFile}`);
108
+ const sources = flagString(flags, 'sources');
109
+ return sources === undefined ? { intent, scenarios } : { intent, scenarios, sources: sources.split(',').map((file) => file.trim()) };
110
+ }
85
111
  export function cmdIntent(root, sub, args, flags) {
112
+ if (sub === 'inspect') {
113
+ const inspected = inspectContract(root, args);
114
+ return { json: inspected, text: `Untrusted contract data; no checks executed.\n${JSON.stringify(inspected, null, 2)}`, code: inspected.rejections.length ? 1 : 0 };
115
+ }
86
116
  if (sub === 'show') {
87
117
  const scenarios = loadScenarios(root);
88
118
  const intent = readText(intentPath(root)) ?? '';
89
- return { json: { intent, scenarios }, text: `${intent.trim()}\n\n${scenarios.map((s) => `- ${s.id} [${s.check.type}] ${s.then}`).join('\n')}`, code: 0 };
119
+ const sourceBasis = sourceValidity(root);
120
+ const sources = sourceBasis ? `\n\nSource basis: ${sourceBasis.valid ? 'unchanged' : 're-evaluate changed or missing inputs'}\n${sourceBasis.sources.map((source) => `- ${source.path}: ${source.status}`).join('\n')}` : '';
121
+ return { json: { intent, scenarios, sourceBasis }, text: `${intent.trim()}\n\n${scenarios.map((s) => `- ${s.id} [${s.check.type}] ${s.then}`).join('\n')}${sources}`, code: 0 };
90
122
  }
91
123
  if (sub === 'analyze') {
92
124
  const analysis = analyzeIntent(root);
@@ -94,26 +126,9 @@ export function cmdIntent(root, sub, args, flags) {
94
126
  }
95
127
  if (sub !== 'draft')
96
128
  throw usage('intent draft | intent show | intent analyze');
129
+ const input = draftInput(root, args, flags);
97
130
  ensureProject(root);
98
- let intentText;
99
- let scenariosText;
100
- if (flags['stdin'] === true) {
101
- const payload = JSON.parse(readStdin());
102
- intentText = payload.intent ?? '';
103
- scenariosText = payload.scenarios ?? '';
104
- }
105
- else {
106
- const [intentFile, scenariosFile] = args;
107
- if (!intentFile || !scenariosFile)
108
- throw usage('intent draft <intent.md> <scenarios.yaml> or --stdin');
109
- intentText = readText(path.resolve(root, intentFile)) ?? '';
110
- scenariosText = readText(path.resolve(root, scenariosFile)) ?? '';
111
- if (!intentText)
112
- throw usage(`cannot read ${intentFile}`);
113
- if (!scenariosText)
114
- throw usage(`cannot read ${scenariosFile}`);
115
- }
116
- const result = draft(root, intentText, scenariosText);
131
+ const result = draft(root, input.intent ?? '', input.scenarios ?? '', input.sources);
117
132
  if (!result.ok) {
118
133
  return { json: result, text: `rejected ${result.rejections.length} — nothing was saved\n${result.rejections.map((r) => ` ${r.id}: ${r.reason}`).join('\n')}`, code: 1 };
119
134
  }
@@ -126,7 +141,13 @@ export function cmdIntent(root, sub, args, flags) {
126
141
  ].join('\n');
127
142
  return { json: result, text, code: 0 };
128
143
  }
129
- export function cmdApprove(root, args) {
144
+ export function cmdApprove(root, args, flags = {}) {
145
+ if (flags['preview'] === true) {
146
+ const plan = executionPlan(root);
147
+ const consent = consentStatus(root, plan);
148
+ const preview = { plan, consent, untrusted: true, executed: false };
149
+ return { json: preview, text: `Execution plan preview; no commands executed or approval saved.\n${JSON.stringify(preview, null, 2)}`, code: 0 };
150
+ }
130
151
  ensureProject(root);
131
152
  const token = args.join(' ') || null;
132
153
  const result = approve(root, token);
@@ -135,16 +156,17 @@ export function cmdApprove(root, args) {
135
156
  export async function cmdCheck(root, args, flags) {
136
157
  ensureProject(root);
137
158
  const options = flags['all'] === true ? { all: true } : args.length ? { ids: args } : {};
138
- const report = await runChecks(root, options);
159
+ const approach = flagString(flags, 'approach');
160
+ const report = await runChecks(root, { ...options, diagnostics: flags['diagnostics'] === true, ...(approach ? { approach } : {}) });
139
161
  const files = new Map(buildStateView(root).scenarios.map((s) => [s.id, s.files ?? []]));
140
162
  const lines = [
141
163
  `${report.run} · ${report.state} · pass ${report.passed} · fail ${report.failed}${report.pending ? ` · pending ${report.pending}` : ''}`,
142
- ...report.outcomes.map((o) => ` ${o.status === 'pass' ? '✔' : o.status === 'fail' ? '✘' : '?'} ${o.id} [${o.type}] exit=${o.exit ?? '-'} ${o.ms}ms${o.reason ? ` — ${o.reason}` : ''}${o.status === 'fail' && files.get(o.id)?.length ? ` — files: ${files.get(o.id).join(', ')}` : ''}${o.tail && o.status !== 'pass' ? `\n ${o.tail.split('\n').join('\n ')}` : ''}`),
164
+ ...report.outcomes.map((o) => ` ${o.status === 'pass' ? '✔' : o.status === 'fail' ? '✘' : '?'} ${o.id} [${o.type}] exit=${o.exit ?? '-'} ${o.ms}ms${o.failure ? ` — ${failureLine(o.failure)}` : o.reason ? ` — ${o.reason}` : ''}${o.status === 'fail' && files.get(o.id)?.length ? ` — files: ${files.get(o.id).join(', ')}` : ''}${o.tail && o.status !== 'pass' ? `\n ${o.tail.split('\n').join('\n ')}` : ''}`),
143
165
  report.done ? ' DONE — every gate scenario passed' : ` remaining ${report.remaining.join(', ') || 'none'}`,
144
- ...(report.stuck ? [' STUCK — the same failure twice in a row; see the inbox'] : []),
166
+ ...(report.stuck ? [' STUCK — follow the diagnosis or explicit inbox wait below'] : []),
145
167
  ` next ${buildStateView(root).next}`,
146
168
  ];
147
- const code = report.stuck || report.failed > 0 ? 1 : 0;
169
+ const code = report.stuck || report.failed > 0 || report.outcomes.some((outcome) => outcome.status === 'handoff') ? 1 : 0;
148
170
  return { json: { ...report, next: buildStateView(root).next }, text: lines.join('\n'), code };
149
171
  }
150
172
  export function cmdEvidence(root, args) {
@@ -155,11 +177,23 @@ export function cmdEvidence(root, args) {
155
177
  const evidence = readJson(path.join(dir, `${runId}.json`));
156
178
  if (!evidence)
157
179
  throw usage(`no such run: ${runId}`);
158
- return { json: evidence, text: JSON.stringify(evidence, null, 2), code: 0 };
180
+ const rendered = renderEvidence(evidence);
181
+ return { json: rendered, text: JSON.stringify(rendered, null, 2), code: 0 };
159
182
  }
160
183
  export function cmdAbandon(root, flags) {
184
+ const scenario = flagString(flags, 'scenario');
185
+ if (scenario) {
186
+ const handoff = handoffScenario(root, scenario, { reason: flagString(flags, 'reason') ?? '', category: flagString(flags, 'category') ?? '', nextAction: flagString(flags, 'next') ?? '', ...(flagString(flags, 'owner') ? { owner: flagString(flags, 'owner') } : {}) });
187
+ return { json: { status: 'handoff', passed: false, handoff }, text: `HANDOFF ${scenario} — required work remains unmet`, code: 0 };
188
+ }
161
189
  ensureProject(root);
162
190
  abandon(root, flagString(flags, 'reason') ?? '');
163
191
  return { json: { state: 'ABANDONED' }, text: 'ABANDONED', code: 0 };
164
192
  }
193
+ export function cmdReopen(root, args, flags) {
194
+ if (args.length !== 1)
195
+ throw usage('reopen <scenario> --reason "…"');
196
+ reopenScenario(root, args[0], flagString(flags, 'reason') ?? '');
197
+ return { json: { status: 'reopened', scenario: args[0] }, text: `REOPENED ${args[0]} — original check required`, code: 0 };
198
+ }
165
199
  //# sourceMappingURL=work.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"work.js","sourceRoot":"","sources":["../../src/cli/work.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"work.js","sourceRoot":"","sources":["../../src/cli/work.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvF,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,SAAS,EAA2B,MAAM,aAAa,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAErE,MAAM,KAAK,GAA2B,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AAEnH,MAAM,UAAU,QAAQ,CAAC,IAAY,EAAE,KAAY;IACjD,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;QAC5B,MAAM,SAAS,GAAG,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,EAAE,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;QACrE,MAAM,KAAK,GAAG,YAAY,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,IAAI,OAAO,CAAC,CAAC;QACxG,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IAC5D,CAAC;IACD,MAAM,KAAK,GAAG;QACZ,GAAG,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;QAC9E,eAAe,IAAI,CAAC,IAAI,EAAE;QAC1B,eAAe,IAAI,CAAC,IAAI,EAAE;QAC1B,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACnS,eAAe,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;QAC3E,eAAe,IAAI,CAAC,KAAK,CAAC,IAAI,QAAQ,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;QAC1J,gRAAgR;QAChR,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;QACtC,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,GAAG,CAAC;KACpE,CAAC;IACF,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AACzD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAAY,EAAE,KAAe,EAAE,KAAY;IACvE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,KAAK,CAAC,8DAA8D,CAAC,CAAC;IACpG,MAAM,OAAO,GAAuC,EAAE,CAAC;IACvD,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACzC,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACzC,IAAI,KAAK;QAAE,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;IACjC,IAAI,KAAK;QAAE,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;IACjC,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACrC,IAAI,GAAG,KAAK,SAAS,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;QAC/C,MAAM,CAAC,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC;QAC3D,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;QAClB,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC;QACjG,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,UAAU,CAAC,cAAc,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,YAAY,CAAC;QACjM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI;YAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,MAAM,cAAc,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,MAAM,MAAM,OAAO,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAC5M,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IAC7C,CAAC;IACD,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IACpE,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,MAAM,cAAc,CAAC,CAAC,MAAM,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,cAAc,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC9K,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AACrE,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,IAAY,EAAE,IAAc,EAAE,KAAY;IAChE,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,IAAI,GAAG,CAAC,CAAC;IAC7D,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;IACpE,MAAM,CAAC,GAAG,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;IAC5D,MAAM,KAAK,GAAG;QACZ,GAAG,CAAC,CAAC,KAAK,YAAY,CAAC,CAAC,UAAU,oBAAoB,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,CAAC,WAAW,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,kBAAkB,OAAO,eAAe,WAAW,EAAE;QACjL,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,KAAK,iBAAiB,CAAC,CAAC,KAAK,GAAG,CAAC;QAC7H,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,iBAAiB,CAAC,CAAC,CAAC,yCAAyC;KACxG,CAAC;IACF,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC9E,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAY,EAAE,IAAwB,EAAE,KAAY;IAC7E,IAAI,CAAC,IAAI;QAAE,MAAM,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAChF,MAAM,CAAC,GAAG,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;IAC9D,MAAM,KAAK,GAAG;QACZ,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,MAAM,MAAM,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,OAAO,CAAC,MAAM,cAAc,CAAC,CAAC,aAAa,iBAAiB;QAC5G,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;QACrC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,aAAa,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;KACxP,CAAC;IACF,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AACtD,CAAC;AAED,SAAS,UAAU,CAAC,IAAY,EAAE,IAAc,EAAE,KAAY;IAC5D,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI;QAAE,MAAM,KAAK,CAAC,qDAAqD,CAAC,CAAC;IAClG,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;QAC5B,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,SAAS;YAAE,MAAM,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACpG,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAA8D,CAAC;IAC9F,CAAC;IACD,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,IAAI,CAAC;IACzC,IAAI,CAAC,UAAU,IAAI,CAAC,aAAa;QAAE,MAAM,KAAK,CAAC,sEAAsE,CAAC,CAAC;IACvH,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9D,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,IAAI,EAAE,CAAC;IACpE,IAAI,CAAC,MAAM;QAAE,MAAM,KAAK,CAAC,eAAe,UAAU,EAAE,CAAC,CAAC;IACtD,IAAI,CAAC,SAAS;QAAE,MAAM,KAAK,CAAC,eAAe,aAAa,EAAE,CAAC,CAAC;IAC5D,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAC7C,OAAO,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;AACvI,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAY,EAAE,GAAuB,EAAE,IAAc,EAAE,KAAY;IAC3F,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC9C,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,iDAAiD,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACrK,CAAC;IACD,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;QACnB,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,MAAM,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;QAChD,MAAM,WAAW,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,qBAAqB,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,uCAAuC,KAAK,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7N,OAAO,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,IAAI,EAAE,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IAClL,CAAC;IACD,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QACrC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,cAAc,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IACrE,CAAC;IACD,IAAI,GAAG,KAAK,OAAO;QAAE,MAAM,KAAK,CAAC,6CAA6C,CAAC,CAAC;IAChF,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAC5C,aAAa,CAAC,IAAI,CAAC,CAAC;IACpB,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,IAAI,EAAE,EAAE,KAAK,CAAC,SAAS,IAAI,EAAE,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IACrF,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,MAAM,CAAC,UAAU,CAAC,MAAM,yBAAyB,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IAC3K,CAAC;IACD,MAAM,IAAI,GAAG;QACX,iBAAiB,MAAM,CAAC,SAAS,CAAC,MAAM,qBAAqB,MAAM,CAAC,IAAI,EAAE;QAC1E,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACtH,MAAM,CAAC,KAAK;YACV,CAAC,CAAC,mBAAmB,MAAM,CAAC,KAAK,iBAAiB,MAAM,CAAC,SAAS,gFAAgF;YAClJ,CAAC,CAAC,WAAW,MAAM,CAAC,MAAM,yDAAyD;KACtF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACb,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAY,EAAE,IAAc,EAAE,QAAe,EAAE;IACxE,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1C,MAAM,OAAO,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;QACpE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,oEAAoE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IAClJ,CAAC;IACD,aAAa,CAAC,IAAI,CAAC,CAAC;IACpB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;IACrC,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACpC,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,cAAc,MAAM,CAAC,IAAI,QAAQ,MAAM,CAAC,KAAK,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AAC/H,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,IAAY,EAAE,IAAc,EAAE,KAAY;IACvE,aAAa,CAAC,IAAI,CAAC,CAAC;IACpB,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACzF,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,WAAW,EAAE,KAAK,CAAC,aAAa,CAAC,KAAK,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACpI,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACxF,MAAM,KAAK,GAAG;QACZ,GAAG,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,KAAK,WAAW,MAAM,CAAC,MAAM,WAAW,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;QACxI,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,aAAa,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACha,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,eAAe,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,EAAE;QAC5G,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,6DAA6D,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACxF,eAAe,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;KAC3C,CAAC;IACF,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1H,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC;AAChG,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,IAAc;IACtD,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACvC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAChN,IAAI,CAAC,KAAK;QAAE,MAAM,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAG,QAAQ,CAAU,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC;IACpE,IAAI,CAAC,QAAQ;QAAE,MAAM,KAAK,CAAC,gBAAgB,KAAK,EAAE,CAAC,CAAC;IACpD,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC1C,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AAC9E,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAY,EAAE,KAAY;IACnD,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IAC/C,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,OAAO,CAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1Q,OAAO,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,WAAW,QAAQ,gCAAgC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IACrI,CAAC;IACD,aAAa,CAAC,IAAI,CAAC,CAAC;IACpB,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACjD,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAY,EAAE,IAAc,EAAE,KAAY;IAClE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACrE,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAE,EAAE,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IAClE,OAAO,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,YAAY,IAAI,CAAC,CAAC,CAAC,4BAA4B,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AAC7H,CAAC"}