@ngockhoale/ukit 3.4.66 → 3.4.68
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/CHANGELOG.md +17 -0
- package/manifests/documentation.yaml +33 -0
- package/manifests/instructionRules.yaml +10 -0
- package/manifests/platform.full.yaml +67 -0
- package/package.json +1 -1
- package/src/core/applyPlan.js +111 -2
- package/src/core/buildPlan.js +3 -1
- package/src/core/diffPlan.js +49 -1
- package/src/core/executionContracts.js +51 -10
- package/src/core/metadata.js +45 -0
- package/src/core/runInstallPipeline.js +30 -2
- package/src/core/uninstall.js +106 -2
- package/src/manifest/validateManifest.js +25 -1
- package/template_project/.claude/agents/code-reviewer.md +22 -9
- package/template_project/.claude/agents/handoff-planner.md +97 -8
- package/template_project/.claude/commands/ukit/handoff-create.md +114 -19
- package/template_project/.claude/commands/ukit/handoff-fullstack.md +247 -79
- package/template_project/.claude/commands/ukit/handoff-implement.md +75 -40
- package/template_project/.claude/commands/ukit/handoff-review.md +14 -10
- package/template_project/.claude/hooks/auto-allow-bash.sh +73 -12
- package/template_project/.claude/hooks/auto-prune-bash.sh +10 -0
- package/template_project/.claude/hooks/delegation-gate.mjs +21 -0
- package/template_project/.claude/hooks/handoff-model-guard.sh +22 -6
- package/template_project/.claude/hooks/handoff-resume.sh +141 -1
- package/template_project/.claude/hooks/record-execution.mjs +140 -9
- package/template_project/.claude/hooks/skill-router.sh +173 -8
- package/template_project/.claude/settings.json +2 -2
- package/template_project/.claude/skills/advisor-plan/REFERENCE.md +10 -0
- package/template_project/.claude/skills/advisor-plan/SKILL.md +2 -2
- package/template_project/.claude/ukit/index/allocate-task-worktree.mjs +15 -0
- package/template_project/.claude/ukit/index/amend-guard.mjs +116 -0
- package/template_project/.claude/ukit/index/cleanup-task-worktree.mjs +1 -1
- package/template_project/.claude/ukit/index/land-worktree.mjs +243 -21
- package/template_project/.claude/ukit/index/plan-count.mjs +115 -0
- package/template_project/.claude/ukit/index/ready-gate.mjs +170 -0
- package/template_project/.claude/ukit/index/reset-auto-permissions.mjs +293 -4
- package/template_project/.claude/ukit/index/route-resolver.mjs +50 -10
- package/template_project/.claude/ukit/index/route-task.mjs +180 -11
- package/template_project/.claude/ukit/index/source-snapshot.mjs +172 -0
- package/template_project/.claude/ukit/index/task-budget-validator.mjs +109 -3
- package/template_project/.claude/ukit/runtime/execution-ledger.mjs +20 -3
- package/template_project/.claude/ukit/runtime/handoff-task-scope.mjs +205 -0
- package/template_project/.claude/ukit/runtime/loop-state.mjs +3 -1
- package/template_project/.claude/ukit/runtime/plan-dispatch.mjs +32 -5
- package/template_project/.claude/ukit/runtime/resumable-run.mjs +310 -21
- package/template_project/.claude/ukit/runtime/stop-coordinator.mjs +405 -105
- package/template_project/.claude/ukit/runtime/task-record-reconciliation.mjs +46 -0
- package/template_project/.claude/ukit/runtime/task-watchdog.mjs +28 -2
- package/template_project/.claude/ukit/runtime/worktree-allocation.mjs +75 -0
- package/template_project/.codex/README.md +25 -0
- package/template_project/.omp/RULES.md +22 -22
- package/template_project/.omp/agents/code-reviewer.md +22 -9
- package/template_project/.omp/agents/handoff-planner.md +102 -12
- package/template_project/.omp/hooks/pre/ukit-bridge.js +1 -1
- package/template_project/AGENTS.md +5 -1
- package/template_project/CLAUDE.md +1 -1
- package/template_project/docs/AI_HANDOFF/RULES.md +8 -0
- package/template_project/docs/AI_HANDOFF/tasks/_TEMPLATE.md +8 -1
- package/template_project/instructions/core.md +5 -1
- package/template_project/instructions/layout.yaml +2 -0
- package/template_project/instructions/overlays/omp-rules.md +22 -22
- package/template_project/ukit/storage/config.json +1 -1
|
@@ -152,7 +152,11 @@ DuraOne skill chỉ active khi pack `duraone` được cài hoặc `.claude/skil
|
|
|
152
152
|
|
|
153
153
|
## Handoff Fullstack Rules
|
|
154
154
|
<!-- RULE: HAND-02 -->
|
|
155
|
-
- `docs/AI_HANDOFF/RUN.md` là run cursor có thẩm quyền; `Phase:` ≠ `done`/`blocked` = run còn sống — Stop gate từ chối stop, trả về `Next:`. Chỉ `HANDOFF FULLSTACK COMPLETE`/`BLOCKED` kết thúc run — recap/checkpoint không phải completion; resume chỉ tiếp tục frozen scope khi `Paused: no` và session thuộc ownership (resume marker hoặc `/ukit:handoff-fullstack` tường minh), không tự inject ở startup/clear mới. Kết thúc cycle: docs sync → archive completed-only `ARCHIVE/cycle-NN/` → `Phase: done`; `handoff-clear` khi còn việc mở đặt `Paused: yes` (giữ phase/scope/recovery, không mint completion, không xóa cursor). Full rules: `docs/AI_HANDOFF/RULES.md`.
|
|
155
|
+
- `docs/AI_HANDOFF/RUN.md` là run cursor có thẩm quyền; `Phase:` ≠ `done`/`blocked` = run còn sống — Stop gate từ chối stop, trả về `Next:`. Chỉ `HANDOFF FULLSTACK COMPLETE`/`BLOCKED` kết thúc run — recap/checkpoint không phải completion; resume chỉ tiếp tục frozen scope khi `Paused: no` và session thuộc ownership (resume marker hoặc `/ukit:handoff-fullstack` tường minh), không tự inject ở startup/clear mới. Kết thúc cycle: docs sync → archive completed-only `ARCHIVE/cycle-NN/` → `Phase: done`; `handoff-clear` khi còn việc mở đặt `Paused: yes` (giữ phase/scope/recovery, không mint completion, không xóa cursor). Full rules: `docs/AI_HANDOFF/RULES.md`. Trước khi stop: reconcile task/AC/findings/jobs/independent work/integration/release/consumer/pause/blocker; Stop gate chỉ là backstop. Turn wait ≠ run done; blocker chỉ release khi không còn READY independent work.
|
|
156
|
+
|
|
157
|
+
## Handoff Planning Gates
|
|
158
|
+
<!-- RULE: HAND-03 -->
|
|
159
|
+
- Tasks born `needs_breakdown`; flip to `ready` only after the validator's `VERDICT: ok` recorded on disk (`node .claude/ukit/index/task-budget-validator.mjs --record <task.md>`) AND `PLAN_REVIEW: Approved` in PLAN.md — and `node .claude/ukit/index/ready-gate.mjs <root>` prints `READY_GATE: ok` before any flip. Owner documents: `node .claude/ukit/index/source-snapshot.mjs <original> docs/AI_HANDOFF/SOURCE.md` before planning reads them (`source snapshot MISSING` when it cannot run). Implementation lands via `node .claude/ukit/index/land-worktree.mjs` (receipt-backed); overwriting PLAN/SPEC/LEDGER needs an `amendments/rev-<NN>/` copy (`node .claude/ukit/index/amend-guard.mjs`). All bare single `node` commands — no `cd`, no `$()`, no compounds.
|
|
156
160
|
|
|
157
161
|
## Compact Instructions
|
|
158
162
|
Compact giữa handoff run: giữ goal, RUN.md path + phase, task inventory + task đang làm, `Next:` step, blockers, verification evidence, commits, worktree/copy-back state, "compact không phải completion". Sau compact: đọc lại RUN.md + INDEX.md rồi chạy `Next:`.
|
|
@@ -144,7 +144,7 @@ DuraOne skill chỉ active khi pack `duraone` được cài hoặc `.claude/skil
|
|
|
144
144
|
|
|
145
145
|
## Handoff Fullstack Rules
|
|
146
146
|
<!-- RULE: HAND-02 -->
|
|
147
|
-
- `docs/AI_HANDOFF/RUN.md` là run cursor có thẩm quyền; `Phase:` ≠ `done`/`blocked` = run còn sống — Stop gate từ chối stop, trả về `Next:`. Chỉ `HANDOFF FULLSTACK COMPLETE`/`BLOCKED` kết thúc run — recap/checkpoint không phải completion; resume chỉ tiếp tục frozen scope khi `Paused: no` và session thuộc ownership (resume marker hoặc `/ukit:handoff-fullstack` tường minh), không tự inject ở startup/clear mới. Kết thúc cycle: docs sync → archive completed-only `ARCHIVE/cycle-NN/` → `Phase: done`; `handoff-clear` khi còn việc mở đặt `Paused: yes` (giữ phase/scope/recovery, không mint completion, không xóa cursor). Full rules: `docs/AI_HANDOFF/RULES.md`.
|
|
147
|
+
- `docs/AI_HANDOFF/RUN.md` là run cursor có thẩm quyền; `Phase:` ≠ `done`/`blocked` = run còn sống — Stop gate từ chối stop, trả về `Next:`. Chỉ `HANDOFF FULLSTACK COMPLETE`/`BLOCKED` kết thúc run — recap/checkpoint không phải completion; resume chỉ tiếp tục frozen scope khi `Paused: no` và session thuộc ownership (resume marker hoặc `/ukit:handoff-fullstack` tường minh), không tự inject ở startup/clear mới. Kết thúc cycle: docs sync → archive completed-only `ARCHIVE/cycle-NN/` → `Phase: done`; `handoff-clear` khi còn việc mở đặt `Paused: yes` (giữ phase/scope/recovery, không mint completion, không xóa cursor). Full rules: `docs/AI_HANDOFF/RULES.md`. Trước khi stop: reconcile task/AC/findings/jobs/independent work/integration/release/consumer/pause/blocker; Stop gate chỉ là backstop. Turn wait ≠ run done; blocker chỉ release khi không còn READY independent work.
|
|
148
148
|
|
|
149
149
|
## Compact Instructions
|
|
150
150
|
Compact giữa handoff run: giữ goal, RUN.md path + phase, task inventory + task đang làm, `Next:` step, blockers, verification evidence, commits, worktree/copy-back state, "compact không phải completion". Sau compact: đọc lại RUN.md + INDEX.md rồi chạy `Next:`.
|
|
@@ -231,6 +231,14 @@ A task is `ready` only when it has:
|
|
|
231
231
|
|
|
232
232
|
Missing any → `needs_breakdown`, `blocked`, or `needs_human`.
|
|
233
233
|
|
|
234
|
+
**`ready` là verdict, không phải default:** planner viết task với `needs_breakdown`; task chỉ
|
|
235
|
+
được chuyển `ready` khi CẢ hai gate đã pass — (1) `node .claude/ukit/index/task-budget-validator.mjs
|
|
236
|
+
docs/AI_HANDOFF/tasks/TASK-xxx.md` (một lệnh đơn giản mỗi file, đường dẫn literal, không `cd`/loop/
|
|
237
|
+
biến shell/pipe) in `VERDICT: ok` (hoặc dismissal được ghi trong `## Discussion`), và (2) plan review
|
|
238
|
+
độc lập kết thúc `Approved`. Budget cạn / lệnh bị denial / gián đoạn trước khi đủ gate → task vẫn
|
|
239
|
+
`needs_breakdown`, và `INDEX.md` + `ACTIVE.md` phải ghi rõ gate nào còn thiếu — executor chỉ bao giờ
|
|
240
|
+
pick `ready`.
|
|
241
|
+
|
|
234
242
|
|
|
235
243
|
## Clear Handoff
|
|
236
244
|
|
|
@@ -6,7 +6,7 @@ File này BẮT BUỘC giữ structure: Goal + Test Cases + Test Files + Verific
|
|
|
6
6
|
Mọi AI (planner / executor / reviewer) đọc và ghi vào file NÀY. Không trao đổi ngoài file.
|
|
7
7
|
-->
|
|
8
8
|
|
|
9
|
-
- Status: `
|
|
9
|
+
- Status: `needs_breakdown` <!-- ready | needs_breakdown | in_progress | pending_review | changes_requested | critical_block | approved | approved_minor | blocked | done | cancelled_superseded. A planner writes tasks `needs_breakdown`; they flip to `ready` only after the task-budget validator verdict is ok (or a documented dismissal) AND the independent plan review is Approved -->
|
|
10
10
|
- Size: `M` <!-- S | M | L — runtime budgets key off this field; defaults to M when missing -->
|
|
11
11
|
- Owner: `-` <!-- tool đang giữ task -->
|
|
12
12
|
- Reviewer: `-` <!-- model name reviewer dùng, set ở Phase 4 -->
|
|
@@ -91,6 +91,13 @@ Format mỗi comment:
|
|
|
91
91
|
<nội dung — câu hỏi, lưu ý, đề xuất, đẩy ngược về phase trước>
|
|
92
92
|
|
|
93
93
|
Reply lùn 1 level (####). Ghi rõ "→ @planner" / "→ @executor" / "→ @reviewer" nếu có người nhận cụ thể.
|
|
94
|
+
|
|
95
|
+
Planner persist verdict NGAY khi nó tồn tại: ngay sau mỗi lượt chạy task-budget validator,
|
|
96
|
+
append một dòng vào thread này — `### <date> · planner · Validator: ok <YYYY-MM-DD>`
|
|
97
|
+
(hoặc `### <date> · planner · Validator: dismissed <YYYY-MM-DD> — <reason>`). Bước
|
|
98
|
+
flip-to-ready (sau khi plan review `Approved`) đọc các dòng đã ghi trên disk này để quyết
|
|
99
|
+
định — task không có dòng `Validator:` được ghi thì giữ `needs_breakdown`, dù session còn
|
|
100
|
+
nhớ verdict cũ (compaction-safe).
|
|
94
101
|
-->
|
|
95
102
|
|
|
96
103
|
(chưa có comment)
|
|
@@ -141,7 +141,11 @@ DuraOne skill chỉ active khi pack `duraone` được cài hoặc `.claude/skil
|
|
|
141
141
|
|
|
142
142
|
## Handoff Fullstack Rules
|
|
143
143
|
<!-- RULE: HAND-02 -->
|
|
144
|
-
- `docs/AI_HANDOFF/RUN.md` là run cursor có thẩm quyền; `Phase:` ≠ `done`/`blocked` = run còn sống — Stop gate từ chối stop, trả về `Next:`. Chỉ `HANDOFF FULLSTACK COMPLETE`/`BLOCKED` kết thúc run — recap/checkpoint không phải completion; resume chỉ tiếp tục frozen scope khi `Paused: no` và session thuộc ownership (resume marker hoặc `/ukit:handoff-fullstack` tường minh), không tự inject ở startup/clear mới. Kết thúc cycle: docs sync → archive completed-only `ARCHIVE/cycle-NN/` → `Phase: done`; `handoff-clear` khi còn việc mở đặt `Paused: yes` (giữ phase/scope/recovery, không mint completion, không xóa cursor). Full rules: `docs/AI_HANDOFF/RULES.md`.
|
|
144
|
+
- `docs/AI_HANDOFF/RUN.md` là run cursor có thẩm quyền; `Phase:` ≠ `done`/`blocked` = run còn sống — Stop gate từ chối stop, trả về `Next:`. Chỉ `HANDOFF FULLSTACK COMPLETE`/`BLOCKED` kết thúc run — recap/checkpoint không phải completion; resume chỉ tiếp tục frozen scope khi `Paused: no` và session thuộc ownership (resume marker hoặc `/ukit:handoff-fullstack` tường minh), không tự inject ở startup/clear mới. Kết thúc cycle: docs sync → archive completed-only `ARCHIVE/cycle-NN/` → `Phase: done`; `handoff-clear` khi còn việc mở đặt `Paused: yes` (giữ phase/scope/recovery, không mint completion, không xóa cursor). Full rules: `docs/AI_HANDOFF/RULES.md`. Trước khi stop: reconcile task/AC/findings/jobs/independent work/integration/release/consumer/pause/blocker; Stop gate chỉ là backstop. Turn wait ≠ run done; blocker chỉ release khi không còn READY independent work.
|
|
145
|
+
|
|
146
|
+
## Handoff Planning Gates
|
|
147
|
+
<!-- RULE: HAND-03 -->
|
|
148
|
+
- Tasks born `needs_breakdown`; flip to `ready` only after the validator's `VERDICT: ok` recorded on disk (`node .claude/ukit/index/task-budget-validator.mjs --record <task.md>`) AND `PLAN_REVIEW: Approved` in PLAN.md — and `node .claude/ukit/index/ready-gate.mjs <root>` prints `READY_GATE: ok` before any flip. Owner documents: `node .claude/ukit/index/source-snapshot.mjs <original> docs/AI_HANDOFF/SOURCE.md` before planning reads them (`source snapshot MISSING` when it cannot run). Implementation lands via `node .claude/ukit/index/land-worktree.mjs` (receipt-backed); overwriting PLAN/SPEC/LEDGER needs an `amendments/rev-<NN>/` copy (`node .claude/ukit/index/amend-guard.mjs`). All bare single `node` commands — no `cd`, no `$()`, no compounds.
|
|
145
149
|
|
|
146
150
|
## Compact Instructions
|
|
147
151
|
Compact giữa handoff run: giữ goal, RUN.md path + phase, task inventory + task đang làm, `Next:` step, blockers, verification evidence, commits, worktree/copy-back state, "compact không phải completion". Sau compact: đọc lại RUN.md + INDEX.md rồi chạy `Next:`.
|
|
@@ -69,6 +69,7 @@ outputs:
|
|
|
69
69
|
- { from: core, heading: DuraOne Skill — Conditional Activation }
|
|
70
70
|
- { from: core, heading: Completion Checklist }
|
|
71
71
|
- { from: core, heading: Handoff Fullstack Rules }
|
|
72
|
+
- { from: core, heading: Handoff Planning Gates }
|
|
72
73
|
- { from: core, heading: Compact Instructions }
|
|
73
74
|
trailer: '{{codegraphSection}}'
|
|
74
75
|
- target: template_project/.omp/RULES.md
|
|
@@ -143,5 +144,6 @@ outputs:
|
|
|
143
144
|
- { from: core, heading: DuraOne Skill — Conditional Activation }
|
|
144
145
|
- { from: core, heading: Completion Checklist }
|
|
145
146
|
- { from: core, heading: Handoff Fullstack Rules }
|
|
147
|
+
- { from: core, heading: Handoff Planning Gates }
|
|
146
148
|
- { from: core, heading: Compact Instructions }
|
|
147
149
|
trailer: '{{codegraphSection}}'
|
|
@@ -9,8 +9,7 @@ nothing else is loaded. Keep this short: every line here is a per-turn tax.
|
|
|
9
9
|
- **Non-trivial / risky** (auth, migration, shared runtime, data-loss, flaky) — index-first, then
|
|
10
10
|
activate the matching skill, then verify.
|
|
11
11
|
|
|
12
|
-
Pick the lane before the first tool call
|
|
13
|
-
scattershot one.
|
|
12
|
+
Pick the lane before the first tool call — skipping this is what turns a direct chat into a scattershot one.
|
|
14
13
|
|
|
15
14
|
## 2. Execution Contract
|
|
16
15
|
|
|
@@ -30,9 +29,9 @@ files before widening further. These node scripts work unchanged under omp.
|
|
|
30
29
|
|
|
31
30
|
## 5. Auto-activate skills
|
|
32
31
|
|
|
33
|
-
Skills live in `.claude/skills
|
|
34
|
-
|
|
35
|
-
|
|
32
|
+
Skills live in `.claude/skills/`, read by omp through its `claude` discovery provider — no mirror under
|
|
33
|
+
`.omp/`. On any non-trivial task — and again after the first tool calls reveal the real work — read the
|
|
34
|
+
matching `SKILL.md` without being asked. Users never name skills.
|
|
36
35
|
|
|
37
36
|
## 6. Delegate to bind a model tier
|
|
38
37
|
|
|
@@ -40,36 +39,37 @@ Your own model does not change mid-turn. A tier only applies when work is handed
|
|
|
40
39
|
`.omp/agents/`, whose `model:` field (`@smol` / `@default` / `@slow` / `@vision`) resolves through
|
|
41
40
|
`modelRoles` in `.omp/config.yml`.
|
|
42
41
|
|
|
43
|
-
- `tiny-fix` → `@smol` · `local-fix
|
|
44
|
-
|
|
45
|
-
- Images: `@vision` only. `@default`/`@slow` cannot see images on the UNIC gateway and must never
|
|
46
|
-
guess at their contents — hand every image to `ukit-vision-analyst` first.
|
|
42
|
+
- `tiny-fix` → `@smol` · `local-fix`/`local-build`/`shared-edit`/`find-cause`/`map-impact` → `@default` · `review-release` → `@slow`
|
|
43
|
+
- Images: `@vision` only — `@default`/`@slow` cannot see images on the UNIC gateway; hand every image to `ukit-vision-analyst` first.
|
|
47
44
|
|
|
48
45
|
Doing everything inline is what makes UKit look like it only has one model. Keep direct execution
|
|
49
46
|
for trivial/simple work; delegate when the tier differs or a noisy lane would flood this context.
|
|
50
47
|
|
|
51
48
|
## 7. Safe Patch
|
|
52
49
|
|
|
53
|
-
Prefer unique current-file anchors over line numbers or stale pasted blocks
|
|
54
|
-
stale spec — re-read current source and confirm before applying. Preserve existing BOM and line
|
|
55
|
-
endings.
|
|
50
|
+
Prefer unique current-file anchors over line numbers or stale pasted blocks; never silently merge a
|
|
51
|
+
stale spec — re-read current source and confirm before applying. Preserve existing BOM and line endings.
|
|
56
52
|
|
|
57
53
|
## 8. Handoff runs never park mid-cycle
|
|
58
54
|
|
|
59
55
|
While `docs/AI_HANDOFF/RUN.md` `Phase:` is not `done`/`blocked`, a handoff-fullstack run is
|
|
60
56
|
still in flight: a recap or checkpoint is progress output, never a stopping point. Continue
|
|
61
57
|
the cursor's `Next:` step; only `HANDOFF FULLSTACK COMPLETE` or `HANDOFF FULLSTACK BLOCKED`
|
|
62
|
-
ends the run
|
|
63
|
-
|
|
58
|
+
ends the run; `handoff-clear` must close the cursor or the gate keeps the next session running.
|
|
59
|
+
Before any stop, reconcile task/AC/findings/jobs/independent work/integration/release/consumer/
|
|
60
|
+
pause/blocker; the Stop gate is the backstop; a turn wait is not run done; a blocker releases only
|
|
61
|
+
with no READY independent work. Planning gates are mechanical, disk-read: `needs_breakdown`
|
|
62
|
+
tasks flip `ready` only on a recorded validator `VERDICT: ok` + `PLAN_REVIEW: Approved`, with
|
|
63
|
+
`node .claude/ukit/index/ready-gate.mjs docs/AI_HANDOFF` printing `READY_GATE: ok` before the
|
|
64
|
+
flip; owner docs persist via `source-snapshot.mjs`, work lands via `land-worktree.mjs` — all bare
|
|
65
|
+
single `node` commands.
|
|
64
66
|
|
|
65
67
|
## 9. Never end a turn silently
|
|
66
68
|
|
|
67
69
|
Ending a turn with no output is a defect, not a pause. If you stop before the work is finished, the
|
|
68
|
-
last
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
>
|
|
72
|
-
>
|
|
73
|
-
>
|
|
74
|
-
> `docs/pstack/UNIC_DECISION_GUIDE.md`); both are capability lanes. Aliases `lite`/`code`/`smart`
|
|
75
|
-
> map smol↔lite, default↔code, slow↔smart — edit each alongside its tier.
|
|
70
|
+
last line you emit names what is unfinished and what you need. Silence is never a status.
|
|
71
|
+
|
|
72
|
+
> Maintainer note, not a per-turn rule: `modelRoles` ships UNIC gateway names; on a non-UNIC
|
|
73
|
+
> provider edit only cost tiers `smol`/`default`/`slow` — never `vision` (`unic-vision`) or
|
|
74
|
+
> `decision` (`unic-decision`, LOCAL JEV/Lava typed-decision — `docs/pstack/UNIC_DECISION_GUIDE.md`);
|
|
75
|
+
> both capability lanes. Aliases lite/code/smart = smol/default/slow — edit alongside its tier.
|
|
@@ -831,7 +831,7 @@
|
|
|
831
831
|
"blockOnCritical": "CRITICAL \u2192 block handoff c\u1ee9ng. Set false ch\u1ec9 khi mu\u1ed1n warning m\u1ec1m.",
|
|
832
832
|
"blockOnChangesRequested": "CHANGES-REQUESTED \u2192 block handoff \u0111\u1ebfn khi fix. Set false s\u1ebd cho ph\u00e9p done v\u1edbi issue Important.",
|
|
833
833
|
"rerunVerificationCommands": "Reviewer ph\u1ea3i t\u1ef1 ch\u1ea1y l\u1ea1i Verification Commands, kh\u00f4ng tin output executor.",
|
|
834
|
-
"appendVerdictToTaskFile": "
|
|
834
|
+
"appendVerdictToTaskFile": "Persist the reviewer's complete `## Reviewer Verdict` in the task file: the read-only reviewer returns the block; the orchestrator appends it serially with Edit before aggregation/status updates. The legacy key names persistence, not reviewer write authority."
|
|
835
835
|
},
|
|
836
836
|
"statusFlow": "Danh s\u00e1ch status h\u1ee3p l\u1ec7 trong INDEX.md. \u0110\u1ed5i t\u00ean trong n\u00e0y = \u0111\u1ed5i state machine handoff.",
|
|
837
837
|
"fullstack": {
|