Skip to content

chore: Record the dispatcher/runner split decision in a new docs/adr/ directory#1972

Merged
hatayama merged 3 commits into
v3-betafrom
docs/adr-dispatcher-runner-split
Jul 24, 2026
Merged

chore: Record the dispatcher/runner split decision in a new docs/adr/ directory#1972
hatayama merged 3 commits into
v3-betafrom
docs/adr-dispatcher-runner-split

Conversation

@hatayama

@hatayama hatayama commented Jul 24, 2026

Copy link
Copy Markdown
Owner

Summary

  • Records why uloop keeps its two-binary CLI architecture (global dispatcher + per-project pinned runner) as an architecture decision record.
  • Introduces a dedicated docs/adr/ directory with date-ordered numbering and moves the existing decision record into it.

User Impact

  • Contributors evaluating "why not a single self-contained CLI binary like Unity's official CLI?" now have the reasoning, the comparison evidence, and the explicit reversal condition in one place instead of having to reconstruct the argument.
  • Decision records now live apart from runbooks and guardrail docs, so future ADRs have an obvious home and numbering convention.

Changes

  • Add docs/adr/0002-dispatcher-runner-split.md: compares against Unity's official CLI (single binary, self-describing /api/commands catalog, force-latest package installs, investigated 2026-07-24) and documents why the split stays — a schema catalog cannot ship runner-side behavior, the runner pin dissolves cross-project version skew, and the equality-gated IPC protocolVersion depends on package and runner releasing together.
  • Move docs/security-scan-engine-decision.md to docs/adr/0001-csharp-security-scan-engine.md (rename only, no content changes; no inbound references existed).

Verification

  • git diff origin/v3-beta...HEAD --name-status shows only the new ADR and a 100% rename.
  • grep -rn "security-scan-engine-decision" across the repo confirmed no references needed updating.

Review in cubic

hatayama added 2 commits July 24, 2026 12:44
Record why uloop keeps its two-binary CLI architecture instead of
consolidating into a single self-contained binary like Unity's official
CLI (unity 1.0.0-beta.2 + com.unity.pipeline, investigated 2026-07-24):
a self-describing catalog carries schemas but not runner-side behavior,
the per-project runner pin dissolves cross-project version skew that a
single global binary would reintroduce, and the equality-gated IPC
protocolVersion depends on package and runner releasing together.
Follows the decision-record format of security-scan-engine-decision.md
and states the reversal condition (force-latest package installs).
Give architecture decision records a dedicated home instead of mixing
them with runbooks and guardrail docs in the flat docs/ root. Files are
numbered in decision-date order (0001 security scan engine, 0002
dispatcher/runner split); no existing references needed updating.
@coderabbitai

coderabbitai Bot commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

Two ADRs document the selected CodeQL-based C# security scanning approach and the decision to retain separate dispatcher and project-local runner binaries with pinned compatibility.

Changes

C# Security Scanning

Layer / File(s) Summary
CodeQL scanning decision and validation
docs/adr/0001-csharp-security-scan-engine.md
Documents CodeQL configuration and version pinning, scanner validation and SARIF evidence requirements, baseline handling, rejected alternatives, and future accuracy improvements.

Dispatcher–Runner Architecture

Layer / File(s) Summary
Dispatcher–runner split decision
docs/adr/0002-dispatcher-runner-split.md
Documents the two-binary CLI boundary, project runner version pinning, IPC protocol compatibility, dispatcher responsibilities, rejected consolidation, and revisit criteria.

Estimated code review effort: 2 (Simple) | ~10 minutes

Possibly related PRs

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly summarizes the main change: documenting the dispatcher/runner split in a new ADR under docs/adr/.
Description check ✅ Passed The description matches the changeset, explaining the ADR addition, directory move, and rename verification.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
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.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch docs/adr-dispatcher-runner-split

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

The force-latest manifest rewrite is avoidable by ordinary package
discipline, so it is no longer presented as the structural objection.
The refined objection is what remains once the package is pinned:
aligning the CLI per project needs a recorded compatibility mapping, a
mismatch gate, and per-project CLI selection — none of which the
single-binary model provides, and all of which are exactly what the pin
plus dispatcher implement. The latest-only install channel is explicitly
excluded as a beta-stage limitation rather than a structural defect.
@hatayama
hatayama merged commit 6394326 into v3-beta Jul 24, 2026
6 of 7 checks passed
@hatayama
hatayama deleted the docs/adr-dispatcher-runner-split branch July 24, 2026 04:38

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
docs/adr/0002-dispatcher-runner-split.md (1)

15-21: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Record the exact Unity Pipeline package version and evidence.

The comparison names unity 1.0.0-beta.2 but leaves com.unity.pipeline unversioned, while the conclusions about /api/commands, manifest rewriting, and the absence of a protocol gate are version-sensitive. Add the package version and a reproducible artifact/source reference, or qualify these as observations from that specific build.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/adr/0002-dispatcher-runner-split.md` around lines 15 - 21, Update the
ADR’s Unity Pipeline comparison to identify the exact com.unity.pipeline package
version and cite a reproducible artifact or source supporting the /api/commands
behavior, manifest rewriting, and protocol-gate conclusion. If exact evidence
cannot be added, explicitly qualify these statements as observations from the
specific inspected build.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@docs/adr/0002-dispatcher-runner-split.md`:
- Around line 15-21: Update the ADR’s Unity Pipeline comparison to identify the
exact com.unity.pipeline package version and cite a reproducible artifact or
source supporting the /api/commands behavior, manifest rewriting, and
protocol-gate conclusion. If exact evidence cannot be added, explicitly qualify
these statements as observations from the specific inspected build.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 5e4a9184-79e4-49ac-97e6-e052e3204009

📥 Commits

Reviewing files that changed from the base of the PR and between 2a7b6b7 and d31af13.

📒 Files selected for processing (1)
  • docs/adr/0002-dispatcher-runner-split.md

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