Skip to content

[Fix] scan_spec_ids の duplicates を共有採番モードに追随させ同一履歴由来の誤報告を解消 (#181)#185

Merged
BlueEventHorizon merged 1 commit into
developfrom
fix/181-shared-numbering-duplicates
Jul 7, 2026
Merged

[Fix] scan_spec_ids の duplicates を共有採番モードに追随させ同一履歴由来の誤報告を解消 (#181)#185
BlueEventHorizon merged 1 commit into
developfrom
fix/181-shared-numbering-duplicates

Conversation

@BlueEventHorizon

Copy link
Copy Markdown
Owner

概要

Issue #181 の修正。find_duplicates() が full ID 文字列 × ブランチ数だけで重複判定していたため、共有番号衝突(ADR-032 vs DES-032)を検出できず、逆に同一履歴由来の正常な ID を大量に誤報告していた。

変更内容

  • 重複判定キーの変更: (prefix, 番号) をキーとし、--share-prefixes 指定時は番号のみをキーにする(prefix 違い・同番号を衝突として検出)
  • 同一履歴由来の除外: 「同じキーを異なるファイルパスが主張する」場合のみ衝突として報告。同一パスが複数ブランチに存在するだけのケースは正常として除外
  • 出力スキーマ拡張: duplicates エントリに ids / paths を追加(id / branches は後方互換で維持)
  • 番号の int 正規化: DES-032DES-32 を同番号の衝突として扱う
  • prefix 境界の追加: (?<![A-Za-z0-9-]) により COMMON-DES-001 のような別名前空間 ID が DES-001 として誤抽出されるのを防止(本修正の実測検証時に検出した残存ノイズ。これを除去しないと duplicates が警告として機能しないため本 PR に含めた)
  • SKILL.md 更新: next-spec-id の出力スキーマ例・セマンティクス説明、start-design の警告文言を新仕様に整合

受け入れ基準との対応

  • ADR-032_foo.mdDES-032_bar.md がある場合、--share-prefixes ADR,DES で共有番号衝突が検出される → test_share_prefixes_detects_shared_number_collision
  • develop と current branch に同一ファイル由来で存在する既存 ID は duplicate 警告にならない → test_share_prefixes_same_history_ids_not_reported
  • start-design/SKILL.md の「duplicates が空でない場合は警告」の意味と実装が一致 → SKILL.md に衝突セマンティクスを明記

実リポジトリでの実測

修正前: duplicates 22 件(すべて同一履歴由来の誤報告 + COMMON-DES 誤抽出)
修正後: duplicates 0 件、next_id: DES-034 / max_number: 33 は不変

テスト

python3 -m unittest discover -s tests -p 'test_*.py'
Ran 1305 tests ... OK (skipped=1)

dprint check pass。

Closes #181

🤖 Generated with Claude Code

find_duplicates() が full ID 文字列 × ブランチ数だけで重複判定していたため、
(1) --share-prefixes 指定時に ADR-032 / DES-032 のような共有番号衝突を検出できず、
(2) 同一履歴由来で全ブランチに存在する正常な ID を大量に duplicate 誤報告していた
(Issue #181)。

- 重複判定キーを (prefix, 番号) に変更し、共有採番モードでは番号のみをキーにする
- 「同じキーを異なるファイルパスが主張する」場合のみ衝突として報告
  (同一パスの複数ブランチ出現=同一履歴由来は正常として除外)
- duplicates エントリに ids / paths を追加(id / branches は後方互換で維持)
- 番号は int 正規化して比較(DES-032 と DES-32 は同番号の衝突)
- prefix 直前に境界 (?<![A-Za-z0-9-]) を追加し、COMMON-DES-001 のような
  別名前空間 ID の DES としての誤抽出を防止(本修正の実測検証で検出した残存ノイズ)
- next-spec-id / start-design SKILL.md の duplicates セマンティクス記述を更新

実リポジトリでの実測: duplicates 22 件(全て誤報告)→ 0 件、next_id は不変。

Closes #181

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@BlueEventHorizon BlueEventHorizon self-assigned this Jul 7, 2026
@BlueEventHorizon
BlueEventHorizon merged commit faa62d4 into develop Jul 7, 2026
1 check passed
@BlueEventHorizon
BlueEventHorizon deleted the fix/181-shared-numbering-duplicates branch July 7, 2026 05:57
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