Skip to content

build-proposal.py: 前の出力を消せないときは traceback・1 でなく 2 で止まり、残ったものを名指しする(#440) - #477

Merged
hdknr merged 9 commits into
mainfrom
issue/440-remove-owned-unlink
Oct 28, 2026
Merged

hdknr merged 9 commits into
mainfrom
issue/440-remove-owned-unlink

Conversation

@hdknr

@hdknr hdknr commented Oct 27, 2026

Copy link
Copy Markdown
Owner

Fixes #440

cruise #474 の周(不在の周。/dev-loop:cruise 474 --absent)。

変更

  • build-proposal.py の remove_owned が、消せなかった出力を(理由つきで)返す。消せなかったものがあれば印 .build-proposal を残す(次の実行が消せるように)
  • main は前の出力を消せなければ、作らずに 2 で止まり、消せなかった出力を名指しする(traceback・1 にならない。照合の 1 と取り違えない)
  • write_outputs の書きかけの片付けで消せなくても、2 つ目の例外を逃がさず「書きかけを消せなかった」と名指しして 2
  • python3.12 の is_file が辿れない先の symlink で例外を投げるので、is_symlink を先に見る(1 パス目の CR1)
  • 回帰テスト: 書けない出力先(mode 555)の --out の親・--out のディレクトリ・書きかけの片付け・一部だけ消せない・辿れない先の symlink の試料と、変異 7 件。この python で当てなかった変異は OK の件数に数えず名指しする(2 パス目の P2-2)
  • references/tree.md に 1 文。spec-loop 0.26.0 → 0.26.1(patch)

確かめたこと

  • Issue の再現手順(mode 555 の出力先に有効な印と前の出力)を修正前後で当てた: 修正前 exit=1(traceback)→ 修正後 exit=2・2 つを名指し・印と出力が残る(python3.12)
  • scripts/test-build-proposal.py: python3.12 OK: 試料 82 件・変異 97 件、python3.14 OK: 試料 82 件・変異 96 件(当てていない 1 件——3.12 でだけ死ぬ変異)
  • scripts/check-all.py: 52/52(main を取り込んだ後も)

関門

直す線: 既定(cruise の確かめた線)。

パス Verifier(sonnet) /code-review(high)
1 パス目 反証 1 件(V1) 指摘 7 件(CR1〜CR7)
2 パス目 反証 0 件 指摘 7 件(P2-1〜P2-7)
狭いパス(P2-2 の修正) 反証 0 件・所見 1 件 —

直したのは CR1・CR5(1 パス目)、P2-2(2 パス目)。採否の表は docs/plans/issue-440.md の「既知の限界・決着済みの論点」。

残課題(直していない指摘)

いずれも受入基準を破らない、または実物で示せていないもの:

人間に判断をお願いするもの(狭いパスの所見)

  • OK の行の件数の表示(- len(skipped) と名指し)を壊しても、どのテストも赤にならない——表示を判別する試料が無い

未証明

  • root で走らせると mode 555 でも消せるので、試料が判別しない。試料は「消せないこと」を先に確かめ、消せたら問題として返す(緑に化けない)。CI は root でない前提

マージ

不在の cruise はここで止まる。 このリポジトリのマージは GitHub Pages を再デプロイするので、確かめた線 マージ = 関門を通ればマージ が効かない(本番反映。#476 で扱う)。

🤖 Generated with Claude Code

hdknr and others added 9 commits October 27, 2026 18:40
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…とを試料で見る(#440 の 1 パス目)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.

spec-loop: build-proposal.py の remove_owned が unlink の失敗で traceback・1 になり、古い出力が残る

1 participant