Skip to content

fix: mille init accuracy — same-name dir separation, .venv exclusion, Python internal imports#55

Merged
makinzm merged 8 commits into
mainfrom
fix/init-accuracy
Mar 8, 2026
Merged

fix: mille init accuracy — same-name dir separation, .venv exclusion, Python internal imports#55
makinzm merged 8 commits into
mainfrom
fix/init-accuracy

Conversation

@makinzm

@makinzm makinzm commented Mar 8, 2026

Copy link
Copy Markdown
Owner

Summary

Fix 1 — 異サブプロジェクトの同名ディレクトリを分離 (src/usecase/init.rs)

crawler/src/domainingest/src/domain が1つのレイヤーにまとめられていた問題を修正。find_distinguishing_prefix() が最初に差異があるパスセグメントを prefix として使用し、crawler_domain / server_domain のように分離する。統合はユーザーが手動で行う。

Fix 2 — .venv 等をスキャン除外 (src/infrastructure/repository/fs_source_file_repository.rs)

mille check 時に .venv/venv/node_modules/target 等を含むパスをフィルタリング。apps/** のような glob パターンを生成してもエラーにならない。

Fix 3 — Python サブモジュールの external_allow マッチング (src/domain/service/violation_detector.rs)

external_allow = ["matplotlib"]matplotlib.pyplot を許可しなかった問題を修正。Python ファイルは . 区切り、Rust/Go は :: 区切りで top-level 名を抽出。

Fix 4 — mille init[resolve.python] package_names を生成 (src/usecase/init.rs, src/infrastructure/resolver/python.rs)

package_names が未設定だと import domain.entity が External と誤分類され、生成直後の config で mille check がエラーになる問題を修正。

  • generate_toml() がレイヤーパスの base dir から package_names を自動生成
  • Python リゾルバーがインポート元ファイルのパスから src_root を自動導出 → モノレポでも resolved path がレイヤーパターンにマッチ

Fix 5 — src_root を省略可能に + external_allow から内部パッケージ名を除外 (src/domain/entity/config.rs, src/usecase/init.rs)

  • PythonResolveConfig.src_root#[serde(default)] を付加 → [resolve.python]src_root がなくても parse エラーにならない(型で省略可能を明示)
  • generate_toml()package_names に含まれる名前を external_allow から除外 → domain 等の内部パッケージが external_allow に混入しない

Test plan

  • test_infer_layers_groups_dirs_by_base_name — 異サブプロジェクトの同名ディレクトリが別レイヤーになる
  • test_infer_layers_separate_same_name_dirs_different_subproject — crawler/ingest/server が 3 つの *_domain レイヤーになる
  • test_collect_skips_venv_paths.venv/lib/fake.py が除外される
  • test_detect_external_python_submodule_allowedmatplotlib.pyplotexternal_allow = ["matplotlib"] で許可される
  • test_detect_external_python_submodule_violation — top-level が allow にない場合は violation
  • test_detect_external_rust_colon_still_works — Rust :: 区切りのリグレッションなし
  • test_generate_toml_python_adds_resolve_section — Python 時に [resolve.python] package_names が出力される
  • test_resolver_monorepo_absolute_import_uses_src_root — モノレポで resolved path が正しく生成される
  • test_python_resolve_config_without_src_root_parsessrc_root なしの config が parse できる
  • test_generate_toml_python_filters_package_names_from_external_allow — 内部パッケージ名が external_allow に混入しない
  • 全 230 テスト通過(リグレッションなし)

🤖 Generated with Claude Code

@makinzm makinzm changed the title fix: mille init accuracy — same-name dir separation, .venv exclusion, Python submodule allow fix: mille init accuracy — same-name dir separation, .venv exclusion, Python internal imports Mar 8, 2026
@makinzm makinzm merged commit 57e8c9c into main Mar 8, 2026
8 checks passed
@makinzm makinzm deleted the fix/init-accuracy branch March 8, 2026 19:51
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