kiokuko 1.0.25 → 1.0.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.
@@ -0,0 +1,330 @@
1
+ # Normal-workflow acceptance
2
+
3
+ G0–G2 test source and package delivery. G3 tests the real model/client. G4 verifies
4
+ raw evidence from an independently approved producer. Local harness tests,
5
+ synthetic transcripts, summary JSON and an artifact's own hash cannot establish
6
+ live acceptance.
7
+
8
+ ## Deterministic checks
9
+
10
+ ```sh
11
+ npm run test:normal-workflow
12
+ npm run typecheck
13
+ node scripts/run-normal-workflow-gates.mjs --output /tmp/kiokuko-normal-gates
14
+ ```
15
+
16
+ Use a new or empty output directory. The gate runner records each stage separately,
17
+ including actual argv/cwd, start/end, exit/signal and before/after commit, dirty
18
+ state and source digest. G0 test counts are N/A. G1 uses Node lifecycle records,
19
+ not TAP or JSON printed by test code. G4 recomputes pass/fail/skip/todo/cancelled
20
+ from each official leaf-completion event, checks one final summary and an ended
21
+ stream, rejects duplicate/unknown/missing IDs, and compares totals to that result. G2 builds, packs once, installs that tarball,
22
+ checks generated Skills and restart behavior, and installs the optional runtime.
23
+ Each stage retains stdout/stderr, argv/cwd/exit/signal/times and its corresponding
24
+ outcome: actual npm pack metadata/sha1/inventory, installed file hashes, deployed
25
+ Skill bytes plus public MCP selector responses, persisted verification state
26
+ before/after MCP restart, and optional package inventory/import completion. G4
27
+ compares these with the same actual tarball. `true`, correctly named commands
28
+ without outcomes, missing stages and interrupted execution cannot pass.
29
+ An optional-runtime download failure is a failure, not an approved skip. G0/G1
30
+ retain their own results when a later stage fails.
31
+
32
+ The default suite's approved inventory must be reviewed separately and frozen in
33
+ the policy. It is not learned from the result being graded. IDs include relative
34
+ file, runtime event location and test name. An optional skip must name the exact ID in
35
+ that inventory; zero tests, missing IDs, unexpected skips, todo/cancelled/failed
36
+ results and incomplete streams fail acceptance. Count changes require a newly
37
+ reviewed inventory, not editing a report to match.
38
+ A passing completion with a failure reason is contradictory even for an approved
39
+ skip, and is rejected.
40
+
41
+ Dirty-checkout results are local diagnostics. Source changes during a stage
42
+ invalidate that stage. The runner never marks a local diagnostic as release proof.
43
+
44
+ ## Independent fixture oracle
45
+
46
+ The public shipping fixture specifies free shipping at 5000 or more and a fee of
47
+ 500 below 5000. Its initial bug is exactly at 5000. Membership uses an optional
48
+ second boolean and preserves old calls and non-members.
49
+
50
+ Development replays the immutable Red tree, the same tests with only the requested
51
+ behavior corrected, and the final Green tree. Existing tests/spec/config remain
52
+ unchanged; only shipping source and additive tests may change. A separate behavior
53
+ oracle checks 0, 4999, 5000 and 5001, old calls and member/non-member combinations.
54
+
55
+ Fixture tests cannot run arbitrary host Node code. A trusted bridge links only
56
+ `node:test`, `node:assert/strict` (or `node:assert`) and `../shipping.mjs` into a
57
+ separate realm without host objects, process, credentials, filesystem,
58
+ IPC or dynamic code generation. Intrinsics are frozen and privately bound, including collection iterator prototypes;
59
+ replacing a writable global constructor cannot change assertion serialization. Test callbacks execute
60
+ there; a trusted Node host registers their outcomes with the actual test runner.
61
+ A separate parent consumes lifecycle events and writes the result file outside
62
+ the worker's readable/writable roots. Worker stdout/stderr never supply counters.
63
+ The bridge supports synchronous top-level tests and skip/todo, including string
64
+ skip reasons and the native TODO status of tests without a callback. Assertions are
65
+ performed by the real `node:assert` / `node:assert/strict` implementation, preserving
66
+ their distinct loose/strict modes. A frozen null-prototype bridge accepts only a
67
+ bounded primitive string and returns a primitive outcome; no fixture object or
68
+ host exception crosses it. A tagged graph preserves undefined properties, numeric
69
+ special values, bigint, arrays (including holes), plain/null-prototype objects,
70
+ Sets, Maps, Dates, RegExps, sharing and cycles. Functions, symbols, typed arrays,
71
+ custom prototypes, accessors, non-enumerable custom properties, Proxy operations and unknown assertion members are
72
+ explicitly unsupported and produce FAIL_HARNESS even when a fixture catches the
73
+ error. Comparison is never replaced by JSON equality. The helper supports
74
+ equal/strictEqual, notEqual/notStrictEqual, deepEqual/deepStrictEqual,
75
+ notDeepEqual/notDeepStrictEqual, ok and fail. Unsupported imports, async tests, empty registration and premature
76
+ termination cannot supply acceptable proof. This is a bounded fixture runner, not
77
+ a replacement for arbitrary repository test frameworks. VM isolation is combined
78
+ with a separate process, Node permissions and time/output limits.
79
+
80
+ Explanatory answers require an independent approved reviewer. The original answer
81
+ is retained; the execution model is not asked to produce grading JSON. A review
82
+ contains `schema: shipping-answer-v1`, kind, answerHash, initialHash, specHash,
83
+ reviewer, verdict, reason and ordered criteria from `ANSWER_RUBRIC` in
84
+ `scripts/lib/normal-workflow/answer-review.mjs`. It must assess each fact, including
85
+ negation and contradictions, rather than word presence. The exact answer, reviewed
86
+ fixture and rubric version are bound by hashes. PASS/FAIL/UNCERTAIN are distinct:
87
+ a successfully collected but unreviewed answer remains WAITING_REVIEW;
88
+ stale/unapproved/UNCERTAIN reviews yield FAIL_HARNESS; an independently
89
+ reviewed wrong answer yields FAIL_PRODUCT. Keep reviews outside the model tree.
90
+ Synthetic review fixtures test this contract; they do not claim human or live
91
+ model evaluation occurred.
92
+
93
+ ## Freeze approval before execution
94
+
95
+ Create the policy outside the model workspace from the authorized run settings,
96
+ reviewed test inventory, approved producer and approved reviewers:
97
+
98
+ ```sh
99
+ node scripts/freeze-normal-workflow-policy.mjs \
100
+ --approval /path/to/approved-run.json \
101
+ --test-manifest /path/to/reviewed-test-inventory.json \
102
+ --producer /path/to/approved-producer.json \
103
+ --reviewers /path/to/approved-reviewers.json \
104
+ --output /path/to/frozen-policy.json
105
+ ```
106
+
107
+ The command refuses overwrite and prints the canonical policy hash. Independently
108
+ review and retain that hash before execution. File permissions and a self-computed
109
+ hash alone are not approval. The policy contains the exact provider/model/client
110
+ version/reasoning, clients, all scenario IDs and natural requests, one attempt per
111
+ scenario, all time/turn/tool/cost limits, rubric, reviewed test inventory and the
112
+ producer's repository/workflow/ref/immutable commit. It contains no auth secrets.
113
+ The supported cost condition remains ChatGPT subscription, USD 0 additional spend;
114
+ paid APIs are unsupported. Approval also requires an authFile, approved=true and
115
+ testCredentials=true. Explicit user authorization may designate the currently
116
+ logged-in subscription account for isolated synthetic tests; do not infer this
117
+ from the existence of credentials. The policy excludes the credential path.
118
+
119
+ A producer file has `repository`, `workflow` (repository-relative workflow path),
120
+ `ref` (branch name), and a full 40-character `commit`. Reviewer input is an array
121
+ of approved reviewer names. Inventory entries have `id` and `optionalSkip`.
122
+ Changing a model, version, client matrix, request, limit or rubric requires a new
123
+ independently approved policy/run. G4 constructs the matrix from that policy;
124
+ live summaries cannot reduce it or supply its expected hash.
125
+
126
+ ## Live execution and current limits
127
+
128
+ ```sh
129
+ node scripts/run-normal-workflow-acceptance.mjs --offline --require-live \
130
+ --output /tmp/kiokuko-normal-offline
131
+ ```
132
+
133
+ This must exit 1 with NOT_RUN. No model runs and offline cannot pass G3.
134
+
135
+ ```sh
136
+ node scripts/run-normal-workflow-gates.mjs \
137
+ --policy /path/to/frozen-policy.json --policy-hash APPROVED_HASH \
138
+ --output /tmp/kiokuko-normal-gates
139
+ node scripts/run-normal-workflow-acceptance.mjs --collect-only \
140
+ --approval /path/to/approved-run.json \
141
+ --policy /path/to/frozen-policy.json --policy-hash APPROVED_HASH \
142
+ --candidate /tmp/kiokuko-normal-gates/candidate.json \
143
+ --artifact /tmp/kiokuko-normal-gates/candidate.tgz \
144
+ --output /tmp/kiokuko-normal-live
145
+ ```
146
+
147
+ The live runner checks policy before reading credentials or starting a model. It
148
+ uses isolated HOME/CODEX_HOME/data and installer-generated AGENTS/Skills/hooks.
149
+ Only the approved tarball from G2 is installed; its bytes/source must match.
150
+ Workspace writes exclude the control/evidence directories and the default /tmp
151
+ exceptions. No production memories/config are loaded; credentials and raw client
152
+ rollouts are removed with the isolated controls. Private reasoning and credential
153
+ contents are not archived. Secret output stops capture. No automatic retry erases
154
+ a failed attempt.
155
+
156
+ Skill evidence requires paired tools/list request/response with required schemas,
157
+ unique call IDs within one proxy session, successful task_inspect responses for
158
+ each required core Skill individually, unique index identities, exact canonical
159
+ identity/body/package version, soul completion before memory-reasoning starts and
160
+ both completions before task_prepare or memory_recall registration. Expected bodies
161
+ come from the candidate package, not capability declarations. Every successful
162
+ ordinary recall is checked individually; multiple recalls may reuse the same
163
+ verified Soul and memory-reasoning reads without replacing either identity. AGENTS additionally
164
+ requires the matching isolated client loader receipt before the natural request;
165
+ project scenarios require actual hook observations. Duplicated reads of one Skill,
166
+ empty discovery, late reads and another session cannot prove loading.
167
+
168
+ Actual model/effort come from the isolated client's turn-context records. A
169
+ requested model is recorded as requestedModel, not observedModel. Missing or
170
+ unknown actual identity fails closed. Client version matches the exact approved
171
+ version, and G4 checks actual argv, request and measured usage against policy.
172
+ The loader accepts the observed scoped and unscoped AGENTS headings, with exact
173
+ body matching. CLI 0.153.4 records reasoning effort in collaboration settings;
174
+ conflicting legacy/current fields remain unobserved. Its stable Code Mode host
175
+ stays enabled so the model can invoke registered tools; native writes still
176
+ require the observed read-only boundary below.
177
+
178
+ **Execution-bound CLI checkpoints use an exclusive fixture executor.** Native
179
+ CLI tools run in read-only sandbox with approvals disabled. A real child-process
180
+ write probe must receive EPERM/EACCES with no file/tree change, and the isolated
181
+ client's actual turn-context must also show read-only/never. Configuration alone
182
+ is insufficient. If either proof is absent, development is FAIL_HARNESS.
183
+ The separate MCP executor owns all fixture writes through one queue. It supports
184
+ reading fixture files, writing shipping source/additive tests, and standalone
185
+ fixture test commands. OS access, arbitrary commands, background processes and
186
+ protected-file edits are not execution capabilities of that server. Explanation
187
+ requests expose only file-listing and reading tools; the controller rejects
188
+ writes and test commands even if called directly.
189
+ Only named tools on the two isolated stdio servers are preapproved; unknown
190
+ tools are not exposed and native escalation remains disabled. `agents.enabled`
191
+ is false in addition to the legacy/v2 collaboration feature flags, because separate executor instances or
192
+ interleaved MCP sessions cannot establish exclusive ownership of the fixture.
193
+ Installer-generated hooks are loaded from hooks.json once, without inline copies.
194
+ The server's public initialization instructions and writer description distinguish
195
+ its bounded controller access from native read-only tools; the command description
196
+ states its persistence guarantee. This capability declaration contains no scenario
197
+ answers and does not modify the installed AGENTS or Skill instructions.
198
+ The CLI also receives the same permission boundary through `developer_instructions`
199
+ so its native read-only policy is not mistaken for the absence of the independent
200
+ MCP writer. This declaration contains no Skill selectors, test answers or grading
201
+ hints. The frozen policy pins its hash, and G4 rejects substituted or duplicate
202
+ declarations in the actual command arguments.
203
+ Neither tool teaches expected shipping values or a scenario's test sequence.
204
+
205
+ For a test command the owner holds the queue, takes a bounded immutable tree,
206
+ runs the protected Node lifecycle supervisor on that tree, writes the command
207
+ ID/exit/signal/tree/hash/lifecycle record, fsyncs the record and directory, and
208
+ only then releases the queue and returns the receipt. G3/G4 match each receipt
209
+ against the same server session and original RPC request/response. The frozen
210
+ policy pins `executorMode: native-readonly-exclusive-fixture-v1`; development
211
+ argv must select read-only sandbox, and the actual sandbox probe is included in
212
+ the identity evidence. Missing or conflicting bindings fail the harness. Delayed CLI
213
+ stdout, immediately queued edits and consecutive events cannot change saved
214
+ Red/Green trees. Every acknowledged writer request is replayed from the original
215
+ fixture to the final tree, including its returned operation sequence and tree hash.
216
+ The first implementation edit must follow the qualifying Red checkpoint; an edit
217
+ followed by a revert cannot disappear between test snapshots. Missing, reordered
218
+ or substituted writer receipts fail closed. Both trees are independently replayed
219
+ again. A complete trace without actual Red still fails. The plain `exec --json` adapter remains
220
+ checkpointAuthority=unavailable when this executor and native boundary are absent;
221
+ its events never photograph a mutable tree. This controlled fixture execution
222
+ path is distinct from unrestricted native CLI workspace writes. The real-model
223
+ matrix must pass on this path before claiming live G3 completion.
224
+
225
+ **Desktop remains NOT_RUN.** No authoritative desktop execution/loader adapter
226
+ is implemented. CLI success cannot replace desktop scenarios. An explicit tool
227
+ access denial must not be bypassed with another automation path. If desktop is
228
+ in the approved matrix it remains required. Explanation scenarios also remain
229
+ WAITING_REVIEW after a valid collection until an approved independent review is supplied.
230
+
231
+ Missing native enforcement, executor receipts, independent reviews, protected producer settings or required desktop coverage prevents live release PASS. They do not invalidate passing
232
+ local regression or package-delivery checks.
233
+
234
+
235
+ ## Collect, independently review, then finalize
236
+
237
+ `--collect-only` permits a successfully collected explanation to wait for review;
238
+ its exit 0 indicates collection only, never G3 PASS. Other failures and NOT_RUN
239
+ remain failures. `review-requests.json` contains the original answers and their
240
+ answer/tree/spec hashes. Keep the execution account and process away from review
241
+ inputs. Supply a separate JSON array of `{id, review}` for each explanation,
242
+ using the exact ordered rubric criteria, reviewer identity and hashes. Then run:
243
+
244
+ ```sh
245
+ node scripts/finalize-normal-workflow-acceptance.mjs \
246
+ --live /tmp/kiokuko-normal-live \
247
+ --policy /path/to/frozen-policy.json --policy-hash APPROVED_HASH \
248
+ --reviews /path/to/independent-reviews.json
249
+ ```
250
+
251
+ Memory application/inapplicability, verification-definition calls, injected
252
+ selector failures and subsequent recovery are derived from paired raw RPCs. The
253
+ original client stream must have a complete, ordered thread/turn lifecycle;
254
+ its last answer, tool/turn counts, runtime and loader identity must match the
255
+ stored attempt. Replacement answers and execution-summary booleans cannot
256
+ supply these facts. Collection, finalization and G4 share this validation.
257
+
258
+ The finalizer does not rerun the model or trust previous PASS summaries. It
259
+ reopens original execution, identity, instructions, protocol, loader and trees,
260
+ rechecks policy and independently replays the oracle with the review. Exit 2 means
261
+ WAITING_REVIEW; exit 1 means invalid/failed evidence; exit 0 means all required G3
262
+ attempts passed. Valid review receipts are saved for sealing. Neither local file
263
+ permissions nor the text of a reviewer name authenticates a human by itself.
264
+
265
+ The GitHub workflow uses two separate jobs. Collection uploads
266
+ `normal-workflow-collected` (deterministic/live/policy) and removes credentials.
267
+ The second job waits at protected environment `normal-workflow-answer-review`.
268
+ The independent reviewer reads that artifact, sets the environment variable
269
+ `NORMAL_WORKFLOW_REVIEW_JSON` to the hash-bound review array, and approves that
270
+ environment. Configure required human reviewers and prevent execution-job tokens
271
+ from editing environment settings. Both environments require the independently
272
+ approved `NORMAL_WORKFLOW_POLICY_HASH`. The finalizer uses `--github-review` to
273
+ fetch the run's actual approval history and require an approved human login in
274
+ the frozen reviewer allowlist. It finalizes, seals and uploads
275
+ `normal-workflow-evidence`; only then can the producer workflow succeed. G4,
276
+ after completion, independently fetches that approval history again and checks
277
+ each answer review's identity. A bot, another environment, an unapproved name or
278
+ execution-model review JSON does not satisfy the boundary. Environment protection
279
+ and variable permissions are prerequisites, not automatically configured here.
280
+
281
+ The positive workflow regression uses synthetic execution/checkpoint/review
282
+ records and a real tarball to exercise collection → pending → review → finalizer
283
+ → sealer → G4 fixture verification. The mock-GitHub test separately exercises the
284
+ authentication boundary. Neither is real CLI/model/CI proof.
285
+
286
+ ## Raw bundle and independent G4
287
+
288
+ An approved supervisor can seal raw records using
289
+ `scripts/seal-normal-workflow-evidence.mjs`. Supply deterministic/live directories,
290
+ the frozen policy/hash, actual CI run/job IDs and an empty output directory. It
291
+ refuses pending/failed G3 summaries rather than inventing missing records.
292
+ Finalize reviews first; do not append review files to an already failed producer
293
+ run and treat it as a successful workflow.
294
+
295
+ The manifest binds run/producer/job, clean candidate commit/source digest, actual
296
+ artifact and policy hashes, gate/attempt IDs and each relative raw leaf's size and
297
+ hash. Raw records include command provenance, lifecycle counts/inventory, package
298
+ stages, client execution/identity, protocol discovery/Skill responses, loader/hooks,
299
+ initial/final trees, checkpoints, original answers and independent reviews. The
300
+ verifier reopens those leaves and replays the oracle; it does not consume PASS,
301
+ oraclePassed, instructionsVerified or releaseReady from summaries. Missing,
302
+ mutated, duplicate, other-run, traversal and symlink evidence fails.
303
+
304
+ After the producer run completes, run the verifier from the independently reviewed producer checkout (not PR-controlled code):
305
+
306
+ ```sh
307
+ node scripts/verify-normal-workflow-release.mjs \
308
+ --artifact /path/to/candidate.tgz --evidence-root /path/to/evidence \
309
+ --policy /path/to/frozen-policy.json --policy-hash INDEPENDENTLY_APPROVED_HASH \
310
+ --trusted-run APPROVED_GITHUB_RUN_ID --trusted-artifact-id GITHUB_ARTIFACT_ID
311
+ ```
312
+
313
+ G4 uses authenticated `gh api` to check the approved repository/workflow/ref/SHA,
314
+ workflow_dispatch run, successful job and artifact identity. It downloads the
315
+ artifact and verifies its GitHub-provided SHA256 digest before safe extraction.
316
+ The local manifest must match that independent download and every leaf must
317
+ match the authenticated manifest. Recomputing a local manifest does not recreate
318
+ producer authority. Archive links/devices/traversal/duplicate entries and size
319
+ expansion are rejected. This requires gh, Python 3 and tar; missing tooling is a
320
+ verification failure. Synthetic verifier fixtures can pass evidence validation
321
+ but always return releaseReady=false.
322
+
323
+ The manual workflow runs only on main and requires the environment's separately
324
+ reviewed NORMAL_WORKFLOW_POLICY_HASH. The frozen producer commit must equal the
325
+ workflow SHA. PR source cannot set that trusted hash through a dispatch input.
326
+ Repository configuration alone does not prove environment protection, approval,
327
+ execution, raw receipts or artifact authenticity. G4 cannot authenticate a job's
328
+ successful completion from inside that still-running job, so verification happens
329
+ afterward. This change does not configure secrets/environment protections, dispatch
330
+ CI, publish, push, merge or certify the running client.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kiokuko",
3
- "version": "1.0.25",
3
+ "version": "1.0.27",
4
4
  "description": "Model-agnostic external memory for AI coding agents",
5
5
  "type": "module",
6
6
  "bin": {
@@ -34,6 +34,7 @@
34
34
  "test:integration": "node scripts/run-tests.mjs tests/integration",
35
35
  "test:sqlite-vec": "node --import tsx tests/ci/sqlite-vec-package-smoke.ts",
36
36
  "test:global-install": "node tests/ci/global-install-smoke.mjs",
37
+ "test:agenticreplay": "npm run build && node tests/ci/agenticreplay-smoke.mjs",
37
38
  "test:evaluation": "npm run build && node scripts/run-retrieval-evaluation.mjs",
38
39
  "test:interaction:live": "npm run build && node scripts/run-interaction-memory-smoke.mjs",
39
40
  "test:interaction:benchmark": "npm run build && node scripts/run-interaction-memory-benchmark.mjs",
@@ -45,6 +46,9 @@
45
46
  "test:evaluation:akinator": "npm run build && node scripts/run-akinator-memory-evaluation.mjs",
46
47
  "test:benchmark:akinator": "npm run build && node scripts/run-akinator-memory-benchmark.mjs",
47
48
  "test:memory-assurance:live": "npm run build && node scripts/run-memory-assurance-live.mjs",
49
+ "test:normal-workflow": "node scripts/run-tests.mjs tests/acceptance/normal-workflow",
50
+ "test:normal-workflow:gates": "node scripts/run-normal-workflow-gates.mjs",
51
+ "test:normal-workflow:live": "node scripts/run-normal-workflow-acceptance.mjs --require-live",
48
52
  "test:memory-index:evaluation": "node --import tsx --test --test-name-pattern=\"fixed bilingual index evaluation\" tests/integration/memory-index.test.ts",
49
53
  "test:chatgpt:tunnel": "node scripts/run-tunnel-smoke.mjs"
50
54
  },
@@ -0,0 +1,59 @@
1
+ ---
2
+ name: coding-ideal-routine-skill
3
+ description: バグ修正・機能追加・挙動に関わる設定や配布物の変更で、調査→失敗するテスト→実装→実利用経路の受け入れ検証→事実に基づく報告を行う。部品単体は動くのに通常利用で失敗する抜けを防ぐ。単なる質問・説明・計画には実装手順を強制しない。
4
+ ---
5
+
6
+ <!-- KIOKUKO MANAGED STANDARD SKILL: coding-ideal-routine-skill -->
7
+
8
+ # Coding Ideal Routine
9
+
10
+ 目的は、変更箇所のテストを通すだけでなく、ユーザーが普段行う操作で要求を満たすこと。既存の作業規約とユーザーの目的・環境・権限を守り、変更リスクに見合う最小限の検証で根拠を積み上げる。
11
+
12
+ ## 1. 作業の種類と完了条件を決める
13
+
14
+ - 質問・調査・計画だけなら、その回答を完成させる。依頼のない編集やテスト追加、記憶の読み直しを始めない。
15
+ - 修正・機能追加なら、現状の実装、関連テスト、利用手順、実行可能な環境を確認する。コードを書く前に「誰が、どの入口から、何をして、何が観測できれば成功か」を短く定義する。
16
+ - 挙動を変えない文章修正やリファクタリングでは、変更に適した検証を選ぶ。Red が不要な理由を明記し、無意味な失敗を作らない。文章・設定でも利用手順や実行結果が変わるなら挙動変更として扱う。
17
+ - 不明点は既存の仕様と利用実態から解消する。結果や権限を左右する曖昧さだけ確認し、勝手な機能拡張をしない。
18
+
19
+ ## 2. 部品ではなく、つながった利用経路を見る
20
+
21
+ 変更に関連する通常の操作を、入口から観測可能な結果までたどる。該当する場合は、配布・インストール → 読み込まれる指示/設定 → 公開ツールや UI → 実処理 → ユーザーの成果物までを対象にする。
22
+
23
+ - 各部品の成功を、連結した経路の成功に置き換えない。生産側が実際に出す値を、消費側がそのまま受け取れるか確かめる。
24
+ - 例: インストールされた指示が出す alias と prefix を組み合わせた参照が、実際の読み取りツールで解決できること。alias 単独、prefix 単独のテストだけでは不足する。
25
+ - 配布物や導入処理が関係する変更では、隔離した環境へ正規の方法で導入した成果物を境界テストに使う。ソース直読みや内部関数の直接呼び出しだけで代替しない。
26
+ - 本番相当の入力は、公開された利用契約や実際の成果物から得る。テスト側で canonical 名へ書き換える、欠けた設定を注入する、製品の不具合を補正するなどの救済をしない。
27
+ - AI が操作する製品では、被試験 AI に修正箇所・正解・特別な操作順を教え込まない。通常配布される指示と自然な依頼で試す。評価側だけが正解を保持する。
28
+
29
+ ## 3. 挙動変更は Red → Green
30
+
31
+ 1. 要求・仕様から期待値を先に決め、最小の回帰テストまたは受け入れテストを書く。新機能は未実装時に要求を満たさないことを表す。
32
+ 2. 修正前のコードで実行し、意図した挙動の不一致で失敗することを確認する。構文エラー、依存不足、認証失敗は Red の証拠に数えない。
33
+ 3. 原因を直す最小限の変更を行い、同じテストが通ることを確認する。テストを削除・弱体化したり、実装の出力を正解にして通したりしない。
34
+ 4. 必要な整理を行い、関連する既存テストと経路の受け入れ検証を再実行する。
35
+
36
+ 修正前の状態を実行できないなど、正当な制約で Red を確認できない場合は、その理由と代替証拠を残す。可能なら隔離した旧版で再現する。Red を観測していないのに「再現済み」「TDD 完了」と報告しない。
37
+
38
+ ## 4. 独立した正しさと、必要な範囲を検証する
39
+
40
+ - 期待値は要求・仕様・手計算・独立した fixture などから得る。被試験コードと同じ変換関数を使って期待値を計算しない。AI の「成功しました」やログの文字列だけを正解判定にしない。
41
+ - 影響する境界値、条件の組み合わせ、失敗後の復旧を選ぶ。個々の成功例だけでなく、今回壊れ得る接続部分を含める。
42
+ - 復旧が関係する変更では「一度失敗 → 許可された修正/再試行 → 正しい最終状態」を確認する。成功した最後の一回だけでなく、不要な副作用・重複・失敗状態の残留も確認する。
43
+ - 高速で決定的な回帰テストを基本にする。関連する公開境界のテストを加え、モックで確認できない実サービス固有の挙動がある場合だけ、目的と終了条件を決めて live 検証する。
44
+ - 毎回の全ホスト・全モデル・全 API の高額な総当たりは行わない。変更が触れる接続とリスクに応じて選び、未検証の範囲を残す。実サービスへの送信、費用、認証、外部変更は既存の許可範囲に従う。
45
+
46
+ ## 5. 障害と権限を混同しない
47
+
48
+ - ツール引数・構文・依存関係・テスト環境の問題は、原因を特定し、許可された範囲で修復して再実行する。最初の失敗だけで作業を打ち切らない。
49
+ - 明示的なアクセス拒否・承認不足は別扱い。別ツール、別アカウント、別経路で迂回しない。必要な操作・対象・不足する許可を報告し、その操作を止める。
50
+ - 再試行は原因に対する変更と観測可能な進展がある場合に行う。同じ条件で無限に繰り返さない。解消不能な制約や追加判断が必要なら、独立して進められる作業を終え、ブロッカーを明示する。
51
+
52
+ ## 6. 最終版の証拠で完了を判定する
53
+
54
+ - 最後の変更を含む revision/作業ツリーで検証する。ビルド・配布物が必要なら再生成し、それを使う。検証後に内容を変えた場合は影響する検証をやり直す。
55
+ - 実行した対象、検証数、終了状態、assertion、成果物を確認する。skip、空 suite、no-op、終了コード 0 だけ、古い成果物、自己申告を成功の代わりにしない。無関係な既存 skip がある場合も、必要な受け入れ条件まで通ったことを別に確かめる。
56
+ - 差分に無関係な変更やテスト専用の抜け道がないことを確認する。未検証の経路は「未検証」、環境障害は「検証不能」と区別し、全体成功に混ぜない。
57
+ - ユーザーには、変更内容、確認できた通常利用、実行した検証と結果、残る制約を簡潔に報告する。再現・実装・ローカル検証・公開/本番反映は別々の事実として扱う。許可のない公開やデプロイを完了条件に追加しない。
58
+
59
+ この Skill は実行時の判断を支援する手順であり、ホストによる毎回の呼び出しや不具合の完全防止を保証する仕組みではない。
@@ -81,6 +81,15 @@ before advertising it. Use `task_inspect` for all bounded preparation reads and
81
81
  bundled Skills, including `natural-japanese-output`; do not use shell commands
82
82
  to read Skills before preparation and memory decisions permit ordinary tools.
83
83
 
84
+ Bundled Skill selectors are package identities, not installed client paths.
85
+ Use the exact public Skill name (including its Codex alias) or
86
+ `skill-name/SKILL.md`; references use `skill-name/references/file.md`.
87
+ The optional `skills/` prefix and slash or backslash separators are supported.
88
+ Empty segments, dot/parent traversal, URL decoding and guessed aliases are not.
89
+ An absolute installed client path is not a bundled selector. After a selector
90
+ error, change to a documented selector or omit path for this router. The error
91
+ does not authorize external reads or remove the current intake/review gate.
92
+
84
93
  For every `task_prepare` call, set `soulRead: true` only after reading this
85
94
  complete local `SKILL.md` for the current logical request. `task_prepare` also
86
95
  requires the exact local `kiokuko-soul` capability for every task. Omission,
@@ -151,6 +160,25 @@ Enter planning and implementation routes only after the Akinator gate reaches `r
151
160
 
152
161
  Read and apply `veteran-programmer-skill` before and after implementation when changes span setup, delivery, persisted state, or runtime handoffs. Check that the requested behavior reaches its actual consumer. An isolated edit needs no additional audit.
153
162
 
163
+ ### Workflow repair
164
+
165
+ Read and apply `repair-user-workflow` before planning or implementing fixes for
166
+ installation, updates, build, registration, generated configuration, shortcuts,
167
+ plugins, services, or caller-to-runtime handoffs when the next ordinary launch,
168
+ use, restart, or exit fails after upstream success, source/helper checks pass but
169
+ the installed artifact, current profile, or actual consumer fails, or a previous
170
+ fix still needs manual rescue. Judge these conditions from the reported workflow,
171
+ including Japanese reports such as 「更新は成功したが起動しない」; do not depend on
172
+ keyword matches or `catalog_similarity` recommendations. Resolve this route after intake and memory
173
+ review permit progress. Read the complete skill index; load its scenario reference
174
+ only for an ambiguity or skill review.
175
+
176
+ Do not select this route for explanation-only requests, commit-message drafting,
177
+ or isolated logic fixes without a workflow boundary.
178
+ Use it alongside the coding routine and applicable code/UI skills, and stop if the
179
+ required local skill is unavailable. The repair must reach the ordinary consumer;
180
+ skill selection alone does not establish that the workflow works.
181
+
154
182
  ### Simple code work
155
183
 
156
184
  Read and apply `kiokuko-simple-work` when either condition is true:
@@ -176,6 +204,17 @@ risks; this route does not require reading them all. Follow availability rules b
176
204
 
177
205
  Read and apply the `kiokuko-ui-design-soul` index before designing, implementing, modifying, debugging, or reviewing an interactive interface. Select one to three `ui.*` expert fragments for the actual interaction risks. If UI work changes code, apply both the code and UI indexes.
178
206
 
207
+ ### Coding delivery routine
208
+
209
+ For coding requests, read and apply `coding-ideal-routine-skill` after intake and
210
+ before changing code, tests, or behavior-affecting configuration or distribution.
211
+ It connects investigation, meaningful Red/Green evidence, the user's ordinary
212
+ usage path, independent verification, and factual completion reporting.
213
+ Apply its relevant checks to behavior-preserving refactoring or writing;
214
+ explanation-only requests do not require implementation or Red/Green tests.
215
+ This route complements the code and completion contracts and never replaces
216
+ intake, memory review, permissions, or required verification.
217
+
179
218
  ### Combined work
180
219
 
181
220
  Routes compose. Read every applicable specialist index; never choose only one when the task spans multiple contracts. Fragment selection remains narrow inside those routes.
@@ -185,10 +224,12 @@ Use this order:
185
224
  1. `kiokuko-soul`;
186
225
  2. one Akinator `task_prepare`, followed by grounded `task_answer` calls until `ready` or `exhausted`;
187
226
  3. `veteran-programmer-skill` when the change crosses workflow stages;
188
- 4. `kiokuko-simple-work` when the finalized intake satisfies the simple-code activation boundary;
189
- 5. `kiokuko-single-purpose-functions` for code planning or code work;
190
- 6. `one-shot-software-completion` for every coding request, including simple code and UI code changes;
191
- 7. `kiokuko-ui-design-soul` for interactive UI work.
227
+ 4. `repair-user-workflow` for the workflow defect repairs defined above;
228
+ 5. `kiokuko-simple-work` when the finalized intake satisfies the simple-code activation boundary;
229
+ 6. `kiokuko-single-purpose-functions` for code planning or code work;
230
+ 7. `one-shot-software-completion` for every coding request, including simple code and UI code changes;
231
+ 8. `coding-ideal-routine-skill` for coding requests;
232
+ 9. `kiokuko-ui-design-soul` for interactive UI work.
192
233
 
193
234
  Keep each route within the user-approved task scope.
194
235
 
@@ -29,6 +29,14 @@ listing is insufficient. Reuse the existing plan and evidence, not extra checkli
29
29
  3. Make the smallest complete change. Handle relevant boundaries, errors,
30
30
  security and resource ownership. Define expected results before implementation;
31
31
  add regression coverage for material behavior, reuse adequate existing checks.
32
+ For a bug fix or new behavior, add a focused failing test before changing the
33
+ implementation and run it on the original code. The failure must expose the
34
+ requested behavior, not a syntax error or missing dependency. Then make the
35
+ implementation pass it and the existing tests. Preserve Red and Green results
36
+ and the source state each tested. Never weaken or skip a test to obtain Green.
37
+ Explanation-only requests need no edits or implementation tests; apply only
38
+ verification relevant to the actual request. If execution is unavailable,
39
+ report the missing evidence rather than declaring verified completion.
32
40
  4. Run required checks and focused verification through the changed entry point.
33
41
  Broaden for shared contracts; rerun checks invalidated by edits. A helper test
34
42
  alone does not prove delivery. Never weaken checks to hide failure.
@@ -0,0 +1,118 @@
1
+ ---
2
+ name: repair-user-workflow
3
+ description: "Fix defects across installation, updates, generated configuration, shortcuts, plugins, services, or caller-to-runtime handoffs. Use when an operation succeeds but the user's next ordinary action fails, or a previous fix worked only with manual rescue steps. Verify the existing-user path and actual consumer. Do not activate for explanation-only requests or isolated logic edits without a workflow boundary."
4
+ ---
5
+
6
+ <!-- KIOKUKO MANAGED STANDARD SKILL: repair-user-workflow -->
7
+
8
+ # Repair the user workflow
9
+
10
+ Complete the user's ordinary action through its actual consumer. A successful
11
+ installer, build, renamed file, internal function, or visible startup screen proves
12
+ only that stage. Keep the user's product, terminology, supported deployment mode,
13
+ and current authorization intact. This Skill specializes workflow integration;
14
+ reuse the project's existing coding and verification routine.
15
+
16
+ ## Establish the path before choosing the fix
17
+
18
+ Treat the reported runtime failure as evidence. Inspect the selected executable,
19
+ installed artifact/version, generated or persisted state, and runtime resolver.
20
+ Keep source, built output, installed copies, running processes, staged changes,
21
+ and committed/CI revisions distinct. Read the index when the request concerns
22
+ staged files or commit messages; an unstaged deletion does not remove a staged file.
23
+
24
+ Trace only the affected path:
25
+
26
+ `ordinary user action → producer → saved/generated state → resolver → consumer → observable result`
27
+
28
+ Name the owner of each handoff and the first violated contract. Determine which
29
+ configuration, profile, interpreter, environment, working directory, and restart
30
+ boundary the consumer actually uses. “Installed successfully” must not be
31
+ reinterpreted as “needs another installation.” A caller can lose the location of
32
+ an already installed runtime.
33
+
34
+ Define success from the user's requested workflow before editing. Resolve routine
35
+ choices from current evidence; ask only when missing information changes the
36
+ result or authorization. Apply a correction immediately to the active work.
37
+
38
+ ## Repair the owner of the broken handoff
39
+
40
+ - If the supported install/update operation owns a generated shortcut, service
41
+ definition, cache, or registration, make that operation refresh existing managed
42
+ state after an accepted successful update. A separate repair/register command
43
+ is not completion when the ordinary operation is expected to do this itself.
44
+ - Cover both first creation and an existing installation. Include the state that
45
+ survives the previous version, even when the filename is already current. Make
46
+ repeat updates idempotent and preserve explicit user overrides, original state
47
+ defaults, custom commands, and unowned files.
48
+ - Resolve runtime identity and location at the boundary that knows them. Store
49
+ required stable, non-secret defaults in the artifact its consumer actually
50
+ reads. Editing a shell startup file does not update an already running shell;
51
+ the checkout directory is not necessarily the caller's project directory.
52
+ Validate the runtime identity/entry and quote paths for the target interpreter.
53
+ - Preserve the chosen deployment model. A plugin in its host, a local runtime,
54
+ and a global standalone executable are different contracts. Do not add a global
55
+ installation, environment variable injection, manual file edit, or manual
56
+ registration merely to compensate for a broken handoff.
57
+ - Follow an explicit retirement/rename decision through generated references,
58
+ package metadata, update/restart logic, and staged content. Migrate references
59
+ to the supported entry instead of recreating a forbidden old file. Preserve
60
+ external identifiers and intentional historical fixtures under their own contracts.
61
+
62
+ For a genuinely required user action such as authentication or a documented
63
+ restart, verify that contract and state it. Do not invent an automatic guarantee
64
+ or silently convert a workaround into a prerequisite.
65
+
66
+ ## Verify without rescuing the product
67
+
68
+ Use the normal producer and the pre-existing consumer, with representative saved
69
+ state. Reuse existing verifiers or a temporary isolated acceptance probe. Add a
70
+ permanent test only within the user's scope; a ban on test additions still permits
71
+ authorized verification. Use an existing artifact or an authorized temporary build
72
+ when sufficient. Create a new package artifact only when necessary and authorized,
73
+ and distinguish a verification fixture from a requested release deliverable.
74
+ Do not publish, reinstall a live profile, stage, commit, or expand the task merely
75
+ to obtain convenient evidence; those effects remain within the user's chosen scope.
76
+
77
+ The acceptance sequence must exercise the broken handoff, not call an internal
78
+ helper in its place. For example: normal update → existing shortcut → operation
79
+ from the caller's project. Remove test-only PATH entries, injected runtime roots,
80
+ hand-edited references, or manual registration that the user would not have.
81
+ Retain legitimate prerequisites and overrides from the actual supported contract.
82
+
83
+ Observe the intended behavior, not just status 0 or a success message. Select
84
+ relevant failure cases: old saved state, current filename with missing runtime
85
+ metadata, repeated updates, rejected updates, explicit overrides, or foreign files.
86
+ Exercise a reported startup problem through real startup, not only help/version.
87
+
88
+ When lifecycle behavior is affected, continue through the user's exit/cancel
89
+ action. Check the exit result, a bounded deadline, and owned resources/descendants.
90
+ Keep the termination fallback able to run while asynchronous cleanup is pending;
91
+ if forced termination is necessary, verify process ownership and identity and
92
+ preserve unrelated processes. Explaining an exit code or rendering a screen does
93
+ not satisfy a request for working termination.
94
+
95
+ ## Check the final contract and report its limits
96
+
97
+ Run the affected existing checks under their actual CI/runtime conditions,
98
+ including production mode or the relevant shard when that changes behavior.
99
+ Keep legitimate changes to diagnostics, schemas, names, and expected tests/docs
100
+ consistent; do not weaken assertions to hide a failure. Recheck affected evidence
101
+ after a material change, without repeating unrelated suites.
102
+
103
+ Distinguish product failures, environment restrictions, malformed paths/tool
104
+ arguments, and authorization denials. Correct a demonstrably malformed operation
105
+ within the authorized scope; do not replay an unchanged failure, bypass a denial,
106
+ or ask again for permission already granted. Report any remaining blocked action
107
+ with its specific cause. A memory checkpoint or an approval bookkeeping result
108
+ is not product execution evidence.
109
+
110
+ Finish with the changed owner, the ordinary workflow actually exercised, its
111
+ observable outcome, and any unverified deployment/CI/live state. Separate a source
112
+ proposal, a temporary overlay, an applied patch, an installed artifact, and a
113
+ published release. Say a Skill/memory was saved only after a successful write;
114
+ availability and automatic-selection eligibility do not prove future application.
115
+
116
+ For ambiguous triggering or review of this Skill, read
117
+ [scenario checks](references/scenarios.md). Evaluate decisions and outcomes,
118
+ not whether an answer repeats these headings.