Skip to content

Release: ndf v10.24.0 - #2160

Merged
takemi-ohama merged 2 commits into
developfrom
release/v10.24.0
Oct 29, 2026
Merged

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

Conversation

@takemi-ohama

Copy link
Copy Markdown
Contributor

ndf v10.24.0 のリリース(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 591b28e into develop Oct 29, 2026
22 checks passed
@takemi-ohama
takemi-ohama deleted the release/v10.24.0 branch October 29, 2026 22:19
@takemi-ohama

Copy link
Copy Markdown
Contributor Author

配布の記録

段階: 本番(承認ゲート 2 の承認の後、2026-10-30 07:32 に ndf--v10.24.0 を出した)
版: 10.23.0 → 10.24.0(タグ ndf--v10.24.0。直前はタグ ndf--v10.23.0)
スプリント: PR #2152

@takemi-ohama

Copy link
Copy Markdown
Contributor Author

リリース後テスト

対象の版: 10.24.0(本番。2026-10-30 07:32 JST に ndf--v10.24.0 を出した)
導入経路: release-verification-steps.py verify-install --ref main --expect 10.24.0 --plugins ndf(隔離した HOME で claude plugin marketplace add devbasex/ai-plugins → claude plugin install ndf@ai-plugins、Codex・Kiro も同じ経路)。手元の確認は導入済みの /home/ubuntu/.claude/plugins/cache/ai-plugins/ndf/10.24.0 と、origin/main(880c7d25)と木が同じメインディレクトリ(develop 591b28e、git diff --quiet origin/main HEAD が 0)で行った
対象の環境: 利用者の手元(devbase のコンテナ、agy 1.4.7 = /home/ubuntu/.local/bin/agy の ELF 実体。包みなし)

課題 受け入れ条件 実行したこと 実行時刻 結果
— 導入の確認: 利用者と同じ手順で入れ直す release-verification-steps.py verify-install --ref main --expect 10.24.0 --plugins ndf --root . 2026-10-30 07:34 合格 / exit=0・status ok(claude・codex・kiro とも ndf 10.24.0)
#2087 1. agy 1.4.7 で agy plugin validate plugins/ndf/dev.agy が Invalid model tier 0 件・exit 0 agy plugin validate plugins/ndf/dev.agy(git archive origin/main を展開した木で) 2026-10-30 07:35 合格 / exit=0・Invalid model tier 0 件・✔ Validation passed with 10 warnings
#2087 2. 集計の行が agents 11 同上の出力 2026-10-30 07:35 合格 / skills 45 · agents 11 · rules 0 · hooks 1 · mcpServers 0 · sidecars 0
#2087 3. 包みの無い agy 1.4.7 で bash scripts/validate-runtime-plugins.sh が exit 0 bash scripts/validate-runtime-plugins.sh(command -v agy = ~/.local/bin/agy の ELF 実体) 2026-10-30 07:35 合格 / exit=0・runtime plugin validation passed(agy の段も agents 11)
#2087 4. PR の runtime-smoke (agy) が成功する gh pr checks 2149 / gh pr checks 2152 2026-10-30 07:36 合格 / #2149 pass(run 40192888024)・#2152 pass(run 40884336111、runtime smoke tests passed: agy)
#2087 5. plugins/ndf/agents/*.md の model の値が変わらない git diff ndf--v10.23.0 ndf--v10.24.0 -- plugins/ndf/agents | grep -cE '^[+-]model:' 2026-10-30 07:37 合格 / 0 行
#2087 6. model 以外が一致し、Claude Code の定義だけ変えると --check が exit 1 で示す bash scripts/build-runtime-plugins.sh --check(そのまま)→ 写しの木で agents/debugger.md の description を変えて再実行 2026-10-30 07:37 合格 / そのままは exit=0。変えた後は exit=1・Generated agent is out of date: plugins/ndf/dev.agy/agents/debugger.md
#2087 7. agy に配る model が tier 名でないと agy の無い環境の単体テストが落ち、model: sonnet を 1 本足しても通る 写しの木で agents/verify-extra.md(model: sonnet)を足して生成 → PATH=/usr/bin:/bin(agy なし)で pytest scripts/tests/test_agy_agents.py。続けて写しの model を sonnet に書き換えて再実行 2026-10-30 07:38 合格 / 生成された写しは model: flash で 12 passed。書き換えると test_repo_copies_use_agy_tiers が落ちて 1 failed
#2087 8. plugins/ndf/README.md の dev.agy/agents の段落が新しい形と一致 段落を読み、dev.agy/agents/ の実物(実ファイル 11 本・model: flash 7 / pro 1)と照らした 2026-10-30 07:38 合格 / 段落(今は 41 行目に移った)が「agents/ から生成する写しで、model: の 1 行だけを対応表で置き換える」と書き、実物と一致
#2087 9. リリース後の日次 runtime-smoke-latest (agy) の agy validate ndf が成功する gh run list --workflow runtime-plugin-smoke-latest.yml -L 5 2026-10-30 07:36 保留(理由: 未到来。直近の実行は 2026-10-29 09:36 JST(headSha fa6f02e)で、10.24.0 を main へ出した 07:32 JST より前。次の定時(cron 0 21 * * * = 06:00 JST、実際は 08:00〜09:40 JST に遅れて走る)の 2026-10-31 朝の実行で確かめられる)
#2104 1. normal の promote が承認ゲート 2 で止まるとき、承認資料と結果に先端の 40 桁の SHA が載る pytest -rA tests/test_sprint_close_merge_green.py -k promote(test_promote_gate_writes_the_head_into_the_material・..._does_not_write_a_material_for_an_unreadable_head) 2026-10-30 07:39 合格 / 56 passed(偽の gh・本物の git の木)。実機の昇格の経路は未通過(下の注)
#2104 2. SHA が X で先端も X なら --match-head-commit X で 1 度マージして record へ進む 同上の test_promote_approved_merges_the_approved_commit・test_the_promote_plan_records_after_the_merge 2026-10-30 07:39 合格 / passed。実機の昇格の経路は未通過(下の注)
#2104 3. 先端が Y なら gh pr merge を呼ばず head_moved で止まり、next が --from promote を示す 同上の test_promote_approved_stops_when_the_head_moved[seq0/seq1](承認の前に進んだ・CI 待ちの間に進んだ) 2026-10-30 07:39 合格 / passed。実機の昇格の経路は未通過(下の注)
#2104 4. 資料が無い・行が無い・40 桁の 16 進でないと gh を呼ばず exit 2 導入済みの 10.24.0 の merged-steps.py promote --head develop --base main --gate-approved user --approved-from <資料> を 3 通りの資料で、呼ばれた回数を数える偽の gh を PATH の先頭に置いて実行 2026-10-30 07:40 合格 / 3 通りとも exit=2・gh の呼び出し 0 回・summary「承認したコミットを読めないため昇格しない: …が無い / 「承認したコミット」の欄が無い / 40 桁の 16 進でない: '7922567d'」
#2104 5. promote-approved のコマンドに照合の資料のパスがプランの組み立てで入る(normal と fast/auto) 導入済みの 10.24.0 の plan_promote をこのリポジトリのブランチ名(develop → main)で組み立てた 2026-10-30 07:40 合格 / normal・fast とも promote-approved が --approved-from {state_dir}/work/approval-promote.md --gate-approved user。normal の promote と fast の prepare の --out が同じ資料。テスト test_the_promote_plan_uses_the_declared_branch_names も passed
#2104 6. fast/auto の prepare が書く資料に同じ形の SHA の行が載る test_promote_prepare_writes_material_and_stops_short(approved_commit.material_sha(資料) == 先端) 2026-10-30 07:39 合格 / passed
#2104 7. fast/auto の promote のコマンドと振る舞いが変わらず、#1529 の既存テストが通る 組み立てたプラン(上の 5)と test_the_promote_merges_only_the_commit_the_mvv_judge_read[auto/fast]・test_promote_*verified_commit* 2026-10-30 07:40 合格 / fast の promote は --expect-head-from {state_dir}/work/approval-verify.md --gate-approved mvv・on_fail=handoff。テストは passed
#2104 8. SHA の行を書く形と読む形を lib/approved_commit.py が決めて共有する grep -rn "material_row|material_sha" plugins/ndf/scripts(tests を除く) 2026-10-30 07:41 合格 / 書き手は merged_lib/merge.py の 120・331 行が approved_commit.material_row、読み手は 382 行が approved_commit.material_sha。ほかに独自の書式は無い
#2104 9. pace.md と確定仕様から「promote-approved は照合を持たず、今の先端をマージする」が消え、止まったときの続け方が書かれる grep -nE "照合を持たず|今の先端をマージ" を 2 ファイルに、grep -nE "approved-from|--from promote" 2026-10-30 07:41 合格 / promote-approved についての記述は 0 件(残る 1 件は確定仕様 402 行目の経路 merge の merge-approved で、#2147 の範囲)。pace.md 270 行目と確定仕様 271・294・362 行目が head_moved の後の --from promote(fast/auto は --from verify)を書く
#2104 10. 全体テストが通る uv run --frozen --project . --all-extras pytest . -q -n 4 2026-10-30 07:38〜07:48 合格 / exit=0・10435 passed, 4 skipped(600 秒)
#2142 1. promote --help が照合と、食い違い・読めないときに handoff が承認ゲート 2 へ戻す(--from verify)ことを書く 導入済みの 10.24.0 の merged-steps.py promote --help 2026-10-30 07:40 合格 / --expect-head-from の説明が「確かめたコミットが PR の先端のときだけマージする(照合)。食い違えば head_moved で 1、資料から読めなければ 2 で止まり、プランの handoff が承認ゲート 2 へ戻す(run <プラン> --from verify から流し直す)」
#2142 2. モジュールの docstring が exit 1 / 2 の後に承認ゲート 2 へ戻ることを書く sed -n 23p merged-steps.py 2026-10-30 07:41 合格 / 「どちらもマージせず、プランの handoff が承認ゲート 2 の by: mvv の記録を外して 10 を返し、承認ゲート 2 へ戻す。流し直しは run <プラン> --from verify」
#2142 3. 確かめたコミットが 40 桁でないときの summary が導入の確認の資料を指し、承認したコミットの summary は変わらない 導入済みの 10.24.0 で --expect-head-from <短い SHA の資料> と --approved-from <短い SHA の資料> を偽の gh で実行 2026-10-30 07:41 合格 / 前者は「確かめたコミットを読めないため昇格しない: 導入の確認の承認資料 … の確かめたコミットが 40 桁の 16 進でない」、後者は「承認したコミットを読めないため昇格しない: 承認したコミットが 40 桁の 16 進でない」。どちらも exit=2・gh 0 回
#2142 4. 照合の振る舞い(#1529 の条件 1〜8)が変わらず既存のテストが通る #2104 の 7 と同じテスト 2026-10-30 07:39 合格 / passed

注(#2104 の 1〜3): この版の本番配布は release-steps.py release の経路(承認したコミットの照合は #815 の compare_approved)で、#2104 が直した昇格のプラン(merged-steps.py promote / promote-approved)は通っていない。配布の記録では承認資料の承認したコミット 7922567 に対して main へ入った先端は 591b28e で、差は版の更新の PR #2160 の 2 コミットだけ(許した PR として照合を通った)。昇格の経路を実機で通すのは、本番チャネルを production_branch で持つリポジトリで昇格のプランを流したときである。

合否: 保留(#2087 は 9 件中 8 件合格・1 件保留(条件 9 は未到来)。#2104 は 10 件すべて合格(1〜3 は単体テストで合格、実機の昇格の経路は未通過。注を参照)。#2142 は 4 件すべて合格)
起票したもの: #2163(agy 1.4.7 の validate が出す警告のうち、Skill 5 本の本文が 24000 バイトを超えて後半が読み込まれない件。#2087 の範囲外)。同じ出力の hooks.json の matcher の警告 5 件(Claude Code の Tool 名が agy では一致しない)は、同じ matcher に agy の Tool 名も並んでいて振る舞いが変わらないため起票しない(MVV 版 3 の Value 1)

@takemi-ohama

Copy link
Copy Markdown
Contributor Author

振り返り(2026-10-30)

対象: issue #2087 / issue #2104 / issue #2142 / スプリント PR #2152 / リリース PR #2160(本番 10.24.0)

スプリント m2087(マイルストーン 03 研究基盤)で 3 件を出した。#2087 は agy 1.4 系が拒むエージェント定義の model を、agy の tier 名へ変換して配る生成物にした。#2104 は pace: normal の昇格で、承認ゲート 2 で見た先端と promote-approved がマージする先端を照合するようにした。#2142 は merged-steps.py promote の help に、照合が食い違ったときに承認ゲート 2 へ戻ることを書いた。

承認ゲートは 2 回(関門 1: 2026-10-25、関門 2: 2026-10-30 07:15 JST)で、差し戻しは無い。リリース後テストは #2087 の条件 1〜8・#2104 の条件 1〜10・#2142 が合格し、#2087 の条件 9(日次の runtime-smoke-latest (agy))は 2026-10-31 朝の実行を待つ。

何が起きたか

観点 事実
受け入れ条件 #2087 の未決 1(model を変換するか外すか)は関門 1 で変換に決まった。#2104 の未決 3(経路 merge の merge-approved も照合しない)は範囲外として #2147 へ分けた。#2142 は設計 PR を持たず、本文に受け入れ条件を書き足して実装だけを通した
手戻り 実装で 1 回、検査で 4 回止まった(下の表)。レビューは 1 ラウンドで指摘 0 件。構造改善は採用 14・見送り 7(すべて時間)・修正 3 ラウンド
見落とし #2104 の条件 1〜3 は単体テストだけで合格とした。10.24.0 の本番は release-steps.py release の経路で出ており、昇格の経路(merged-steps.py promote / promote-approved)は実機で通っていない。リリース後テストの起動指示が「10.24.0 の配布記録を根拠にしてよい」と経路を確かめずに書いた(→ #2166)
範囲 #2087 のリリース後テストで、agy が Skill 5 本の本文を 24000 バイトで切ることを見つけ #2163 へ分けた
工程 飛ばした工程は無い。文書だけの確定仕様化 PR #2162 でも CI が全体テストを回し、シャードごとに 11〜12 分かかった(scripts/ci-heavy-skip.py が配布の PR しか省かない)。conductor がブランチ fix/ci-skip-docs-only で直している

止まった箇所:

どこで 何が起きたか 手当て 課題
実装 #2142(2026-10-25) 設計を持たない #2142 の触るファイルが宣言されず、同時に流れた #2104 が触る merged-steps.py を「変えない」と指示されて worker が判断待ちで止まった #2104 のマージの後に、変えてよいと指示して流し直した #2165(新規)
旧検査 6-check 着手前のテストが 180 秒の打ち切りで止まった(次回の上限は 540 秒へ上がる) プランの作り直しに合わせて流し直した 起票しない(上限を次回へ引き上げる既存の振る舞い)
プランの版数 旧プランの版数 10.23.0 を、並行の chrome-cdp(PR #2153)が先に本番へ出した 10.23.0 の scripts でプランを作り直した(開発版 10.24.0-dev.1) #2164(新規)
検査 1 回目(2026-10-29) 範囲テストの雛形の試走が残り約 6 秒で打ち切られた 記録を退けて流し直した #2158
検査 2 回目 構造改善の既定予算 30 分が、着手前のテスト約 8 分から求めた下限に届かず refactor.py init が終了コード 4 で止まった --refactor-budget-minutes 90 で書き直して流し直した #2047 の再発(本文へ追記)

context window の大きさ

計測は再起動の後の conductor のセッション 1 本だけである(2026-10-25 以前のセッションは含まない)。

層 フェーズ モデル 件数 固定費の中央値 実作業の中央値 実作業 < 固定費 最大充填の最大 目印
conductor - claude-opus-5-5 1 43851 80384 0 124235
supervisor 取り込み claude-opus-5-5 1 45962 105940 0 151902
supervisor 仕上げ claude-opus-5-5 2 46348 58508 1 134638
層 件数 固定費の合計 実作業の合計 総消費
conductor 1 43851 80384 124235
supervisor 3 138658 222957 361615
合計 4 182509 303341 485850
フェーズ supervisor supervisor の実作業 worker の件数 supervisor と worker の固定費の合計 目印

目印の付いた行は無い。そのままにする。

承認ゲートの差し戻し

関門 1: 0 件・関門 2: 0 件(gate-rejections.py count、#2087・#2104・#2142 と PR #2145・#2146・#2152・#2160)。

MVV を見直すか

版 3。覆し 0 件(閾値 3)・判定できない 0 件(閾値 5、続けて 0 回・閾値 3)・流出不具合 0 件(閾値 3)。兆候は閾値に届かない。改訂するかの問いは conductor が利用者へ渡す。

次に変えること

変えること 落とし先 状態
リリース後テストの起動指示で根拠の記録を指すときは、その記録が通った経路の名前を添え、条件の経路と合うかを確かめる。#2104 の条件 1〜3 は次の pace: normal の昇格で確かめる development-workflow の 3 層の起動指示(次の変更で試す) #2166 として起票
設計を持たない実装のプランは、同時に流すプランとの重なりを直列に倒す supervise.py queue の重なりの判定 #2165 として起票
版数をプランを作る時点で固定しない スプリントのプランの雛形 #2164 として起票
検査のプランの構造改善の予算を下限以上にする supervise.py new check 既存 #2047 に再発を追記
文書だけの PR で全体テストを省く scripts/ci-heavy-skip.py conductor がブランチ fix/ci-skip-docs-only で修正中

途中で起票した課題

番号 何を見つけたか 見つけた場面
#2147 経路 merge の merge-approved も承認ゲート 2 の先端を照合しない 設計中(#2104 の未決 3)
#2158 範囲テストの雛形の試走の残り時間が数秒になり init が止まる 検査中
#2163 agy が Skill 5 本の本文を 24000 バイトで切る リリース後テスト中
#2164 プランの版数が並行のスプリントの本番と衝突する 振り返り(取りこぼし)
#2165 設計を持たない実装のプランが重なりで「変えない」と指示されて止まる 振り返り(取りこぼし)
#2166 起動指示の根拠の経路が条件の経路と違い、#2104 の昇格の経路が実機で未通過 振り返り(取りこぼし)

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