@autodevjapan/godd-mcp-alpha 2.13.0 → 2.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +248 -1
- package/assets/native/godd-native-aarch64-apple-darwin +0 -0
- package/assets/native/godd-native-aarch64-apple-darwin.sha256 +1 -1
- package/assets/native/godd-native-x86_64-apple-darwin +0 -0
- package/assets/native/godd-native-x86_64-apple-darwin.sha256 +1 -1
- package/assets/native/godd-native-x86_64-pc-windows-msvc.exe +0 -0
- package/assets/native/godd-native-x86_64-pc-windows-msvc.exe.sha256 +1 -1
- package/assets/native/godd-native-x86_64-unknown-linux-musl +0 -0
- package/assets/native/godd-native-x86_64-unknown-linux-musl.sha256 +1 -1
- package/dist/godd.cjs +244 -260
- package/dist/media-interval-adapter-contract.cjs +1 -0
- package/dist/media-interval-adapter-contract.d.ts +52 -0
- package/native-assets.json +12 -12
- package/package.json +10 -3
- package/scripts/native-assets.js +5 -36
package/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# GoDD MCP α Server
|
|
2
2
|
|
|
3
3
|
<p align="center">
|
|
4
|
-
<img src="https://unpkg.com/@autodevjapan/godd-mcp-alpha@latest/assets/godd-mcp-alpha-icon.png" alt="GoDD MCP α icon" width="240" />
|
|
4
|
+
<img src="https://unpkg.com/@autodevjapan/godd-mcp-alpha@latest/assets/godd-mcp-alpha-icon.png?v=cb453fa6bce1d316857cf3ab220fad32c980f0165cf82ecd54fb5d7ceec0a691" alt="GoDD MCP α icon" width="240" />
|
|
5
5
|
</p>
|
|
6
6
|
|
|
7
7
|
<p align="center"><strong>Govern AI development from intent to verified, shippable code.</strong></p>
|
|
@@ -73,8 +73,14 @@ godd-a install --client=cursor --license-key=YOUR_LICENSE_KEY
|
|
|
73
73
|
godd-a init
|
|
74
74
|
```
|
|
75
75
|
|
|
76
|
+
`godd-a init` and the MCP `config` tool also use the Rust native anchored filesystem boundary to atomically synchronize a marker-scoped block in the project-root `.gitignore` for GoDD's local artifacts. Existing rules outside that block are preserved. If the markers are malformed, the target is a symlink/non-regular file, the lock is busy, I/O fails, or the native process exceeds its 15-second timeout, GoDD leaves the file untouched and fails init/config with a stable error code. Only already tracked files produce a non-fatal `GODD_GITIGNORE_TRACKED_FILES` warning; GoDD never runs `git rm` automatically.
|
|
77
|
+
|
|
78
|
+
If `GODD_GITIGNORE_LOCKED` persists, first confirm that no init/config process is running, then remove only `.godd/managed-gitignore.lock` and retry. Do not remove the entire `.godd` directory or change the Git index.
|
|
79
|
+
|
|
76
80
|
> Use `godd-a install` — it configures the startup command, PATH, and license key for you. Restart your client afterward and the GoDD tools appear automatically.
|
|
77
81
|
|
|
82
|
+
`godd_files.docs_dir` in `config.godd` selects the single repository-relative root for specs, ADRs, diagrams, and guides (default: `documents`). Always write it as a YAML double-quoted scalar (for example, `docs_dir: "docs"`) so valid names such as `true`, `null`, and `123` remain strings. Use `/` separators; each segment accepts only Unicode letters/numbers and `._-`. Empty values, absolute paths, backslashes, shell-expansion characters, trailing dots, `.` / `..` segments, and Windows reserved device names (including extensions and NFKC-compatible forms such as `COM¹`) are rejected. The configured value is also supplied to Registry-rendered prompts, so GoDD does not create a second documentation root.
|
|
83
|
+
|
|
78
84
|
### Usage
|
|
79
85
|
|
|
80
86
|
Invoke GoDD in whichever way your client supports:
|
|
@@ -93,6 +99,27 @@ import { validateAudioLengthAdapterContract } from "@autodevjapan/godd-mcp-alpha
|
|
|
93
99
|
|
|
94
100
|
The contract preserves waveform/mel inputs and PCM16 WAV output. Padding, frame, and trim arithmetic remain Rust-owned and are rejected if duplicated in the Node payload. This validates the adapter boundary only; it does not expose a production inference route.
|
|
95
101
|
|
|
102
|
+
### Media interval adapter contract
|
|
103
|
+
|
|
104
|
+
Use the typed npm subpath to validate an untrusted adapter envelope, forward its transformation specification unchanged, and verify the calibration snapshot before using its default tolerance:
|
|
105
|
+
|
|
106
|
+
```ts
|
|
107
|
+
import {
|
|
108
|
+
forwardMediaIntervalTransformation,
|
|
109
|
+
loadMediaIntervalCalibrationSnapshot,
|
|
110
|
+
validateMediaIntervalAdapterContract,
|
|
111
|
+
} from "@autodevjapan/godd-mcp-alpha/media-interval-adapter-contract";
|
|
112
|
+
|
|
113
|
+
const contract = validateMediaIntervalAdapterContract(adapterPayload);
|
|
114
|
+
const transformation = forwardMediaIntervalTransformation(contract);
|
|
115
|
+
const calibration = loadMediaIntervalCalibrationSnapshot();
|
|
116
|
+
if (calibration.status === "INCONCLUSIVE") {
|
|
117
|
+
throw new Error("Media interval calibration could not be verified");
|
|
118
|
+
}
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
The loader verifies the official content-addressed snapshot embedded in this subpath; consumers do not need to locate a separate JSON asset. Node validates and forwards the envelope only. Interval arithmetic, canonical union coverage, coverage decisions, and source-buffer application remain Rust-owned and must not be duplicated in the adapter payload. An unsupported schema, unknown nested field, insufficient sample count, invalid metadata, or digest mismatch returns `INCONCLUSIVE` with no numeric fallback; callers must stop instead of inventing a default tolerance. This subpath does not expose a production media-processing route.
|
|
122
|
+
|
|
96
123
|
### GoDD prompts
|
|
97
124
|
|
|
98
125
|
| Prompt | Description |
|
|
@@ -138,12 +165,69 @@ onboarding guide lives at [getgodd.dev/connect.md](https://getgodd.dev/connect.m
|
|
|
138
165
|
| `godd-a uninstall [--client=...]` | Remove from MCP clients |
|
|
139
166
|
| `godd-a version` (or `--version` / `-v`) | Show the installed version and check for updates |
|
|
140
167
|
| `godd-a serve` | Start the MCP stdio server (auto-invoked by the client) |
|
|
168
|
+
| `godd-a shard partition <plan|lease|report|expire|abandon|status>` | Manage a Rust-native shard plan that prevents missing or duplicate sequences |
|
|
141
169
|
| `godd-a realtime admission --evaluated-at-ms <u64>` | Evaluate one bounded event envelope from stdin with fail-closed ALLOW/DENY/INCONCLUSIVE receipts |
|
|
170
|
+
| `godd-a dataset coverage --ledger <path>` | Persist CAS-issued sample attempts and bounded coverage from one strict JSON stdin action using the trusted system clock |
|
|
171
|
+
|
|
172
|
+
Start a shard workflow with
|
|
173
|
+
`plan --state-dir <dir> --source-root <dir> --selector 1/M`; it creates an immutable
|
|
174
|
+
plan for every shard and a fully pre-seeded ledger. A worker calls
|
|
175
|
+
`lease --state-dir <dir> --selector N/M --ttl-ms <ms>` and uses the returned
|
|
176
|
+
`assigned_ids` and digest instead of enumerating the source root again. Send the worker's
|
|
177
|
+
completion report as one JSON document on stdin to `report --state-dir <dir>`. Use
|
|
178
|
+
`expire --state-dir <dir>` to sweep expired leases,
|
|
179
|
+
`abandon --state-dir <dir> --selector N/M` to abandon one explicitly,
|
|
180
|
+
`lease ... --takeover` to reassign it, and `status --state-dir <dir>` to read aggregate state.
|
|
181
|
+
The npm CLI only forwards this wire protocol to the packaged Rust command. Each successful
|
|
182
|
+
action writes exactly one JSON document to stdout and exits 0; invalid input or state,
|
|
183
|
+
persistence failure, and conflicts write only a stable `PARTITION_*` reason code to stderr
|
|
184
|
+
and exit 2.
|
|
185
|
+
|
|
186
|
+
Plaintext `assigned_ids` appear only in a lease response. Diagnostics never include sequence
|
|
187
|
+
IDs or host paths. Lease responses and `status` return the current `ledger_revision`; an
|
|
188
|
+
accepted report receipt returns the next revision. Copy `plan_generation`,
|
|
189
|
+
`reporting_shard_index`, and `lease_generation` from the lease response into the report JSON,
|
|
190
|
+
and set `expected_ledger_revision` from the latest receipt or `status`. Do not convert
|
|
191
|
+
`PARTITION_CAS_MISMATCH` into success: fetch `status` again and reevaluate the report.
|
|
192
|
+
The strict report body has this shape; `expected_state` is one of `assigned`, `completed`,
|
|
193
|
+
`rejected`, or `missing`, while `outcome` is `completed` or `rejected`:
|
|
194
|
+
|
|
195
|
+
```json
|
|
196
|
+
{
|
|
197
|
+
"plan_generation": {
|
|
198
|
+
"source_generation": "<64 lowercase hex>",
|
|
199
|
+
"expected_set_digest": "<64 lowercase hex>"
|
|
200
|
+
},
|
|
201
|
+
"sequence_id": "<one assigned_ids value>",
|
|
202
|
+
"reporting_shard_index": 1,
|
|
203
|
+
"lease_generation": 1,
|
|
204
|
+
"expected_state": "assigned",
|
|
205
|
+
"expected_ledger_revision": 0,
|
|
206
|
+
"outcome": "completed"
|
|
207
|
+
}
|
|
208
|
+
```
|
|
142
209
|
|
|
143
210
|
Realtime envelopes accept identifiers only as field-specific lowercase digests:
|
|
144
211
|
`principal:sha256:<hex64>`, `resource:sha256:<hex64>`, and `evidence:sha256:<hex64>`.
|
|
145
212
|
Raw tokens, cookies, user names, and socket IDs are rejected without being echoed.
|
|
146
213
|
|
|
214
|
+
Dataset coverage accepts exactly one strict JSON action: `initialize`, `issue`, `report`,
|
|
215
|
+
`sweep`, or `finalize`. `initialize` preregisters the generation, assigned/expected sample
|
|
216
|
+
sets, retry policy, coverage thresholds and both declared digests, plus the replacement policy
|
|
217
|
+
(`forbidden`; `within_assigned_set` is reserved and rejected in Stage 2). `issue` takes `canonical_sample_id` and
|
|
218
|
+
`requested_position`; `report` adds an issued `attempt` and a typed outcome (`Accepted`,
|
|
219
|
+
`Rejected`, `TimedOut`, `Cancelled`, or `InfrastructureFailed`); `sweep` has no payload;
|
|
220
|
+
`finalize` must repeat the preregistered thresholds, digests, and replacement policy exactly.
|
|
221
|
+
Retry exhaustion atomically appends a `TerminalDecision`; load rejects any missing, duplicate, or
|
|
222
|
+
tampered terminal-event projection.
|
|
223
|
+
The usual flow is initialize → issue → report (repeat) → sweep/finalize. Success writes one JSON
|
|
224
|
+
receipt and exits 0. Invalid JSON/state, persistence failure, or a conflict writes only a stable
|
|
225
|
+
reason-code envelope to stderr and exits 2. Coverage receipts bind the generation source,
|
|
226
|
+
threshold/expected-set, ledger/event-head, and full durable-snapshot digests, finalized event sequence,
|
|
227
|
+
failure-attempt counts by class, and at most 32 stable opaque terminal-failure fingerprints;
|
|
228
|
+
raw sample IDs are never returned.
|
|
229
|
+
The parent directory of `--ledger` must already exist; the command never creates path components.
|
|
230
|
+
|
|
147
231
|
### Troubleshooting
|
|
148
232
|
|
|
149
233
|
**"0 tools available" in your client** — this means the server was started without the required `serve` argument. Re-run `godd-a install` to regenerate the client config correctly, then restart the client.
|
|
@@ -213,8 +297,14 @@ godd-a install --client=cursor --license-key=YOUR_LICENSE_KEY
|
|
|
213
297
|
godd-a init
|
|
214
298
|
```
|
|
215
299
|
|
|
300
|
+
`godd-a init` と MCP の `config` ツールは、Rust native の anchored filesystem 境界を使って、プロジェクトルートの `.gitignore` に GoDD のローカル成果物用マーカーブロックも atomic に同期します。ブロック外の既存ルールは保持されます。マーカー不正、symlink/非通常ファイル、lock競合、I/O 失敗、native process の15秒 timeout時はファイルを変更せず、安定したエラーコードで init/config を失敗させます。すでに追跡済みのファイルだけは非致命的な `GODD_GITIGNORE_TRACKED_FILES` 警告となり、GoDD が自動で `git rm` を実行することはありません。
|
|
301
|
+
|
|
302
|
+
`GODD_GITIGNORE_LOCKED` が継続する場合は、実行中の init/config がないことを確認してから `.godd/managed-gitignore.lock` だけを削除して再実行してください。`.godd` 全体や Git index は変更しないでください。
|
|
303
|
+
|
|
216
304
|
> `godd-a install` を使ってください — 起動コマンド・PATH・ライセンスキーを自動で設定します。実行後にクライアントを再起動すると、GoDD ツールが自動的に表示されます。
|
|
217
305
|
|
|
306
|
+
`config.godd` の `godd_files.docs_dir` で、仕様・ADR・図・ガイドを置く単一のリポジトリ相対ルートを選択できます(既定: `documents`)。`true`、`null`、`123`のような合法名も文字列のまま保持するため、必ずYAMLの二重引用符で囲んでください(例: `docs_dir: "docs"`)。`/` 区切りで指定し、各セグメントには Unicode の文字・数字と `._-` だけを使用します。空値、絶対パス、バックスラッシュ、shell 展開文字、末尾の`.`、`.` / `..` セグメント、Windows予約device名(拡張子付きや`COM¹`のようなNFKC互換形も含む)は拒否されます。この設定は Registry で描画されるプロンプトにも渡るため、GoDD が別のドキュメントルートを作ることはありません。
|
|
307
|
+
|
|
218
308
|
### 使い方
|
|
219
309
|
|
|
220
310
|
クライアントが対応している方法で GoDD を呼び出せます。
|
|
@@ -233,6 +323,27 @@ import { validateAudioLengthAdapterContract } from "@autodevjapan/godd-mcp-alpha
|
|
|
233
323
|
|
|
234
324
|
このcontractはwaveform/mel入力とPCM16 WAV出力を固定します。padding・frame・trimの算術はRustだけが所有し、Node payloadへの複製を拒否します。これはadapter境界の検証用であり、production inference routeを公開するものではありません。
|
|
235
325
|
|
|
326
|
+
### Media interval adapter contract
|
|
327
|
+
|
|
328
|
+
型付きnpm subpathで未信頼のadapter envelopeを検証し、変換指定を変更せず転送します。既定の許容値を使う前にcalibration snapshotも検証してください。
|
|
329
|
+
|
|
330
|
+
```ts
|
|
331
|
+
import {
|
|
332
|
+
forwardMediaIntervalTransformation,
|
|
333
|
+
loadMediaIntervalCalibrationSnapshot,
|
|
334
|
+
validateMediaIntervalAdapterContract,
|
|
335
|
+
} from "@autodevjapan/godd-mcp-alpha/media-interval-adapter-contract";
|
|
336
|
+
|
|
337
|
+
const contract = validateMediaIntervalAdapterContract(adapterPayload);
|
|
338
|
+
const transformation = forwardMediaIntervalTransformation(contract);
|
|
339
|
+
const calibration = loadMediaIntervalCalibrationSnapshot();
|
|
340
|
+
if (calibration.status === "INCONCLUSIVE") {
|
|
341
|
+
throw new Error("Media interval calibrationを検証できませんでした");
|
|
342
|
+
}
|
|
343
|
+
```
|
|
344
|
+
|
|
345
|
+
loaderはこのsubpathへ埋め込まれた公式content-addressed snapshotを検証するため、consumerが別のJSON assetを探す必要はありません。Nodeが所有するのはenvelopeの検証と透過転送だけです。区間算術、canonical union coverage、coverage判定、source bufferへの適用はRustだけが所有し、adapter payloadへ複製してはいけません。未対応schema、未知のnested field、標本数不足、不正なmetadata、digest不一致では数値へfallbackせず`INCONCLUSIVE`を返すため、callerは既定値を推測せず処理を停止してください。このsubpathはproduction media-processing routeを公開しません。
|
|
346
|
+
|
|
236
347
|
### GoDD プロンプト
|
|
237
348
|
|
|
238
349
|
| プロンプト | 説明 |
|
|
@@ -278,12 +389,66 @@ import { validateAudioLengthAdapterContract } from "@autodevjapan/godd-mcp-alpha
|
|
|
278
389
|
| `godd-a uninstall [--client=...]` | MCP クライアントから削除 |
|
|
279
390
|
| `godd-a version`(または `--version` / `-v`) | インストール済みバージョンの表示と更新確認 |
|
|
280
391
|
| `godd-a serve` | MCP stdio サーバーを起動(クライアントが自動呼び出し) |
|
|
392
|
+
| `godd-a shard partition <plan|lease|report|expire|abandon|status>` | sequence集合の欠落・重複を防ぐRust native shard planを管理 |
|
|
281
393
|
| `godd-a realtime admission --evaluated-at-ms <u64>` | stdinのbounded event envelopeをfail-closedな3値receiptとして評価 |
|
|
394
|
+
| `godd-a dataset coverage --ledger <path>` | trusted system clockとstrict JSON action 1件からCAS払い出しsample attemptとbounded coverageを永続化 |
|
|
395
|
+
|
|
396
|
+
Shard plan は、最初に `plan --state-dir <dir> --source-root <dir> --selector 1/M`
|
|
397
|
+
で全 shard の immutable plan と全件 pre-seed ledger を作成します。worker は
|
|
398
|
+
`lease --state-dir <dir> --selector N/M --ttl-ms <ms>` の応答に含まれる
|
|
399
|
+
`assigned_ids` と digest を使用し、source root を再列挙しません。worker の完了報告は
|
|
400
|
+
`report --state-dir <dir>` の stdin に JSON で渡します。期限監視は
|
|
401
|
+
`expire --state-dir <dir>`、明示的放棄は
|
|
402
|
+
`abandon --state-dir <dir> --selector N/M`、再割当は `lease ... --takeover`、集約状態は
|
|
403
|
+
`status --state-dir <dir>` で確認します。npm CLI はこの wire protocol を packaged Rust
|
|
404
|
+
command へ中継するだけです。成功した各 action は stdout へ JSON 1件を出して exit 0、
|
|
405
|
+
不正な入力・状態、永続化失敗、競合は stderr へ安定した `PARTITION_*` reason codeだけを
|
|
406
|
+
出して exit 2 です。
|
|
407
|
+
|
|
408
|
+
平文の `assigned_ids` は lease response だけに含まれます。診断には sequence ID や
|
|
409
|
+
host path は出力されません。
|
|
410
|
+
lease応答と`status`は現在の`ledger_revision`を返し、accepted report receiptは次の
|
|
411
|
+
revisionを返します。report JSONの`plan_generation`、`reporting_shard_index`、
|
|
412
|
+
`lease_generation`はlease応答から、`expected_ledger_revision`は直前のreceiptまたは
|
|
413
|
+
`status`から渡します。競合時は`PARTITION_CAS_MISMATCH`を成功へ変換せず、statusを
|
|
414
|
+
再取得して再評価してください。
|
|
415
|
+
strict report body は次の形です。`expected_state` は `assigned` / `completed` /
|
|
416
|
+
`rejected` / `missing`、`outcome` は `completed` / `rejected` のいずれかです。
|
|
417
|
+
|
|
418
|
+
```json
|
|
419
|
+
{
|
|
420
|
+
"plan_generation": {
|
|
421
|
+
"source_generation": "<64 lowercase hex>",
|
|
422
|
+
"expected_set_digest": "<64 lowercase hex>"
|
|
423
|
+
},
|
|
424
|
+
"sequence_id": "<one assigned_ids value>",
|
|
425
|
+
"reporting_shard_index": 1,
|
|
426
|
+
"lease_generation": 1,
|
|
427
|
+
"expected_state": "assigned",
|
|
428
|
+
"expected_ledger_revision": 0,
|
|
429
|
+
"outcome": "completed"
|
|
430
|
+
}
|
|
431
|
+
```
|
|
282
432
|
|
|
283
433
|
Realtime envelopeの識別子はfield別lowercase digest
|
|
284
434
|
(`principal:sha256:<hex64>`、`resource:sha256:<hex64>`、`evidence:sha256:<hex64>`)
|
|
285
435
|
だけを受理します。生token、cookie、ユーザー名、socket IDは表示せず拒否します。
|
|
286
436
|
|
|
437
|
+
Dataset coverage は strict JSON の `initialize` / `issue` / `report` / `sweep` /
|
|
438
|
+
`finalize` のいずれか1 actionだけを受理します。`initialize` で generation、割当/期待sample集合、
|
|
439
|
+
retry policy、coverage thresholds、両declared digest、replacement policy
|
|
440
|
+
(Stage 2は`forbidden`のみ。`within_assigned_set`は予約済みで拒否)を事前固定します。`issue` は
|
|
441
|
+
`canonical_sample_id` と `requested_position`、`report` は発行済み `attempt` と型付きoutcome
|
|
442
|
+
(`Accepted` / `Rejected` / `TimedOut` / `Cancelled` / `InfrastructureFailed`)を受け取り、
|
|
443
|
+
`sweep` はpayloadなし、`finalize` は事前固定したthresholds・digests・policyとの完全一致を要求します。
|
|
444
|
+
retry exhaustion時は`TerminalDecision`を原子的にappendし、欠落・重複・改変されたterminal projectionはloadで拒否します。
|
|
445
|
+
典型フローは initialize → issue → report(反復)→ sweep/finalize です。成功はJSON receiptを
|
|
446
|
+
stdoutへ1件出してexit 0、不正JSON/state・永続化失敗・conflictは秘密値を含まない安定reason codeを
|
|
447
|
+
stderrへ出してexit 2です。Coverage receiptはgeneration source、threshold/expected-set digest、
|
|
448
|
+
ledger/event-head/full durable-snapshot digest、finalized event sequence、failure class別attempt件数、最大32件の安定した
|
|
449
|
+
終局failure fingerprintを束縛し、raw sample IDは返しません。
|
|
450
|
+
`--ledger`の親directoryは事前作成が必要で、command自身はpath componentを作成しません。
|
|
451
|
+
|
|
287
452
|
### トラブルシューティング
|
|
288
453
|
|
|
289
454
|
**クライアントに「0 tools available」と表示される** — サーバーが必須の `serve` 引数なしで起動されています。`godd-a install` を再実行してクライアント設定を正しく再生成し、クライアントを再起動してください。
|
|
@@ -355,8 +520,14 @@ godd-a install --client=cursor --license-key=YOUR_LICENSE_KEY
|
|
|
355
520
|
godd-a init
|
|
356
521
|
```
|
|
357
522
|
|
|
523
|
+
`godd-a init` и MCP-инструмент `config` используют закреплённую границу файловой системы Rust native и атомарно синхронизируют ограниченный маркерами блок в корневом `.gitignore` для локальных артефактов GoDD. Правила вне блока сохраняются. При повреждённых маркерах, symlink/необычном файле, занятой блокировке, ошибке ввода-вывода или 15-секундном тайм-ауте native-процесса файл не изменяется, а init/config завершается ошибкой со стабильным кодом. Только уже отслеживаемые файлы дают некритичное предупреждение `GODD_GITIGNORE_TRACKED_FILES`; GoDD никогда не запускает `git rm` автоматически.
|
|
524
|
+
|
|
525
|
+
Если `GODD_GITIGNORE_LOCKED` повторяется, сначала убедитесь, что init/config не запущен, затем удалите только `.godd/managed-gitignore.lock` и повторите команду. Не удаляйте весь каталог `.godd` и не изменяйте индекс Git.
|
|
526
|
+
|
|
358
527
|
> Используйте `godd-a install` — он настроит команду запуска, PATH и лицензионный ключ. После этого перезапустите клиент, и инструменты GoDD появятся автоматически.
|
|
359
528
|
|
|
529
|
+
Параметр `godd_files.docs_dir` в `config.godd` задаёт единый относительный к репозиторию корень для спецификаций, ADR, диаграмм и руководств (по умолчанию `documents`). Всегда записывайте его как строку YAML в двойных кавычках (например, `docs_dir: "docs"`), чтобы допустимые имена `true`, `null` и `123` оставались строками. Используйте разделитель `/`; каждый сегмент допускает только буквы/цифры Unicode и `._-`. Пустые значения, абсолютные пути, обратная косая черта, символы раскрытия shell, завершающие точки, сегменты `.` / `..` и зарезервированные имена устройств Windows (включая расширения и NFKC-совместимые формы вроде `COM¹`) отклоняются. Это значение также передаётся шаблонам Registry, поэтому GoDD не создаёт второй корень документации.
|
|
530
|
+
|
|
360
531
|
### Использование
|
|
361
532
|
|
|
362
533
|
Вызывайте GoDD тем способом, который поддерживает ваш клиент:
|
|
@@ -375,6 +546,27 @@ import { validateAudioLengthAdapterContract } from "@autodevjapan/godd-mcp-alpha
|
|
|
375
546
|
|
|
376
547
|
Контракт фиксирует входы waveform/mel и выход PCM16 WAV. Расчёты padding, frame и trim остаются только в Rust; их дублирование в Node payload отклоняется. Это проверка границы адаптера, а не production inference route.
|
|
377
548
|
|
|
549
|
+
### Контракт media interval adapter
|
|
550
|
+
|
|
551
|
+
Используйте типизированный npm subpath, чтобы проверить недоверенный envelope адаптера, передать спецификацию преобразования без изменений и проверить calibration snapshot до применения допуска по умолчанию:
|
|
552
|
+
|
|
553
|
+
```ts
|
|
554
|
+
import {
|
|
555
|
+
forwardMediaIntervalTransformation,
|
|
556
|
+
loadMediaIntervalCalibrationSnapshot,
|
|
557
|
+
validateMediaIntervalAdapterContract,
|
|
558
|
+
} from "@autodevjapan/godd-mcp-alpha/media-interval-adapter-contract";
|
|
559
|
+
|
|
560
|
+
const contract = validateMediaIntervalAdapterContract(adapterPayload);
|
|
561
|
+
const transformation = forwardMediaIntervalTransformation(contract);
|
|
562
|
+
const calibration = loadMediaIntervalCalibrationSnapshot();
|
|
563
|
+
if (calibration.status === "INCONCLUSIVE") {
|
|
564
|
+
throw new Error("Не удалось проверить calibration media interval");
|
|
565
|
+
}
|
|
566
|
+
```
|
|
567
|
+
|
|
568
|
+
Loader проверяет официальный content-addressed snapshot, встроенный в этот subpath, поэтому consumer не требуется искать отдельный JSON asset. Node только проверяет envelope и передаёт его дальше. Расчёт интервалов, canonical union coverage, решение по coverage и применение к source buffer остаются исключительно в Rust и не должны дублироваться в payload адаптера. Неподдерживаемая schema, неизвестное вложенное поле, недостаточный размер выборки, некорректные metadata или несовпадение digest возвращают `INCONCLUSIVE` без числового fallback; вызывающая сторона должна остановиться, а не придумывать допуск по умолчанию. Этот subpath не открывает production route обработки media.
|
|
569
|
+
|
|
378
570
|
### Промпты GoDD
|
|
379
571
|
|
|
380
572
|
| Промпт | Описание |
|
|
@@ -420,12 +612,67 @@ import { validateAudioLengthAdapterContract } from "@autodevjapan/godd-mcp-alpha
|
|
|
420
612
|
| `godd-a uninstall [--client=...]` | Удаление из MCP-клиентов |
|
|
421
613
|
| `godd-a version` (или `--version` / `-v`) | Показать установленную версию и проверить обновления |
|
|
422
614
|
| `godd-a serve` | Запустить MCP stdio-сервер (вызывается клиентом автоматически) |
|
|
615
|
+
| `godd-a shard partition <plan|lease|report|expire|abandon|status>` | Управлять Rust-native планом shard без пропусков и дубликатов sequence |
|
|
423
616
|
| `godd-a realtime admission --evaluated-at-ms <u64>` | Проверить bounded event envelope из stdin и вернуть fail-closed решение из трёх состояний |
|
|
617
|
+
| `godd-a dataset coverage --ledger <path>` | Сохранить CAS-выданные попытки sample и bounded coverage из одного strict JSON action с доверенными системными часами |
|
|
618
|
+
|
|
619
|
+
Рабочий процесс shard начинается с
|
|
620
|
+
`plan --state-dir <dir> --source-root <dir> --selector 1/M`: команда создаёт immutable plan
|
|
621
|
+
для всех shard и полностью предварительно заполненный ledger. Worker вызывает
|
|
622
|
+
`lease --state-dir <dir> --selector N/M --ttl-ms <ms>` и использует возвращённые
|
|
623
|
+
`assigned_ids` и digest, не перечисляя source root повторно. Отчёт worker о завершении
|
|
624
|
+
передаётся как один JSON-документ через stdin в `report --state-dir <dir>`. Для просроченных
|
|
625
|
+
lease используется `expire --state-dir <dir>`, для явного отказа —
|
|
626
|
+
`abandon --state-dir <dir> --selector N/M`, для повторного назначения —
|
|
627
|
+
`lease ... --takeover`, а агрегированное состояние возвращает `status --state-dir <dir>`.
|
|
628
|
+
Npm CLI только передаёт этот wire protocol упакованной Rust-команде. Каждое успешное действие
|
|
629
|
+
выводит ровно один JSON-документ в stdout и завершается с кодом 0; неверные входные данные или
|
|
630
|
+
состояние, ошибка сохранения и конфликт выводят в stderr только стабильный reason code
|
|
631
|
+
`PARTITION_*` и завершаются с кодом 2.
|
|
632
|
+
|
|
633
|
+
Открытые `assigned_ids` присутствуют только в ответе lease. Диагностика никогда не содержит
|
|
634
|
+
sequence ID или host path. Ответы lease и `status` возвращают текущий `ledger_revision`, а
|
|
635
|
+
receipt принятого report — следующую revision. Поля `plan_generation`,
|
|
636
|
+
`reporting_shard_index` и `lease_generation` для report JSON берутся из ответа lease, а
|
|
637
|
+
`expected_ledger_revision` — из последнего receipt или `status`. Не преобразуйте
|
|
638
|
+
`PARTITION_CAS_MISMATCH` в успех: повторно получите `status` и переоцените report.
|
|
639
|
+
Strict body отчёта имеет следующую форму. `expected_state` принимает `assigned`, `completed`,
|
|
640
|
+
`rejected` или `missing`, а `outcome` — `completed` или `rejected`:
|
|
641
|
+
|
|
642
|
+
```json
|
|
643
|
+
{
|
|
644
|
+
"plan_generation": {
|
|
645
|
+
"source_generation": "<64 lowercase hex>",
|
|
646
|
+
"expected_set_digest": "<64 lowercase hex>"
|
|
647
|
+
},
|
|
648
|
+
"sequence_id": "<one assigned_ids value>",
|
|
649
|
+
"reporting_shard_index": 1,
|
|
650
|
+
"lease_generation": 1,
|
|
651
|
+
"expected_state": "assigned",
|
|
652
|
+
"expected_ledger_revision": 0,
|
|
653
|
+
"outcome": "completed"
|
|
654
|
+
}
|
|
655
|
+
```
|
|
424
656
|
|
|
425
657
|
Идентификаторы realtime envelope принимаются только как lowercase digest с доменом поля:
|
|
426
658
|
`principal:sha256:<hex64>`, `resource:sha256:<hex64>` и `evidence:sha256:<hex64>`.
|
|
427
659
|
Необработанные токены, cookie, имена пользователей и socket ID отклоняются без вывода значения.
|
|
428
660
|
|
|
661
|
+
Dataset coverage принимает ровно одно strict JSON-действие: `initialize`, `issue`, `report`,
|
|
662
|
+
`sweep` или `finalize`. `initialize` заранее фиксирует generation, assigned/expected sample sets,
|
|
663
|
+
retry policy, coverage thresholds, оба declared digest и replacement policy (`forbidden`;
|
|
664
|
+
`within_assigned_set` зарезервирован и отклоняется в Stage 2). `issue` принимает `canonical_sample_id` и `requested_position`, `report` —
|
|
665
|
+
выданный `attempt` и типизированный outcome (`Accepted`, `Rejected`, `TimedOut`, `Cancelled` или
|
|
666
|
+
`InfrastructureFailed`), `sweep` не имеет payload, а `finalize` требует точного совпадения с
|
|
667
|
+
заранее зарегистрированными thresholds, digest и policy. Обычный поток: initialize → issue →
|
|
668
|
+
report (повтор) → sweep/finalize. Успех возвращает один JSON receipt и код 0; invalid JSON/state,
|
|
669
|
+
ошибка сохранения или conflict возвращает в stderr только стабильный reason code и код 2.
|
|
670
|
+
При исчерпании retry атомарно добавляется `TerminalDecision`; отсутствующая, повторная или изменённая terminal projection отклоняется при load.
|
|
671
|
+
Coverage receipt связывает generation source, threshold/expected-set digest, ledger/event-head
|
|
672
|
+
и full durable-snapshot digest, finalized event sequence, число failure-attempt по классам и не более 32 стабильных
|
|
673
|
+
opaque fingerprint терминальных failures; raw sample ID не возвращаются.
|
|
674
|
+
Родительский каталог `--ledger` должен существовать заранее; команда не создаёт компоненты пути.
|
|
675
|
+
|
|
429
676
|
### Устранение неполадок
|
|
430
677
|
|
|
431
678
|
**«0 tools available» в клиенте** — сервер запущен без обязательного аргумента `serve`. Повторно выполните `godd-a install`, чтобы корректно пересоздать конфигурацию клиента, затем перезапустите клиент.
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
b38d1c6037ca5ae209c6532b8f7c489d5bd51987c0935ac0fd0e1d2feec71d20
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
387b1eeceff77b77712db3528ba451aee1db1145f6ad7d41c636bec14585c2b3
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
d265c18a2c627bdf88bed1480c070ffb4c286030e979a82c5884cc76b6d32a91
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
2e215e4bd78d0cf5d54fb235f59711467b3896acfde776277ab23cda41e4523c
|