Skip to content

Restore RatEye submodule integration and add scan diagnostics - #22

Merged
DysektAI merged 24 commits into
masterfrom
codex/rateye-submodule
Jul 28, 2026
Merged

Restore RatEye submodule integration and add scan diagnostics#22
DysektAI merged 24 commits into
masterfrom
codex/rateye-submodule

Conversation

@DysektAI

@DysektAI DysektAI commented Jul 27, 2026

Copy link
Copy Markdown
Member

What changed

  • replaces the temporarily vendored in-tree RatEye sources with a Git submodule and source ProjectReference
  • updates restore/build/release workflows and documentation for recursive submodule initialization
  • adds opt-in local scan diagnostics export containing the latest capture, neutral replay manifest, result IDs/confidences, configuration, and stage timings
  • adds integrity checks that guard the standalone RatEye boundary and CI/submodule wiring
  • moves engine-owned tests and processing contracts back to RatEye while keeping consumer integration tests in RatScanner
  • advances the RatEye dependency to reviewed commit 18c9141 from Restore standalone RatEye engine and add scan benchmarks RatEye#1
  • hardens fallback display geometry/DPI export and adversarial integrity parsing identified during review

Why

RatEye is intended to remain a reusable scan engine that never knows about RatScanner. The previous monorepo layout made host and engine concerns easy to intertwine and prevented other consumers from using the engine cleanly. A source submodule preserves independent repositories and packageability while avoiding a NuGet publish for every coordinated development change.

The diagnostic export makes live OCR/icon failures reproducible locally and provided the evidence needed to separate grid localization, invalid catalog templates, and UI-state-sensitive ranking instead of guessing from live scans.

User and developer impact

Developers must clone/update submodules before building. End users gain an explicit Advanced-settings export for the most recent scan diagnostic; exports remain local unless the user chooses to share them. RatEye identifies the controlled F-1 item in normal, FIR, Task-Wishlist, and Task-Wishlist+FIR states.

Validation

  • RatEye Debug and Release builds — 0 warnings, 0 errors
  • RatEye Debug and Release tests — 69 passed
  • controlled four-case current-game replay — 4/4 expected IDs
  • RatScanner Debug and Release builds — 0 warnings, 0 errors
  • RatScanner Debug and Release tests — 192 passed, 5 optional real-image harness tests skipped
  • CSharpier check passed
  • Markdown lint and agent-document integrity checks passed
  • all 22 adversarial submodule/workflow integrity scenarios passed
  • NuGet and npm vulnerability audits — clean
  • actionlint passed
  • full publish.bat succeeded:
    • validated 245 MB Windows x64 single-file executable
    • LICENSE and required Data layout present
    • 4,221 icons packaged
    • 198 MB release zip created
  • GitHub CodeQL, CodeRabbit, Socket Security, and Snyk checks passed

Depends on tarkovtracker-org/RatEye#1 at commit 18c9141.

@coderabbitai

coderabbitai Bot commented Jul 27, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

RatEye is converted to a recursively initialized Git submodule with updated project wiring, CI validation, documentation, and test ownership. RatScanner also captures scan diagnostics and adds a localized settings action to export the latest capture and manifest.

Changes

RatEye submodule integration

Layer / File(s) Summary
Submodule boundary and project wiring
.gitmodules, .github/workflows/*, Directory.Build.targets, RatScanner.sln, src/App/RatScanner.csproj, src/ScanEngine
RatEye is checked out recursively, referenced from its nested project path, excluded from formatting, and the former in-tree engine boundary is removed.
Repository and development guidance
AGENTS.md, CONTRIBUTING.md, README.md, docs/agent-context/*, tests/AGENTS.md
Documentation describes RatEye ownership, recursive initialization, project-reference constraints, repository boundaries, and updated validation responsibilities.
Integrity checks and test coverage
scripts/*, tests/RatScanner.Tests/*
Integrity validation checks submodule metadata, project paths, and CI checkout settings; fixtures cover invalid configurations and workflow configuration.

Scan diagnostic export

Layer / File(s) Summary
Capture, storage, and export flow
src/App/RatScannerMain.cs, src/App/ScanDiagnosticStore.cs, tests/RatScanner.Tests/ScanDiagnosticStoreTests.cs
Scans record captures, detections, configuration, and timings; the latest bundle exports as capture.png and scan.ratdiag.json, with tests covering empty and repeated exports.
Settings UI and localization
src/App/Pages/App/Settings/SettingsAdvanced.razor, src/App/i18n/*, docs/agent-context/configuration-and-cache.md
A diagnostics button invokes export and reports success, missing data, or failures using localized messages and documented bundle contents.

Estimated code review effort: 4 (Complex) | ~45 minutes

Sequence Diagram(s)

sequenceDiagram
  participant Scan as RatScannerMain
  participant Store as ScanDiagnosticStore
  participant UI as SettingsAdvanced
  participant Disk as Debug directory
  Scan->>Store: record latest scan diagnostics
  UI->>Scan: request diagnostic export
  Scan->>Store: export stored bundle
  Store->>Disk: write capture.png and scan.ratdiag.json
  Store-->>UI: return success path or error
Loading

Possibly related issues

  • tarkovtracker-org/RatScanner#21 — Implements the proposed RatEye extraction as a standalone submodule, including project wiring, CI/setup updates, and moving engine-owned code and tests out of RatScanner.

Possibly related PRs

Suggested labels: size:XXL

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 28.57% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Title check ✅ Passed The title clearly summarizes the main changes: restoring RatEye submodule integration and adding scan diagnostics.
Description check ✅ Passed The description matches the changeset and covers submodule integration, diagnostics export, integrity checks, and test movement.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/rateye-submodule

Comment @coderabbitai help to get the list of available commands.

@codeant-ai

This comment was marked as resolved.

@coderabbitai coderabbitai Bot added the size:XXL This PR changes 1000+ lines, ignoring generated files label Jul 27, 2026
coderabbitai[bot]

This comment was marked as resolved.

@DysektAI

DysektAI commented Jul 27, 2026

Copy link
Copy Markdown
Member Author

Correction: this earlier closure rationale was wrong. Maintainer direction is to keep RatEye split into its own repository for modularity. This PR is active again and restores RatEye through the standalone repository/submodule boundary; #24 is not the architectural replacement for this work.

@DysektAI DysektAI closed this Jul 27, 2026
@DysektAI DysektAI reopened this Jul 28, 2026
@DysektAI
DysektAI marked this pull request as ready for review July 28, 2026 03:06
@cubic-dev-ai

cubic-dev-ai Bot commented Jul 28, 2026

Copy link
Copy Markdown

Running ultrareview automatically — This PR replaces in-tree RatEye with a Git submodule, updates CI, adds scan diagnostics export, and spans 90 files — the blast radius of a misconfigured submodule, broken CI, or data-integrity bug could break builds or corrupt scan output, warranting deep multi-pass review.. I'll post findings when complete.

devin-ai-integration[bot]

This comment was marked as resolved.

cubic-dev-ai[bot]

This comment was marked as resolved.

cubic-dev-ai[bot]

This comment was marked as resolved.

cubic-dev-ai[bot]

This comment was marked as resolved.

cubic-dev-ai[bot]

This comment was marked as resolved.

@DysektAI DysektAI self-assigned this Jul 28, 2026
cubic-dev-ai[bot]

This comment was marked as resolved.

cubic-dev-ai[bot]

This comment was marked as resolved.

cubic-dev-ai[bot]

This comment was marked as resolved.

cubic-dev-ai[bot]

This comment was marked as resolved.

cubic-dev-ai[bot]

This comment was marked as resolved.

kilo-code-bot[bot]

This comment was marked as resolved.

@kilo-code-bot

This comment was marked as resolved.

coderabbitai[bot]

This comment was marked as resolved.

cubic-dev-ai[bot]

This comment was marked as resolved.

coderabbitai[bot]

This comment was marked as resolved.

cubic-dev-ai[bot]

This comment was marked as resolved.

cubic-dev-ai[bot]

This comment was marked as resolved.

@DysektAI
DysektAI merged commit 40eddcb into master Jul 28, 2026
15 checks passed
@DysektAI
DysektAI deleted the codex/rateye-submodule branch July 28, 2026 20:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XXL This PR changes 1000+ lines, ignoring generated files

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant