Skip to content

ConsoleCore trait 定義と core/ → nes/core/ 移動#180

Merged
chalharu merged 2 commits into
masterfrom
phase-2a
Jun 14, 2026
Merged

ConsoleCore trait 定義と core/ → nes/core/ 移動#180
chalharu merged 2 commits into
masterfrom
phase-2a

Conversation

@chalharu

Copy link
Copy Markdown
Owner

変更内容

contract/core に型定義を追加

  • ConsoleCore trait(render_frame / audio_samples / attach_device 等 13メソッド)
  • GpuCommand enum(Blit / PaletteDecode / UploadPalette / UploadTexture / DrawMesh)
  • GpuCommandList
  • CoreConfig / CoreCapabilities / VideoSignalKind
  • EmuCommand enum(RenderFrame / Pause / Resume / Reset / Quit)
  • CoreError
  • AudioBackend / Device / PortIo / DeviceKind(仮置き、Phase 3/4で正式定義)
  • 依存: nerust_screen_video(FrameBuffer), thiserror

core/ → nes/core/ 移動

  • NESのエミュレータ本体(PPU/CPU/APU)をターゲット構成の nes/core/ に移動
  • ワークスペース Cargo.toml の members / default-members / path 参照を更新
  • パッケージ名 nerust_core は変更なし(use 文の修正不要)

確認

  • cargo check: 警告0
  • cargo test -p nerust_core: 137 passed
  • cargo test -p nerust_console: 15 passed
  • cargo test -p nerust_screen_buffer: 3 passed

@linter-service-checker

linter-service-checker Bot commented Jun 13, 2026

Copy link
Copy Markdown

linter-service

1 of 7 selected linter(s) reported issues or failed; 1 additional linter(s) reported warnings.

Linter Result Checked Passed Issues
rustfmt ✅ Pass 112 files 112 0
cargo-clippy ✅ Pass 112 files 112 0
cargo-deny ⚠️ Warning 8 Cargo projects 7 1
cargo-coupling ❌ Issues 7 Cargo projects n/a n/a
cargo-symbol-length ✅ Pass 8 Cargo projects 8 0
taplo ✅ Pass 8 files 8 0
editorconfig-checker ✅ Pass 120 files 120 0
Show checked targets for rustfmt

Target file paths:

  • cartridge/data/src/ines.rs
  • cartridge/data/src/lib.rs
  • cartridge/data/src/nes20.rs
  • console/src/controller.rs
  • console/src/lib.rs
  • console/src/runner/data.rs
  • console/src/runner/persistence.rs
  • console/src/runner/runtime.rs
  • console/src/state.rs
  • console/src/state/tests.rs
  • contract/controller_runtime/src/lib.rs
  • contract/core/src/lib.rs
  • input/nes_runtime/src/lib.rs
  • nes/core/src/apu/audio_regression_test.rs
  • nes/core/src/apu/dmc.rs
  • nes/core/src/apu/envelope.rs
  • nes/core/src/apu/fft_test.rs
  • nes/core/src/apu/frame_counter.rs
  • nes/core/src/apu/length_counter.rs
  • nes/core/src/apu/mod.rs
  • nes/core/src/apu/noise.rs
  • nes/core/src/apu/pulse.rs
  • nes/core/src/apu/timer.rs
  • nes/core/src/apu/triangle.rs
  • nes/core/src/cart_device.rs
  • nes/core/src/cartridge/mapper/action53.rs
  • nes/core/src/cartridge/mapper/axrom.rs
  • nes/core/src/cartridge/mapper/bnrom.rs
  • nes/core/src/cartridge/mapper/cnrom.rs
  • nes/core/src/cartridge/mapper/color_dreams.rs
  • nes/core/src/cartridge/mapper/crazy_climber.rs
  • nes/core/src/cartridge/mapper/fme7.rs
  • nes/core/src/cartridge/mapper/gnrom.rs
  • nes/core/src/cartridge/mapper/mapper78.rs
  • nes/core/src/cartridge/mapper/mmc2.rs
  • nes/core/src/cartridge/mapper/mmc3/mmc3_nec.rs
  • nes/core/src/cartridge/mapper/mmc3/mmc6.rs
  • nes/core/src/cartridge/mapper/mmc3/mod.rs
  • nes/core/src/cartridge/mapper/mmc3/shared.rs
  • nes/core/src/cartridge/mapper/mmc3/standard.rs
  • nes/core/src/cartridge/mapper/mmc3/txsrom.rs
  • nes/core/src/cartridge/mapper/mmc5.rs
  • nes/core/src/cartridge/mapper/mmc5/audio.rs
  • nes/core/src/cartridge/mapper/mmc5/ppu.rs
  • nes/core/src/cartridge/mapper/mmc5/program.rs
  • nes/core/src/cartridge/mapper/mmc5/tests.rs
  • nes/core/src/cartridge/mapper/mod.rs
  • nes/core/src/cartridge/mapper/nina001.rs
  • nes/core/src/cartridge/mapper/nrom.rs
  • nes/core/src/cartridge/mapper/sxrom.rs
  • ... 62 more path(s) omitted
Show checked targets for cargo-clippy

Target file paths:

  • cartridge/data/src/ines.rs
  • cartridge/data/src/lib.rs
  • cartridge/data/src/nes20.rs
  • console/src/controller.rs
  • console/src/lib.rs
  • console/src/runner/data.rs
  • console/src/runner/persistence.rs
  • console/src/runner/runtime.rs
  • console/src/state.rs
  • console/src/state/tests.rs
  • contract/controller_runtime/src/lib.rs
  • contract/core/src/lib.rs
  • input/nes_runtime/src/lib.rs
  • nes/core/src/apu/audio_regression_test.rs
  • nes/core/src/apu/dmc.rs
  • nes/core/src/apu/envelope.rs
  • nes/core/src/apu/fft_test.rs
  • nes/core/src/apu/frame_counter.rs
  • nes/core/src/apu/length_counter.rs
  • nes/core/src/apu/mod.rs
  • nes/core/src/apu/noise.rs
  • nes/core/src/apu/pulse.rs
  • nes/core/src/apu/timer.rs
  • nes/core/src/apu/triangle.rs
  • nes/core/src/cart_device.rs
  • nes/core/src/cartridge/mapper/action53.rs
  • nes/core/src/cartridge/mapper/axrom.rs
  • nes/core/src/cartridge/mapper/bnrom.rs
  • nes/core/src/cartridge/mapper/cnrom.rs
  • nes/core/src/cartridge/mapper/color_dreams.rs
  • nes/core/src/cartridge/mapper/crazy_climber.rs
  • nes/core/src/cartridge/mapper/fme7.rs
  • nes/core/src/cartridge/mapper/gnrom.rs
  • nes/core/src/cartridge/mapper/mapper78.rs
  • nes/core/src/cartridge/mapper/mmc2.rs
  • nes/core/src/cartridge/mapper/mmc3/mmc3_nec.rs
  • nes/core/src/cartridge/mapper/mmc3/mmc6.rs
  • nes/core/src/cartridge/mapper/mmc3/mod.rs
  • nes/core/src/cartridge/mapper/mmc3/shared.rs
  • nes/core/src/cartridge/mapper/mmc3/standard.rs
  • nes/core/src/cartridge/mapper/mmc3/txsrom.rs
  • nes/core/src/cartridge/mapper/mmc5.rs
  • nes/core/src/cartridge/mapper/mmc5/audio.rs
  • nes/core/src/cartridge/mapper/mmc5/ppu.rs
  • nes/core/src/cartridge/mapper/mmc5/program.rs
  • nes/core/src/cartridge/mapper/mmc5/tests.rs
  • nes/core/src/cartridge/mapper/mod.rs
  • nes/core/src/cartridge/mapper/nina001.rs
  • nes/core/src/cartridge/mapper/nrom.rs
  • nes/core/src/cartridge/mapper/sxrom.rs
  • ... 62 more path(s) omitted

Cargo project targets:

  • cartridge/data/Cargo.toml
  • console/Cargo.toml
  • contract/controller_runtime/Cargo.toml
  • contract/core/Cargo.toml
  • input/nes_runtime/Cargo.toml
  • nes/core/Cargo.toml
  • rom_test/Cargo.toml
Show checked targets for cargo-deny

Target file paths:

  • Cargo.lock
  • Cargo.toml
  • cartridge/data/Cargo.toml
  • console/Cargo.toml
  • contract/controller_runtime/Cargo.toml
  • contract/core/Cargo.toml
  • input/nes_runtime/Cargo.toml
  • nes/core/Cargo.toml
  • rom_test/Cargo.toml

Cargo project targets:

  • Cargo.toml
  • cartridge/data/Cargo.toml
  • console/Cargo.toml
  • contract/controller_runtime/Cargo.toml
  • contract/core/Cargo.toml
  • input/nes_runtime/Cargo.toml
  • nes/core/Cargo.toml
  • rom_test/Cargo.toml
Show checked targets for cargo-coupling

Target file paths:

  • cartridge/data/src/ines.rs
  • cartridge/data/src/lib.rs
  • cartridge/data/src/nes20.rs
  • console/src/controller.rs
  • console/src/lib.rs
  • console/src/runner/data.rs
  • console/src/runner/persistence.rs
  • console/src/runner/runtime.rs
  • console/src/state.rs
  • console/src/state/tests.rs
  • contract/controller_runtime/src/lib.rs
  • contract/core/src/lib.rs
  • input/nes_runtime/src/lib.rs
  • nes/core/src/apu/audio_regression_test.rs
  • nes/core/src/apu/dmc.rs
  • nes/core/src/apu/envelope.rs
  • nes/core/src/apu/fft_test.rs
  • nes/core/src/apu/frame_counter.rs
  • nes/core/src/apu/length_counter.rs
  • nes/core/src/apu/mod.rs
  • nes/core/src/apu/noise.rs
  • nes/core/src/apu/pulse.rs
  • nes/core/src/apu/timer.rs
  • nes/core/src/apu/triangle.rs
  • nes/core/src/cart_device.rs
  • nes/core/src/cartridge/mapper/action53.rs
  • nes/core/src/cartridge/mapper/axrom.rs
  • nes/core/src/cartridge/mapper/bnrom.rs
  • nes/core/src/cartridge/mapper/cnrom.rs
  • nes/core/src/cartridge/mapper/color_dreams.rs
  • nes/core/src/cartridge/mapper/crazy_climber.rs
  • nes/core/src/cartridge/mapper/fme7.rs
  • nes/core/src/cartridge/mapper/gnrom.rs
  • nes/core/src/cartridge/mapper/mapper78.rs
  • nes/core/src/cartridge/mapper/mmc2.rs
  • nes/core/src/cartridge/mapper/mmc3/mmc3_nec.rs
  • nes/core/src/cartridge/mapper/mmc3/mmc6.rs
  • nes/core/src/cartridge/mapper/mmc3/mod.rs
  • nes/core/src/cartridge/mapper/mmc3/shared.rs
  • nes/core/src/cartridge/mapper/mmc3/standard.rs
  • nes/core/src/cartridge/mapper/mmc3/txsrom.rs
  • nes/core/src/cartridge/mapper/mmc5.rs
  • nes/core/src/cartridge/mapper/mmc5/audio.rs
  • nes/core/src/cartridge/mapper/mmc5/ppu.rs
  • nes/core/src/cartridge/mapper/mmc5/program.rs
  • nes/core/src/cartridge/mapper/mmc5/tests.rs
  • nes/core/src/cartridge/mapper/mod.rs
  • nes/core/src/cartridge/mapper/nina001.rs
  • nes/core/src/cartridge/mapper/nrom.rs
  • nes/core/src/cartridge/mapper/sxrom.rs
  • ... 62 more path(s) omitted

Cargo project targets:

  • cartridge/data/Cargo.toml
  • console/Cargo.toml
  • contract/controller_runtime/Cargo.toml
  • contract/core/Cargo.toml
  • input/nes_runtime/Cargo.toml
  • nes/core/Cargo.toml
  • rom_test/Cargo.toml
Show checked targets for cargo-symbol-length

Target file paths:

  • Cargo.lock
  • Cargo.toml
  • cartridge/data/Cargo.toml
  • cartridge/data/src/ines.rs
  • cartridge/data/src/lib.rs
  • cartridge/data/src/nes20.rs
  • console/Cargo.toml
  • console/src/controller.rs
  • console/src/lib.rs
  • console/src/runner/data.rs
  • console/src/runner/persistence.rs
  • console/src/runner/runtime.rs
  • console/src/state.rs
  • console/src/state/tests.rs
  • contract/controller_runtime/Cargo.toml
  • contract/controller_runtime/src/lib.rs
  • contract/core/Cargo.toml
  • contract/core/src/lib.rs
  • input/nes_runtime/Cargo.toml
  • input/nes_runtime/src/lib.rs
  • nes/core/Cargo.toml
  • nes/core/src/apu/audio_regression_test.rs
  • nes/core/src/apu/dmc.rs
  • nes/core/src/apu/envelope.rs
  • nes/core/src/apu/fft_test.rs
  • nes/core/src/apu/frame_counter.rs
  • nes/core/src/apu/length_counter.rs
  • nes/core/src/apu/mod.rs
  • nes/core/src/apu/noise.rs
  • nes/core/src/apu/pulse.rs
  • nes/core/src/apu/timer.rs
  • nes/core/src/apu/triangle.rs
  • nes/core/src/cart_device.rs
  • nes/core/src/cartridge/mapper/action53.rs
  • nes/core/src/cartridge/mapper/axrom.rs
  • nes/core/src/cartridge/mapper/bnrom.rs
  • nes/core/src/cartridge/mapper/cnrom.rs
  • nes/core/src/cartridge/mapper/color_dreams.rs
  • nes/core/src/cartridge/mapper/crazy_climber.rs
  • nes/core/src/cartridge/mapper/fme7.rs
  • nes/core/src/cartridge/mapper/gnrom.rs
  • nes/core/src/cartridge/mapper/mapper78.rs
  • nes/core/src/cartridge/mapper/mmc2.rs
  • nes/core/src/cartridge/mapper/mmc3/mmc3_nec.rs
  • nes/core/src/cartridge/mapper/mmc3/mmc6.rs
  • nes/core/src/cartridge/mapper/mmc3/mod.rs
  • nes/core/src/cartridge/mapper/mmc3/shared.rs
  • nes/core/src/cartridge/mapper/mmc3/standard.rs
  • nes/core/src/cartridge/mapper/mmc3/txsrom.rs
  • nes/core/src/cartridge/mapper/mmc5.rs
  • ... 71 more path(s) omitted

Cargo project targets:

  • Cargo.toml
  • cartridge/data/Cargo.toml
  • console/Cargo.toml
  • contract/controller_runtime/Cargo.toml
  • contract/core/Cargo.toml
  • input/nes_runtime/Cargo.toml
  • nes/core/Cargo.toml
  • rom_test/Cargo.toml
Show checked targets for taplo

Target file paths:

  • Cargo.toml
  • cartridge/data/Cargo.toml
  • console/Cargo.toml
  • contract/controller_runtime/Cargo.toml
  • contract/core/Cargo.toml
  • input/nes_runtime/Cargo.toml
  • nes/core/Cargo.toml
  • rom_test/Cargo.toml
Show checked targets for editorconfig-checker

Target file paths:

  • Cargo.toml
  • cartridge/data/Cargo.toml
  • cartridge/data/src/ines.rs
  • cartridge/data/src/lib.rs
  • cartridge/data/src/nes20.rs
  • console/Cargo.toml
  • console/src/controller.rs
  • console/src/lib.rs
  • console/src/runner/data.rs
  • console/src/runner/persistence.rs
  • console/src/runner/runtime.rs
  • console/src/state.rs
  • console/src/state/tests.rs
  • contract/controller_runtime/Cargo.toml
  • contract/controller_runtime/src/lib.rs
  • contract/core/Cargo.toml
  • contract/core/src/lib.rs
  • input/nes_runtime/Cargo.toml
  • input/nes_runtime/src/lib.rs
  • nes/core/Cargo.toml
  • nes/core/src/apu/audio_regression_test.rs
  • nes/core/src/apu/dmc.rs
  • nes/core/src/apu/envelope.rs
  • nes/core/src/apu/fft_test.rs
  • nes/core/src/apu/frame_counter.rs
  • nes/core/src/apu/length_counter.rs
  • nes/core/src/apu/mod.rs
  • nes/core/src/apu/noise.rs
  • nes/core/src/apu/pulse.rs
  • nes/core/src/apu/timer.rs
  • nes/core/src/apu/triangle.rs
  • nes/core/src/cart_device.rs
  • nes/core/src/cartridge/mapper/action53.rs
  • nes/core/src/cartridge/mapper/axrom.rs
  • nes/core/src/cartridge/mapper/bnrom.rs
  • nes/core/src/cartridge/mapper/cnrom.rs
  • nes/core/src/cartridge/mapper/color_dreams.rs
  • nes/core/src/cartridge/mapper/crazy_climber.rs
  • nes/core/src/cartridge/mapper/fme7.rs
  • nes/core/src/cartridge/mapper/gnrom.rs
  • nes/core/src/cartridge/mapper/mapper78.rs
  • nes/core/src/cartridge/mapper/mmc2.rs
  • nes/core/src/cartridge/mapper/mmc3/mmc3_nec.rs
  • nes/core/src/cartridge/mapper/mmc3/mmc6.rs
  • nes/core/src/cartridge/mapper/mmc3/mod.rs
  • nes/core/src/cartridge/mapper/mmc3/shared.rs
  • nes/core/src/cartridge/mapper/mmc3/standard.rs
  • nes/core/src/cartridge/mapper/mmc3/txsrom.rs
  • nes/core/src/cartridge/mapper/mmc5.rs
  • nes/core/src/cartridge/mapper/mmc5/audio.rs
  • ... 70 more path(s) omitted
Show details for 2 linter(s) with warnings or failures

cargo-deny

==> cargo deny --format json --color never --log-level warn --all-features --manifest-path Cargo.toml check --audit-compatible-output --config deny.toml
error[RUSTSEC-2022-0040]: owning_ref 0.3.3 - Multiple soundness issues in `owning_ref`
warning[RUSTSEC-2021-0134]: rental 0.5.6 - rental is unmaintained, author has moved on
warning[RUSTSEC-2024-0370]: proc-macro-error 1.0.4 - proc-macro-error is unmaintained
warning[RUSTSEC-2024-0411]: gdkwayland-sys 0.18.2 - gtk-rs GTK3 bindings - no longer maintained
warning[RUSTSEC-2024-0412]: gdk 0.18.2 - gtk-rs GTK3 bindings - no longer maintained
warning[RUSTSEC-2024-0413]: atk 0.18.2 - gtk-rs GTK3 bindings - no longer maintained
warning[RUSTSEC-2024-0414]: gdkx11-sys 0.18.2 - gtk-rs GTK3 bindings - no longer maintained
warning[RUSTSEC-2024-0415]: gtk 0.18.2 - gtk-rs GTK3 bindings - no longer maintained
warning[RUSTSEC-2024-0416]: atk-sys 0.18.2 - gtk-rs GTK3 bindings - no longer maintained
warning[RUSTSEC-2024-0418]: gdk-sys 0.18.2 - gtk-rs GTK3 bindings - no longer maintained
warning[RUSTSEC-2024-0419]: gtk3-macros 0.18.2 - gtk-rs GTK3 bindings - no longer maintained
warning[RUSTSEC-2024-0420]: gtk-sys 0.18.2 - gtk-rs GTK3 bindings - no longer maintained
warning[RUSTSEC-2024-0429]: glib 0.18.5 - Unsoundness in `Iterator` and `DoubleEndedIterator` impls for `glib::VariantStrIter`
warning[yanked]: detected yanked crate (try `cargo update -p swash`)
Cargo.toml:367:1: yanked version
warning[duplicate]: found 2 duplicate entries for crate 'bit-set'
Cargo.toml:31:1: lock entries
warning[duplicate]: found 2 duplicate entries for crate 'bit-vec'
Cargo.toml:33:1: lock entries
warning[duplicate]: found 2 duplicate entries for crate 'bitflags'
Cargo.toml:35:1: lock entries
warning[duplicate]: found 2 duplicate entries for crate 'cairo-rs'
Cargo.toml:42:1: lock entries
warning[duplicate]: found 2 duplicate entries for crate 'cairo-sys-rs'
Cargo.toml:44:1: lock entries
warning[duplicate]: found 2 duplicate entries for crate 'calloop'
Cargo.toml:46:1: lock entries
warning[duplicate]: found 2 duplicate entries for crate 'calloop-wayland-source'
Cargo.toml:48:1: lock entries
warning[duplicate]: found 2 duplicate entries for crate 'cfg-expr'
Cargo.toml:51:1: lock entries
warning[duplicate]: found 2 duplicate entries for crate 'codespan-reporting'
Cargo.toml:61:1: lock entries
warning[duplicate]: found 2 duplicate entries for crate 'foldhash'
Cargo.toml:103:1: lock entries
warning[duplicate]: found 2 duplicate entries for crate 'font-types'
Cargo.toml:105:1: lock entries
warning[duplicate]: found 2 duplicate entries for crate 'gdk-pixbuf'
Cargo.toml:122:1: lock entries
warning[duplicate]: found 2 duplicate entries for crate 'gdk-pixbuf-sys'
Cargo.toml:124:1: lock entries
warning[duplicate]: found 2 duplicate entries for crate 'gio'
Cargo.toml:133:1: lock entries
warning[duplicate]: found 2 duplicate entries for crate 'gio-sys'
Cargo.toml:135:1: lock entries
warning[duplicate]: found 2 duplicate entries for crate 'gl_generator'
Cargo.toml:138:1: lock entries
warning[duplicate]: found 2 duplicate entries for crate 'glib'
Cargo.toml:141:1: lock entries
warning[duplicate]: found 2 duplicate entries for crate 'glib-macros'
Cargo.toml:143:1: lock entries
warning[duplicate]: found 2 duplicate entries for crate 'glib-sys'
Cargo.toml:145:1: lock entries
warning[duplicate]: found 2 duplicate entries for crate 'glow'
Cargo.toml:147:1: lock entries
warning[duplicate]: found 2 duplicate entries for crate 'gobject-sys'
Cargo.toml:149:1: lock entries
warning[duplicate]: found 3 duplicate entries for crate 'hashbrown'
Cargo.toml:169:1: lock entries
warning[duplicate]: found 2 duplicate entries for crate 'heck'
Cargo.toml:172:1: lock entries
warning[duplicate]: found 2 duplicate entries for crate 'khronos_api'
Cargo.toml:204:1: lock entries
warning[duplicate]: found 2 duplicate entries for crate 'lazy_static'
Cargo.toml:207:1: lock entries
warning[duplicate]: found 2 duplicate entries for crate 'libloading'
Cargo.toml:211:1: lock entries
warning[duplicate]: found 2 duplicate entries for crate 'linux-raw-sys'
Cargo.toml:216:1: lock entries
warning[duplicate]: found 2 duplicate entries for crate 'naga'
Cargo.toml:230:1: lock entries
warning[duplicate]: found 2 duplicate entries for crate 'pango'
Cargo.toml:283:1: lock entries
warning[duplicate]: found 2 duplicate entries for crate 'pango-sys'
Cargo.toml:285:1: lock entries
warning[duplicate]: found 2 duplicate entries for crate 'parking_lot'
Cargo.toml:288:1: lock entries
warning[duplicate]: found 2 duplicate entries for crate 'parking_lot_core'
Cargo.toml:290:1: lock entries
warning[duplicate]: found 3 duplicate entries for crate 'proc-macro-crate'
Cargo.toml:302:1: lock entries
warning[duplicate]: found 2 duplicate entries for crate 'read-fonts'
Cargo.toml:314:1: lock entries
warning[duplicate]: found 2 duplicate entries for crate 'rustc-hash'
Cargo.toml:323:1: lock entries
warning[duplicate]: found 2 duplicate entries for crate 'rustix'
Cargo.toml:326:1: lock entries
warning[duplicate]: found 2 duplicate entries for crate 'serde_spanned'
Cargo.toml:339:1: lock entries
warning[duplicate]: found 2 duplicate entries for crate 'skrifa'
Cargo.toml:347:1: lock entries
warning[duplicate]: found 2 duplicate entries for crate 'smallvec'
Cargo.toml:351:1: lock entries
warning[duplicate]: found 2 duplicate entries for crate 'smithay-client-toolkit'
Cargo.toml:353:1: lock entries
warning[duplicate]: found 2 duplicate entries for crate 'spirv'
Cargo.toml:358:1: lock entries
warning[duplicate]: found 2 duplicate entries for crate 'syn'
Cargo.toml:368:1: lock entries
warning[duplicate]: found 2 duplicate entries for crate 'system-deps'
Cargo.toml:372:1: lock entries
warning[duplicate]: found 2 duplicate entries for crate 'target-lexicon'
Cargo.toml:375:1: lock entries
warning[duplicate]: found 2 duplicate entries for crate 'thiserror'
Cargo.toml:377:1: lock entries
warning[duplicate]: found 2 duplicate entries for crate 'thiserror-impl'
Cargo.toml:379:1: lock entries
warning[duplicate]: found 2 duplicate entries for crate 'toml'
Cargo.toml:390:1: lock entries
warning[duplicate]: found 2 duplicate entries for crate 'toml_datetime'
Cargo.toml:392:1: lock entries
warning[duplicate]: found 3 duplicate entries for crate 'toml_edit'
Cargo.toml:394:1: lock entries
warning[duplicate]: found 2 duplicate entries for crate 'wgpu'
Cargo.toml:431:1: lock entries
warning[duplicate]: found 2 duplicate entries for crate 'wgpu-core'
Cargo.toml:433:1: lock entries
warning[duplicate]: found 2 duplicate entries for crate 'wgpu-core-deps-windows-linux-android'
Cargo.toml:435:1: lock entries
warning[duplicate]: found 2 duplicate entries for crate 'wgpu-hal'
Cargo.toml:437:1: lock entries
warning[duplicate]: found 2 duplicate entries for crate 'wgpu-types'
Cargo.toml:440:1: lock entries
warning[duplicate]: found 2 duplicate entries for crate 'winnow'
Cargo.toml:444:1: lock entries
warning[duplicate]: found 2 duplicate entries for crate 'xml-rs'
Cargo.toml:454:1: lock entries

cargo-coupling

==> docker run cargo-coupling coupling --json --no-git src
Grade: C | Score: 91% | Quality gate: FAILED
Thresholds: min_grade=C, max_critical=0, max_circular=0
Modules: 230 | Couplings: 4859 | Critical: 0 | High: 13 | Medium: 52 | Circular: 2
Blocking issues:
 - 2 circular dependencies (max: 0)
Issues:
113 dependents -> nerust_contract_settings::nerust_contract_settings: high[High Afferent Coupling]: Module nerust_contract_settings::nerust_contract_settings is depended on by 113 other components (threshold: 20)
 suggestion: Introduce trait `Nerust_contract_settingsInterface` with methods: // Define stable public API
23 dependents -> nerust_nes_core::nerust_nes_core: medium[High Afferent Coupling]: Module nerust_nes_core::nerust_nes_core is depended on by 23 other components (threshold: 20)
 suggestion: Introduce trait `Nerust_nes_coreInterface` with methods: // Define stable public API
24 dependents -> nerust_screen_video::nerust_screen_video: medium[High Afferent Coupling]: Module nerust_screen_video::nerust_screen_video is depended on by 24 other components (threshold: 20)
 suggestion: Introduce trait `Nerust_screen_videoInterface` with methods: // Define stable public API
242 dependents -> nerust_nes_core::cpu: high[High Afferent Coupling]: Module nerust_nes_core::cpu is depended on by 242 other components (threshold: 20)
 suggestion: Introduce trait `CpuInterface` with methods: // Define stable public API
25 dependents -> nerust_gui_shell::descriptor: medium[High Afferent Coupling]: Module nerust_gui_shell::descriptor is depended on by 25 other components (threshold: 20)
 suggestion: Introduce trait `DescriptorInterface` with methods: // Define stable public API
26 dependents -> nerust_rom_test::events: medium[High Afferent Coupling]: Module nerust_rom_test::events is depended on by 26 other components (threshold: 20)
 suggestion: Introduce trait `EventsInterface` with methods: // Define stable public API
26 dependents -> nerust_screen_logical::nerust_screen_logical: medium[High Afferent Coupling]: Module nerust_screen_logical::nerust_screen_logical is depended on by 26 other components (threshold: 20)
 suggestion: Introduce trait `Nerust_screen_logicalInterface` with methods: // Define stable public API
26 dependents -> nerust_sound_traits::nerust_sound_traits: medium[High Afferent Coupling]: Module nerust_sound_traits::nerust_sound_traits is depended on by 26 other components (threshold: 20)
 suggestion: Introduce trait `Nerust_sound_traitsInterface` with methods: // Define stable public API
27 dependents -> nerust_contract_mirror::nerust_contract_mirror: medium[High Afferent Coupling]: Module nerust_contract_mirror::nerust_contract_mirror is depended on by 27 other components (threshold: 20)
 suggestion: Introduce trait `Nerust_contract_mirrorInterface` with methods: // Define stable public API
27 dependents -> nerust_nes_core::cartridge_rom: medium[High Afferent Coupling]: Module nerust_nes_core::cartridge_rom is depended on by 27 other components (threshold: 20)
 suggestion: Introduce trait `Cartridge_romInterface` with methods: // Define stable public API
28 dependents -> nerust_nes_core::cartridge_data_parts: medium[High Afferent Coupling]: Module nerust_nes_core::cartridge_data_parts is depended on by 28 other components (threshold: 20)
 suggestion: Introduce trait `Cartridge_data_partsInterface` with methods: // Define stable public API
30 dependents -> nerust_contract_options::nerust_contract_options: medium[High Afferent Coupling]: Module nerust_contract_options::nerust_contract_options is depended on by 30 other components (threshold: 20)
 suggestion: Introduce trait `Nerust_contract_optionsInterface` with methods: // Define stable public API
30 dependents -> nerust_nes_core::cartridge_runtime_state: medium[High Afferent Coupling]: Module nerust_nes_core::cartridge_runtime_state is depended on by 30 other components (threshold: 20)
 suggestion: Introduce trait `Cartridge_runtime_stateInterface` with methods: // Define stable public API
30 dependents -> nerust_rom_test::results: medium[High Afferent Coupling]: Module nerust_rom_test::results is depended on by 30 other components (threshold: 20)
 suggestion: Introduce trait `ResultsInterface` with methods: // Define stable public API
32 dependents -> nerust_gui_session::nerust_gui_session: medium[High Afferent Coupling]: Module nerust_gui_session::nerust_gui_session is depended on by 32 other components (threshold: 20)
 suggestion: Introduce trait `Nerust_gui_sessionInterface` with methods: // Define stable public API
33 dependents -> nerust_input_nes::topology: medium[High Afferent Coupling]: Module nerust_input_nes::topology is depended on by 33 other components (threshold: 20)
 suggestion: Introduce trait `TopologyInterface` with methods: // Define stable public API
33 dependents -> nerust_nes_core::cartridge::mapper: medium[High Afferent Coupling]: Module nerust_nes_core::cartridge::mapper is depended on by 33 other components (threshold: 20)
 suggestion: Introduce trait `MapperInterface` with methods: // Define stable public API
34 dependents -> nerust_console::nerust_console: medium[High Afferent Coupling]: Module nerust_console::nerust_console is depended on by 34 other components (threshold: 20)
 suggestion: Introduce trait `Nerust_consoleInterface` with methods: // Define stable public API
35 dependents -> nerust_contract_rom::nerust_contract_rom: medium[High Afferent Coupling]: Module nerust_contract_rom::nerust_contract_rom is depended on by 35 other components (threshold: 20)
 suggestion: Introduce trait `Nerust_contract_romInterface` with methods: // Define stable public API
40 dependents -> nerust_nes_core::interrupt: medium[High Afferent Coupling]: Module nerust_nes_core::interrupt is depended on by 40 other components (threshold: 20)
 suggestion: Introduce trait `InterruptInterface` with methods: // Define stable public API
40 dependents -> nerust_nes_core::mapper: medium[High Afferent Coupling]: Module nerust_nes_core::mapper is depended on by 40 other components (threshold: 20)
 suggestion: Introduce trait `MapperInterface` with methods: // Define stable public API
40 dependents -> nerust_nes_core::mapper_state: medium[High Afferent Coupling]: Module nerust_nes_core::mapper_state is depended on by 40 other components (threshold: 20)
 suggestion: Introduce trait `Mapper_stateInterface` with methods: // Define stable public API
45 dependents -> nerust_persistence::nerust_persistence: high[High Afferent Coupling]: Module nerust_persistence::nerust_persistence is depended on by 45 other components (threshold: 20)
 suggestion: Introduce trait `Nerust_persistenceInterface` with methods: // Define stable public API
51 dependents -> nerust_input_schema::nerust_input_schema: high[High Afferent Coupling]: Module nerust_input_schema::nerust_input_schema is depended on by 51 other components (threshold: 20)
 suggestion: Introduce trait `Nerust_input_schemaInterface` with methods: // Define stable public API
55 dependents -> nerust_gui_runtime::nerust_gui_runtime: high[High Afferent Coupling]: Module nerust_gui_runtime::nerust_gui_runtime is depended on by 55 other components (threshold: 20)
 suggestion: Introduce trait `Nerust_gui_runtimeInterface` with methods: // Define stable public API
69 dependents -> nerust_input_nes::nerust_input_nes: high[High Afferent Coupling]: Module nerust_input_nes::nerust_input_nes is depended on by 69 other components (threshold: 20)
 suggestion: Introduce trait `Nerust_input_nesInterface` with methods: // Define stable public API
77 dependents -> nerust_gui_shell::nerust_gui_shell: high[High Afferent Coupling]: Module nerust_gui_shell::nerust_gui_shell is depended on by 77 other components (threshold: 20)
 suggestion: Introduce trait `Nerust_gui_shellInterface` with methods: // Define stable public API
nerust_console::state::tests -> 23 dependencies: medium[High Efferent Coupling]: Module nerust_console::state::tests depends on 23 other components (threshold: 15)
 suggestion: Split into modules: nerust_console::state::tests_core, nerust_console::state::tests_integration
nerust_gtk::preferences -> 33 dependencies: high[High Efferent Coupling]: Module nerust_gtk::preferences depends on 33 other components (threshold: 15)
 suggestion: Split into modules: nerust_gtk::preferences_core, nerust_gtk::preferences_integration
nerust_gtk::window -> 18 dependencies: medium[High Efferent Coupling]: Module nerust_gtk::window depends on 18 other components (threshold: 15)
 suggestion: Split into modules: nerust_gtk::window_core, nerust_gtk::window_integration
nerust_gui_runtime::settings -> 39 dependencies: high[High Efferent Coupling]: Module nerust_gui_runtime::settings depends on 39 other components (threshold: 15)
 suggestion: Split into modules: nerust_gui_runtime::settings_core, nerust_gui_runtime::settings_integration
nerust_gui_runtime::settings::manager -> 30 dependencies: medium[High Efferent Coupling]: Module nerust_gui_runtime::settings::manager depends on 30 other components (threshold: 15)
 suggestion: Split into modules: nerust_gui_runtime::settings::manager_core, nerust_gui_runtime::settings::manager_integration
nerust_gui_shell::descriptor -> 52 dependencies: high[High Efferent Coupling]: Module nerust_gui_shell::descriptor depends on 52 other components (threshold: 15)
 suggestion: Split into modules: nerust_gui_shell::descriptor_core, nerust_gui_shell::descriptor_integration
nerust_gui_shell::session -> 24 dependencies: medium[High Efferent Coupling]: Module nerust_gui_shell::session depends on 24 other components (threshold: 15)
 suggestion: Split into modules: nerust_gui_shell::session_core, nerust_gui_shell::session_integration
nerust_gui_shell::session::lifecycle -> 34 dependencies: high[High Efferent Coupling]: Module nerust_gui_shell::session::lifecycle depends on 34 other components (threshold: 15)
 suggestion: Split into modules: nerust_gui_shell::session::lifecycle_core, nerust_gui_shell::session::lifecycle_integration
nerust_gui_shell::session::tests -> 52 dependencies: high[High Efferent Coupling]: Module nerust_gui_shell::session::tests depends on 52 other components (threshold: 15)
 suggestion: Split into modules: nerust_gui_shell::session::tests_core, nerust_gui_shell::session::tests_integration
nerust_gui_shell::settings::bindings::events::controller -> 16 dependencies: medium[High Efferent Coupling]: Module nerust_gui_shell::settings::bindings::events::controller depends on 16 other components (threshold: 15)
 suggestion: Split into modules: nerust_gui_shell::settings::bindings::events::controller_core, nerust_gui_shell::settings::bindings::events::controller_integration
nerust_gui_shell::settings::defaults::seed -> 27 dependencies: medium[High Efferent Coupling]: Module nerust_gui_shell::settings::defaults::seed depends on 27 other components (threshold: 15)
 suggestion: Split into modules: nerust_gui_shell::settings::defaults::seed_core, nerust_gui_shell::settings::defaults::seed_integration
nerust_gui_shell::settings::editor -> 20 dependencies: medium[High Efferent Coupling]: Module nerust_gui_shell::settings::editor depends on 20 other components (threshold: 15)
 suggestion: Split into modules: nerust_gui_shell::settings::editor_core, nerust_gui_shell::settings::editor_integration
nerust_gui_shell::settings::nes -> 29 dependencies: medium[High Efferent Coupling]: Module nerust_gui_shell::settings::nes depends on 29 other components (threshold: 15)
 suggestion: Split into modules: nerust_gui_shell::settings::nes_core, nerust_gui_shell::settings::nes_integration
nerust_gui_shell::touch -> 17 dependencies: medium[High Efferent Coupling]: Module nerust_gui_shell::touch depends on 17 other components (threshold: 15)
 suggestion: Split into modules: nerust_gui_shell::touch_core, nerust_gui_shell::touch_integration
nerust_input_nes_runtime::lib -> 17 dependencies: medium[High Efferent Coupling]: Module nerust_input_nes_runtime::lib depends on 17 other components (threshold: 15)
 suggestion: Split into modules: nerust_input_nes_runtime::lib_core, nerust_input_nes_runtime::lib_integration
nerust_input_nes::input -> 19 dependencies: medium[High Efferent Coupling]: Module nerust_input_nes::input depends on 19 other components (threshold: 15)
 suggestion: Split into modules: nerust_input_nes::input_core, nerust_input_nes::input_integration
nerust_input_nes::input::persisted -> 25 dependencies: medium[High Efferent Coupling]: Module nerust_input_nes::input::persisted depends on 25 other components (threshold: 15)
 suggestion: Split into modules: nerust_input_nes::input::persisted_core, nerust_input_nes::input::persisted_integration
nerust_input_nes::topology -> 20 dependencies: medium[High Efferent Coupling]: Module nerust_input_nes::topology depends on 20 other components (threshold: 15)
 suggestion: Split into modules: nerust_input_nes::topology_core, nerust_input_nes::topology_integration
nerust_input_schema::lib -> 17 dependencies: medium[High Efferent Coupling]: Module nerust_input_schema::lib depends on 17 other components (threshold: 15)
 suggestion: Split into modules: nerust_input_schema::lib_core, nerust_input_schema::lib_integration
nerust_nes_core::cartridge::mapper::action53 -> 20 dependencies: medium[High Efferent Coupling]: Module nerust_nes_core::cartridge::mapper::action53 depends on 20 other components (threshold: 15)
 suggestion: Split into modules: nerust_nes_core::cartridge::mapper::action53_core, nerust_nes_core::cartridge::mapper::action53_integration
nerust_nes_core::cartridge::mapper::fme7 -> 20 dependencies: medium[High Efferent Coupling]: Module nerust_nes_core::cartridge::mapper::fme7 depends on 20 other components (threshold: 15)
 suggestion: Split into modules: nerust_nes_core::cartridge::mapper::fme7_core, nerust_nes_core::cartridge::mapper::fme7_integration
nerust_nes_core::cartridge::mapper::mmc2 -> 21 dependencies: medium[High Efferent Coupling]: Module nerust_nes_core::cartridge::mapper::mmc2 depends on 21 other components (threshold: 15)
 suggestion: Split into modules: nerust_nes_core::cartridge::mapper::mmc2_core, nerust_nes_core::cartridge::mapper::mmc2_integration
nerust_nes_core::cartridge::mapper::mmc3 -> 23 dependencies: medium[High Efferent Coupling]: Module nerust_nes_core::cartridge::mapper::mmc3 depends on 23 other components (threshold: 15)
 suggestion: Split into modules: nerust_nes_core::cartridge::mapper::mmc3_core, nerust_nes_core::cartridge::mapper::mmc3_integration
nerust_nes_core::cartridge::mapper::mmc3::shared -> 17 dependencies: medium[High Efferent Coupling]: Module nerust_nes_core::cartridge::mapper::mmc3::shared depends on 17 other components (threshold: 15)
 suggestion: Split into modules: nerust_nes_core::cartridge::mapper::mmc3::shared_core, nerust_nes_core::cartridge::mapper::mmc3::shared_integration
nerust_nes_core::cartridge::mapper::mmc3::standard -> 31 dependencies: high[High Efferent Coupling]: Module nerust_nes_core::cartridge::mapper::mmc3::standard depends on 31 other components (threshold: 15)
 suggestion: Split into modules: nerust_nes_core::cartridge::mapper::mmc3::standard_core, nerust_nes_core::cartridge::mapper::mmc3::standard_integration
nerust_nes_core::cartridge::mapper::mmc5 -> 19 dependencies: medium[High Efferent Coupling]: Module nerust_nes_core::cartridge::mapper::mmc5 depends on 19 other components (threshold: 15)
 suggestion: Split into modules: nerust_nes_core::cartridge::mapper::mmc5_core, nerust_nes_core::cartridge::mapper::mmc5_integration
nerust_nes_core::cartridge::mapper::sxrom -> 19 dependencies: medium[High Efferent Coupling]: Module nerust_nes_core::cartridge::mapper::sxrom depends on 19 other components (threshold: 15)
 suggestion: Split into modules: nerust_nes_core::cartridge::mapper::sxrom_core, nerust_nes_core::cartridge::mapper::sxrom_integration
nerust_nes_core::cpu -> 21 dependencies: medium[High Efferent Coupling]: Module nerust_nes_core::cpu depends on 21 other components (threshold: 15)
 suggestion: Split into modules: nerust_nes_core::cpu_core, nerust_nes_core::cpu_integration
nerust_nes_core::cpu::opcodes::interrupt -> 16 dependencies: medium[High Efferent Coupling]: Module nerust_nes_core::cpu::opcodes::interrupt depends on 16 other components (threshold: 15)
 suggestion: Split into modules: nerust_nes_core::cpu::opcodes::interrupt_core, nerust_nes_core::cpu::opcodes::interrupt_integration
nerust_nes_core::ppu -> 21 dependencies: medium[High Efferent Coupling]: Module nerust_nes_core::ppu depends on 21 other components (threshold: 15)
 suggestion: Split into modules: nerust_nes_core::ppu_core, nerust_nes_core::ppu_integration
nerust_persistence::slots -> 17 dependencies: medium[High Efferent Coupling]: Module nerust_persistence::slots depends on 17 other components (threshold: 15)
 suggestion: Split into modules: nerust_persistence::slots_core, nerust_persistence::slots_integration
nerust_persistence::tests::slots -> 19 dependencies: medium[High Efferent Coupling]: Module nerust_persistence::tests::slots depends on 19 other components (threshold: 15)
 suggestion: Split into modules: nerust_persistence::tests::slots_core, nerust_persistence::tests::slots_integration
nerust_rom_test::perf -> 21 dependencies: medium[High Efferent Coupling]: Module nerust_rom_test::perf depends on 21 other components (threshold: 15)
 suggestion: Split into modules: nerust_rom_test::perf_core, nerust_rom_test::perf_integration
nerust_rom_test::tests -> 19 dependencies: medium[High Efferent Coupling]: Module nerust_rom_test::tests depends on 19 other components (threshold: 15)
 suggestion: Split into modules: nerust_rom_test::tests_core, nerust_rom_test::tests_integration
nerust_screen_wgpu::renderer::setup -> 16 dependencies: medium[High Efferent Coupling]: Module nerust_screen_wgpu::renderer::setup depends on 16 other components (threshold: 15)
 suggestion: Split into modules: nerust_screen_wgpu::renderer::setup_core, nerust_screen_wgpu::renderer::setup_integration
nerust_screen_wgpu::renderer::tests -> 17 dependencies: medium[High Efferent Coupling]: Module nerust_screen_wgpu::renderer::tests depends on 17 other components (threshold: 15)
 suggestion: Split into modules: nerust_screen_wgpu::renderer::tests_core, nerust_screen_wgpu::renderer::tests_integration
nerust_tao::settings::ui -> 27 dependencies: medium[High Efferent Coupling]: Module nerust_tao::settings::ui depends on 27 other components (threshold: 15)
 suggestion: Split into modules: nerust_tao::settings::ui_core, nerust_tao::settings::ui_integration
nerust_tao::window::runtime::host -> 27 dependencies: medium[High Efferent Coupling]: Module nerust_tao::window::runtime::host depends on 27 other components (threshold: 15)
 suggestion: Split into modules: nerust_tao::window::runtime::host_core, nerust_tao::window::runtime::host_integration
Circular dependencies:
 - nerust_gui_runtime::settings::manager -> nerust_gui_runtime::settings::store
 - nerust_tao::settings -> nerust_tao::settings::bridge
Analyzing project at 'src'...
Analysis complete: 285 files, 230 modules

==> docker run cargo-coupling coupling --json --no-git src
Grade: C | Score: 91% | Quality gate: FAILED
Thresholds: min_grade=C, max_critical=0, max_circular=0
Modules: 230 | Couplings: 4859 | Critical: 0 | High: 13 | Medium: 52 | Circular: 2
Blocking issues:
 - 2 circular dependencies (max: 0)
Issues:
113 dependents -> nerust_contract_settings::nerust_contract_settings: high[High Afferent Coupling]: Module nerust_contract_settings::nerust_contract_settings is depended on by 113 other components (threshold: 20)
 suggestion: Introduce trait `Nerust_contract_settingsInterface` with methods: // Define stable public API
23 dependents -> nerust_nes_core::nerust_nes_core: medium[High Afferent Coupling]: Module nerust_nes_core::nerust_nes_core is depended on by 23 other components (threshold: 20)
 suggestion: Introduce trait `Nerust_nes_coreInterface` with methods: // Define stable public API
24 dependents -> nerust_screen_video::nerust_screen_video: medium[High Afferent Coupling]: Module nerust_screen_video::nerust_screen_video is depended on by 24 other components (threshold: 20)
 suggestion: Introduce trait `Nerust_screen_videoInterface` with methods: // Define stable public API
242 dependents -> nerust_nes_core::cpu: high[High Afferent Coupling]: Module nerust_nes_core::cpu is depended on by 242 other components (threshold: 20)
 suggestion: Introduce trait `CpuInterface` with methods: // Define stable public API
25 dependents -> nerust_gui_shell::descriptor: medium[High Afferent Coupling]: Module nerust_gui_shell::descriptor is depended on by 25 other components (threshold: 20)
 suggestion: Introduce trait `DescriptorInterface` with methods: // Define stable public API
26 dependents -> nerust_rom_test::events: medium[High Afferent Coupling]: Module nerust_rom_test::events is depended on by 26 other components (threshold: 20)
 suggestion: Introduce trait `EventsInterface` with methods: // Define stable public API
26 dependents -> nerust_screen_logical::nerust_screen_logical: medium[High Afferent Coupling]: Module nerust_screen_logical::nerust_screen_logical is depended on by 26 other components (threshold: 20)
 suggestion: Introduce trait `Nerust_screen_logicalInterface` with methods: // Define stable public API
26 dependents -> nerust_sound_traits::nerust_sound_traits: medium[High Afferent Coupling]: Module nerust_sound_traits::nerust_sound_traits is depended on by 26 other components (threshold: 20)
 suggestion: Introduce trait `Nerust_sound_traitsInterface` with methods: // Define stable public API
27 dependents -> nerust_contract_mirror::nerust_contract_mirror: medium[High Afferent Coupling]: Module nerust_contract_mirror::nerust_contract_mirror is depended on by 27 other components (threshold: 20)
 suggestion: Introduce trait `Nerust_contract_mirrorInterface` with methods: // Define stable public API
27 dependents -> nerust_nes_core::cartridge_rom: medium[High Afferent Coupling]: Module nerust_nes_core::cartridge_rom is depended on by 27 other components (threshold: 20)
 suggestion: Introduce trait `Cartridge_romInterface` with methods: // Define stable public API
28 dependents -> nerust_nes_core::cartridge_data_parts: medium[High Afferent Coupling]: Module nerust_nes_core::cartridge_data_parts is depended on by 28 other components (threshold: 20)
 suggestion: Introduce trait `Cartridge_data_partsInterface` with methods: // Define stable public API
30 dependents -> nerust_contract_options::nerust_contract_options: medium[High Afferent Coupling]: Module nerust_contract_options::nerust_contract_options is depended on by 30 other components (threshold: 20)
 suggestion: Introduce trait `Nerust_contract_optionsInterface` with methods: // Define stable public API
30 dependents -> nerust_nes_core::cartridge_runtime_state: medium[High Afferent Coupling]: Module nerust_nes_core::cartridge_runtime_state is depended on by 30 other components (threshold: 20)
 suggestion: Introduce trait `Cartridge_runtime_stateInterface` with methods: // Define stable public API
30 dependents -> nerust_rom_test::results: medium[High Afferent Coupling]: Module nerust_rom_test::results is depended on by 30 other components (threshold: 20)
 suggestion: Introduce trait `ResultsInterface` with methods: // Define stable public API
32 dependents -> nerust_gui_session::nerust_gui_session: medium[High Afferent Coupling]: Module nerust_gui_session::nerust_gui_session is depended on by 32 other components (threshold: 20)
 suggestion: Introduce trait `Nerust_gui_sessionInterface` with methods: // Define stable public API
33 dependents -> nerust_input_nes::topology: medium[High Afferent Coupling]: Module nerust_input_nes::topology is depended on by 33 other components (threshold: 20)
 suggestion: Introduce trait `TopologyInterface` with methods: // Define stable public API
33 dependents -> nerust_nes_core::cartridge::mapper: medium[High Afferent Coupling]: Module nerust_nes_core::cartridge::mapper is depended on by 33 other components (threshold: 20)
 suggestion: Introduce trait `MapperInterface` with methods: // Define stable public API
34 dependents -> nerust_console::nerust_console: medium[High Afferent Coupling]: Module nerust_console::nerust_console is depended on by 34 other components (threshold: 20)
 suggestion: Introduce trait `Nerust_consoleInterface` with methods: // Define stable public API
35 dependents -> nerust_contract_rom::nerust_contract_rom: medium[High Afferent Coupling]: Module nerust_contract_rom::nerust_contract_rom is depended on by 35 other components (threshold: 20)
 suggestion: Introduce trait `Nerust_contract_romInterface` with methods: // Define stable public API
40 dependents -> nerust_nes_core::interrupt: medium[High Afferent Coupling]: Module nerust_nes_core::interrupt is depended on by 40 other components (threshold: 20)
 suggestion: Introduce trait `InterruptInterface` with methods: // Define stable public API
40 dependents -> nerust_nes_core::mapper: medium[High Afferent Coupling]: Module nerust_nes_core::mapper is depended on by 40 other components (threshold: 20)
 suggestion: Introduce trait `MapperInterface` with methods: // Define stable public API
40 dependents -> nerust_nes_core::mapper_state: medium[High Afferent Coupling]: Module nerust_nes_core::mapper_state is depended on by 40 other components (threshold: 20)
 suggestion: Introduce trait `Mapper_stateInterface` with methods: // Define stable public API
45 dependents -> nerust_persistence::nerust_persistence: high[High Afferent Coupling]: Module nerust_persistence::nerust_persistence is depended on by 45 other components (threshold: 20)
 suggestion: Introduce trait `Nerust_persistenceInterface` with methods: // Define stable public API
51 dependents -> nerust_input_schema::nerust_input_schema: high[High Afferent Coupling]: Module nerust_input_schema::nerust_input_schema is depended on by 51 other components (threshold: 20)
 suggestion: Introduce trait `Nerust_input_schemaInterface` with methods: // Define stable public API
55 dependents -> nerust_gui_runtime::nerust_gui_runtime: high[High Afferent Coupling]: Module nerust_gui_runtime::nerust_gui_runtime is depended on by 55 other components (threshold: 20)
 suggestion: Introduce trait `Nerust_gui_runtimeInterface` with methods: // Define stable public API
69 dependents -> nerust_input_nes::nerust_input_nes: high[High Afferent Coupling]: Module nerust_input_nes::nerust_input_nes is depended on by 69 other components (threshold: 20)
 suggestion: Introduce trait `Nerust_input_nesInterface` with methods: // Define stable public API
77 dependents -> nerust_gui_shell::nerust_gui_shell: high[High Afferent Coupling]: Module nerust_gui_shell::nerust_gui_shell is depended on by 77 other components (threshold: 20)
 suggestion: Introduce trait `Nerust_gui_shellInterface` with methods: // Define stable public API
nerust_console::state::tests -> 23 dependencies: medium[High Efferent Coupling]: Module nerust_console::state::tests depends on 23 other components (threshold: 15)
 suggestion: Split into modules: nerust_console::state::tests_core, nerust_console::state::tests_integration
nerust_gtk::preferences -> 33 dependencies: high[High Efferent Coupling]: Module nerust_gtk::preferences depends on 33 other components (threshold: 15)
 suggestion: Split into modules: nerust_gtk::preferences_core, nerust_gtk::preferences_integration
nerust_gtk::window -> 18 dependencies: medium[High Efferent Coupling]: Module nerust_gtk::window depends on 18 other components (threshold: 15)
 suggestion: Split into modules: nerust_gtk::window_core, nerust_gtk::window_integration
nerust_gui_runtime::settings -> 39 dependencies: high[High Efferent Coupling]: Module nerust_gui_runtime::settings depends on 39 other components (threshold: 15)
 suggestion: Split into modules: nerust_gui_runtime::settings_core, nerust_gui_runtime::settings_integration
nerust_gui_runtime::settings::manager -> 30 dependencies: medium[High Efferent Coupling]: Module nerust_gui_runtime::settings::manager depends on 30 other components (threshold: 15)
 suggestion: Split into modules: nerust_gui_runtime::settings::manager_core, nerust_gui_runtime::settings::manager_integration
nerust_gui_shell::descriptor -> 52 dependencies: high[High Efferent Coupling]: Module nerust_gui_shell::descriptor depends on 52 other components (threshold: 15)
 suggestion: Split into modules: nerust_gui_shell::descriptor_core, nerust_gui_shell::descriptor_integration
nerust_gui_shell::session -> 24 dependencies: medium[High Efferent Coupling]: Module nerust_gui_shell::session depends on 24 other components (threshold: 15)
 suggestion: Split into modules: nerust_gui_shell::session_core, nerust_gui_shell::session_integration
nerust_gui_shell::session::lifecycle -> 34 dependencies: high[High Efferent Coupling]: Module nerust_gui_shell::session::lifecycle depends on 34 other components (threshold: 15)
 suggestion: Split into modules: nerust_gui_shell::session::lifecycle_core, nerust_gui_shell::session::lifecycle_integration
nerust_gui_shell::session::tests -> 52 dependencies: high[High Efferent Coupling]: Module nerust_gui_shell::session::tests depends on 52 other components (threshold: 15)
 suggestion: Split into modules: nerust_gui_shell::session::tests_core, nerust_gui_shell::session::tests_integration
nerust_gui_shell::settings::bindings::events::controller -> 16 dependencies: medium[High Efferent Coupling]: Module nerust_gui_shell::settings::bindings::events::controller depends on 16 other components (threshold: 15)
 suggestion: Split into modules: nerust_gui_shell::settings::bindings::events::controller_core, nerust_gui_shell::settings::bindings::events::controller_integration
nerust_gui_shell::settings::defaults::seed -> 27 dependencies: medium[High Efferent Coupling]: Module nerust_gui_shell::settings::defaults::seed depends on 27 other components (threshold: 15)
 suggestion: Split into modules: nerust_gui_shell::settings::defaults::seed_core, nerust_gui_shell::settings::defaults::seed_integration
nerust_gui_shell::settings::editor -> 20 dependencies: medium[High Efferent Coupling]: Module nerust_gui_shell::settings::editor depends on 20 other components (threshold: 15)
 suggestion: Split into modules: nerust_gui_shell::settings::editor_core, nerust_gui_shell::settings::editor_integration
nerust_gui_shell::settings::nes -> 29 dependencies: medium[High Efferent Coupling]: Module nerust_gui_shell::settings::nes depends on 29 other components (threshold: 15)
 suggestion: Split into modules: nerust_gui_shell::settings::nes_core, nerust_gui_shell::settings::nes_integration
nerust_gui_shell::touch -> 17 dependencies: medium[High Efferent Coupling]: Module nerust_gui_shell::touch depends on 17 other components (threshold: 15)
 suggestion: Split into modules: nerust_gui_shell::touch_core, nerust_gui_shell::touch_integration
nerust_input_nes_runtime::lib -> 17 dependencies: medium[High Efferent Coupling]: Module nerust_input_nes_runtime::lib depends on 17 other components (threshold: 15)
 suggestion: Split into modules: nerust_input_nes_runtime::lib_core, nerust_input_nes_runtime::lib_integration
nerust_input_nes::input -> 19 dependencies: medium[High Efferent Coupling]: Module nerust_input_nes::input depends on 19 other components (threshold: 15)
 suggestion: Split into modules: nerust_input_nes::input_core, nerust_input_nes::input_integration
nerust_input_nes::input::persisted -> 25 dependencies: medium[High Efferent Coupling]: Module nerust_input_nes::input::persisted depends on 25 other components (threshold: 15)
 suggestion: Split into modules: nerust_input_nes::input::persisted_core, nerust_input_nes::input::persisted_integration
nerust_input_nes::topology -> 20 dependencies: medium[High Efferent Coupling]: Module nerust_input_nes::topology depends on 20 other components (threshold: 15)
 suggestion: Split into modules: nerust_input_nes::topology_core, nerust_input_nes::topology_integration
nerust_input_schema::lib -> 17 dependencies: medium[High Efferent Coupling]: Module nerust_input_schema::lib depends on 17 other components (threshold: 15)
 suggestion: Split into modules: nerust_input_schema::lib_core, nerust_input_schema::lib_integration
nerust_nes_core::cartridge::mapper::action53 -> 20 dependencies: medium[High Efferent Coupling]: Module nerust_nes_core::cartridge::mapper::action53 depends on 20 other components (threshold: 15)
 suggestion: Split into modules: nerust_nes_core::cartridge::mapper::action53_core, nerust_nes_core::cartridge::mapper::action53_integration
nerust_nes_core::cartridge::mapper::fme7 -> 20 dependencies: medium[High Efferent Coupling]: Module nerust_nes_core::cartridge::mapper::fme7 depends on 20 other components (threshold: 15)
 suggestion: Split into modules: nerust_nes_core::cartridge::mapper::fme7_core, nerust_nes_core::cartridge::mapper::fme7_integration
nerust_nes_core::cartridge::mapper::mmc2 -> 21 dependencies: medium[High Efferent Coupling]: Module nerust_nes_core::cartridge::mapper::mmc2 depends on 21 other components (threshold: 15)
 suggestion: Split into modules: nerust_nes_core::cartridge::mapper::mmc2_core, nerust_nes_core::cartridge::mapper::mmc2_integration
nerust_nes_core::cartridge::mapper::mmc3 -> 23 dependencies: medium[High Efferent Coupling]: Module nerust_nes_core::cartridge::mapper::mmc3 depends on 23 other components (threshold: 15)
 suggestion: Split into modules: nerust_nes_core::cartridge::mapper::mmc3_core, nerust_nes_core::cartridge::mapper::mmc3_integration
nerust_nes_core::cartridge::mapper::mmc3::shared -> 17 dependencies: medium[High Efferent Coupling]: Module nerust_nes_core::cartridge::mapper::mmc3::shared depends on 17 other components (threshold: 15)
 suggestion: Split into modules: nerust_nes_core::cartridge::mapper::mmc3::shared_core, nerust_nes_core::cartridge::mapper::mmc3::shared_integration
nerust_nes_core::cartridge::mapper::mmc3::standard -> 31 dependencies: high[High Efferent Coupling]: Module nerust_nes_core::cartridge::mapper::mmc3::standard depends on 31 other components (threshold: 15)
 suggestion: Split into modules: nerust_nes_core::cartridge::mapper::mmc3::standard_core, nerust_nes_core::cartridge::mapper::mmc3::standard_integration
nerust_nes_core::cartridge::mapper::mmc5 -> 19 dependencies: medium[High Efferent Coupling]: Module nerust_nes_core::cartridge::mapper::mmc5 depends on 19 other components (threshold: 15)
 suggestion: Split into modules: nerust_nes_core::cartridge::mapper::mmc5_core, nerust_nes_core::cartridge::mapper::mmc5_integration
nerust_nes_core::cartridge::mapper::sxrom -> 19 dependencies: medium[High Efferent Coupling]: Module nerust_nes_core::cartridge::mapper::sxrom depends on 19 other components (threshold: 15)
 suggestion: Split into modules: nerust_nes_core::cartridge::mapper::sxrom_core, nerust_nes_core::cartridge::mapper::sxrom_integration
nerust_nes_core::cpu -> 21 dependencies: medium[High Efferent Coupling]: Module nerust_nes_core::cpu depends on 21 other components (threshold: 15)
 suggestion: Split into modules: nerust_nes_core::cpu_core, nerust_nes_core::cpu_integration
nerust_nes_core::cpu::opcodes::interrupt -> 16 dependencies: medium[High Efferent Coupling]: Module nerust_nes_core::cpu::opcodes::interrupt depends on 16 other components (threshold: 15)
 suggestion: Split into modules: nerust_nes_core::cpu::opcodes::interrupt_core, nerust_nes_core::cpu::opcodes::interrupt_integration
nerust_nes_core::ppu -> 21 dependencies: medium[High Efferent Coupling]: Module nerust_nes_core::ppu depends on 21 other components (threshold: 15)
 suggestion: Split into modules: nerust_nes_core::ppu_core, nerust_nes_core::ppu_integration
nerust_persistence::slots -> 17 dependencies: medium[High Efferent Coupling]: Module nerust_persistence::slots depends on 17 other components (threshold: 15)
 suggestion: Split into modules: nerust_persistence::slots_core, nerust_persistence::slots_integration
nerust_persistence::tests::slots -> 19 dependencies: medium[High Efferent Coupling]: Module nerust_persistence::tests::slots depends on 19 other components (threshold: 15)
 suggestion: Split into modules: nerust_persistence::tests::slots_core, nerust_persistence::tests::slots_integration
nerust_rom_test::perf -> 21 dependencies: medium[High Efferent Coupling]: Module nerust_rom_test::perf depends on 21 other components (threshold: 15)
 suggestion: Split into modules: nerust_rom_test::perf_core, nerust_rom_test::perf_integration
nerust_rom_test::tests -> 19 dependencies: medium[High Efferent Coupling]: Module nerust_rom_test::tests depends on 19 other components (threshold: 15)
 suggestion: Split into modules: nerust_rom_test::tests_core, nerust_rom_test::tests_integration
nerust_screen_wgpu::renderer::setup -> 16 dependencies: medium[High Efferent Coupling]: Module nerust_screen_wgpu::renderer::setup depends on 16 other components (threshold: 15)
 suggestion: Split into modules: nerust_screen_wgpu::renderer::setup_core, nerust_screen_wgpu::renderer::setup_integration
nerust_screen_wgpu::renderer::tests -> 17 dependencies: medium[High Efferent Coupling]: Module nerust_screen_wgpu::renderer::tests depends on 17 other components (threshold: 15)
 suggestion: Split into modules: nerust_screen_wgpu::renderer::tests_core, nerust_screen_wgpu::renderer::tests_integration
nerust_tao::settings::ui -> 27 dependencies: medium[High Efferent Coupling]: Module nerust_tao::settings::ui depends on 27 other components (threshold: 15)
 suggestion: Split into modules: nerust_tao::settings::ui_core, nerust_tao::settings::ui_integration
nerust_tao::window::runtime::host -> 27 dependencies: medium[High Efferent Coupling]: Module nerust_tao::window::runtime::host depends on 27 other components (threshold: 15)
 suggestion: Split into modules: nerust_tao::window::runtime::host_core, nerust_tao::window::runtime::host_integration
Circular dependencies:
 - nerust_gui_runtime::settings::manager -> nerust_gui_runtime::settings::store
 - nerust_tao::settings -> nerust_tao::settings::bridge
Analyzing project at 'src'...
Analysis complete: 285 files, 230 modules

==> docker run cargo-coupling coupling --json --no-git src
Grade: C | Score: 91% | Quality gate: FAILED
Thresholds: min_grade=C, max_critical=0, max_circular=0
Modules: 230 | Couplings: 4859 | Critical: 0 | High: 13 | Medium: 52 | Circular: 2
Blocking issues:
 - 2 circular dependencies (max: 0)
Issues:
113 dependents -> nerust_contract_settings::nerust_contract_settings: high[High Afferent Coupling]: Module nerust_contract_settings::nerust_contract_settings is depended on by 113 other components (threshold: 20)
 suggestion: Introduce trait `Nerust_contract_settingsInterface` with methods: // Define stable public API
23 dependents -> nerust_nes_core::nerust_nes_core: medium[High Afferent Coupling]: Module nerust_nes_core::nerust_nes_core is depended on by 23 other components (threshold: 20)
 suggestion: Introduce trait `Nerust_nes_coreInterface` with methods: // Define stable public API
24 dependents -> nerust_screen_video::nerust_screen_video: medium[High Afferent Coupling]: Module nerust_screen_video::nerust_screen_video is depended on by 24 other components (threshold: 20)
 suggestion: Introduce trait `Nerust_screen_videoInterface` with methods: // Define stable public API
242 dependents -> nerust_nes_core::cpu: high[High Afferent Coupling]: Module nerust_nes_core::cpu is depended on by 242 other components (threshold: 20)
 suggestion: Introduce trait `CpuInterface` with methods: // Define stable public API
25 dependents -> nerust_gui_shell::descriptor: medium[High Afferent Coupling]: Module nerust_gui_shell::descriptor is depended on by 25 other components (threshold: 20)
 suggestion: Introduce trait `DescriptorInterface` with methods: // Define stable public API
26 dependents -> nerust_rom_test::events: medium[High Afferent Coupling]: Module nerust_rom_test::events is depended on by 26 other components (threshold: 20)
 suggestion: Introduce trait `EventsInterface` with methods: // Define stable public API
26 dependents -> nerust_screen_logical::nerust_screen_logical: medium[High Afferent Coupling]: Module nerust_screen_logical::nerust_screen_logical is depended on by 26 other components (threshold: 20)
 suggestion: Introduce trait `Nerust_screen_logicalInterface` with methods: // Define stable public API
26 dependents -> nerust_sound_traits::nerust_sound_traits: medium[High Afferent Coupling]: Module nerust_sound_traits::nerust_sound_traits is depended on by 26 other components (threshold: 20)
 suggestion: Introduce trait `Nerust_sound_traitsInterface` with methods: // Define stable public API
27 dependents -> nerust_contract_mirror::nerust_contract_mirror: medium[High Afferent Coupling]: Module nerust_contract_mirror::nerust_contract_mirror is depended on by 27 other components (threshold: 20)
 suggestion: Introduce trait `Nerust_contract_mirrorInterface` with methods: // Define stable public API
27 dependents -> nerust_nes_core::cartridge_rom: medium[High Afferent Coupling]: Module nerust_nes_core::cartridge_rom is depended on by 27 other components (threshold: 20)
 suggestion: Introduce trait `Cartridge_romInterface` with methods: // Define stable public API
28 dependents -> nerust_nes_core::cartridge_data_parts: medium[High Afferent Coupling]: Module nerust_nes_core::cartridge_data_parts is depended on by 28 other components (threshold: 20)
 suggestion: Introduce trait `Cartridge_data_partsInterface` with methods: // Define stable public API
30 dependents -> nerust_contract_options::nerust_contract_options: medium[High Afferent Coupling]: Module nerust_contract_options::nerust_contract_options is depended on by 30 other components (threshold: 20)
 suggestion: Introduce trait `Nerust_contract_optionsInterface` with methods: // Define stable public API
30 dependents -> nerust_nes_core::cartridge_runtime_state: medium[High Afferent Coupling]: Module nerust_nes_core::cartridge_runtime_state is depended on by 30 other components (threshold: 20)
 suggestion: Introduce trait `Cartridge_runtime_stateInterface` with methods: // Define stable public API
30 dependents -> nerust_rom_test::results: medium[High Afferent Coupling]: Module nerust_rom_test::results is depended on by 30 other components (threshold: 20)
 suggestion: Introduce trait `ResultsInterface` with methods: // Define stable public API
32 dependents -> nerust_gui_session::nerust_gui_session: medium[High Afferent Coupling]: Module nerust_gui_session::nerust_gui_session is depended on by 32 other components (threshold: 20)
 suggestion: Introduce trait `Nerust_gui_sessionInterface` with methods: // Define stable public API
33 dependents -> nerust_input_nes::topology: medium[High Afferent Coupling]: Module nerust_input_nes::topology is depended on by 33 other components (threshold: 20)
 suggestion: Introduce trait `TopologyInterface` with methods: // Define stable public API
33 dependents -> nerust_nes_core::cartridge::mapper: medium[High Afferent Coupling]: Module nerust_nes_core::cartridge::mapper is depended on by 33 other components (threshold: 20)
 suggestion: Introduce trait `MapperInterface` with methods: // Define stable public API
34 dependents -> nerust_console::nerust_console: medium[High Afferent Coupling]: Module nerust_console::nerust_console is depended on by 34 other components (threshold: 20)
 suggestion: Introduce trait `Nerust_consoleInterface` with methods: // Define stable public API
35 dependents -> nerust_contract_rom::nerust_contract_rom: medium[High Afferent Coupling]: Module nerust_contract_rom::nerust_contract_rom is depended on by 35 other components (threshold: 20)
 suggestion: Introduce trait `Nerust_contract_romInterface` with methods: // Define stable public API
40 dependents -> nerust_nes_core::interrupt: medium[High Afferent Coupling]: Module nerust_nes_core::interrupt is depended on by 40 other components (threshold: 20)
 suggestion: Introduce trait `InterruptInterface` with methods: // Define stable public API
40 dependents -> nerust_nes_core::mapper: medium[High Afferent Coupling]: Module nerust_nes_core::mapper is depended on by 40 other components (threshold: 20)
 suggestion: Introduce trait `MapperInterface` with methods: // Define stable public API
40 dependents -> nerust_nes_core::mapper_state: medium[High Afferent Coupling]: Module nerust_nes_core::mapper_state is depended on by 40 other components (threshold: 20)
 suggestion: Introduce trait `Mapper_stateInterface` with methods: // Define stable public API
45 dependents -> nerust_persistence::nerust_persistence: high[High Afferent Coupling]: Module nerust_persistence::nerust_persistence is depended on by 45 other components (threshold: 20)
 suggestion: Introduce trait `Nerust_persistenceInterface` with methods: // Define stable public API
51 dependents -> nerust_input_schema::nerust_input_schema: high[High Afferent Coupling]: Module nerust_input_schema::nerust_input_schema is depended on by 51 other components (threshold: 20)
 suggestion: Introduce trait `Nerust_input_schemaInterface` with methods: // Define stable public API
55 dependents -> nerust_gui_runtime::nerust_gui_runtime: high[High Afferent Coupling]: Module nerust_gui_runtime::nerust_gui_runtime is depended on by 55 other components (threshold: 20)
 suggestion: Introduce trait `Nerust_gui_runtimeInterface` with methods: // Define stable public API
69 dependents -> nerust_input_nes::nerust_input_nes: high[High Afferent Coupling]: Module nerust_input_nes::nerust_input_nes is depended on by 69 other components (threshold: 20)
 suggestion: Introduce trait `Nerust_input_nesInterface` with methods: // Define stable public API
77 dependents -> nerust_gui_shell::nerust_gui_shell: high[High Afferent Coupling]: Module nerust_gui_shell::nerust_gui_shell is depended on by 77 other components (threshold: 20)
 suggestion: Introduce trait `Nerust_gui_shellInterface` with methods: // Define stable public API
nerust_console::state::tests -> 23 dependencies: medium[High Efferent Coupling]: Module nerust_console::state::tests depends on 23 other components (threshold: 15)
 suggestion: Split into modules: nerust_console::state::tests_core, nerust_console::state::tests_integration
nerust_gtk::preferences -> 33 dependencies: high[High Efferent Coupling]: Module nerust_gtk::preferences depends on 33 other components (threshold: 15)
 suggestion: Split into modules: nerust_gtk::preferences_core, nerust_gtk::preferences_integration
nerust_gtk::window -> 18 dependencies: medium[High Efferent Coupling]: Module nerust_gtk::window depends on 18 other components (threshold: 15)
 suggestion: Split into modules: nerust_gtk::window_core, nerust_gtk::window_integration
nerust_gui_runtime::settings -> 39 dependencies: high[High Efferent Coupling]: Module nerust_gui_runtime::settings depends on 39 other components (threshold: 15)
 suggestion: Split into modules: nerust_gui_runtime::settings_core, nerust_gui_runtime::settings_integration
nerust_gui_runtime::settings::manager -> 30 dependencies: medium[High Efferent Coupling]: Module nerust_gui_runtime::settings::manager depends on 30 other components (threshold: 15)
 suggestion: Split into modules: nerust_gui_runtime::settings::manager_core, nerust_gui_runtime::settings::manager_integration
nerust_gui_shell::descriptor -> 52 dependencies: high[High Efferent Coupling]: Module nerust_gui_shell::descriptor depends on 52 other components (threshold: 15)
 suggestion: Split into modules: nerust_gui_shell::descriptor_core, nerust_gui_shell::descriptor_integration
nerust_gui_shell::session -> 24 dependencies: medium[High Efferent Coupling]: Module nerust_gui_shell::session depends on 24 other components (threshold: 15)
 suggestion: Split into modules: nerust_gui_shell::session_core, nerust_gui_shell::session_integration
nerust_gui_shell::session::lifecycle -> 34 dependencies: high[High Efferent Coupling]: Module nerust_gui_shell::session::lifecycle depends on 34 other components (threshold: 15)
 suggestion: Split into modules: nerust_gui_shell::session::lifecycle_core, nerust_gui_shell::session::lifecycle_integration
nerust_gui_shell::session::tests -> 52 dependencies: high[High Efferent Coupling]: Module nerust_gui_shell::session::tests depends on 52 other components (threshold: 15)
 suggestion: Split into modules: nerust_gui_shell::session::tests_core, nerust_gui_shell::session::tests_integration
nerust_gui_shell::settings::bindings::events::controller -> 16 dependencies: medium[High Efferent Coupling]: Module nerust_gui_shell::settings::bindings::events::controller depends on 16 other components (threshold: 15)
 suggestion: Split into modules: nerust_gui_shell::settings::bindings::events::controller_core, nerust_gui_shell::settings::bindings::events::controller_integration
nerust_gui_shell::settings::defaults::seed -> 27 dependencies: medium[High Efferent Coupling]: Module nerust_gui_shell::settings::defaults::seed depends on 27 other components (threshold: 15)
 suggestion: Split into modules: nerust_gui_shell::settings::defaults::seed_core, nerust_gui_shell::settings::defaults::seed_integration
nerust_gui_shell::settings::editor -> 20 dependencies: medium[High Efferent Coupling]: Module nerust_gui_shell::settings::editor depends on 20 other components (threshold: 15)
 suggestion: Split into modules: nerust_gui_shell::settings::editor_core, nerust_gui_shell::settings::editor_integration
nerust_gui_shell::settings::nes -> 29 dependencies: medium[High Efferent Coupling]: Module nerust_gui_shell::settings::nes depends on 29 other components (threshold: 15)
 suggestion: Split into modules: nerust_gui_shell::settings::nes_core, nerust_gui_shell::settings::nes_integration
nerust_gui_shell::touch -> 17 dependencies: medium[High Efferent Coupling]: Module nerust_gui_shell::touch depends on 17 other components (threshold: 15)
 suggestion: Split into modules: nerust_gui_shell::touch_core, nerust_gui_shell::touch_integration
nerust_input_nes_runtime::lib -> 17 dependencies: medium[High Efferent Coupling]: Module nerust_input_nes_runtime::lib depends on 17 other components (threshold: 15)
 suggestion: Split into modules: nerust_input_nes_runtime::lib_core, nerust_input_nes_runtime::lib_integration
nerust_input_nes::input -> 19 dependencies: medium[High Efferent Coupling]: Module nerust_input_nes::input depends on 19 other components (threshold: 15)
 suggestion: Split into modules: nerust_input_nes::input_core, nerust_input_nes::input_integration
nerust_input_nes::input::persisted -> 25 dependencies: medium[High Efferent Coupling]: Module nerust_input_nes::input::persisted depends on 25 other components (threshold: 15)
 suggestion: Split into modules: nerust_input_nes::input::persisted_core, nerust_input_nes::input::persisted_integration
nerust_input_nes::topology -> 20 dependencies: medium[High Efferent Coupling]: Module nerust_input_nes::topology depends on 20 other components (threshold: 15)
 suggestion: Split into modules: nerust_input_nes::topology_core, nerust_input_nes::topology_integration
nerust_input_schema::lib -> 17 dependencies: medium[High Efferent Coupling]: Module nerust_input_schema::lib depends on 17 other components (threshold: 15)
 suggestion: Split into modules: nerust_input_schema::lib_core, nerust_input_schema::lib_integration
nerust_nes_core::cartridge::mapper::action53 -> 20 dependencies: medium[High Efferent Coupling]: Module nerust_nes_core::cartridge::mapper::action53 depends on 20 other components (threshold: 15)
 suggestion: Split into modules: nerust_nes_core::cartridge::mapper::action53_core, nerust_nes_core::cartridge::mapper::action53_integration
nerust_nes_core::cartridge::mapper::fme7 -> 20 dependencies: medium[High Efferent Coupling]: Module nerust_nes_core::cartridge::mapper::fme7 depends on 20 other components (threshold: 15)
 suggestion: Split into modules: nerust_nes_core::cartridge::mapper::fme7_core, nerust_nes_core::cartridge::mapper::fme7_integration
nerust_nes_core::cartridge::mapper::mmc2 -> 21 dependencies: medium[High Efferent Coupling]: Module nerust_nes_core::cartridge::mapper::mmc2 depends on 21 other components (threshold: 15)
 suggestion: Split into modules: nerust_nes_core::cartridge::mapper::mmc2_core, nerust_nes_core::cartridge::mapper::mmc2_integration
nerust_nes_core::cartridge::mapper::mmc3 -> 23 dependencies: medium[High Efferent Coupling]: Module nerust_nes_core::cartridge::mapper::mmc3 depends on 23 other components (threshold: 15)
 suggestion: Split into modules: nerust_nes_core::cartridge::mapper::mmc3_core, nerust_nes_core::cartridge::mapper::mmc3_integration
nerust_nes_core::cartridge::mapper::mmc3::shared -> 17 dependencies: medium[High Efferent Coupling]: Module nerust_nes_core::cartridge::mapper::mmc3::shared depends on 17 other components (threshold: 15)
 suggestion: Split into modules: nerust_nes_core::cartridge::mapper::mmc3::shared_core, nerust_nes_core::cartridge::mapper::mmc3::shared_integration
nerust_nes_core::cartridge::mapper::mmc3::standard -> 31 dependencies: high[High Efferent Coupling]: Module nerust_nes_core::cartridge::mapper::mmc3::standard depends on 31 other components (threshold: 15)
 suggestion: Split into modules: nerust_nes_core::cartridge::mapper::mmc3::standard_core, nerust_nes_core::cartridge::mapper::mmc3::standard_integration
nerust_nes_core::cartridge::mapper::mmc5 -> 19 dependencies: medium[High Efferent Coupling]: Module nerust_nes_core::cartridge::mapper::mmc5 depends on 19 other components (threshold: 15)
 suggestion: Split into modules: nerust_nes_core::cartridge::mapper::mmc5_core, nerust_nes_core::cartridge::mapper::mmc5_integration
nerust_nes_core::cartridge::mapper::sxrom -> 19 dependencies: medium[High Efferent Coupling]: Module nerust_nes_core::cartridge::mapper::sxrom depends on 19 other components (threshold: 15)
 suggestion: Split into modules: nerust_nes_core::cartridge::mapper::sxrom_core, nerust_nes_core::cartridge::mapper::sxrom_integration
nerust_nes_core::cpu -> 21 dependencies: medium[High Efferent Coupling]: Module nerust_nes_core::cpu depends on 21 other components (threshold: 15)
 suggestion: Split into modules: nerust_nes_core::cpu_core, nerust_nes_core::cpu_integration
nerust_nes_core::cpu::opcodes::interrupt -> 16 dependencies: medium[High Efferent Coupling]: Module nerust_nes_core::cpu::opcodes::interrupt depends on 16 other components (threshold: 15)
 suggestion: Split into modules: nerust_nes_core::cpu::opcodes::interrupt_core, nerust_nes_core::cpu::opcodes::interrupt_integration
nerust_nes_core::ppu -> 21 dependencies: medium[High Efferent Coupling]: Module nerust_nes_core::ppu depends on 21 other components (threshold: 15)
 suggestion: Split into modules: nerust_nes_core::ppu_core, nerust_nes_core::ppu_integration
nerust_persistence::slots -> 17 dependencies: medium[High Efferent Coupling]: Module nerust_persistence::slots depends on 17 other components (threshold: 15)
 suggestion: Split into modules: nerust_persistence::slots_core, nerust_persistence::slots_integration
nerust_persistence::tests::slots -> 19 dependencies: medium[High Efferent Coupling]: Module nerust_persistence::tests::slots depends on 19 other components (threshold: 15)
 suggestion: Split into modules: nerust_persistence::tests::slots_core, nerust_persistence::tests::slots_integration
nerust_rom_test::perf -> 21 dependencies: medium[High Efferent Coupling]: Module nerust_rom_test::perf depends on 21 other components (threshold: 15)
 suggestion: Split into modules: nerust_rom_test::perf_core, nerust_rom_test::perf_integration
nerust_rom_test::tests -> 19 dependencies: medium[High Efferent Coupling]: Module nerust_rom_test::tests depends on 19 other components (threshold: 15)
 suggestion: Split into modules: nerust_rom_test::tests_core, nerust_rom_test::tests_integration
nerust_screen_wgpu::renderer::setup -> 16 dependencies: medium[High Efferent Coupling]: Module nerust_screen_wgpu::renderer::setup depends on 16 other components (threshold: 15)
 suggestion: Split into modules: nerust_screen_wgpu::renderer::setup_core, nerust_screen_wgpu::renderer::setup_integration
nerust_screen_wgpu::renderer::tests -> 17 dependencies: medium[High Efferent Coupling]: Module nerust_screen_wgpu::renderer::tests depends on 17 other components (threshold: 15)
 suggestion: Split into modules: nerust_screen_wgpu::renderer::tests_core, nerust_screen_wgpu::renderer::tests_integration
nerust_tao::settings::ui -> 27 dependencies: medium[High Efferent Coupling]: Module nerust_tao::settings::ui depends on 27 other components (threshold: 15)
 suggestion: Split into modules: nerust_tao::settings::ui_core, nerust_tao::settings::ui_integration
nerust_tao::window::runtime::host -> 27 dependencies: medium[High Efferent Coupling]: Module nerust_tao::window::runtime::host depends on 27 other components (threshold: 15)
 suggestion: Split into modules: nerust_tao::window::runtime::host_core, nerust_tao::window::runtime::host_integration
Circular dependencies:
 - nerust_gui_runtime::settings::manager -> nerust_gui_runtime::settings::store
 - nerust_tao::settings -> nerust_tao::settings::bridge
Analyzing project at 'src'...
Analysis complete: 285 files, 230 modules

==> docker run cargo-coupling coupling --json --no-git src
Grade: C | Score: 91% | Quality gate: FAILED
Thresholds: min_grade=C, max_critical=0, max_circular=0
Modules: 230 | Couplings: 4859 | Critical: 0 | High: 13 | Medium: 52 | Circular: 2
Blocking issues:
 - 2 circular dependencies (max: 0)
Issues:
113 dependents -> nerust_contract_settings::nerust_contract_settings: high[High Afferent Coupling]: Module nerust_contract_settings::nerust_contract_settings is depended on by 113 other components (threshold: 20)
 suggestion: Introduce trait `Nerust_contract_settingsInterface` with methods: // Define stable public API
23 dependents -> nerust_nes_core::nerust_nes_core: medium[High Afferent Coupling]: Module nerust_nes_core::nerust_nes_core is depended on by 23 other components (threshold: 20)
 suggestion: Introduce trait `Nerust_nes_coreInterface` with methods: // Define stable public API
24 dependents -> nerust_screen_video::nerust_screen_video: medium[High Afferent Coupling]: Module nerust_screen_video::nerust_screen_video is depended on by 24 other components (threshold: 20)
 suggestion: Introduce trait `Nerust_screen_videoInterface` with methods: // Define stable public API
242 dependents -> nerust_nes_core::cpu: high[High Afferent Coupling]: Module nerust_nes_core::cpu is depended on by 242 other components (threshold: 20)
 suggestion: Introduce trait `CpuInterface` with methods: // Define stable public API
25 dependents -> nerust_gui_shell::descriptor: medium[High Afferent Coupling]: Module nerust_gui_shell::descriptor is depended on by 25 other components (threshold: 20)
 suggestion: Introduce trait `DescriptorInterface` with methods: // Define stable public API
26 dependents -> nerust_rom_test::events: medium[High Afferent Coupling]: Module nerust_rom_test::events is depended on by 26 other components (threshold: 20)
 suggestion: Introduce trait `EventsInterface` with methods: // Define stable public API
26 dependents -> nerust_screen_logical::nerust_screen_logical: medium[High Afferent Coupling]: Module nerust_screen_logical::nerust_screen_logical is depended on by 26 other components (threshold: 20)
 suggestion: Introduce trait `Nerust_screen_logicalInterface` with methods: // Define stable public API
26 dependents -> nerust_sound_traits::nerust_sound_traits: medium[High Afferent Coupling]: Module nerust_sound_traits::nerust_sound_traits is depended on by 26 other components (threshold: 20)
 suggestion: Introduce trait `Nerust_sound_traitsInterface` with methods: // Define stable public API
27 dependents -> nerust_contract_mirror::nerust_contract_mirror: medium[High Afferent Coupling]: Module nerust_contract_mirror::nerust_contract_mirror is dep
... truncated ...

- contract/core/src/lib.rs: ConsoleCore trait, GpuCommand enum, GpuCommandList,
  CoreConfig, CoreCapabilities, VideoSignalKind, EmuCommand enum, CoreError,
  AudioBackend/Device/DeviceKind/PortIo traits(仮置き、Phase 3/4で移動)
- Cargo.toml: members, default-members, workspace dependency pathをcore/→nes/core/に更新
- git mv core/ nes/core/: ディレクトリ移動
- nerust_core → nerust_nes_core: パッケージ名変更、全使用箇所を一括置換

cargo test: 155 passed, 0 failed
@chalharu chalharu merged commit a9cf452 into master Jun 14, 2026
11 of 12 checks passed
@chalharu chalharu deleted the phase-2a branch June 14, 2026 00:33
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