Release: ndf v10.17.0 - #887
Merged
Merged
Conversation
`.serena/serena_config.yml` は利用者ごとに書き換わる設定で、認証の秘密 (`auth_secret`)を持つ。追跡したままだと、手元の変更が `git add -u` や `commit -a` でコミットへ入りうる。 - 無視の設定へ 1 行足し、追跡から外す(`git rm --cached`) - 手元のファイルは消えない。既存の利用者は取り込んだ後も同じ内容を使い続ける - 履歴に秘密は入っていない(コミット済みの版に `auth_secret` の行は無い) Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Serena の設定: 利用者ごとに書き換わる設定が追跡されていて、認証の秘密が誤ってコミットへ入りうる → 無視して追跡から外す
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0188ycp9tV288qHTswhMxQ7K
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0188ycp9tV288qHTswhMxQ7K
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0188ycp9tV288qHTswhMxQ7K
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0188ycp9tV288qHTswhMxQ7K
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0188ycp9tV288qHTswhMxQ7K
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0188ycp9tV288qHTswhMxQ7K
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0188ycp9tV288qHTswhMxQ7K
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0188ycp9tV288qHTswhMxQ7K
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0188ycp9tV288qHTswhMxQ7K
- token-guard.sh(PreToolUse の Bash / Read / Skill / Agent)を新設し、Claude Code にだけ登録する - 前景の sleep の待ち(while / until の本体、または 5 秒を超える秒数)を止める - 変わらないファイルの同じ範囲を 3 回続けて読む Read を止める - 文脈が 200,000 を超えた conductor が工程へ入る起動を 1 度止め、新しい会話で打つ 1 行を示す - 待ち方の規約 waiting.md を新設し、agent-layers.md と前景の待ちのループを持つ 4 文書から指す - context-window.md の「実測ではない」を #827 の実測へ置き換え、hook と新しい会話で戻す手順の節を足す - development-workflow/SKILL.md に、切れ目で conductor が引き継ぎの 1 行を出す規約を足す - README に hook と 4 ランタイムの扱いの表を足す - 実装計画 issues/issue-829-830-implementation-plan.md Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LdEztjNvLXF6EasAvTjAfk
AC20 の実機の確認で、プラグインの scripts/ にあると読めて探す手間が出た。 実体は development-workflow の scripts/ にある。 Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LdEztjNvLXF6EasAvTjAfk
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LdEztjNvLXF6EasAvTjAfk
再帰的に実行文字列を検査する対象として明示された shell のうち、bash と sh は DENY_SLEEP で固定済みだが zsh と dash の -c 経路は未固定だった。上限超過の sleep と ループ本体の sleep を含む zsh -c / dash -c 入力を DENY_SLEEP に足し、いずれも拒否 (deny)になる現状を固定する。対象コードは変更していない。 Item-Id: R1-001 Round: 1 Impl-Runtime: kiro Impl-Model: default
select ループ本体の上限超過と上限以下の sleep 判定を既存のパラメータ化テストへ追加する。 Item-Id: R1-002 Round: 1 Impl-Runtime: codex Impl-Model: default
…text assistant の usage が複数あるとき、最後の値で上限判定する経路を現状固定する。 上限超過の後に上限以内の usage が来ると通り、順序を逆にすると拒否されることを 比較する現状固定テストを追加。対象コードは変更しない。 Item-Id: R1-003 Round: 1 Impl-Runtime: kiro Impl-Model: default
上限超過のusageに壊れたJSON行が続く場合、公開hookが拒否せず終了する現状を結合テストで固定する。 Item-Id: R1-004 Round: 1 Impl-Runtime: codex Impl-Model: default
既存の session 読み直し状態 JSON が壊れている場合の、guard_read の 読み直し判定と状態の回復を現状固定する。壊れた状態では 0 から数え直し、 最初の Read が通って状態が有効な JSON(count=1)へ置き換わり、以後は 現在の上限回で拒否されることを固定する。 Item-Id: R1-005 Round: 1 Impl-Runtime: kiro Impl-Model: default
上限超過 usage が末尾200行の外側と内側にある場合の現状挙動を比較する。 Item-Id: R2-001 Round: 2 Impl-Runtime: codex Impl-Model: default
…text guard_context の agent 分岐で、description の課題番号が # を付けない裸の番号でも 案内が sed 's/^/#/' で # 付きへ整えられる振る舞いを現状固定する。検査/取り込み/仕上げ の 3 入力が終了コード 0 の deny になり、/ndf:development-workflow #829 を示すことを固定。 Item-Id: R2-002 Round: 2 Impl-Runtime: kiro Impl-Model: default
存在しない同一ファイルへのReadが3回目に拒否される境界経路を固定する。 Item-Id: R2-003 Round: 2 Impl-Runtime: codex Impl-Model: default
…d.sh#guard_sleep DENY_SLEEP は 'sleep 1m'(分)だけを固定し、時間・日の単位(h / d)と小数の 秒換算の経路が固定されていなかった。既定の上限 5 秒に対し 'sleep 0.1h'(360 秒)と 'sleep 1d'(86400 秒)が拒否されることを、waiting.md への部分一致だけで固定する 現状固定テストを追加した。対象のコードは変更していない。 Item-Id: R2-004 Round: 2 Impl-Runtime: kiro Impl-Model: default
here-string の内容をヒアドキュメント本文と誤認せず、拒否しない既存経路を固定する。 Item-Id: R2-005 Round: 2 Impl-Runtime: codex Impl-Model: default
…と読まない) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LdEztjNvLXF6EasAvTjAfk
- 背景実行は sleep の引数の後ろから次のコマンド境界までの `&` で判定する(`sleep 30 >/tmp/x &` を通す)。`2>&1` / `>&` / `&>` の `&` は背景と読まない - bash / sh / zsh / dash -c と eval の中身を見るのはコマンドの位置の語だけにする(`echo bash -c ...` を止めない)。`timeout 590` / `nohup` / `env` などの前置きの後ろもコマンドの位置とする - 末尾が o / O の結合形のオプション(`-euo pipefail`)の引数を読み飛ばして `-c` を探す - waiting.md の説明を判定に合わせる Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LdEztjNvLXF6EasAvTjAfk
- (sleep 30) & / { sleep 30; } & / while ...; do sleep 1; done & / sleep 30 && echo x & を
背景として通す。前景のまま待つ形は引き続き止める
- 課題番号の抽出で、ハイフン区切りの日付(2026-09-23)も版数と同じく取り除く
- waiting.md の止めないものの説明を判定に合わせる
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LdEztjNvLXF6EasAvTjAfk
- token_guard_sleep.py: bash -c / eval の中身を再帰検査する前に、既存の is_background で外側の & を判定する - token-guard.sh: 日付(YYYY-MM-DD)だけを先に除き、版数は [0-9]+(\.[0-9]+)+ に戻す。#829-830 / 829-830 は #829 #830 として案内する - test_token_guard.py: 背景の bash -c / eval と、版数・日付・範囲を含む description の抽出結果を固定する - waiting.md: 止めないものに bash -c / eval の外側が背景になる形を加える Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LdEztjNvLXF6EasAvTjAfk
要求・設計・決定の記録・実装計画の 4 本を、現行の実装と一致する確定仕様 docs/specifications/ndf-token-waits-and-context-cut.md へ書き直した。元の 4 本は issues/old/milestone-26-token-waits/ へ退避した。 - 設計の「未確認」の決着(サブエージェントは agent_id で見分ける・PreToolUse の時点で その呼び出しの assistant 行は未記録・通知が 2 回届くこと)を実装のとおりに書いた - sleep の判定の背景の扱い(& で背景になる形・dash -c)など、実装レビューで決まった規則を反映した - token-guard-stages.txt の「正」の参照先を確定仕様へ向け直した Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LdEztjNvLXF6EasAvTjAfk
#829 #830(待つ間の問い合わせと長い conductor の工程の起動を hook で止める)を develop の チャネルへ載せる開発版。版数を持つ 15 箇所、更新案内の本文と手元で確かめるコマンド、 CHANGELOG.md の ndf 10.17.0 の節、docs/ndf-version-decisions.md の v10.17.0 の判断を更新する。 Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LdEztjNvLXF6EasAvTjAfk
Release: ndf v10.17.0-dev.1
開発版 10.17.0-dev.1 の接尾辞を外し、正式版 10.17.0 として `main` へ配る。 更新案内の本文を正式版の記述へ直した。 Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016FbePpugNBKWFzJDmz4mgA
Release: ndf v10.17.0
This was referenced Sep 23, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
目的
正式版 ndf v10.17.0 を
main(正式版チャネル)へ載せる。マイルストーン 26「17 トークン消費の削減」のまとまり 1(#829 #830)である。何が届くか
Claude Code にだけ効く。Codex / Kiro / agy の hook は変わらない。
while/untilループ本体のsleepと 5 秒を超えるsleep、変わらないファイルの同じ範囲を 3 回続けて読む Read を PreToolUse hook が止め、代わりの待ち方(run_in_background: true/Monitor)を示す。規約はdevelopment-workflow/references/waiting.md判定ごとに
NDF_SLEEP_GUARD=0/NDF_READ_REPEAT_GUARD=0/NDF_CONTEXT_GUARD=0で止められる。あわせてまとまり外の #836(Serena の設定を追跡から外す。配布物に差分なし)も入る。
まとまり
設計 #843 / 実装 #844 / 開発版 10.17.0-dev.1 #881 / 版上げ #886
版
10.16.1 → 10.17.0-dev.1 → 10.17.0(MINOR: PreToolUse hook と待ち方の規約の後方互換のある追加。引数・Skill・スクリプトの削除や改名なし)
検証
uv run --with pytest pytest scripts/tests plugins/ndf -q)claude plugin validate .を含む)CLAUDE_CONFIG_DIR/CODEX_HOMEと Kiro の導入スクリプトの 3 経路の取得と hook の動作を実測済み(Release: ndf v10.17.0-dev.1 #881 のコメント)マージの後に
ndf--v10.17.0のタグを打ち、正式版チャネルからの取得をリリース後テストで確かめる。🤖 Generated with Claude Code
https://claude.ai/code/session_016FbePpugNBKWFzJDmz4mgA