Skip to content

chore: reclassify build-lifecycle capabilities back to plugins, keep only symbols - #147

Merged
frostebite merged 1 commit into
mainfrom
chore/reclassify-orchestrator-capabilities
Aug 24, 2026
Merged

chore: reclassify build-lifecycle capabilities back to plugins, keep only symbols#147
frostebite merged 1 commit into
mainfrom
chore/reclassify-orchestrator-capabilities

Conversation

@frostebite

Copy link
Copy Markdown
Member

Only crash-symbol collection is meant to be an Orchestrator capability; the other four from #144 move back to being plugins.

Why symbols stays, the rest doesn't

Debug symbols genuinely have to be captured at build time or they're gone for good — once the build machine is torn down, every future crash report from that build is unsymbolicatable. That's output-collection, orchestrator's existing domain. It stays as the symbols output type + symbol-collector.ts.

The other four are moved back to plugins/, matching the other 10 experimental drafts from #145:

Was in orchestrator Now
visual-baseline.ts plugins/screen-capture (capture command)
service-directory.ts plugins/dev-tunnel (tunnel command)
dedicated-server-provisioner.ts plugins/dedicated-server-provisioning (provision-server command)
anti-cheat-middleware.ts dropped — plugins/anti-cheat restored to its original options-only shape

anti-cheat doesn't get a ported command: its Middleware-based wiring only made sense while it lived inside orchestrator, and its real integration (EasyAntiCheat/BattlEye SDK, NDA-gated) was never implemented to begin with — that part of the original draft is unchanged.

What moved vs. what's new

The generator/comparison/registry logic itself is unchanged — same functions, same tests, git detects all three as renames. Only the home moves. Each of the three command-based plugins gets the same onLoad warning + throws "not implemented yet" dispatch as the other drafts; anti-cheat keeps its existing warning, reworded to match everyone else's [game-ci] WARNING: ... EXPERIMENTAL ... phrasing. All four are "private": true, with the standard EXPERIMENTAL README banner plus a "What's real" section pointing at the tested logic underneath.

output-type-registry.ts (and its test) drops back to 9 built-in types; orchestrator's index.ts drops the four exports.

One real bug found while moving

screen-capture's isolated tsconfig.json resolves a stricter BinaryLike type for crypto.Hash#update than orchestrator's own tsconfig did — same @types/node version, different resolution. digestDirectory now passes a Uint8Array view instead of the raw Buffer, which satisfies both.

Verification

  • bun install --frozen-lockfile passes.
  • Each new plugin's suite passes under both vitest and bun (34 tests, unchanged from before the move).
  • onLoad/createCommand behavior driven directly against the plugin objects: 4 onLoad warnings, 3 commands throw when invoked, 0 for anything unrelated.
  • Orchestrator's output-service suite (69 tests) still passes with the built-in count fixed to 9.

🤖 Generated with Claude Code

…only symbols

Only crash-symbol collection belongs in the Orchestrator. Debug symbols
have to be captured at build time or they are gone for good, which
genuinely is orchestrator's output-collection domain - it stays as the
`symbols` output type and symbol-collector.ts, from #144.

The other four capabilities from that same PR are moved back to being
plugins, matching the other 10 experimental drafts (#145):

  visual-baseline.ts   -> plugins/screen-capture      (`capture` command)
  service-directory.ts -> plugins/dev-tunnel           (`tunnel` command)
  dedicated-server-provisioner.ts
                        -> plugins/dedicated-server-provisioning
                           (`provision-server` command)
  anti-cheat-middleware.ts is dropped; plugins/anti-cheat is restored to
  its original options-only shape (its actual command, if there ever is
  one, has to come from EasyAntiCheat/BattlEye SDK integration, which is
  NDA-gated and was never real to begin with - the Middleware-based
  wiring only made sense while this lived inside orchestrator).

The ported logic itself is unchanged (same generators, same tests) - only
its home moves. Each of the three command-based plugins gets the same
onLoad warning and `throws "not implemented yet"` command dispatch as the
other drafts; anti-cheat keeps its existing onLoad warning, reworded to
match the standard "[game-ci] WARNING: ... EXPERIMENTAL ..." phrasing
used everywhere else. All four are marked `"private": true` like the
rest, and their READMEs get the standard EXPERIMENTAL banner plus a
"What's real" section pointing at the tested logic underneath.

output-type-registry.ts and its test drop back to 9 built-in types (was
10 with visual-baseline); orchestrator's index.ts drops the four exports.

Fixed while moving: screen-capture's tsconfig resolves a stricter
BinaryLike type for crypto.Hash#update than orchestrator's does, even
with identical @types/node - digestDirectory now passes a Uint8Array view
instead of the raw Buffer, which satisfies both.

Verified: `bun install --frozen-lockfile` passes; each new plugin's suite
passes under both vitest and bun (34 tests, unchanged from before the
move); onLoad/createCommand behavior driven directly (4 onLoad warnings,
3 commands throw on use); orchestrator's output-service suite (69 tests)
still passes with the count fixed to 9 built-ins.
@coderabbitai

coderabbitai Bot commented Aug 24, 2026

Copy link
Copy Markdown

Warning

Review limit reached

Next included review available in 14 minutes.

View limit details

Limit details: You’ve used the included review currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 2a133997-1ee0-4d52-bb28-460d87fc64ba

📥 Commits

Reviewing files that changed from the base of the PR and between 87f623c and 58efca1.

⛔ Files ignored due to path filters (1)
  • bun.lock is excluded by !**/*.lock
📒 Files selected for processing (27)
  • plugins/anti-cheat/README.md
  • plugins/anti-cheat/package.json
  • plugins/anti-cheat/src/index.ts
  • plugins/anti-cheat/tsconfig.json
  • plugins/dedicated-server-provisioning/README.md
  • plugins/dedicated-server-provisioning/package.json
  • plugins/dedicated-server-provisioning/src/dedicated-server-provisioner.test.ts
  • plugins/dedicated-server-provisioning/src/dedicated-server-provisioner.ts
  • plugins/dedicated-server-provisioning/src/index.ts
  • plugins/dedicated-server-provisioning/tsconfig.json
  • plugins/dev-tunnel/README.md
  • plugins/dev-tunnel/package.json
  • plugins/dev-tunnel/src/index.ts
  • plugins/dev-tunnel/src/service-directory.test.ts
  • plugins/dev-tunnel/src/service-directory.ts
  • plugins/dev-tunnel/tsconfig.json
  • plugins/orchestrator/src/index.ts
  • plugins/orchestrator/src/model/orchestrator/services/hooks/presets/anti-cheat-middleware.test.ts
  • plugins/orchestrator/src/model/orchestrator/services/hooks/presets/anti-cheat-middleware.ts
  • plugins/orchestrator/src/model/orchestrator/services/output/artifact-service.test.ts
  • plugins/orchestrator/src/model/orchestrator/services/output/output-type-registry.ts
  • plugins/screen-capture/README.md
  • plugins/screen-capture/package.json
  • plugins/screen-capture/src/index.ts
  • plugins/screen-capture/src/visual-baseline.test.ts
  • plugins/screen-capture/src/visual-baseline.ts
  • plugins/screen-capture/tsconfig.json

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.

@frostebite
frostebite merged commit 89b72dd into main Aug 24, 2026
29 of 31 checks passed
@frostebite
frostebite deleted the chore/reclassify-orchestrator-capabilities branch August 24, 2026 23:54
frostebite added a commit to game-ci/documentation that referenced this pull request Aug 24, 2026
…ti-cheat back into the plugin catalog

game-ci/cli#147 reclassified four of the five capabilities #144 had put
into the Orchestrator - only crash-symbol collection actually belongs
there (symbols have to be captured at build time or they're gone for
good, which is genuinely output-collection). screen-capture,
dedicated-server-provisioning, dev-tunnel and anti-cheat are plugins
again, matching the other 9 drafts.

Moves those four back into the main catalog table (status notes point out
which parts are real vs which command is still unregistered), and shrinks
the old five-row "Not plugins" section to a single paragraph about
symbols, since it's the only one left.
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