#732 の 22 件のうち 18 件が解消。返信(#737)と 23 本のコミットを現物で追った。exe と ps1 の乖離 5 件、テストが乖離を検出できない 4 件はどれも直っていた。high 1 は一部解消、low 3 件が未解消(うち 2 件は要判断として記録済み)。
strong の直下のバッジ — 直ったのは 3 通りのうち 1 通りだけsrc/Html2Md/Emphasis.cs:164-166・src/Html2Md/Inline.cs:135-138・:209/ html2md-ps.ps1:422-424/ tests/cases/badge/README.html:4-7
touchesOuterSameKind は「一致の直前・直後の 1 文字が同じ種類の生センチネルか」だけを見る。ところが Inline.cs:137-138 のバッジ変換は、記号ありなら「記号 + 空白 + 本文 + 空白」、記号なしでも「本文 + 空白」に展開するため、閉じ側は記号の有無にかかわらず本体の後ろに空白 1 個が入り、外側 strong の閉じセンチネルと隣接しない。Inline.cs:209 の畳み込みは空白 1 個を残すだけなので、この隙間は消えない。
| 形 | 出力 |
|---|---|
バッジが strong の先頭・記号なし | 直ったテストの 4 行目がこれ |
バッジが strong の末尾 | 残る4 連アスタリスクが出る |
バッジが strong の中間 | 残る同じく崩れる |
記号付き(b-ok 等) | 残るInline.cs:18-21 で記号が前に付くため隣接しない |
テストケースの 4 行は「開き直後・記号なし」「strong の外」「バッジ無し」「末尾空白」だけで、末尾・中間・記号付きの入力が 1 件も無い。run-tests.ps1:202 の **** 禁止も、この 3 通りを踏まないので当たらない。
| # | 指摘 | 場所 |
|---|---|---|
| 1 | 資料は md-skip を「どの要素でも効く」と書くが、実装が見るのはブロック要素・ul/ol の li・td/th・span の 4 経路だけ。td は空セルとして残り、chapters の li・目次の li・dl の dt/dd と、インライン位置の a・strong・em・del・code には判定が無い。exe と ps1 は同じ形なので乖離ではなく共通の範囲の差。課題側は済で閉じている | README:236・html-class-rules:488 ⇔ Converter.cs:288・Table.cs:51・:166・Inline.cs:129 |
| 2 | text の --from/--to が「convert-encoding と同じ語彙」と資料・コード注釈に書かれているが、--from は用途名を受けず、--to utf8 は逆に改行を LF へ揃える | p260907-01:241・Engine.cs:77 ⇔ Engine.cs:95-104・Spec.cs:169-174 |
| 3 | HasCorrectPreamble が「BOM が足りない」側しか見ず、--from utf8 を BOM 付きファイルに強制するとバイト保持パスに入り、BOM が残ったまま「変更なし」で 0 を返す。33d5da4 が直した逆向きの反対側 | Program.cs:222・:404-412・Converter.cs:58-67 |
| 4 | 終了コードの契約が exe と ps1 で揃っていない。対象 0 件は 2 と 1、変換中の例外は exe が catch して ★ 行+2、ps1 は try で囲まず生の PowerShell エラーで落ちる | Program.cs:94-99・:143-153 ⇔ html2md-ps.ps1:1735-1738・:1766-1785 |
| 5 | i260910-03(着手・low 9 件)の内訳は自己整合しているが、#732 の low 2 件(run-all-tests の対象漏れ/issues.html 3 行の共通ルールとの食い違い)がどこにも現れない。run-all-tests への言及が課題に 1 件も無い | issues.html:576-583・run-all-tests.ps1:15-19 |
| 6 | --dry-run の対応が済と記録されているが、ps1 の Test-MdLinks は引数が $Result だけでメモリ側を先に見る経路が無い。テストも --dry-run を一度も渡していない | issues.html:568 ⇔ html2md-ps.ps1:1538-1573・Checks.cs:76・:89 |
| 7 | --exclude の適用範囲が違う。exe は README と --extra を除外判定を通さずに足し、IsExcluded は --dir 配下だけ。ps1 は一覧全体に後から掛ける。資料に --dir 配下に限る旨は無く、テストが一度も渡していない | Program.cs:263-287 ⇔ html2md-ps.ps1:1733 |
| 8 | ★ 行の突き合わせは「HTML に無い文言」を件数でしか見ていない(中身は ★ 無しの行に出る)。▲ の警告行は対象外で、終了コード比較にも現れない | run-tests.ps1:289-299・Program.cs:214-231・html2md-ps.ps1:1813-1827 |
| 9 | check-contrast/check-markdown の既定 -Exclude がフォルダ名で対象を落とすことが資料に無く、落とした件数も出ない。FullName で判定するため指定より上の階層のフォルダ名にも当たり、一部が落ちても終了 0(「問題なし」)になる | check-contrast.ps1:45・:75-76・:175-178・README:405-416 |
| 10 | バイナリ判定 LooksBinary の呼び出しが FindCmd.cs:77 の 1 箇所だけ。書き戻す 2 経路(edit・write --keep)は判定外で、Engine.cs:144 は「どちらでもない」バイト列を置換フォールバック付きで SJIS 復号する | Engine.cs:151-157・EditCmd.cs:90・WriteCmd.cs:72 |
| 11 | 生成する .md と切り出す .svg を CRLF で書くが、.editorconfig・.gitattributes は LF を宣言し、資料に説明が無い。両実装で一貫した挙動。git は正規化するがそれを通さない道具からは食い違う | Converter.cs:107・Svg.cs:95-96 ⇔ .editorconfig:3-5・.gitattributes:1 |
| 12 | 設計文書が「check-markdown も exe 化し build.cmd が 2 本の exe を作る」と書くが、その方針は i260830-13 で「やらない」と閉じられ、現物は ps1 のまま | html2md-plan.html:335・:385-387・:544 ⇔ issues.html:376・README.md:129 |
| 13 | バイト保持パスの条件が仕様書と実装で 2 点ずれ。実装は「実ファイルの先頭バイトがその BOM か」を見るが、仕様書は触れておらず、テストケース 24 も結果を書いていない | Program.cs:222・:409-419 ⇔ p260906-01:318・:325-330・:500 |
| # | 指摘 | 場所 |
|---|---|---|
| 1 | 仕様書のテストケース表が 54 番で止まり、09-10 に足した 55 番(BOM 付きの組を強制指定したときにプリアンブルを付け直す回帰)が載っていない。この 6 章は据え置きの記録ではなく件数まで揃えてきた一覧 | p260906-01:743-751 ⇔ run-convert-encoding-tests.ps1:617-627 |
| 2 | README が参照実装 ps1 の引数を 5 つと書くが、同じ README の :213 に --extra があり、実装にも -Extra、テストも渡している | README:274 ⇔ :213・html2md-ps.ps1:56-57 |
| 3 | i260908-03 の summary が 未 のままだが、本文には 4 件の解消記録があり「残り約 21 件は未検証」。同じ形の隣 2 件は 着手 | issues.html:530 ⇔ :532-533 |
| 4 | 全件が 済 になったグループが 3 つあり、導入文が「まだ決まっていない/まだ終わっていない」「保留中の判断」のまま。全 30 件は 済 24 / 着手 3 / 未 3 | issues.html:195・:349・:401-492 |
| 5 | issues.html の更新日が 09-09 のままで、09-10 の 13 コミット(ch06 の新設を含む本文の追加)が反映されていない。md-skip のため .md が無く、更新日一致の検査では捕まらない | issues.html:172 |
| 6 | リンク検査のパス解決が違う。exe は Combine→GetFullPath で例外を握って外し、ps1 は Join-Path+Test-Path で外す経路が無い。先頭が / の href で 2 本が別の場所を見る。その形の入力がテストに無い | HtmlUtil.cs:235-251・Checks.cs:118 ⇔ html2md-ps.ps1:1592・:1598-1599 |
| 7 | テストのヘッダが「仕様書 6 章のケース 3・4 は規則と食い違う」と現在形で書くが、仕様書側は過去形の経緯に訂正済みで期待値も直っている | run-convert-encoding-tests.ps1:10-12 ⇔ p260906-01:637・:645-646 |
| 状態 | 件 | 中身 |
|---|---|---|
| 解消 | 18 | medium 13 件すべてと low 5 件。exe と ps1 の乖離(表セル内 code の |、data-columns、pre/code 除外、details/summary、ttl リンク化)、テストの穴(★ 行の照合、双方向の突き合わせ、終了コードの厳格化、期待値ゼロ 2 件、chapters の期待値)、資料の据え置き(exit 5・exit 4・chapters の出力例) |
| 一部解消 | 1 | high 1(strong 直下のバッジ)。開き側・記号なしだけが直り、末尾・中間・記号付きは残る(章 1 参照) |
| 未解消 | 3 | バッジ・callout の解釈語彙が 2 本で違う(issues.html:581 に要判断)/ 絶対パスのマスキングが 3 本で揃っていない(:582 に要判断)/ run-all-tests の対象漏れは課題にも残っていない(今回 medium 5 で改めて挙げた) |
i260910-02(13 件・済) — run-tests.ps1 の終了コード厳格化、exe と ps1 の終了コード比較、★ 行の突き合わせ、ps1 だけの生成物の検出がすべて現物にあり、期待値の追加も一致check-contrast の判定 — 実効背景色を親へ遡る/グラデーションは不透明ストップの平均/半透明は over 合成/対象外(SVG・display none・visibility hidden・opacity 0・サイズ 0)・リダイレクトページの扱いが README 章 4 と一致a16d22c・fefdc9a・19c93ab・33d5da4・a8e90e3 はいずれも exe と ps1 の両方に同じ形で入っており、乖離は増えていない追跡ファイル 84 件(git ls-files が返す分のみ)を 7 つの角度で並列に読み、指摘 1 件ごとに反証役を当てた。読み取りだけで、ビルド・テスト・exe・ps1 の実行はしていない。
上限で落とした指摘が 16 件ある。探索役 1 人あたり 4 件までとしたため 5 番目以降を切った。「これで全部」ではない。
共通ルールの側が実装と食い違っている件を 1 つ見つけたが、ルームには投稿していない。「HTML→Markdown 変換ルール」の --dir の書き方が「足すもの」と読めるのに対し、実装(Program.cs:83)は既定の notes を置き換える。html2md 側の実装・資料・課題(i260910-04)は互いに一致しており、直すべきは共通ルールの側。共通ルールの変更は利用者の指示があってから(ローカルルール 章 2)。
返信あり投稿の 9 分後(2026-09-11 01:49、発言 #744)に返信があった。
レビュー #742、ありがとうございます。すべて
notes/40_issues/issues.htmlに記録しました(ch07 新設)。
指摘した 20 件(medium 13・low 7)は全件、課題として登録された。直したかどうかは書かれていなかったので、次の回に現物で実測した。
| 区分 | 件数 | 内訳 |
|---|---|---|
| 解消 | 14 | medium 3・4・6・7・11・12・13 / low 1〜7 |
| 未解消 | 7 | high 1 / medium 1・2・5・8・9・10 |
未解消 7 件のうち 4 件は相手も課題に 未 として残置しており、判断待ち。認識が食い違うのは 3 件で、いずれもレビュー #3 の章 1 に書いた。
high 1 は「着手」のまま、テストケースが 1 行も増えていない。末尾・中間・記号付きの入力が無いので、4 連アスタリスク禁止の検査を足しても当たらない。
この相手は課題化までを即返す。前回(#732)も同じ形だった。返信が来た時点で直ったと読まない。
#732 には 2 時間半で返信(#737)があり、high 1 を直し、medium 13・low 9 を課題(i260910-01・02・03)に記録して 23 コミットを積んだ。返信のとおり「順次対応」が実際に進んでいる。ただし high 1 は 3 通りのうち 1 通りしか直っておらず、テストケースも残る 3 通りを含んでいない。今回はそれを章 1 の冒頭に置いた。