前回(#742)から 21 本のコミットが入った。TypeScript 移植・check-public 新設・psh 追加という大きな変更である。7 観点で並列に読み、17 件の候補に反証を当てて 12 件が残った。
| 区分 | 件数 | 内訳 |
|---|---|---|
| 解消 | 14 | medium 3・4・6・7・11・12・13 / low 1〜7 |
| 未解消 | 7 | high 1 / medium 1・2・5・8・9・10 |
未解消 7 件のうち 4 件(medium 2・5・9b・10)は相手も課題に 未 として残置しており、判断待ちである。認識が食い違うのは 3 件。
| 件 | 相手の記録 | 現物 |
|---|---|---|
| high 1 | 着手 | テストケースが前回から 1 行も増えていない。末尾・中間・記号付きの入力が 1 件もなく、4 連アスタリスク禁止の検査もその 3 通りを踏まない |
| medium 1 | 済 | インライン位置が課題一覧から漏れている。資料も「その要素に md-skip を付ける」と一般的に書いたまま |
| medium 8 | 解消 | 指摘の核(内訳が ★ の付かない行に出る)は今も比較対象外。▲ の警告行も同じ |
除外式の接尾(添字・プロパティ・呼び出し)が * 量化子なので 0 個でも成立する。英字始まりで英数字と下線だけからなる値がすべて素通りする。先頭 1 文字が英字か数字かで結果が反転する。
計画と実装の向きが逆である。計画は「誤検出で止まる不便より、見逃す害のほうが大きい。迷ったら止める側に倒す」と書くが、実装と課題の記録は「誤検出を 0 件にした」と通す側に倒している。除外のコメントが挙げる誤検出例はすべて接尾を持つので、* を + に変えても材料の「当たらない 6 例」は 1 つも当たらない。
| # | 対象 | 何が |
|---|---|---|
| 2 | テスト | 回帰テスト 3 本が出荷物ではなく C# の exe を見ている。-Target は用意されているが、リポジトリ全体でコメント中の例示にしか現れない。移植では 16 ケース中 8 ケースが落ちた実績があり、その検出網が出荷物に当たっていない |
| 3 | README | 「実体は exe」のまま。ビルド表の出力名 3 つはどれも生成されない。実行に bun か node が要ることが README のどこにも書かれていない |
| 4 | check-public | 実体パスの判定が 1 行の最初の 1 件しか見ない(g フラグ無し)。伏せ方を説明する資料ほどこの並びになるので、当たってほしい文書ほど外す |
| 5 | check-public | 拡張子アローリストで、拡張子の無いファイルが無言で対象外。このリポジトリ自身で 10 ファイルが該当。.npmrc ・ .netrc も落ちる |
| 6 | text edit | 未割り当ての SJIS 組(2 バイト目が 0x80 以上)でバイト位置が 1 つずれる。デコード側の検査を一度も呼んでいない(convert-encoding は呼んで止める)。エラーなし・exit 0 |
| 7 | psh | 1MB を超える出力で spawnSync が ENOBUFS を立て、「起動できません」と誤報告して exit 2。PowerShell は成功している。原因表示が事実と逆 |
| 8 | check-markdown | 移植で 184 行を新規に書き起こしたが、** の検出にテストが無い。API を伴わない純粋な文字列処理なので、不採用理由(回数制限)が当てはまらない |
| 9 | タグ対応仕様 | 「検証の方法」が削除済みの参照実装 ps1 を前提にしたまま。表の形で存在しないファイルへの作業指示になっている |
| # | 対象 | 何が |
|---|---|---|
| 10 | convert-encoding | TS 版で path.extname がドットで始まる名前に空を返すため、.gitignore ・ .editorconfig の LF 規約が死んだ分岐になっている。C# 版とは違う答えを返す |
| 11 | check-public | 見なかったファイルがあっても終了コードに効かない。5 番を直すと意味が反転するので、同時に設計し直す必要がある |
| 12 | ai-agent-tools | md-skip の span が入れ子で中身を取りこぼす。閉じタグは最終段で消えるため壊れた形にもならず気づけない |
候補 17 件のうち 5 件を落とした。うち 2 件は当初 high として報告しかけたものである。
| 棄却したもの | 理由 |
|---|---|
| golden が実装の出力から作られている | 担保が厚かった。独立実装 2 本が一致した状態で固定してから ps1 を消す順序が先に決められ、全 15 ケースに手書きの期待値が別途あり、icon-link は「期待値を手で書いてから実装した」と記録されている。引用した行番号も違っていた |
| html2md の検査が片方向 | 既に課題に記録済みで、「設計の前提に触れる変更なので利用者の判断を待つ」と明記されていた |
| 入力 HTML の文字コードを検査しない | 規約違反の入力が前提。共通ルールは HTML を BOM 付き UTF-8 と定めており、規約違反は convert-encoding --check が受け持つ分担になっている |
| ファイル直接指定で拡張子を見ない | 契約どおりの動作。コメントと --help が明示しており、別の拡張子を名指しで渡せる余地でもある |
| SVG 切り出しでルート属性が落ちる | 規約に無い書き方が前提。共通ルールも html2md の仕様書も、ルートに描画属性を書く形を想定していない。現物の SVG にも使われていない |
check-public のテストが、今回見た中で最も良い形だった。期待値を手で書いたことを冒頭に明記し、当たる 4 箇所・当たらない 6 箇所を分けて誤検出の件数まで数え、検出値そのものを出力に載せない検証まで入っているtmp/ を先頭で削除して作り直す)実行していない。テスト・exe・node・bun・ブラウザ・GitHub API とも未実行。CLI のオプションはソースの定義を読んで突き合わせた。7 番の psh は bun 経路で再現するかを確かめていないので、その旨を投稿にも書いた。
git ls-files が返す追跡ファイルだけ同じ回に行ったルールの点検で 10 件が出たが、共通ルール自身の食い違いなのでルームには投稿していない(ローカルルール)。利用者に提示して判断を待つ。
返信待ち投稿から間がない。