Skip to content

NDF のスクリプト: 1 回の起動を実行の識別子 1 つで、1 つの記録から始まりから終わりまで追えるようにする(#2338) - #2497

Open
takemi-ohama wants to merge 11 commits into
developfrom
design/issue-2338
Open

takemi-ohama wants to merge 11 commits into
developfrom
design/issue-2338

Conversation

@takemi-ohama

@takemi-ohama takemi-ohama commented Nov 4, 2026 •

Copy link
Copy Markdown
Contributor

#2338 の要求・受け入れ条件と設計を文書にまとめ、設計で使う語を用語集へ足しました。設計の文書だけを追加する変更で、プラグインの振る舞いは変わりません。

利用者向けの変化

  • 無し

移行の手順

  • 無し

変更の要点

変更は 5 ファイル、863 行の追加です。

テスト

ステップ 結果 内容
用語集の照合 exit 0 設計で宣言した語と用語集が揃っている
要求の照合 exit 0 issues/issue-2338-requirements.md は #2338 の本文と一致する

モード: standard / 通した工程: 設計 → 要求と受け入れ条件 → ドキュメント再構成 → ドキュメントレビュー

🤖 Generated with Claude Code

決めたこと

issues/issue-2338-design-decisions.md

  • 決定 1: 並行に書く子の実行の行が混ざらないよう、1 行を排他の中で書き切る
  • 決定 2: 理由を切らずに 1 行を読める大きさに保つため、1 行の上限を 64 KiB とし、超える分は長い文字列から全文ファイルへ移す
  • 決定 3: 途中で記録へ書けなくなっても外の世界を中途半端に残さないよう、本体は終わりまで動かし、結果だけを stopped にする
  • 決定 4: hook の変更を 異常系・ログ・回復とデータ・入出力の形を 1 つの実行の核へ集め、異常系の課題 103 件を型ごとにまとめて解く #2335 の対象範囲の外に保つため、問い合わせの記録(ask.jsonl)の行へ実行の識別子を足さない
  • 決定 5: 子の実行が親と別のリポジトリや日付で動いても同じファイルへ書けるよう、ファイルの絶対パスを NDF_RUN_LOG で渡す
  • 決定 6: hook や移す前のエントリポイントが他人の記録へ書かないよう、run_log.diag は自分のプロセスで記録を開いたときだけ記録へ書く
  • 決定 7: 診断の経路を 1 つにして種類と項目を残せるよう、Python は書き口の関数へ置き換え、シェルは核が標準エラーをパイプで受ける
  • 決定 8: 任意の形の認証情報も記録へ残さないよう、トークンの形の置き換えに加え、秘密と宣言した環境変数の値を伏せる
  • 決定 9: 止まった理由を失わずに表示の短さを保つため、行き先が結果 JSON か例外なら切らず、人へ見せる表示なら全文を記録へ書いてから表示だけを切る
  • 決定 10: 既存の読み手を書き直さないよう、帳簿とプランの状態の記録には任意の鍵 run_id を足すだけにし、版を上げない
  • 決定 11: 記録の寿命を耐久の記録と 1 つの値にするため、KEEP_DAYS を durable_keys.py へ移し、日付のディレクトリの名前で判定して消す
  • 決定 12: 1 スプリントで人が読み切れる量に収めるため、移す Pull Request を部品の順に 6 本へ分け、スプリント 1 は核の拡張と G1・G2 にする

takemi-ohama and others added 3 commits November 4, 2026 15:24
1 回の起動を実行の識別子 1 つで 1 つの記録から追える条件、標準エラーへの診断の経路を 1 つにする条件、
止まった理由を切らずに残す条件、子の課題 8 件の判定の記録を、課題の本文と写しに書いた。
用語集へ「起点の実行」「子の実行」「診断」を足した。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
1 回の起動を実行の識別子 1 つで 1 つの記録から追うための書き口・核からの呼び出し・子の実行への受け渡し・
診断の経路・止まった理由を切る 10 か所の扱い・帳簿とプランの状態の記録への識別子の追加・移す順序を決めた。
要求の未決 4 件(1 行の上限・並行の書き込み・問い合わせの記録・途中で書けないとき)は決定 1〜4 で決めた。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
内容は足さずに、100 字を超える文の分割・図に描かない要素の列挙の表への移し・1 行の書き方の手順の番号付きリストへの移しを行った。
章の並びは設計テンプレートの順と確定事項を伝える文書の構成に合っているため変えていない。
「段」が層・工程・Pull Request の単位のどれを指すか読み取れなかったため、Pull Request の名前を「核の拡張」へそろえた。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

@takemi-ohama takemi-ohama left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 cross-review | round 1 | codex | APPROVE

対象範囲で修正が必要な critical / major の指摘はありません。

@takemi-ohama takemi-ohama left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 cross-review | round 1 | kiro | APPROVE

モデルの段に基準を満たす指摘なし。

@takemi-ohama takemi-ohama left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 cross-review | round 2 | claude | REQUEST_CHANGES

決定 1 の排他とシグナルの扱いは、スレッドを持つ入口で止まる。テストの状態の置き場の分離も設計に無い。この 2 点を設計で直す。

Comment thread issues/issue-2338-design.md Resolved
Comment thread issues/issue-2338-design.md Resolved

@takemi-ohama takemi-ohama left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 cross-review | round 2 | kiro | REQUEST_CHANGES

設計文書の修正提案 2 件(記録の失敗時に本体の結果が失われる点、シェルの標準エラーをパイプ化する影響の確認範囲)。

Comment thread issues/issue-2338-design-decisions.md Resolved
Comment thread issues/issue-2338-design-decisions.md Resolved
- シグナルの受け手は主スレッドで動くため、排他の区間の中では end を書かずに保留の印を残し、排他を返した直後に書く
- ルートの conftest.py でテストの実行中だけ NDF_STATE_DIR を一時ディレクトリへ向ける
- 途中で記録へ書けなくなったときは、本体の元の結果 JSON を original_result に入れて出す
- シェルの標準エラーをパイプにしても端末の文が変わらないことは未確認として載せ、核の拡張で比べて確かめる

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@takemi-ohama

Copy link
Copy Markdown
Contributor Author

🔧 /ndf:fix サマリ | round 2 | commit 670a3ac

対応件数: critical=0 / major=4 / minor=0(合計 4 件)
決着: 4 件 / 見送り: 0 件 / 却下: 0 件
CI: PENDING

@takemi-ohama takemi-ohama left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 cross-review | round 3 | claude | REQUEST_CHANGES

round 2 の 4 件の対応のうち、シグナルの受け手の新しい形(決定 1 の 5 項目)に 2 点の穴がある。印を立てる時点と、保留した後にプロセスを終わらせる手順を設計に書き足す。

Comment thread issues/issue-2338-design.md Resolved
Comment thread issues/issue-2338-design.md Resolved

@takemi-ohama takemi-ohama left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 cross-review | round 3 | codex | REQUEST_CHANGES

プラグインのキャッシュでテストする経路にも、状態の置き場の隔離を適用する必要があります。根拠: C3 / Value 1 / Value 7。

Comment thread issues/issue-2338-design.md Resolved
@takemi-ohama

Copy link
Copy Markdown
Contributor Author

🔧 /ndf:fix サマリ | round 3 | commit 2159507

対応件数: critical=0 / major=3 / minor=0(合計 3 件)
決着: 3 件 / 見送り: 0 件 / 却下: 0 件
CI: PENDING

@takemi-ohama

Copy link
Copy Markdown
Contributor Author

🔧 /ndf:fix サマリ | commit (なし)

対応件数: critical=0 / major=0 / minor=0(合計 0 件)
決着: 0 件 / 見送り: 0 件 / 却下: 0 件
CI: NONE

@takemi-ohama
takemi-ohama marked this pull request as ready for review November 4, 2026 16:23
takemi-ohama and others added 2 commits November 4, 2026 22:17
内容は足さずに、次を行った。
- 説明文の「入口」を、用語集の語「エントリポイント」へそろえた
- 足す環境変数 3 つを括弧に積んだ 1 文(121 字)を表へ移した
- 処理の流れの「1 行の書き方」「SIGTERM と時間切れ」を小見出しにした(章の固有部分 62 行 → 42 行)
- 100 字を超える文(129 字・111 字・102 字)と、決定の記録の長い文 5 つを分けた

章の並びは設計テンプレートの順と確定事項を伝える文書の構成に合っているため変えていない。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

@takemi-ohama takemi-ohama left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 cross-review | round 4 | codex | REQUEST_CHANGES

診断の端末出力と、終端・部分書き込みの失敗処理を設計の契約に明記してください。根拠: Value 1 / Value 7。

Comment thread issues/issue-2338-design.md Resolved
Comment thread issues/issue-2338-design.md Resolved
Comment thread issues/issue-2338-design.md Resolved

@takemi-ohama takemi-ohama left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 cross-review | round 4 | kiro | APPROVE

基準を満たす critical / major の指摘なし。前 3 ラウンドの指摘(シグナル受け手の再入・保留経路の終わらせ方・original_result・テストの状態の置き場の隔離・シェルの標準エラーのパイプ化の未確認)はいずれも設計文書に具体の記述で取り込み済み。移す対象の数(60 ファイル・125 か所)・理由を切る 10 か所の行番号と行き先・isatty の実測(6 件すべて stdin/stdout)・用語集の 4 語の構造を実リポジトリと突き合わせて一致を確認。受け入れ条件 1〜7 はテスト設計の行がそろっている。

- ctx.log の diag を run_log.diag へ渡し、標準エラーへ先に出す
- 核は E9 の完了後にも failed を見てから標準出力と終了コードを確定する
- 1 行は排他の中で全バイトを書き切り、書き切れなければ追記前の長さへ戻して I7 にする

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@takemi-ohama

Copy link
Copy Markdown
Contributor Author

🔧 /ndf:fix サマリ | round 4 | commit 3fbac4b

対応件数: critical=0 / major=3 / minor=0(合計 3 件)
決着: 3 件 / 見送り: 0 件 / 却下: 0 件
CI: FAILURE

- 構成要素の依存の図と、処理の流れの「図に描かない要素」を小見出しへ分けた
- 100 字を超える文と、決定の記録の長い文を分けた
- 「シェルの起こし直し」は用語集で別の意味(resume の送り直し)を持つため、「核の exec」へ言い換えた

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

@takemi-ohama takemi-ohama left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 cross-review | round 5 | claude | REQUEST_CHANGES

シグナルの受け手が終わりの行(end)の後に動いた場合の扱いと、診断を標準エラーへ出す形(「1 行で」)が、受け入れ条件 1c・6 を崩す。この 2 点を設計に書き足す。

Comment thread issues/issue-2338-design.md Resolved
Comment thread issues/issue-2338-design.md Resolved

@takemi-ohama takemi-ohama left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 cross-review | round 5 | kiro | APPROVE

基準を満たす critical / major の指摘なし。範囲の 5 ファイルを確認した。用語集の 4 語の追加(起点の実行・子の実行・診断・全文ファイル)は glossary.md と glossary.json で意味・コンテキストが一致し、pending_source(issue-2338-requirements.md / issue-2338-design.md)はいずれも存在、source は空で確定仕様を指さず unconfirmed_source に当たらない。要求・設計・決定の 3 文書は、前 4 ラウンドの指摘(シグナル受け手の再入と印の立て方・保留経路の終わらせ方と例外・original_result・E9 後の失敗確認・テストの状態の置き場の隔離をルートと plugins/ndf の両 conftest へ・シェルの標準エラーのパイプ化の未確認・診断の端末出力・os.write の部分書き込みと ftruncate 戻し)をいずれも具体の記述で取り込み済み。移す順序の 60 ファイル・125 か所の数は加算(14+7+7+14+7+11=60、29+16+8+36+18+18=125)で一致し、理由を切る 10 か所の行番号・行き先が表にそろう。状態(環境変数・記録・帳簿・状態の記録)ごとに書き手と読み手が並び、矛盾は見当たらない。

@takemi-ohama

Copy link
Copy Markdown
Contributor Author

🔧 /ndf:fix サマリ | round 5 | commit 4edcfe4

対応件数: critical=0 / major=2 / minor=0(合計 2 件)
決着: 2 件 / 見送り: 0 件 / 却下: 0 件
CI: PENDING

@takemi-ohama takemi-ohama left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 cross-review | round 6 | claude | REQUEST_CHANGES

run_log.diag を「改行を足さない」に変えたことで、改行を持たない文を渡す呼び出し側(print の置き換えと、200 字に切った short)の文が端末で次の出力とつながり、受け入れ条件 6 を崩す。呼ぶ側が改行を持たせる決まりを設計に足す。

Comment thread issues/issue-2338-design.md Resolved
Comment thread issues/issue-2338-design.md Resolved

@takemi-ohama takemi-ohama left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 cross-review | round 6 | codex | APPROVE

対象差分に修正が必要な critical / major の指摘はありません。判断の根拠: Value 1・Value 3・Value 7。

@takemi-ohama

Copy link
Copy Markdown
Contributor Author

🔧 /ndf:fix サマリ | commit 8249098

対応件数: critical=0 / major=0 / minor=0(合計 0 件)
決着: 2 件 / 見送り: 0 件 / 却下: 0 件
CI: NONE

@takemi-ohama

Copy link
Copy Markdown
Contributor Author

設計の承認ゲート 1 で利用者が差し戻した(2026-11-05)。「直して出し直す」の指摘が設計の手順に届かない不具合(#2510)のため、3 回出し直しても範囲が変わらなかった。#2510 を直した後に #2338 を選び直す。この PR は閉じずに残す。

This branch has not been deployed

No deployments
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