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.
- package/README.ja.md +3 -0
- package/README.md +3 -0
- package/dist/agent-file/render.d.ts +1 -1
- package/dist/agent-file/render.js +1 -1
- package/dist/akinator/instructions.d.ts +1 -1
- package/dist/akinator/instructions.d.ts.map +1 -1
- package/dist/akinator/instructions.js +2 -2
- package/dist/akinator/instructions.js.map +1 -1
- package/dist/assurance/codex-hooks.d.ts.map +1 -1
- package/dist/assurance/codex-hooks.js +33 -1
- package/dist/assurance/codex-hooks.js.map +1 -1
- package/dist/assurance/inspect.d.ts.map +1 -1
- package/dist/assurance/inspect.js +12 -3
- package/dist/assurance/inspect.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +5 -0
- package/dist/mcp/server.js.map +1 -1
- package/dist/setup/standard-skills.d.ts +14 -0
- package/dist/setup/standard-skills.d.ts.map +1 -1
- package/dist/setup/standard-skills.js +14 -0
- package/dist/setup/standard-skills.js.map +1 -1
- package/docs/README.ja.md +1 -0
- package/docs/README.md +1 -0
- package/docs/agenticreplay.ja.md +88 -0
- package/docs/agenticreplay.md +88 -0
- package/docs/client-compatibility.md +21 -1
- package/docs/normal-workflow-acceptance.md +330 -0
- package/package.json +5 -1
- package/skills/coding-ideal-routine-skill/SKILL.md +59 -0
- package/skills/kiokuko-soul/SKILL.md +45 -4
- package/skills/one-shot-software-completion/SKILL.md +8 -0
- package/skills/repair-user-workflow/SKILL.md +118 -0
- package/skills/repair-user-workflow/references/scenarios.md +33 -0
- package/templates/AGENTS.md +2 -2
|
@@ -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.
|
|
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. `
|
|
189
|
-
5. `kiokuko-
|
|
190
|
-
6. `
|
|
191
|
-
7. `
|
|
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.
|