Skip to content

Release: ndf v10.27.19 - #2531

Merged
takemi-ohama merged 2 commits into
developfrom
release/v10.27.19
Nov 5, 2026
Merged

takemi-ohama merged 2 commits into
developfrom
release/v10.27.19

Conversation

@takemi-ohama

Copy link
Copy Markdown
Contributor

ndf v10.27.19 のリリース(prod)。対象の plugin: ndf

含む PR

移行の手順

チェックの結果

  • check-doc-staleness: pass(documented skill counts and versions are up to date)
  • validate-runtime-plugins: pass(runtime plugin validation passed)

🤖 Generated with Claude Code

@takemi-ohama
takemi-ohama merged commit 78c3a70 into develop Nov 5, 2026
23 checks passed
@takemi-ohama
takemi-ohama deleted the release/v10.27.19 branch November 5, 2026 02:20
@takemi-ohama
takemi-ohama restored the release/v10.27.19 branch November 5, 2026 02:20
@takemi-ohama
takemi-ohama deleted the release/v10.27.19 branch November 5, 2026 02:35
@takemi-ohama

Copy link
Copy Markdown
Contributor Author

配布の記録

段階: 本番(承認ゲート 2 の承認の後、2026-11-05 11:35 に ndf--v10.27.19 を出した)
版: 10.27.18 → 10.27.19(タグ ndf--v10.27.19。直前はタグ ndf--v10.27.18)
スプリント: PR #2482 / #2501 / #2512 / #2517 / #2518 / #2527

@takemi-ohama

Copy link
Copy Markdown
Contributor Author

リリース後テスト

対象の版: ndf 10.27.19(本番。タグ ndf--v10.27.19、commit b2ee756。2026-11-05 11:35 JST に配布)
導入経路: 隔離した HOME で main から入れ直す(Claude Code: claude plugin marketplace add devbasex/ai-plugins → claude plugin install ndf@ai-plugins。Codex: codex plugin marketplace add devbasex/ai-plugins → codex plugin add ndf@ai-plugins)。Factory(factory/)はプラグインで配らないため、タグの中身をそのまま取り出した作業ツリー /tmp/rv-v10.27.19 で検査を走らせた
対象: スプリント lfactory3-4(#2384 委任の認証・配列の契約・操作の記録・MCP の受け口、#2431 画面の地図の予定の画面に作る課題を書く)。実装は Pull Request #2512・#2517、取り込みは #2518

時刻は JST。npm run check は cd /tmp/rv-v10.27.19/factory && npm ci && npm run check(12:44、exit 0。契約の lint・contracts 61 件・web 105 件・api 451 件・runner 59 件がすべて合格)を指す。

課題 受け入れ条件 実行したこと 実行時刻 結果
— 導入の確認: 利用者と同じ手順で main から入れ直し、版と中身を確かめる release-verification-steps.py verify-install --ref main --expect 10.27.19 --plugins ndf --root . 2026-11-05 12:43 合格 / exit=0、status ok。claude・codex とも ndf 10.27.19
#2384 1. 画面の API クライアントの操作がすべて契約の operationId に対応することを検査が確かめる npm run check(web/src/api.test.ts「画面の API クライアントと契約(受け入れ条件 1)」・web/src/checks.test.ts「API への要求の経路の検査」) 2026-11-05 12:44 合格 / exit=0
#2384 2. 契約の利用者向けの操作と MCP のツールが 1 対 1 で対応することを検査が確かめる npm run check(api/src/mcp/mcp.test.ts「tools/list のツールの名前の集合が、契約の利用者向けの操作と一致する」) 2026-11-05 12:44 合格 / exit=0
#2384 3. MCP のツールは API の経路と同じユースケースを呼び、契約に無い保存の操作を呼べない npm run check(mcp.test.ts「API の経路と同じ結果を返し…」「受け口が受け取る依存はアプリへの要求の関数だけで…」) 2026-11-05 12:44 合格 / exit=0
#2384 4. 利用者向けの操作の要求・応答の本文がすべて配列である npm run check(contracts/tests/operations.test.ts「成功の応答と要求の本文が配列である」) 2026-11-05 12:44 合格 / exit=0
#2384 5. 単一のレコードを経路の変数で指す取得が契約に無い npm run check(operations.test.ts「経路の変数はアカウントの ID だけで…」) 2026-11-05 12:44 合格 / exit=0
#2384 6. 101 個の要素は処理されずに 400 と上限 100 が返る npm run check(api/src/routes/sprint-views.test.ts「101 個の要素は、どれも処理せずに 400 と上限 100、0 個は 400」) 2026-11-05 12:44 合格 / exit=0
#2384 7. 3 個のうち認可の無い 1 個だけが forbidden で、順は入力と同じ、残り 2 個は処理される npm run check(sprint-views.test.ts「3 個の要素のうち他人の 1 個だけが forbidden で…」) 2026-11-05 12:44 合格 / exit=0
#2384 8. 0 個の要素は何も処理されずに 400 npm run check(条件 6 と同じテスト) 2026-11-05 12:44 合格 / exit=0
#2384 9. 同じ冪等の鍵の作成を 2 回送ると、レコードは 1 件で同じ識別子が返る npm run check(api/src/routes/factory.test.ts「作成の冪等の鍵(#2384 の受け入れ条件 9)」・api/src/handlers/api.test.ts「同じ冪等の鍵の 2 回目は 1 回目のチームを返し…」) 2026-11-05 12:44 合格 / exit=0
#2384 10. 人の token と同じ人の委任の資格情報で、同じ操作の認可の判定が一致する npm run check(api/src/delegations/delegations.test.ts「人の token と同じ人の委任で、同じ操作の許可と拒否が一致する」) 2026-11-05 12:44 合格 / exit=0
#2384 11. 期限切れの委任の資格情報は 401 で、操作を行わない npm run check(delegations.test.ts「期限を過ぎた資格情報は 401 で、操作を行わない」) 2026-11-05 12:44 合格 / exit=0
#2384 12. 取り消しの後の最初の要求が 401 npm run check(delegations.test.ts「取り消しの後の最初の要求が 401 で…」) 2026-11-05 12:44 合格 / exit=0
#2384 13. 読み取りだけの範囲で作成・更新・削除を呼ぶと 403 で、操作を行わない npm run check(delegations.test.ts「読み取りだけの範囲で書き込みの操作は 403 scope_insufficient…」) 2026-11-05 12:44 合格 / exit=0
#2384 14. 委任の資格情報で委任の資格情報の発行を呼ぶと 403 npm run check(delegations.test.ts「委任の資格情報で委任の資格情報の発行を呼ぶと 403」) 2026-11-05 12:44 合格 / exit=0
#2384 15. 認可は要素ごとに掛かり、他人の要素だけが断られ、応答に他人のデータが無い npm run check(sprint-views.test.ts「…他人のデータは応答に無い」) 2026-11-05 12:44 合格 / exit=0
#2384 16. 人だけが確定できる操作に契約で印があり、answerLoopPending に印がある npm run check(operations.test.ts「人だけが確定できる操作は 10 で、ループの判断待ちへの答えを含む」) 2026-11-05 12:44 合格 / exit=0
#2384 17. 印のある操作を委任で呼ぶと読み書きの範囲でも 403 で、何も保存されない。すべての印のある操作を呼ぶテストがある npm run check(delegations.test.ts「扱い human の操作をすべて読み書きの範囲で呼ぶと 403 human_only で、何も保存されない」・mcp.test.ts「人だけが確定できるツールは 403 human_only を返し…」) 2026-11-05 12:44 合格 / exit=0
#2384 18. 委任の資格情報で承認の依頼と材料(スプリントの詳細・承認待ちの一覧)を読める npm run check(delegations.test.ts「委任の資格情報で、スプリントの詳細と承認待ちの一覧は読める」・mcp.test.ts「承認の依頼の材料(スプリントの詳細)は読める」) 2026-11-05 12:44 合格 / exit=0
#2384 19. 操作 1 回ごとに記録が 1 件増え、決めた項目を持つ npm run check(api/src/audit/audit.test.ts「成功の記録は 7 項目と結果を持ち…」「一部の要素が失敗すると partial と…」) 2026-11-05 12:44 合格 / exit=0
#2384 20. 読み取りと、401・403・400 で断った操作も記録に残る npm run check(audit.test.ts「読み取りも、401・403・400 で断った要求も 1 件ずつ残る」) 2026-11-05 12:44 合格 / exit=0
#2384 21. 記録の保存の契約に書き換えと削除の関数が無い npm run check(audit.test.ts「保存の実装は追記の関数だけを持つ」) 2026-11-05 12:44 合格 / exit=0
#2384 22. 認証情報・token・委任の値・GitHub の token を含む要求でも、記録に値が入らない npm run check(audit.test.ts「キー・ロールの ARN・ログインの token・委任の値・GitHub の code と proof・名前を含む要求でも、記録に値が入らない」) 2026-11-05 12:44 合格 / exit=0
#2384 23. 記録にメールアドレス・氏名・チームの名前・課題の題と本文が入らない npm run check(条件 22 と同じテスト・audit.test.ts「記録の列は固定の一覧だけで…」) 2026-11-05 12:44 合格 / exit=0
#2384 24. 契約の形を変えた後も、画面の Vitest と Playwright が通る Vitest: npm run check(web 105 件)。Playwright: タグと同じ中身(484725ca = タグの第 2 親、差分 0)の CI の factory-check(run 41954613611、npm run e2e -w web)。手元の npm run e2e -w web はこの環境にブラウザの共有ライブラリ libatk-1.0.so.0 が無く 75 件とも起動で落ちたため、CI の結果を証跡にした 2026-11-05 12:44(Vitest)・11:22(CI の Playwright) 合格 / Vitest exit=0、Playwright 65 件合格・10 件 skip・失敗 0
#2384 25. ランナー向けの経路(/run-jobs/*・/ingest/*)の入出力が変わらない タグ ndf--v10.27.18 と ndf--v10.27.19 の factory/contracts/openapi/*.yaml から /run-jobs・/ingest の経路 8 本と、そこから参照する型 20 個を取り出して比べた(.venv/bin/python /tmp/rv-paths.py) 2026-11-05 12:45 合格 / 経路 8 本・型 20 個とも一致
#2384 26. 委任を使わない人の操作で、今と同じく 401(token の検証の失敗)と 403(アカウントの解決の失敗)が返る npm run check(delegations.test.ts「委任を使わない人の操作は、今と同じく…(受け入れ条件 26)」・api/src/auth/verify.test.ts・handlers/api.test.ts) 2026-11-05 12:44 合格 / exit=0
#2431 1. 地図の「予定」の 3 行が作る課題を #<番号> で示す(承認 #2173・請求と使用量 #2174・手元のマシン #2189) git show ndf--v10.27.19:docs/specifications/ndf-factory-screen-map.md の 44〜46 行を読んだ 2026-11-05 12:45 合格
#2431 2. 書いた課題はどれも open である gh issue view <2173|2174|2189> --json number,state,title 2026-11-05 12:45 合格 / 3 件とも OPEN。題も各画面を作る課題(承認ゲートの通知と Web からの承認・サブスクリプションと Bedrock の token 課金・手元のマシン)
#2431 3. 冒頭の手順の文に、予定の行を作るときは状態を「あり」へ変え経路を書くことが書かれている タグの地図の 3 行目を読んだ(「予定の行に作る課題として書かれた課題は、行を足さずにその行の状態を『あり』へ変え、経路を書き…」) 2026-11-05 12:45 合格
#2431 4. 「あり」の行の内容と数は変わらず、差分は「予定」の 3 行と冒頭の文だけ gh pr diff 2517(変更は冒頭の 1 行と予定の 3 行だけ)。版をまたいだ差分 git diff ndf--v10.27.18 ndf--v10.27.19 -- docs/specifications/ndf-factory-screen-map.md では「あり」が 13 → 14 行になったが、増えた /delegations の行と動線の 1 行は #2384 の変更で、#2431 の差分には無い 2026-11-05 12:45 合格
#2431 5. 既存のテスト(factory/web/src/docs.test.ts)が通る npm run check(web 105 件に含む) 2026-11-05 12:44 合格 / exit=0
#2431 6. 追記した行に、内部の識別子の裸の使用と多義語の新たな当たりが無い gh pr diff 2517 の追加行に document-style のセルフチェックの grep(識別子 [a-z]+_[a-z0-9_]{2,}・検討の痕跡の語)をかけ、02-ambiguous-terms.md の多義語の一覧と照らした 2026-11-05 12:45 合格 / 識別子 0 件・痕跡 0 件。多義語の一覧の語の新たな当たりも無し(「token」は #2174 の題の引用)
— #2384 の「手動確認」でリリース後テストへ回した項目: 人が手元の Claude Code に Factory の MCP のサーバーを登録し、委任の資格情報でスプリントの一覧を読めることと、承認の依頼に答えようとすると断られることを見る — — 保留(理由: Factory を動かす系の定義はインフラの private リポジトリにあり、このリポジトリから届く Factory の本番の系の URL が無い。手順も「人が」登録して見る手動確認である。同じ振る舞いは条件 17・18 のテスト(mcp.test.ts が tools/call で読めることと 403 human_only を確かめる)で見た。実施の時期: Factory の系へこの版を反映し、利用者が MCP のサーバーを登録できるようになった時点で、人が行う)
— #2431 の「手動確認」でリリース後テストへ回した項目: 書いた番号ごとに gh issue view で OPEN と題を確かめ、地図を読んで条件 1・3 を確かめる 上の #2431 の条件 1〜3 の行と同じ(develop でなく本番のタグの地図を読んだ) 2026-11-05 12:45 合格
— マージ前に未検証として残した項目(#2512): 全体のテスト(test-all)が CI のチェックで止まった(doc-line-limit-check・glossary-check・guard・instruction-files-check。ほかに止まったものは未確認) 配布の Pull Request #2532 の CI の全チェックを集計した(gh pr checks 2532) 2026-11-05 12:46 合格 / 24 件 pass・1 件 skipping(pytest (${{ matrix.shard }}/2) の名前の行)・失敗 0。挙がった 4 つのチェックはどれも pass
— マージ前に未検証として残した項目(#2431 の承認ゲート 1): 要求の検査(requirements-check)が exit 2 で止まり、原因は未確認 タグの作業ツリーで spec-copy.py check 2431 issues/issue-2431-requirements.md・同じく 2384 2026-11-05 12:46 合格 / 2 件とも exit=0(本文と一致、節 20・17)。主ディレクトリ(develop)で打つと要求の文書が無く exit 2 になる。止まった原因は、要求の文書が無い場所で検査を打ったことと考えられる(推定。当時の実行場所は記録に無い)
— マージ前に未検証として残した項目(#2431 の承認ゲート 1): 設計の Pull Request に配布物のテスト plugins/ndf/scripts/tests/test_sprint_loop.py の変更が混ざっていた gh pr view 2496 --json files、タグで uv run --frozen --project /work/ai-plugins --all-extras pytest plugins/ndf/scripts/tests/test_sprint_loop.py -q 2026-11-05 12:46 合格 / マージされた #2496 のファイルは用語集 2 件と設計・要求の文書 2 件だけで、そのファイルは入っていない。タグでそのテストは 109 件合格
— マージ前に未検証として残した項目(#2512 の「設計と違う点」): 設計の決定 15(4 本の Pull Request に分ける)から外れて 1 本で実装した。分けるかを承認ゲート 1 で決めた記録は未確認 — — 保留(理由: 配布した成果物で確かめる条件でなく、進め方の記録の問題である。配布の承認(承認ゲート 2)は 1 本の形のまま人が通した。実施の時期: このスプリントの振り返りで、設計の決定と開発ループの「1 課題 1 ブランチ」の食い違いとして扱う)

合否: 合格(受け入れ条件 32 件はすべて合格。#2384 の 26 件・#2431 の 6 件。導入の確認と、手動確認・未検証の項目 6 件のうち 4 件も合格、2 件は保留)
起票したもの: なし

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant