CMPSBL® · The Collective Master Library

Integration Report — Mindustry

Host-first, pre-purchase evaluation of the pinned Java game repository; catalog reading began only after the repository inventory was frozen.

RepositoryAnuken/Mindustry @ a4974ec8e318f9c429741d790cf17cbdf52161d4
Prepared2026-08-21
Prepared byGPT-5.6 Sol
Library versionv3.1.0
LicenceLicenseRef-CMPSBL-Perpetual-1.0
Price evaluatedUS$499 one time, perpetual, per company (basis: LICENSING.md and AGENTS.md rule 8)

In 60 seconds

What this adds to Mindustry

The useful value is concentrated in test evidence, incident evidence and external-dependency failure handling. The catalog does not replace Mindustry's mature anti-abuse/save/network systems, and it does not contain a correct general release-artifact authenticator for the updater gap.

Packet Boundary Lab

A test-only “break it, capture it, replay it” lane for packet/stream/save boundaries without rewriting production networking.

Composite #1: BLD-ENG-248 + BLD-ENG-105 → tests/src/test/java/**; core/src/mindustry/net/Packets.java; Streamable.java; SaveFileReader.java

Outbound Dependency Fuse

Bounds retries, opens a small circuit during sustained GitHub/feed outages and exposes health state while keeping current fallback semantics.

Composite #2: BLD-ENG-303 + BLD-ENG-011 + BLD-ENG-243 → core/src/mindustry/net/BeControl.java (176 nonblank LOC); core/src/mindustry/net/SteamAdmin.java (70 nonblank LOC)

Admin Decision Black Box

Turns selected moderation/command outcomes into structured, tamper-evident incident evidence that can be replayed later.

Composite #3: BLD-ENG-136 + BLD-ENG-009 + BLD-ENG-105 → server/src/mindustry/server/ServerControl.java (1,255 nonblank LOC); core/src/mindustry/net/Administration.java (639 nonblank LOC)

Update Evidence Gate — with a deliberate stop

Adds provenance and a host-owned SHA-256 allow/deny gate, but refuses to claim publisher authenticity until Mindustry supplies an independently trusted expected digest/signature source.

Composite #4: BLD-ENG-229 + BLD-ENG-009 + host SHA-256 → core/src/mindustry/net/BeControl.java (176 nonblank LOC); core/src/mindustry/mod/DataAssetCache.java (70 nonblank LOC)

9recommended components (basis: 41 host-matched candidates read in full)
4composites (basis: Step 5A)
−US$3,499 to +US$14,501net range (basis: B − integration − US$499 licence)
3.33 hlicence-only break-even (basis: US$499 ÷ US$150/h)

Each claim above is carried, with its basis, in Step 4, Step 5A or Step 5B. Licence gate: EVALUATE ONLY — no purchase/grant record exists in this snapshot, so no CMPSBL implementation material was copied, generated, wired or emitted.

Step 0

Licence conflict check

Run before any CMPSBL file is copied. A STOP/EVALUATE ONLY blocks integration, not the required read-only evaluation. Mindustry is an independent-function game product, not a rebrand/mirror/training corpus of the library.

FieldResult
Host licence (SPDX)GPL-3.0-only, conservative interpretation (basis: root LICENSE is the GPL v3 text; no “or later” grant was found in source/header search).
Where it was foundLICENSE at repository root.
Purchase or grant recordNone found in the pinned repository snapshot (basis: full filename inventory); therefore integration is not permitted in this evaluation.
LicenceCMPSBL(R) Perpetual Edition License 1.0, LicenseRef-CMPSBL-Perpetual-1.0, US$499 one time per company (basis: kit LICENSING.md + AGENTS.md rule 8).
VerdictEVALUATE ONLY — complete read-only Steps 1–8; do not copy/generate/wire component source.
Clause that drove itAGENTS.md Step 0: “No purchase or grant record” → EVALUATE ONLY; current licence imposes no host copyleft/source-disclosure requirement.
Scope limits imposedRead catalog metadata and design on paper only. No source/, polyglot/ emitter, or licensed component bytes exist in this pre-purchase kit; no host code was modified except the two required report files.

Sub-package exceptions: none found in the pinned host snapshot (basis: root/subtree licence-name search). The kit itself documents thirteen historical Apache-2.0 npm packages, but none is being integrated here.

Verdict

HOLD / CONDITIONAL BUY

Worth US$499 only if a post-purchase Java bridge proof passes quickly; do not buy this expecting it to solve updater authenticity.

Mindustry already owns the hard game-specific parts: packet abuse controls, admission checks, save rollback, ordered Steam backpressure and generated protocol behavior. The library adds credible value around adversarial fixtures, structured audit/replay and bounded external-service failure handling. The main integration risk is language: TypeScript is canonical and Java is explicitly Not claimed. The main catalog hole is more important: no general cryptographic release-artifact verifier matches the updater's executable-download boundary.

Net value (range)
−US$3,499 to +US$14,501 (basis: US$9k–21k counterfactual capability − US$6k–12k integration − US$499 licence; A=0, C=0)
Break-even
3.33 engineer-hours licence-only (US$499/US$150h); practical 43.3–83.3 hours including estimated integration.
Highest-leverage item
Packet Boundary Lab — test-only proof of the Java bridge while hardening real parser boundaries.
Strongest argument against
The Java emitter is Not claimed and unavailable pre-purchase, while the most security-sensitive observed gap — updater artifact authenticity — is not supplied by the catalog.

Step 5A — the section that sells

Composite components built for Mindustry

Four combinations survived because the new behavior comes from the wiring itself. One deliberately exposes a library limit: update provenance/evidence is possible, but publisher authenticity still needs a host-supplied trusted digest/signature source.

Composite 1 — Packet Boundary Lab

COMPOSITE #1 — Packet Boundary Lab
  Composition:   CMPSBL BLD-ENG-248 "Adversarial Input Generator" (ADVERSARIAL_CATALOG, generateAdversarialInputs) + CMPSBL BLD-ENG-105 "Forensic Replay" (AuditEvent, ReplaySession, ReplayResult, ForensicReplayEngine) + host tests/src/test/java/**, core/src/mindustry/net/Packets.java, core/src/mindustry/net/Streamable.java, core/src/mindustry/io/SaveFileReader.java
  Problem:       No dedicated adversarial network/security test suite was found; Streamable.java:38-62 accepts an advertised stream total and accumulates data client-side, and SaveFileReader.java:133-138 notes missing read-count validation.
  Behaviour:     Generates boundary/overflow/encoding/Unicode fixtures, routes them through the existing Java parsers in tests, captures the exact failure as an event, then replays the same case as a deterministic regression. Production packet code stays unchanged during the first phase.
  New because:   The input generator alone only makes cases; forensic replay alone only replays events. Together with Mindustry parsers they create a reusable “break it, capture it, replay it” boundary laboratory.
  Attachment:    tests/src/test/java/** -> Packets/Streamable/SaveFileReader public/test-accessible surfaces
  Untouched:     Generated packet definitions, live server rate limits, game simulation, Steam transport ordering, and production save writer.
  Effort:        ~2–4 engineer-days (basis: 33 + 103 entry LOC, 5 concerns across adversarial classes/case mapping/event normalization/replay/result comparison, plus Java/JUnit bridge work; no production wiring).
  Verified:      C:ok I:ok B:— T:— S:scan
  Data path:     catalog edge cases -> Java fixture adapter -> Mindustry parser -> captured result/event
                                      |                         |
                                      +---- forensic replay <---+

Composite 2 — Outbound Dependency Fuse

COMPOSITE #2 — Outbound Dependency Fuse
  Composition:   CMPSBL BLD-ENG-303 "retry-with-backoff" (RetryOptions, retry) + CMPSBL BLD-ENG-011 "Circuit Breaker" (CircuitState, CircuitBreakerConfig, CircuitStats, createCircuitBreaker) + CMPSBL BLD-ENG-243 "Module Health Metrics" (ModuleState, ModuleHealthMetrics) + host core/src/mindustry/net/BeControl.java and core/src/mindustry/net/SteamAdmin.java
  Problem:       BeControl.java:65-87 and SteamAdmin.java:17-62 call GitHub/raw endpoints; failures are handled/fallbacked, but there is no common bounded retry + open-circuit + health-state policy.
  Behaviour:     A failed external call retries with a small jittered budget; repeated failures open one dependency-specific breaker; the current call is failed/fallbacked without hammering; passive health state records last-seen/error-rate/recovery. Existing URLs and product fallback behavior remain authoritative.
  New because:   Retry, breaker and health metrics separately solve attempt timing, outage isolation and observability; only the composition turns an external dependency into a bounded, observable failure domain.
  Attachment:    BeControl.checkUpdate/download and SteamAdmin.fetch/fetchImpl callbacks
  Untouched:     Game networking, packet rate limits, Steam send queue, update source selection, Steam ban semantics.
  Effort:        ~2–4 engineer-days (basis: 55 + 169 + 85 entry LOC, retry/state/threshold/health concerns, two Java HTTP call sites, and bridge parity tests).
  Verified:      C:ok I:ok B:— T:— S:scan
  Data path:     GitHub/feed call -> retry budget -> circuit state -> existing success/fallback
                                    |
                                    +-> health state/logging

Composite 3 — Admin Decision Black Box

COMPOSITE #3 — Admin Decision Black Box
  Composition:   CMPSBL BLD-ENG-136 "Audit-Grade Decision Ledger" (LedgerEntry, AuditGradeDecisionLedger) + CMPSBL BLD-ENG-009 "Tamper-Evident Chain" (createAuditChain) + CMPSBL BLD-ENG-105 "Forensic Replay" (AuditEvent, ReplaySession, ReplayResult, ForensicReplayEngine) + host server/src/mindustry/server/ServerControl.java and core/src/mindustry/net/Administration.java
  Problem:       ServerControl already writes logs and Administration owns bans/admin state, but no structured append-only decision record was found that can reconstruct a moderation/command sequence after the fact.
  Behaviour:     Selected admin commands and moderation outcomes emit a structured record, chain it append-only, and expose an incident slice that can be replayed in a test harness. It does not replace existing logs or moderation logic.
  New because:   The ledger creates structured decisions, the chain makes append-history tampering visible, and replay turns the record into a reproducible artifact; none alone produces an incident “black box.”
  Attachment:    ServerControl.handleCommandString result path + Administration ban/admin mutations
  Untouched:     Command grammar, admin authorization rules, ban data structures, gameplay, and ordinary console logging.
  Effort:        ~3–5 engineer-days (basis: 70 + 67 + 103 entry LOC, event/actor/outcome schema + chaining + replay + retention/privacy review + Java bridge).
  Verified:      C:ok I:ok B:— T:— S:scan
  Data path:     admin/mod action -> existing Mindustry decision -> structured ledger -> hash chain
                                                        |
                                                        +-> incident replay fixture

Composite 4 — Bleeding-Edge Update Evidence Gate

COMPOSITE #4 — Bleeding-Edge Update Evidence Gate
  Composition:   CMPSBL BLD-ENG-229 "Provenance Chain Verifier" (ProvenanceLink, ProvenanceVerdict, ProvenanceChainVerifier) + CMPSBL BLD-ENG-009 "Tamper-Evident Chain" (createAuditChain) + host core/src/mindustry/net/BeControl.java + host SHA-256 pattern in core/src/mindustry/mod/DataAssetCache.java
  Problem:       BeControl.java:106-125 downloads then executes the desktop JAR; BeControl.java:143-164 downloads then replaces the server JAR. No local expected-digest or publisher-signature comparison was found before execute/replace.
  Behaviour:     Before launch/replace, compute a SHA-256 digest using the host’s existing hashing primitive, compare it to an expected digest supplied by a separately trusted release process, record the release metadata/digest decision in provenance and append-only evidence, and fail closed/manual if a trusted expected digest is unavailable or mismatched.
  New because:   Mindustry supplies SHA-256 mechanics; the catalog supplies provenance/audit evidence. Their composition can enforce a host-owned digest gate, but the catalog does NOT supply the missing independent trust anchor/signature verifier. This composite must not be described as cryptographic publisher authentication unless the host adds that trust source.
  Attachment:    BeControl.showUpdateDialog completion callback before Runtime.exec; BeControl headless download completion before dest.copyTo(source)
  Untouched:     GitHub release discovery, update UI, autosave/restart sequence, normal stable releases.
  Effort:        ~3–6 engineer-days (basis: 108 + 67 entry LOC, provenance/hash-chain concerns, two updater branches, trusted-digest release-process work and security tests; signature/trust-anchor implementation is host work, not catalog value).
  Verified:      C:ok I:ok B:— T:— S:scan
  Data path:     release metadata + trusted expected digest
                |
JAR download -> SHA-256 compare -> allow execute/replace OR fail closed
                |
                +-> provenance link -> tamper-evident receipt

Composite ledger

CompositeIngredientsNew behaviourEffort
Packet Boundary LabBLD-ENG-248 + BLD-ENG-105 + hostGenerates boundary/overflow/encoding/Unicode fixtures, routes them through the existing Java parsers in tests, captures the exact failure as an event, then replays the same case as a deterministic regression.~2–4 engineer-days (basis: 33 + 103 entry LOC, 5 concerns across adversarial classes/case mapping/event normalization/replay/result comparison, plus Java/JUnit bridge work; no production wiring).
Outbound Dependency FuseBLD-ENG-303 + BLD-ENG-011 + BLD-ENG-243 + hostA failed external call retries with a small jittered budget; repeated failures open one dependency-specific breaker; the current call is failed/fallbacked without hammering; passive health state records last-seen/error-rate/recovery.~2–4 engineer-days (basis: 55 + 169 + 85 entry LOC, retry/state/threshold/health concerns, two Java HTTP call sites, and bridge parity tests).
Admin Decision Black BoxBLD-ENG-136 + BLD-ENG-009 + BLD-ENG-105 + hostSelected admin commands and moderation outcomes emit a structured record, chain it append-only, and expose an incident slice that can be replayed in a test harness.~3–5 engineer-days (basis: 70 + 67 + 103 entry LOC, event/actor/outcome schema + chaining + replay + retention/privacy review + Java bridge).
Bleeding-Edge Update Evidence GateBLD-ENG-229 + BLD-ENG-009 + hostBefore launch/replace, compute a SHA-256 digest using the host’s existing hashing primitive, compare it to an expected digest supplied by a separately trusted release process, record the release metadata/digest decision in provenance and append-only evidence, and fail closed/manual if a trusted expected digest is unavailable or mismatched.~3–6 engineer-days (basis: 108 + 67 entry LOC, provenance/hash-chain concerns, two updater branches, trusted-digest release-process work and security tests; signature/trust-anchor implementation is host work, not catalog value).

Build this composite first: Packet Boundary Lab. It changes the purchase decision because it validates the unclaimed Java bridge on a reversible, test-only path before production architecture depends on it.

Each composite inherits the weakest ingredient verification claim; where an ingredient has “Not claimed”, the composite has “Not claimed”.

Step 5B — new single-component designs

New components designed for this product

These are smaller, single-purpose host adapters built from one engineered catalog component plus Mindustry code. They are useful independently and can become ingredients in the Step 5A composites.

Design 1 — Protocol Edge Fixture Factory

DESIGN #1 — Protocol Edge Fixture Factory
  Built from:   CMPSBL BLD-ENG-248 "Adversarial Input Generator" (ADVERSARIAL_CATALOG, generateAdversarialInputs)
  Plus host:    tests/src/test/java/**; core/src/mindustry/net/Packets.java; core/src/mindustry/net/Streamable.java; core/src/mindustry/io/SaveFileReader.java
  What it is:   A test-only adapter that translates the catalog’s injection/overflow/encoding/Unicode cases into valid Java/JUnit fixtures for Mindustry packet, stream and save boundaries. It records which parser accepted/rejected each case without changing production behavior.
  New because:  The catalog emits generic adversarial cases; the host adapter makes them game-protocol/save aware. This is smaller than the Packet Boundary Lab because it stops at deterministic fixture generation and results.
  Unlocks:      A repeatable parser-edge test lane that can be run on every protocol/save change.
  Evidence path:JUnit cases and a machine-readable failing-fixture record in the test output; no production telemetry required.
  Effort:       ~1–2 engineer-days (basis: 33 entry LOC + 3 host parser families + Java/JUnit mapping; test-only).
  Constraints:  BLD-ENG-248: C:ok I:ok B:— T:— S:scan — C:ok = Compiles (batch tsgo --strict --noEmit); I:ok = installed with install.mjs into an empty host and type-checked there with tsgo --noEmit --skipLibCheck; B:— = Not claimed (behavior); T:— = Not claimed (test coverage); S:scan = author's 13-rule deterministic static unsafe-construct sweep reported clean; not an independent security audit; mode=direct; ports=none; slices=none stated | Host-language constraint: Java is one of the 23 non-TypeScript polyglot targets whose emitted sample is Not claimed; pre-purchase kit contains no polyglot/ bundle, so this report cannot verify the Java bridge.
  Confidence:   high — the host has concrete parsers and a JUnit module; only bridge shape is unverified.
  Data path:     ADVERSARIAL_CATALOG -> Java fixture mapper -> Packets / Streamable / SaveFileReader -> JUnit result

Design 2 — Retry Policy Adapter

DESIGN #2 — Retry Policy Adapter
  Built from:   CMPSBL BLD-ENG-303 "retry-with-backoff" (RetryOptions, retry)
  Plus host:    core/src/mindustry/net/BeControl.java (176 nonblank LOC); core/src/mindustry/net/SteamAdmin.java (70 nonblank LOC)
  What it is:   A narrow Java-side wrapper around the existing callback HTTP calls that defines max attempts, exponential backoff with jitter, retry predicates and cancellation. It preserves each caller’s current success/error/fallback callbacks.
  New because:  Mindustry has error callbacks/fallbacks but no shared bounded retry policy on these paths; the adapter adds only that policy rather than importing a larger resilience subsystem.
  Unlocks:      Consistent transient-failure handling with one policy that can be tested independently.
  Evidence path:Attempt-count/timing unit tests plus existing logs; no new customer-facing surface.
  Effort:       ~1–2 engineer-days (basis: 55 entry LOC + jitter/predicate/cancellation + two Java call sites).
  Constraints:  BLD-ENG-303: C:ok I:ok B:— T:— S:scan — C:ok = Compiles (batch tsgo --strict --noEmit); I:ok = installed with install.mjs into an empty host and type-checked there with tsgo --noEmit --skipLibCheck; B:— = Not claimed (behavior); T:— = Not claimed (test coverage); S:scan = author's 13-rule deterministic static unsafe-construct sweep reported clean; not an independent security audit; mode=direct; ports=none; slices=none stated | Host-language constraint: Java is one of the 23 non-TypeScript polyglot targets whose emitted sample is Not claimed; pre-purchase kit contains no polyglot/ bundle, so this report cannot verify the Java bridge.
  Confidence:   high for semantics, medium for delivery because Java bridge is Not claimed.
  Data path:     BeControl / SteamAdmin call -> RetryOptions adapter -> existing Http callback -> existing outcome

Design 3 — Admin Decision Receipt

DESIGN #3 — Admin Decision Receipt
  Built from:   CMPSBL BLD-ENG-136 "Audit-Grade Decision Ledger" (LedgerEntry, AuditGradeDecisionLedger)
  Plus host:    server/src/mindustry/server/ServerControl.java (1,255 nonblank LOC); core/src/mindustry/net/Administration.java (639 nonblank LOC)
  What it is:   A structured receipt emitted after selected moderation/administration decisions: actor reference, command/action class, target reference, result and time. The existing console log remains the human-readable record.
  New because:  Current logs say what happened; the receipt gives a stable schema and hash-linked decision history suitable for replay or audit later.
  Unlocks:      Faster incident review and a durable moderation evidence surface for operated servers.
  Evidence path:Ledger entries exported by incident/time range and cross-referenced to existing server logs.
  Effort:       ~1–2 engineer-days (basis: 70 entry LOC + event schema + 2 host decision surfaces + retention policy).
  Constraints:  BLD-ENG-136: C:ok I:ok B:load T:— S:scan — C:ok = Compiles (batch tsgo --strict --noEmit); I:ok = installed with install.mjs into an empty host and type-checked there with tsgo --noEmit --skipLibCheck; B:load = entry point imports and exposes exports; no zero-arity behavior was fabricated; T:— = Not claimed (test coverage); S:scan = author's 13-rule deterministic static unsafe-construct sweep reported clean; not an independent security audit; mode=direct; ports=none; slices=none stated | Host-language constraint: Java is one of the 23 non-TypeScript polyglot targets whose emitted sample is Not claimed; pre-purchase kit contains no polyglot/ bundle, so this report cannot verify the Java bridge.
  Confidence:   medium/high — host attachment is clear; privacy/retention policy is product-specific.
  Data path:     admin action -> existing decision -> LedgerEntry -> append-only decision ledger

Design 4 — Release Provenance Receipt

DESIGN #4 — Release Provenance Receipt
  Built from:   CMPSBL BLD-ENG-229 "Provenance Chain Verifier" (ProvenanceLink, ProvenanceVerdict, ProvenanceChainVerifier)
  Plus host:    core/src/mindustry/net/BeControl.java
  What it is:   Records which release metadata URL, build number, asset URL and locally computed digest were considered before an updater decision. It is an evidence record only.
  New because:  The updater currently moves from metadata to executable/replacement behavior without a structured provenance artifact. This adds traceability while deliberately refusing to claim authenticity.
  Unlocks:      Post-incident proof of what updater metadata and bytes were observed; a foundation for a later real signature/digest gate.
  Evidence path:A provenance chain entry per update check/download decision.
  Effort:       ~1–2 engineer-days (basis: 108 entry LOC + metadata/digest mapping + Java bridge; excludes any trust-anchor/signature system).
  Constraints:  BLD-ENG-229: C:ok I:ok B:— T:— S:scan — C:ok = Compiles (batch tsgo --strict --noEmit); I:ok = installed with install.mjs into an empty host and type-checked there with tsgo --noEmit --skipLibCheck; B:— = Not claimed (behavior); T:— = Not claimed (test coverage); S:scan = author's 13-rule deterministic static unsafe-construct sweep reported clean; not an independent security audit; mode=direct; ports=none; slices=none stated | Host-language constraint: Java is one of the 23 non-TypeScript polyglot targets whose emitted sample is Not claimed; pre-purchase kit contains no polyglot/ bundle, so this report cannot verify the Java bridge.
  Confidence:   medium — useful evidence, but it does not close the critical authenticity gap by itself.
  Data path:     GitHub release metadata + local digest -> ProvenanceLink -> provenance verdict/chain

Design 5 — Endpoint Health Card

DESIGN #5 — Endpoint Health Card
  Built from:   CMPSBL BLD-ENG-243 "Module Health Metrics" (ModuleState, ModuleHealthMetrics)
  Plus host:    core/src/mindustry/net/BeControl.java (176 nonblank LOC); core/src/mindustry/net/SteamAdmin.java (70 nonblank LOC); server/src/mindustry/server/ServerControl.java (1,255 nonblank LOC)
  What it is:   Maintains passive last-success, last-error, uptime/error-rate and health score for the updater and Steam ban feed. In headless mode it can be surfaced through an existing status/log command rather than a new UI.
  New because:  The host has failures in logs but no common health state object for these dependencies.
  Unlocks:      Operators can distinguish “feature is fine but upstream is down” from local failure without reading raw logs.
  Evidence path:A status snapshot/log line derived from ModuleHealthMetrics; no automatic control decision required initially.
  Effort:       ~1 engineer-day (basis: 85 entry LOC + 4 health fields + two dependency adapters).
  Constraints:  BLD-ENG-243: C:ok I:ok B:— T:— S:scan — C:ok = Compiles (batch tsgo --strict --noEmit); I:ok = installed with install.mjs into an empty host and type-checked there with tsgo --noEmit --skipLibCheck; B:— = Not claimed (behavior); T:— = Not claimed (test coverage); S:scan = author's 13-rule deterministic static unsafe-construct sweep reported clean; not an independent security audit; mode=direct; ports=none; slices=none stated | Host-language constraint: Java is one of the 23 non-TypeScript polyglot targets whose emitted sample is Not claimed; pre-purchase kit contains no polyglot/ bundle, so this report cannot verify the Java bridge.
  Confidence:   high — can start read-only/passive.
  Data path:     BeControl / SteamAdmin outcomes -> ModuleHealthMetrics -> existing status/log surface

Build this one first: Protocol Edge Fixture Factory. It is test-only, touches no production critical path, and gives the fastest evidence about whether the post-purchase Java bridge is usable.

Scoreboard

The numbers, each with its basis

Coverage is reported rather than implied. Shared-entry, discovery and twin-row edge cases are excluded from valuation as described below.

MeasureValueBasis
Engineered catalog rows parsed1,162Basis: every Phase 2 row parsed; all IDs cross-checked against Phase 3, with 0 field mismatches on ID/class/name/mode/entry/closure/Verified/constraints.
Host-matched candidates read in full41Basis: host-first concern search after inventory; includes individual blocks, products/packages/subprimitives/layers, DREAM rows, and 2 whole Subsystem rows.
Items recommended9Basis: five-axis screen; 8 unconditional hardening candidates + 1 conditional remote-console auth candidate.
Rejected matched candidates32Basis: 41 matched − 9 carried; all remain visible in Step 2 and fixed-shape findings.
Quick wins3Basis: Protocol Edge Fixture Factory, Retry Policy Adapter, Endpoint Health Card; each can begin without rewriting core game semantics.
New designs5Basis: Step 5B; each uses named catalog symbols + named host paths.
Composite components4Basis: Step 5A; each combines at least 2 ingredients and host code.
Discovery rows screened6,479Basis: full DISCOVERY-VAULT-INDEX parse: 1,510 disc-* + 4,969 vdisc-*; source is absent pre-purchase so all shortlisted discovery rows remain provisional and excluded from totals.
(A) Cost avoided0 weeks / US$0Basis: the pinned repo provides no evidence that these nine capabilities are funded/planned roadmap work.
(B) Capability acquisition1.5–3.5 engineer-weeks / US$9,000–21,000Basis: 789 total entry LOC across 9 adopted rows, concern count from each row’s stated behavior, kit entry-LOC bands, overlap discounted; not closure LOC.
(C) Portfolio reuse0 weeks / US$0 creditedBasis: related Arc/MindustryBuilds repos are referenced, but they were not evaluated; report refuses to invent carry-over value.
Integration cost1–2 engineer-weeks / US$6,000–12,000Basis: Java target is Not claimed, pre-purchase kit cannot run emitter, plus Gradle/JUnit wiring, parity tests and security review for updater/auth boundaries.
Net after licence−0.5 to +2.5 engineer-weeks / −US$3,499 to +US$14,501Basis: B − integration − US$499; A and C are zero.
Licence-only break-even3.33 engineer-hoursBasis: US$499 / US$150 per senior engineer-hour; this corrects stale kit arithmetic that says about 1.9 hours.

Step 1

What this repository already has

Host inventory was completed before catalog exposure. The pinned ZIP contains 4,511 members (basis: ZIP central-directory count), 4,238 files after extraction (basis: filesystem count), including 866 Java files (basis: .java count). A broad source/config scan counted about 260,312 nonblank text lines (basis: enumerated code/config/document extensions); the table focuses on units relevant to resilience, trust, audit, networking, codegen and tests.

Host unitPathExported surfaceLOCJob it does
Build topologysettings.gradle; build.gradleGradle modules desktop, core, server, ios, annotations, tools, tests; Android conditional; Java 17 build490Defines multi-target build; normal dependencies use the archash pin, while CI separately clones Arc master.
CI dependency checkout.github/workflows/pr.yml; push.yml; deployment.ymlgit clone --depth=1 --branch=master https://github.com/Anuken/Arc165PR/push/deployment jobs fetch moving Arc master; reproducibility/supply-chain concern independent of the normal archash build.
Bleeding-edge updatercore/src/mindustry/net/BeControl.javacheckUpdate, showUpdateDialog, download176Fetches latest MindustryBuilds release, downloads a JAR, then executes it on desktop or replaces the server JAR. No local trusted-digest/signature comparison was found before launch/replace.
Network provider / anti-DOScore/src/mindustry/net/ArcNetProvider.javaconnected, received, ArcConnection545Rejects DOS-blacklisted connections and blacklists/kicks packet spam at the transport edge.
Network dispatchercore/src/mindustry/net/Net.javahandleServerReceived, handleClientReceived, send, registerPacket406Routes packet types and enforces Packet.allow direction semantics.
Network connection abstractioncore/src/mindustry/net/NetConnection.javasend, kick, close, Ratekeeper fields110Connection state plus send/kick/close semantics used by server transports.
Packet typescore/src/mindustry/net/Packets.javaStreamBegin, StreamChunk, ConnectPacket, KickReason and packet classes157Defines network packet wire objects; StreamBegin/StreamChunk are accepted only client-side.
Stream assemblycore/src/mindustry/net/Streamable.javaStreamBuilder, IncrementalStream, add, build129Assembles server-to-client streamed payloads in memory/queue; advertised total is not an obvious global allocation cap.
Administrationcore/src/mindustry/net/Administration.javaban/whitelist/admin checks, Config, Ratekeeper-backed controls639Owns bans, whitelist, UUID-change controls, interaction/message/packet/chat rate settings, and socket-input defaults.
Server handshake and game networkingcore/src/mindustry/core/NetServer.javaconnect packet handler, validation, world/asset streaming, admin actions1,235Validates identifiers, bans, whitelist, mods, custom clients, duplicates and build versions before admitting players.
Client networkingcore/src/mindustry/core/NetClient.javapacket handlers, world load/sync, stream receivers698Client-side connection and world synchronization; receives the server-to-client streams noted above.
Save writer / fallbackcore/src/mindustry/io/SaveIO.javasave, isSaveValid, getMeta, backupFileFor165Moves an existing save to backup before write, restores it on failure, and validates primary/backup metadata.
Save chunk readercore/src/mindustry/io/SaveFileReader.javawriteChunk, readChunk, skipChunk188Length-prefixed serialization helper; contains a TODO about counting reads to detect serialization errors.
Mod loadercore/src/mindustry/mod/Mods.javaload, importMod, loadContent, classloader/mod lifecycle1,271Intentionally loads executable mods/plugins; this is product behavior, not a generic sandbox gap to paper over.
Script runtimecore/src/mindustry/mod/Scripts.javaRhino script execution and mod script surfaces121Intentional scripting extension surface; host-specific trust decision.
Server console / socket controlserver/src/mindustry/server/ServerControl.java (1,255 nonblank LOC)handleCommandString, toggleSocket, command registry1,255Console control; optional TCP socket forwards input to handleCommandString. Default is disabled and loopback-bound.
Steam ban/admin feedcore/src/mindustry/net/SteamAdmin.javafetch, isBanned, isAdmin70Periodically retrieves Steam ban/admin JSON with a fallback URL and applies it.
Steam transport backpressuredesktop/src/mindustry/desktop/steam/SNet.javaSteamConnection.send, pollWrites, queued byte cap577Preserves send order under Steam LimitExceeded, retries the same queued message, and caps queued bytes at 50 MiB.
Content-addressed asset cachecore/src/mindustry/mod/DataAssetCache.javaadd, get, encodeHash70Hashes asset bytes with SHA-256 and names cached files by the digest; retrieval itself does not rehash a same-length cached file.
Test surfacetests/src/test/java/** (1,957 nonblank LOC total)Application/DataAsset/mod patcher/power tests; saved-game fixtures1,957Existing tests cover application/data assets/mod patching/power and save fixtures; no dedicated network/security/adversarial suite was found.

Step 2

Five-axis screen of the candidate set

All 1,162 engineered rows were parsed after the host inventory. Forty-one rows matched a host concern strongly enough to read in full; the table keeps all forty-one, including rejects. Whole-subsystem screening was explicit: all 16 Subsystem-class rows were screened by Phase 2 metadata; SUBSYS-04 and SUBSYS-14 were read in full and rejected as disproportionate/wrong-boundary. DREAM received a full primitive read plus its three smaller direct dream rows and was rejected for lack of a host job.

Candidate (ID)Direct fitCombinatorialValueCost / riskNoveltyCarried forward?
BLD-ENG-303 retry-with-backoffStrong: BeControl and SteamAdmin make remote HTTP calls with little bounded retry policy.Strong with breaker + health metrics.Medium: fewer transient update/admin-feed failures.Low/medium: updater behavior is sensitive; keep attempt budget small.Low: retry/backoff is standard.YES — outbound resilience.
BLD-ENG-011 Circuit BreakerMedium: repeated external failures can be isolated.Strong with retry + health.Medium: avoids hammering an unavailable dependency.Medium: wrong thresholds could suppress recovery.Low: circuit breaking is standard.YES — bounded dependency fuse.
BLD-ENG-266 Retry BudgetWeak: retry volume is small and host does not show a retry storm problem.Medium with retry/breaker.Low incremental value.Medium: extra policy state.Low.NO — overbuilt for observed volume.
BLD-ENG-078 Fallback Chain ArchitectWeak: SteamAdmin already has a simple two-URL fallback; updater has one authoritative source.Low/medium.Low.Low.Low.NO — host fallback is sufficient.
BLD-ENG-047 Circuit Breaker FabricWeak: a breaker mesh exceeds the few relevant external dependencies.Medium.Low.High complexity relative to need.Low.NO — single breaker is enough.
BLD-ENG-243 Module Health MetricsMedium: no general endpoint health abstraction was found.Strong with retry/breaker.Medium: makes failure state observable.Low: instrumentation can be passive.Low.YES — health state.
BLD-ENG-009 Tamper-Evident ChainMedium: server logs exist but no append-only tamper-evident receipt chain was found.Strong with decision ledger/provenance.Medium: better incident evidence for public servers.Low/medium: log volume and privacy need policy.Moderate.YES — audit evidence.
BLD-ENG-136 Audit-Grade Decision LedgerStrong for admin/ban decisions; no immutable structured decision ledger found.Strong with tamper chain + replay.Medium/high for operated public servers.Medium: actor identifiers and retention need review.Moderate.YES — structured decision evidence.
BLD-ENG-229 Provenance Chain VerifierMedium: updater/feed provenance can be recorded, but this does not authenticate a JAR.Strong only when paired with a real trusted digest/signature source.Medium: evidence and traceability, not integrity by itself.Medium: dangerous if mistaken for authenticity.Moderate.YES — provenance only, with explicit ceiling.
BLD-ENG-255 Fingerprint GateFalse friend: detects structural drift but uses FNV-1a.Weak for updater authenticity.Low for the actual security gap.High if treated as a cryptographic release verifier.Moderate.NO — not a trust/authenticity primitive.
BLD-ENG-248 Adversarial Input GeneratorStrong: malformed/edge packet and save inputs are an observed test gap.Strong: combines with host packet/save parsers and replay.High: catches regressions before multiplayer releases.Low: test-only first; Java bridge still Not claimed.Moderate: fuzz catalogs are familiar, but catalog-driven cross-parser fixtures are not present here.YES — test hardening.
BLD-ENG-174 Adversarial SimulationMedium: adversarial testing is relevant.Medium.Medium.Medium: broader simulation harness than needed.Low/moderate.NO — BLD-ENG-248 is smaller and more concrete.
BLD-ENG-193 Artifact Hardening FoundryWeak/medium: generic hardening attestations do not map to a specific host boundary.Medium.Low.Medium: process layer before concrete tests.Moderate.NO — prefer concrete input generator.
BLD-ENG-098 Terminal Command ParserWeak: Mindustry already has mature command parsing/registry behavior.Low.Low.Medium: could diverge from existing command semantics.Low.NO — socket issue is authentication, not parsing.
BLD-ENG-108 API Key LifecycleConditional: only matters if socketInput is exposed beyond localhost.Strong with decision ledger if remote administration is intentional.Medium when remote console exists; zero when it stays local/off.Medium/high: authentication is security-critical and Java bridge is Not claimed.Low.YES, CONDITIONAL — skip at defaults.
BLD-ENG-074 Capability Gate EngineWeak: generic capability gates do not authenticate the command socket.Medium.Low.Medium: duplicates existing admin/permission semantics.Low.NO — wrong boundary.
BLD-ENG-247 Secret RedactorWeak: no material secret-bearing structured log surface was found in the host-first pass.Medium with audit.Low.Low.Low.NO — no evidenced job.
BLD-ENG-256 Schema ValidatorWeak: its XSS/SQL/event-handler archetypes do not match binary game packets/save formats.Medium in theory.Low.Medium: schema duplication against generated protocol.Low.NO — archetype mismatch.
BLD-ENG-105 Forensic ReplayMedium: logs exist, but incident reconstruction is manual.Strong with ledger/adversarial fixtures.Medium: shortens regression reproduction.Low/medium: needs a stable event schema.Moderate.YES — forensic replay.
BLD-ENG-060 Temporal Regression SandboxWeak: no time-series regression problem was identified.Medium with replay.Low.Medium.Moderate.NO — wrong data shape.
BLD-ENG-050 Shadow Run EnvironmentWeak: no shadow-production request lane comparable to a web service was found.Medium.Low.High closure/operational complexity for a game.Moderate.NO — no suitable shadow lane.
BLD-ENG-215 Contract Evolution MediatorWeak: network/version contracts are already generated and host-specific.Low.Low.High risk of competing with protocol generation.Low.NO — do not wrap generated protocol evolution.
BLD-ENG-249 Pipeline Lineage RegistryWeak/medium: pipeline lineage is less relevant than event provenance.Medium.Low.Low.Moderate.NO — BLD-ENG-229 maps better.
BLD-ENG-096 Webhook ReliabilityFalse friend: retry/dedupe/signature semantics are webhook-specific.Weak for JAR authenticity.Low.High if reused as a release trust check.Low.NO — wrong transport/trust model.
BLD-ENG-012 Rate LimiterDuplicate: host already has multiple rate/packet/interaction controls.Low.Negative/low: replacement risks regressions.High: competes with trusted anti-abuse logic.Low.NO — explicit do-not-touch.
BLD-ENG-066 Adaptive Rate LimitingDuplicate: adaptive provider health is not the server packet-abuse problem.Low.Low.High if it displaces host controls.Low.NO — explicit do-not-touch.
PROD-DEP-GUARDIAN dep-guardianWeak: dependency health is useful generally, but not tied to the highest-risk host gaps.Medium.Low/medium.High: 3,242-LOC closure and Node host peer for a Java game.Moderate.NO — product-level mismatch.
PKG-TEST-HARNESS @cmpsbl/test-harnessWeak: built for CMPSBL pipelines/bridges, not Mindustry packet/save tests.Medium.Low.High: 19,970-LOC closure for a Java test module.Low.NO — use host JUnit surface.
SUBP-05 TRIAGEMedium: failure classification is relevant to remote HTTP.Medium.Low/medium.High relative to two simple dependencies; 943-LOC closure.Moderate.NO — retry + breaker are smaller.
SUBP-06 BULKHEADWeak: Steam transport already has queue isolation/backpressure.Medium.Low.High duplication risk; 986-LOC closure.Low.NO — host transport is more specific.
SUBP-03 COMPANIONMedium in abstract: a host integration seam helps polyglot wiring.Strong in a TS host; weaker here.Low/medium.High: 1,225-entry-LOC integration seam before Java emitter is verified.Moderate.NO — prove Java bridge first.
VPACK-CYBER-PERIMETER-SUITE Rate-Limit, Origin & Secret-Leak Defense LayerName-level fit to perimeter controls, but host already has strong rate limiting and the pack cannot attach by import.Low.Low.High: AGENTS rule 12 requires Ascension wrapping despite catalog Mode=direct.Moderate as a control-plane edge case.NO — layer-class attachment rule overrides mode column.
VPACK-ADVERSARIAL-WARGAME Continuous Red-Team Stress LayerMedium capability fit.Medium.Medium.High: layer-class attachment via Ascension only; much larger than test-only generator.Moderate.NO — layer mechanism and scope are excessive.
VPACK-DETERMINISTIC-REPLAY-VAULT Bug Reproduction & Replay LayerMedium capability fit.Strong in theory.Medium.High: layer-class attachment via Ascension only; host does not need every call sealed.Moderate.NO — targeted forensic replay is smaller.
VPACK-SENTINEL-EVOLUTION Safe Patch Rollout LayerWeak: release dependency simulation is not the updater authenticity gap.Medium.Low.High: layer-class attach plus unrelated patch topology.Moderate.NO — wrong release problem.
PRIM-ENG-01 DREAMWeak: DREAM mines low-confidence idle-cycle signals; no host job requires that.High combinatorial potential in its own domain.Low for this product.Very high: 47,391-LOC closure, PORT-PERSISTENCE, and Java bridge Not claimed.High.NO — real look completed; no host job.
BLD-ENG-260 Dream SynthesizerWeak: memory consolidation does not map to a game/server maintenance gap.Medium with DREAM.Low.Low/medium.Moderate.NO — no persistent memory product need.
BLD-ENG-271 Dream Generation GateWeak: generation-depth controls only matter to synthesized memories.Medium with DREAM.Low.Low.Moderate.NO — no generated-memory pipeline.
BLD-ENG-164 Dream Cross-PollinationWeak: cross-dream insight exchange has no host analogue.Medium with DREAM.Low.Low.High novelty, irrelevant.NO — no host job.
SUBSYS-04 Shadow MeshMedium at the label level: adversarial/shadow testing.Strong inside its own substrate.Low/medium.Very high: 65,882-LOC closure, C:proj(14), non-TS bridge Not claimed.Moderate.NO — whole subsystem is disproportionate.
SUBSYS-14 Terminal / Substrate BridgeWeak/medium: command surface exists, but the missing socket control is authentication.Medium.Low.Very high: 33,527-LOC closure, C:proj(7), non-TS bridge Not claimed.Low/moderate.NO — whole subsystem does not solve the boundary.

Candidates screened in full: 41 (basis: host-matched set) · carried forward: 9 · rejected: 32. The catalog contains 240 rows flagged shared-entry (basis: parsed Phase 2/3 metadata); they were parsed and capability-screened but not sized/recommended from class-wide columns, and none contributes to savings. Twin artifacts were deduplicated for value: a twin counterpart never creates a second savings claim for the same capability.

Step 3

Constraints this host imposes

The dominant constraint is not licensing; it is execution evidence. The post-purchase delivery claims a polyglot bridge mechanism, but Java output is explicitly Not claimed and the emitter is absent from this pre-purchase kit.

ConstraintSource of truthWhat it rules out
Language/toolchainbuild.gradle; AGENTS.md rule 6; AGENT-HANDOFF polyglot boundaryHost is Java 17. TypeScript is canonical. Java is among 23 non-TS targets whose emitted sample is Not claimed; pre-purchase kit has no polyglot/ bundle to verify it. This is the primary purchase gate.
Pre-purchase licence modeAGENTS.md Step 0 + ModesNo purchase/grant record: evaluate only. No component source, generated bridge, wiring or attribution edit may be installed now.
Layer attachment semanticsAGENTS.md rule 12AscensionLayer, Primitive/Layer and VerticalLayerPack artifacts are not attachable by import; they require Ascension wrapping even where catalog Mode says direct. All matched VPACK rows were rejected.
Runtime/game critical pathNetServer.java; Packets.java; generated code; game simulationDo not replace generated packet/version admission, authoritative simulation or live transport semantics with generic components without a proven failing job.
Existing anti-abuse controlsAdministration.java:543-552; ArcNetProvider.java:129-170Generic rate limiters are duplicate/negative value unless an independently measured gap appears.
Existing save reliabilitySaveIO.java:43-89Generic backup/recovery components are duplicate: primary is moved to backup, restored on write failure, and backup is used when metadata read fails.
Existing Steam backpressuredesktop/src/mindustry/desktop/steam/SNet.java:568-607Do not replace ordered LimitExceeded retry/queue cap with a generic bulkhead/retry abstraction.
Updater trust boundaryBeControl.java:106-125,143-164A provenance/fingerprint component may not be relabeled as artifact authentication. A trusted expected digest or publisher signature source is separate required host work.
Remote command socket defaultsAdministration.java:553-555; ServerControl.java:1428-1446API-key lifecycle is conditional only if socketInput is enabled and exposed beyond localhost; at defaults the recommendation is skipped.
Security review ceilingcatalog verification legendS:scan is the author’s 13-rule deterministic sweep, not an independent audit; updater/auth/public-server changes require host security review.
Release reproducibility.github/workflows/pr.yml:20; push.yml:30; deployment.yml:29CI clones moving Arc master. The library does not close this directly; pin a commit/tag in host CI as separate host work.

Every recommended component's Verified column, quoted verbatim and expanded:

  1. BLD-ENG-248: C:ok I:ok B:— T:— S:scan — C:ok = Compiles (batch tsgo --strict --noEmit); I:ok = installed with install.mjs into an empty host and type-checked there with tsgo --noEmit --skipLibCheck; B:— = Not claimed (behavior); T:— = Not claimed (test coverage); S:scan = author's 13-rule deterministic static unsafe-construct sweep reported clean; not an independent security audit; mode=direct; ports=none; slices=none stated.
  2. BLD-ENG-303: C:ok I:ok B:— T:— S:scan — C:ok = Compiles (batch tsgo --strict --noEmit); I:ok = installed with install.mjs into an empty host and type-checked there with tsgo --noEmit --skipLibCheck; B:— = Not claimed (behavior); T:— = Not claimed (test coverage); S:scan = author's 13-rule deterministic static unsafe-construct sweep reported clean; not an independent security audit; mode=direct; ports=none; slices=none stated.
  3. BLD-ENG-011: C:ok I:ok B:load T:— S:scan — C:ok = Compiles (batch tsgo --strict --noEmit); I:ok = installed with install.mjs into an empty host and type-checked there with tsgo --noEmit --skipLibCheck; B:load = entry point imports and exposes exports; no zero-arity behavior was fabricated; T:— = Not claimed (test coverage); S:scan = author's 13-rule deterministic static unsafe-construct sweep reported clean; not an independent security audit; mode=direct; ports=none; slices=none stated.
  4. BLD-ENG-243: C:ok I:ok B:— T:— S:scan — C:ok = Compiles (batch tsgo --strict --noEmit); I:ok = installed with install.mjs into an empty host and type-checked there with tsgo --noEmit --skipLibCheck; B:— = Not claimed (behavior); T:— = Not claimed (test coverage); S:scan = author's 13-rule deterministic static unsafe-construct sweep reported clean; not an independent security audit; mode=direct; ports=none; slices=none stated.
  5. BLD-ENG-009: C:ok I:ok B:exec T:— S:scan — C:ok = Compiles (batch tsgo --strict --noEmit); I:ok = installed with install.mjs into an empty host and type-checked there with tsgo --noEmit --skipLibCheck; B:exec = entry point loads; zero-arity exports were executed twice and compared structurally; T:— = Not claimed (test coverage); S:scan = author's 13-rule deterministic static unsafe-construct sweep reported clean; not an independent security audit; mode=direct; ports=none; slices=none stated.
  6. BLD-ENG-136: C:ok I:ok B:load T:— S:scan — C:ok = Compiles (batch tsgo --strict --noEmit); I:ok = installed with install.mjs into an empty host and type-checked there with tsgo --noEmit --skipLibCheck; B:load = entry point imports and exposes exports; no zero-arity behavior was fabricated; T:— = Not claimed (test coverage); S:scan = author's 13-rule deterministic static unsafe-construct sweep reported clean; not an independent security audit; mode=direct; ports=none; slices=none stated.
  7. BLD-ENG-229: C:ok I:ok B:— T:— S:scan — C:ok = Compiles (batch tsgo --strict --noEmit); I:ok = installed with install.mjs into an empty host and type-checked there with tsgo --noEmit --skipLibCheck; B:— = Not claimed (behavior); T:— = Not claimed (test coverage); S:scan = author's 13-rule deterministic static unsafe-construct sweep reported clean; not an independent security audit; mode=direct; ports=none; slices=none stated.
  8. BLD-ENG-105: C:ok I:ok B:— T:— S:scan — C:ok = Compiles (batch tsgo --strict --noEmit); I:ok = installed with install.mjs into an empty host and type-checked there with tsgo --noEmit --skipLibCheck; B:— = Not claimed (behavior); T:— = Not claimed (test coverage); S:scan = author's 13-rule deterministic static unsafe-construct sweep reported clean; not an independent security audit; mode=direct; ports=none; slices=none stated.
  9. BLD-ENG-108: C:ok I:ok B:— T:— S:scan — C:ok = Compiles (batch tsgo --strict --noEmit); I:ok = installed with install.mjs into an empty host and type-checked there with tsgo --noEmit --skipLibCheck; B:— = Not claimed (behavior); T:— = Not claimed (test coverage); S:scan = author's 13-rule deterministic static unsafe-construct sweep reported clean; not an independent security audit; mode=direct; ports=none; slices=none stated.

Governed runtime: none of the nine recommended rows is governed-required; all nine report mode direct. No governed runtime slice is required by these recommendations.

Adapter ports: none on the nine recommended engineered rows. Separate host-language bridge work remains required and is Not claimed for Java.

Step 4

Ranked recommendations

Nine engineered rows are worth funding consideration; only eight apply at the host defaults. Nothing here replaces Mindustry's core game/network/save systems. The release-authenticity gap remains host work because the catalog has no correct matching primitive.

#ItemCatalog IDsHost pathsEffortValueConfidence
1Adversarial parser fixture sourceBLD-ENG-248tests/src/test/java/**; Streamable.java; Packets.java; SaveFileReader.java~1–2 d (basis: 33 entry LOC + Java/JUnit mapping)High: adds an adversarial regression lane absent today.High — test-only first limits blast radius.
2Bounded outbound retry policyBLD-ENG-303BeControl.java; SteamAdmin.java~1–2 d (basis: 55 entry LOC + 3 retry concerns + bridge/tests)Medium/high: smoother transient GitHub/feed failures.High — standard semantics; Java bridge still needs proof.
3Small external-dependency circuit breakerBLD-ENG-011BeControl.java; SteamAdmin.java~1–3 d (basis: 169 entry LOC + state/backoff/stats)Medium: avoids repeated calls during sustained outage.Medium/high — thresholds require tuning.
4Endpoint/module health stateBLD-ENG-243BeControl.java; SteamAdmin.java; ServerControl.java~1 d (basis: 85 entry LOC + 4 health concerns)Medium: makes dependency failure visible instead of log-only.High — passive first.
5Tamper-evident operational receiptsBLD-ENG-009ServerControl.java; Administration.java; BeControl.java~1–2 d (basis: 67 entry LOC + append-only/hash concerns)Medium: stronger incident evidence for operated servers.Medium/high — retention/privacy policy needed.
6Structured admin decision ledgerBLD-ENG-136ServerControl.java; Administration.java~1–2 d (basis: 70 entry LOC + decision/hash concerns)Medium: reconstructs who/what/why for moderation events.Medium/high — event schema work is host-specific.
7Release/feed provenance chainBLD-ENG-229BeControl.java; DataAssetCache.java~1–3 d (basis: 108 entry LOC + provenance + digest-policy bridge)Medium: evidence only; explicitly not artifact authenticity.Medium — value collapses if mistaken for a trust anchor.
8Incident forensic replayBLD-ENG-105ServerControl.java; Administration.java; tests/src/test/java/**~1–3 d (basis: 103 entry LOC + event normalization/replay)Medium: converts incidents into reproducible regression cases.Medium — needs stable event capture.
9Remote-console key lifecycle, conditionalBLD-ENG-108ServerControl.java:1428-1446; Administration.java:553-555~2–4 d if enabled; 0 at defaults (basis: 99 entry LOC + auth/security review)High only if non-loopback remote console is a requirement; otherwise zero.Medium — security-critical and conditional.

Findings, in fixed shape

HARDEN

BLD-ENG-303 — retry-with-backoff

[HARDEN] CMPSBL BLD-ENG-303 "retry-with-backoff" -> host: core/src/mindustry/net/BeControl.java (176 nonblank LOC); core/src/mindustry/net/SteamAdmin.java (70 nonblank LOC)
  Why: Adds bounded exponential backoff, jitter, retry predicates and cancellation to external HTTP paths without replacing their product semantics.
  Uses: RetryOptions, retry
  Saves: ~1–2 engineer-days (basis: 55 entry LOC + jitter/predicate/cancellation concerns + Java callback adapter/tests).
  Verified: C:ok I:ok B:— T:— S:scan — C:ok = Compiles (batch tsgo --strict --noEmit); I:ok = installed with install.mjs into an empty host and type-checked there with tsgo --noEmit --skipLibCheck; B:— = Not claimed (behavior); T:— = Not claimed (test coverage); S:scan = author's 13-rule deterministic static unsafe-construct sweep reported clean; not an independent security audit
  Mode: direct
  Ports to implement: none
HARDEN

BLD-ENG-011 — Circuit Breaker

[HARDEN] CMPSBL BLD-ENG-011 "Circuit Breaker" -> host: core/src/mindustry/net/BeControl.java (176 nonblank LOC); core/src/mindustry/net/SteamAdmin.java (70 nonblank LOC)
  Why: Adds a closed/open/half-open failure state so a dead external dependency is not retried indefinitely by callers or schedules.
  Uses: CircuitState, CircuitBreakerConfig, CircuitStats, createCircuitBreaker, createBreakerPanel
  Saves: ~1–3 engineer-days (basis: 169 entry LOC + 3-state transitions + backoff/jitter + stats + Java adapter/tests).
  Verified: C:ok I:ok B:load T:— S:scan — C:ok = Compiles (batch tsgo --strict --noEmit); I:ok = installed with install.mjs into an empty host and type-checked there with tsgo --noEmit --skipLibCheck; B:load = entry point imports and exposes exports; no zero-arity behavior was fabricated; T:— = Not claimed (test coverage); S:scan = author's 13-rule deterministic static unsafe-construct sweep reported clean; not an independent security audit
  Mode: direct
  Ports to implement: none
SKIP

BLD-ENG-266 — Retry Budget

[SKIP] CMPSBL BLD-ENG-266 "Retry Budget" -> host: host-first inventory: no sufficiently specific attachment point
  Why: No retry-storm evidence; token-bucket retry budgeting adds state before volume justifies it.
  Uses: tryRetry`, `remainingBudget`, `configureBudget`, `getBudgetStats`, `resetBudget
  Saves: 0 engineer-days credited (basis: rejected candidate; no adoption value counted).
  Verified: C:ok I:ok B:— T:— S:scan — C:ok = Compiles (batch tsgo --strict --noEmit); I:ok = installed with install.mjs into an empty host and type-checked there with tsgo --noEmit --skipLibCheck; B:— = Not claimed (behavior); T:— = Not claimed (test coverage); S:scan = author's 13-rule deterministic static unsafe-construct sweep reported clean; not an independent security audit
  Mode: direct
  Ports to implement: none
SKIP

BLD-ENG-078 — Fallback Chain Architect

[SKIP] CMPSBL BLD-ENG-078 "Fallback Chain Architect" -> host: host-first inventory: no sufficiently specific attachment point
  Why: SteamAdmin already has a specific two-URL fallback, while the updater has one authority; a provider-chain abstraction adds little.
  Uses: ProviderSpec`, `FallbackChain`, `buildFallbackChain
  Saves: 0 engineer-days credited (basis: rejected candidate; no adoption value counted).
  Verified: C:ok I:ok B:load T:— S:scan — C:ok = Compiles (batch tsgo --strict --noEmit); I:ok = installed with install.mjs into an empty host and type-checked there with tsgo --noEmit --skipLibCheck; B:load = entry point imports and exposes exports; no zero-arity behavior was fabricated; T:— = Not claimed (test coverage); S:scan = author's 13-rule deterministic static unsafe-construct sweep reported clean; not an independent security audit
  Mode: direct
  Ports to implement: none
SKIP

BLD-ENG-047 — Circuit Breaker Fabric

[SKIP] CMPSBL BLD-ENG-047 "Circuit Breaker Fabric" -> host: host-first inventory: no sufficiently specific attachment point
  Why: Breaker fabric is a mesh where one small breaker is enough for the observed external calls.
  Uses: BreakerState`, `CircuitBreaker`, `createBreaker`, `recordSuccess`, `recordFailure`, `canExecute`, `getBreaker`, `getAllBreakers`, `resetBreaker
  Saves: 0 engineer-days credited (basis: rejected candidate; no adoption value counted).
  Verified: C:ok I:ok B:exec T:— S:scan — C:ok = Compiles (batch tsgo --strict --noEmit); I:ok = installed with install.mjs into an empty host and type-checked there with tsgo --noEmit --skipLibCheck; B:exec = entry point loads; zero-arity exports were executed twice and compared structurally; T:— = Not claimed (test coverage); S:scan = author's 13-rule deterministic static unsafe-construct sweep reported clean; not an independent security audit
  Mode: direct
  Ports to implement: none
HARDEN

BLD-ENG-243 — Module Health Metrics

[HARDEN] CMPSBL BLD-ENG-243 "Module Health Metrics" -> host: core/src/mindustry/net/BeControl.java (176 nonblank LOC); core/src/mindustry/net/SteamAdmin.java (70 nonblank LOC); server/src/mindustry/server/ServerControl.java (1,255 nonblank LOC)
  Why: Makes updater/ban-feed health explicit instead of inferring it from log lines.
  Uses: ModuleState, ModuleHealthMetrics
  Saves: ~1 engineer-day (basis: 85 entry LOC + uptime/error-rate/last-seen/health-score concerns + Java adapter).
  Verified: C:ok I:ok B:— T:— S:scan — C:ok = Compiles (batch tsgo --strict --noEmit); I:ok = installed with install.mjs into an empty host and type-checked there with tsgo --noEmit --skipLibCheck; B:— = Not claimed (behavior); T:— = Not claimed (test coverage); S:scan = author's 13-rule deterministic static unsafe-construct sweep reported clean; not an independent security audit
  Mode: direct
  Ports to implement: none
HARDEN

BLD-ENG-009 — Tamper-Evident Chain

[HARDEN] CMPSBL BLD-ENG-009 "Tamper-Evident Chain" -> host: server/src/mindustry/server/ServerControl.java (1,255 nonblank LOC); core/src/mindustry/net/Administration.java (639 nonblank LOC); core/src/mindustry/net/BeControl.java (176 nonblank LOC)
  Why: Adds append-only hash chaining for selected operational receipts; it does not replace current logs.
  Uses: createAuditChain
  Saves: ~1–2 engineer-days (basis: 67 entry LOC + append-only/hash-link concerns + event schema/retention policy + Java adapter).
  Verified: C:ok I:ok B:exec T:— S:scan — C:ok = Compiles (batch tsgo --strict --noEmit); I:ok = installed with install.mjs into an empty host and type-checked there with tsgo --noEmit --skipLibCheck; B:exec = entry point loads; zero-arity exports were executed twice and compared structurally; T:— = Not claimed (test coverage); S:scan = author's 13-rule deterministic static unsafe-construct sweep reported clean; not an independent security audit
  Mode: direct
  Ports to implement: none
HARDEN

BLD-ENG-136 — Audit-Grade Decision Ledger

[HARDEN] CMPSBL BLD-ENG-136 "Audit-Grade Decision Ledger" -> host: server/src/mindustry/server/ServerControl.java (1,255 nonblank LOC); core/src/mindustry/net/Administration.java (639 nonblank LOC)
  Why: Adds structured immutable decision records for admin commands/bans instead of reconstructing intent from free-text logs.
  Uses: LedgerEntry, AuditGradeDecisionLedger
  Saves: ~1–2 engineer-days (basis: 70 entry LOC + decision schema/hash chain + actor/outcome mapping + Java adapter).
  Verified: C:ok I:ok B:load T:— S:scan — C:ok = Compiles (batch tsgo --strict --noEmit); I:ok = installed with install.mjs into an empty host and type-checked there with tsgo --noEmit --skipLibCheck; B:load = entry point imports and exposes exports; no zero-arity behavior was fabricated; T:— = Not claimed (test coverage); S:scan = author's 13-rule deterministic static unsafe-construct sweep reported clean; not an independent security audit
  Mode: direct
  Ports to implement: none
HARDEN

BLD-ENG-229 — Provenance Chain Verifier

[HARDEN] CMPSBL BLD-ENG-229 "Provenance Chain Verifier" -> host: core/src/mindustry/net/BeControl.java (176 nonblank LOC); core/src/mindustry/mod/DataAssetCache.java (70 nonblank LOC)
  Why: Adds prev-hash provenance evidence around release metadata/download decisions. It does NOT authenticate the downloaded JAR and must not be sold as doing so.
  Uses: ProvenanceLink, ProvenanceVerdict, ProvenanceChainVerifier
  Saves: ~1–3 engineer-days (basis: 108 entry LOC + provenance linkage/verdict + host SHA-256/digest-policy work + Java adapter).
  Verified: C:ok I:ok B:— T:— S:scan — C:ok = Compiles (batch tsgo --strict --noEmit); I:ok = installed with install.mjs into an empty host and type-checked there with tsgo --noEmit --skipLibCheck; B:— = Not claimed (behavior); T:— = Not claimed (test coverage); S:scan = author's 13-rule deterministic static unsafe-construct sweep reported clean; not an independent security audit
  Mode: direct
  Ports to implement: none
SKIP

BLD-ENG-255 — Fingerprint Gate

[SKIP] CMPSBL BLD-ENG-255 "Fingerprint Gate" -> host: core/src/mindustry/net/BeControl.java:106-125,143-164 (176 nonblank LOC file)
  Why: Uses deterministic FNV-1a structural fingerprints. That is drift detection, not a secure release authenticity check for executable JARs.
  Uses: SourceFingerprint`, `FingerprintVerification`, `computeFingerprint`, `computeMultiFileFingerprint`, `verifyFingerprint`, `ArtifactFingerprint`, `ArtifactSealInput`, `computeArtifactFingerprint`, `verifyArtifactFingerprint
  Saves: 0 engineer-days credited (basis: rejected candidate; no adoption value counted).
  Verified: C:ok I:ok B:— T:— S:scan — C:ok = Compiles (batch tsgo --strict --noEmit); I:ok = installed with install.mjs into an empty host and type-checked there with tsgo --noEmit --skipLibCheck; B:— = Not claimed (behavior); T:— = Not claimed (test coverage); S:scan = author's 13-rule deterministic static unsafe-construct sweep reported clean; not an independent security audit
  Mode: direct
  Ports to implement: none
HARDEN

BLD-ENG-248 — Adversarial Input Generator

[HARDEN] CMPSBL BLD-ENG-248 "Adversarial Input Generator" -> host: tests/src/test/java/** (1,957 nonblank LOC total); core/src/mindustry/net/Streamable.java (129 nonblank LOC); core/src/mindustry/net/Packets.java (157 nonblank LOC); core/src/mindustry/io/SaveFileReader.java (188 nonblank LOC)
  Why: The host has parsers/stream assemblers but no dedicated adversarial network/security fixture suite.
  Uses: ADVERSARIAL_CATALOG, generateAdversarialInputs
  Saves: ~1–2 engineer-days (basis: 33 entry LOC + input-category mapping + Java/JUnit adapter + regression fixtures).
  Verified: C:ok I:ok B:— T:— S:scan — C:ok = Compiles (batch tsgo --strict --noEmit); I:ok = installed with install.mjs into an empty host and type-checked there with tsgo --noEmit --skipLibCheck; B:— = Not claimed (behavior); T:— = Not claimed (test coverage); S:scan = author's 13-rule deterministic static unsafe-construct sweep reported clean; not an independent security audit
  Mode: direct
  Ports to implement: none
SKIP

BLD-ENG-174 — Adversarial Simulation

[SKIP] CMPSBL BLD-ENG-174 "Adversarial Simulation" -> host: host-first inventory: no sufficiently specific attachment point
  Why: Adversarial simulation is broader than the concrete parser/input gap; BLD-ENG-248 is smaller and easier to attach in tests.
  Uses: AttackScenario`, `SimulationResult`, `AdversarialSimulation
  Saves: 0 engineer-days credited (basis: rejected candidate; no adoption value counted).
  Verified: C:ok I:ok B:— T:— S:scan — C:ok = Compiles (batch tsgo --strict --noEmit); I:ok = installed with install.mjs into an empty host and type-checked there with tsgo --noEmit --skipLibCheck; B:— = Not claimed (behavior); T:— = Not claimed (test coverage); S:scan = author's 13-rule deterministic static unsafe-construct sweep reported clean; not an independent security audit
  Mode: direct
  Ports to implement: none
SKIP

BLD-ENG-193 — Artifact Hardening Foundry

[SKIP] CMPSBL BLD-ENG-193 "Artifact Hardening Foundry" -> host: host-first inventory: no sufficiently specific attachment point
  Why: Generic hardening attestations do not close a specific host failure before concrete adversarial tests exist.
  Uses: HardeningStage`, `Artifact`, `HardeningAttestation`, `ArtifactHardeningFoundry
  Saves: 0 engineer-days credited (basis: rejected candidate; no adoption value counted).
  Verified: C:ok I:ok B:load T:— S:scan — C:ok = Compiles (batch tsgo --strict --noEmit); I:ok = installed with install.mjs into an empty host and type-checked there with tsgo --noEmit --skipLibCheck; B:load = entry point imports and exposes exports; no zero-arity behavior was fabricated; T:— = Not claimed (test coverage); S:scan = author's 13-rule deterministic static unsafe-construct sweep reported clean; not an independent security audit
  Mode: direct
  Ports to implement: none
SKIP

BLD-ENG-098 — Terminal Command Parser

[SKIP] CMPSBL BLD-ENG-098 "Terminal Command Parser" -> host: server/src/mindustry/server/ServerControl.java (1,255 nonblank LOC); core/src/mindustry/net/Administration.java (639 nonblank LOC)
  Why: The host already has mature command registration/parsing. The optional socket concern is authentication, not parsing.
  Uses: CommandDefinition`, `ArgDefinition`, `FlagDefinition`, `ParsedCommand`, `AutocompleteResult`, `TerminalCommandParser
  Saves: 0 engineer-days credited (basis: rejected candidate; no adoption value counted).
  Verified: C:ok I:ok B:load T:— S:scan — C:ok = Compiles (batch tsgo --strict --noEmit); I:ok = installed with install.mjs into an empty host and type-checked there with tsgo --noEmit --skipLibCheck; B:load = entry point imports and exposes exports; no zero-arity behavior was fabricated; T:— = Not claimed (test coverage); S:scan = author's 13-rule deterministic static unsafe-construct sweep reported clean; not an independent security audit
  Mode: direct
  Ports to implement: none
HARDEN

BLD-ENG-108 — API Key Lifecycle

[HARDEN] CMPSBL BLD-ENG-108 "API Key Lifecycle" -> host: server/src/mindustry/server/ServerControl.java:1428-1446 (1,255 nonblank LOC file); core/src/mindustry/net/Administration.java:553-555 (639 nonblank LOC file)
  Why: Conditional only: if socketInput is intentionally exposed beyond localhost, add key issuance/rotation/revocation before accepting commands. At defaults, skip it.
  Uses: APIKey, KeyAuditEntry, APIKeyLifecycleManager
  Saves: ~2–4 engineer-days if activated (basis: 99 entry LOC + key rotation/revocation/audit + security review + Java socket handshake; zero if socket stays disabled/localhost).
  Verified: C:ok I:ok B:— T:— S:scan — C:ok = Compiles (batch tsgo --strict --noEmit); I:ok = installed with install.mjs into an empty host and type-checked there with tsgo --noEmit --skipLibCheck; B:— = Not claimed (behavior); T:— = Not claimed (test coverage); S:scan = author's 13-rule deterministic static unsafe-construct sweep reported clean; not an independent security audit
  Mode: direct
  Ports to implement: none
SKIP

BLD-ENG-074 — Capability Gate Engine

[SKIP] CMPSBL BLD-ENG-074 "Capability Gate Engine" -> host: server/src/mindustry/server/ServerControl.java:1428-1446 (1,255 nonblank LOC file)
  Why: Generic capability gates do not establish identity on the raw TCP command socket and overlap existing admin permission semantics.
  Uses: CapabilityGate`, `GateEvaluation`, `registerGate`, `evaluateGate`, `listGates`, `removeGate
  Saves: 0 engineer-days credited (basis: rejected candidate; no adoption value counted).
  Verified: C:ok I:ok B:exec T:— S:scan — C:ok = Compiles (batch tsgo --strict --noEmit); I:ok = installed with install.mjs into an empty host and type-checked there with tsgo --noEmit --skipLibCheck; B:exec = entry point loads; zero-arity exports were executed twice and compared structurally; T:— = Not claimed (test coverage); S:scan = author's 13-rule deterministic static unsafe-construct sweep reported clean; not an independent security audit
  Mode: direct
  Ports to implement: none
SKIP

BLD-ENG-247 — Secret Redactor

[SKIP] CMPSBL BLD-ENG-247 "Secret Redactor" -> host: host-first inventory: no sufficiently specific attachment point
  Why: No evidenced secret-heavy structured logging path justified a redactor as a first-order change.
  Uses: redactSecrets`, `redactContext
  Saves: 0 engineer-days credited (basis: rejected candidate; no adoption value counted).
  Verified: C:ok I:ok B:— T:— S:scan — C:ok = Compiles (batch tsgo --strict --noEmit); I:ok = installed with install.mjs into an empty host and type-checked there with tsgo --noEmit --skipLibCheck; B:— = Not claimed (behavior); T:— = Not claimed (test coverage); S:scan = author's 13-rule deterministic static unsafe-construct sweep reported clean; not an independent security audit
  Mode: direct
  Ports to implement: none
SKIP

BLD-ENG-256 — Schema Validator

[SKIP] CMPSBL BLD-ENG-256 "Schema Validator" -> host: host-first inventory: no sufficiently specific attachment point
  Why: Its XSS/SQL/event-handler injection archetypes do not match Mindustry binary packet/save schemas; wrapping generated protocol would be the wrong abstraction.
  Uses: FieldSchema`, `ExecutorSchema`, `ValidationIssue`, `InputArchetype`, `ValidationReport`, `SchemaRegistry`, `validateInput
  Saves: 0 engineer-days credited (basis: rejected candidate; no adoption value counted).
  Verified: C:ok I:ok B:— T:— S:scan — C:ok = Compiles (batch tsgo --strict --noEmit); I:ok = installed with install.mjs into an empty host and type-checked there with tsgo --noEmit --skipLibCheck; B:— = Not claimed (behavior); T:— = Not claimed (test coverage); S:scan = author's 13-rule deterministic static unsafe-construct sweep reported clean; not an independent security audit
  Mode: direct
  Ports to implement: none
HARDEN

BLD-ENG-105 — Forensic Replay

[HARDEN] CMPSBL BLD-ENG-105 "Forensic Replay" -> host: server/src/mindustry/server/ServerControl.java (1,255 nonblank LOC); core/src/mindustry/net/Administration.java (639 nonblank LOC); tests/src/test/java/** (1,957 nonblank LOC total)
  Why: Turns captured admin/incident events into reproducible replay sessions for regression analysis.
  Uses: AuditEvent, ReplaySession, ReplayResult, ForensicReplayEngine
  Saves: ~1–3 engineer-days (basis: 103 entry LOC + event normalization/replay/result comparison + Java/JUnit adapter).
  Verified: C:ok I:ok B:— T:— S:scan — C:ok = Compiles (batch tsgo --strict --noEmit); I:ok = installed with install.mjs into an empty host and type-checked there with tsgo --noEmit --skipLibCheck; B:— = Not claimed (behavior); T:— = Not claimed (test coverage); S:scan = author's 13-rule deterministic static unsafe-construct sweep reported clean; not an independent security audit
  Mode: direct
  Ports to implement: none
SKIP

BLD-ENG-060 — Temporal Regression Sandbox

[SKIP] CMPSBL BLD-ENG-060 "Temporal Regression Sandbox" -> host: host-first inventory: no sufficiently specific attachment point
  Why: No time-series regression domain was found that would justify a temporal sandbox.
  Uses: StateSnapshot`, `RegressionResult`, `binarySearchRegression
  Saves: 0 engineer-days credited (basis: rejected candidate; no adoption value counted).
  Verified: C:ok I:ok B:load T:— S:scan — C:ok = Compiles (batch tsgo --strict --noEmit); I:ok = installed with install.mjs into an empty host and type-checked there with tsgo --noEmit --skipLibCheck; B:load = entry point imports and exposes exports; no zero-arity behavior was fabricated; T:— = Not claimed (test coverage); S:scan = author's 13-rule deterministic static unsafe-construct sweep reported clean; not an independent security audit
  Mode: direct
  Ports to implement: none
SKIP

BLD-ENG-050 — Shadow Run Environment

[SKIP] CMPSBL BLD-ENG-050 "Shadow Run Environment" -> host: host-first inventory: no sufficiently specific attachment point
  Why: Mindustry is not exposing a web-request lane suitable for production traffic mirroring; shadow infrastructure would be disproportionate.
  Uses: ShadowRun`, `ShadowAssertion`, `createShadowRun`, `startRun`, `addAssertion`, `addLog`, `completeRun`, `getRun`, `listRuns
  Saves: 0 engineer-days credited (basis: rejected candidate; no adoption value counted).
  Verified: C:ok I:ok B:load T:— S:scan — C:ok = Compiles (batch tsgo --strict --noEmit); I:ok = installed with install.mjs into an empty host and type-checked there with tsgo --noEmit --skipLibCheck; B:load = entry point imports and exposes exports; no zero-arity behavior was fabricated; T:— = Not claimed (test coverage); S:scan = author's 13-rule deterministic static unsafe-construct sweep reported clean; not an independent security audit
  Mode: direct
  Ports to implement: none
SKIP

BLD-ENG-215 — Contract Evolution Mediator

[SKIP] CMPSBL BLD-ENG-215 "Contract Evolution Mediator" -> host: core/src/mindustry/net/Packets.java (157 nonblank LOC); core/src/mindustry/core/NetServer.java (1,235 nonblank LOC)
  Why: Mindustry already owns generated packet/version compatibility. A second contract-evolution layer risks competing with the authoritative protocol.
  Uses: ContractVersion`, `Contract`, `ContractEvolutionMediator
  Saves: 0 engineer-days credited (basis: rejected candidate; no adoption value counted).
  Verified: C:ok I:ok B:load T:— S:scan — C:ok = Compiles (batch tsgo --strict --noEmit); I:ok = installed with install.mjs into an empty host and type-checked there with tsgo --noEmit --skipLibCheck; B:load = entry point imports and exposes exports; no zero-arity behavior was fabricated; T:— = Not claimed (test coverage); S:scan = author's 13-rule deterministic static unsafe-construct sweep reported clean; not an independent security audit
  Mode: direct
  Ports to implement: none
SKIP

BLD-ENG-249 — Pipeline Lineage Registry

[SKIP] CMPSBL BLD-ENG-249 "Pipeline Lineage Registry" -> host: host-first inventory: no sufficiently specific attachment point
  Why: Stage-by-stage pipeline lineage is less direct than event/update provenance and would duplicate evidence models.
  Uses: PipelineLineageRecord`, `PipelineLineageRegistry
  Saves: 0 engineer-days credited (basis: rejected candidate; no adoption value counted).
  Verified: C:ok I:ok B:— T:— S:scan — C:ok = Compiles (batch tsgo --strict --noEmit); I:ok = installed with install.mjs into an empty host and type-checked there with tsgo --noEmit --skipLibCheck; B:— = Not claimed (behavior); T:— = Not claimed (test coverage); S:scan = author's 13-rule deterministic static unsafe-construct sweep reported clean; not an independent security audit
  Mode: direct
  Ports to implement: none
SKIP

BLD-ENG-096 — Webhook Reliability

[SKIP] CMPSBL BLD-ENG-096 "Webhook Reliability" -> host: core/src/mindustry/net/BeControl.java:106-125,143-164 (176 nonblank LOC file)
  Why: Webhook retry/dedupe/signature verification is the wrong transport and trust model for GitHub release JAR authentication.
  Uses: WebhookEvent`, `DeliveryAttempt`, `WebhookConfig`, `WebhookReliabilityEngine
  Saves: 0 engineer-days credited (basis: rejected candidate; no adoption value counted).
  Verified: C:ok I:ok B:— T:— S:scan — C:ok = Compiles (batch tsgo --strict --noEmit); I:ok = installed with install.mjs into an empty host and type-checked there with tsgo --noEmit --skipLibCheck; B:— = Not claimed (behavior); T:— = Not claimed (test coverage); S:scan = author's 13-rule deterministic static unsafe-construct sweep reported clean; not an independent security audit
  Mode: direct
  Ports to implement: none
SKIP

BLD-ENG-012 — Rate Limiter

[SKIP] CMPSBL BLD-ENG-012 "Rate Limiter" -> host: core/src/mindustry/net/Administration.java:543-552 (639 nonblank LOC file); core/src/mindustry/net/ArcNetProvider.java:129-170 (545 nonblank LOC file)
  Why: Host already has interaction/message/packet/chat limits, blacklists and kicks. Replacing them would trade specific game controls for a generic limiter.
  Uses: Strategy`, `RateLimitConfig`, `RateLimitResult`, `createRateLimiter
  Saves: 0 engineer-days credited (basis: rejected candidate; no adoption value counted).
  Verified: C:ok I:ok B:load T:— S:scan — C:ok = Compiles (batch tsgo --strict --noEmit); I:ok = installed with install.mjs into an empty host and type-checked there with tsgo --noEmit --skipLibCheck; B:load = entry point imports and exposes exports; no zero-arity behavior was fabricated; T:— = Not claimed (test coverage); S:scan = author's 13-rule deterministic static unsafe-construct sweep reported clean; not an independent security audit
  Mode: direct
  Ports to implement: none
SKIP

BLD-ENG-066 — Adaptive Rate Limiting

[SKIP] CMPSBL BLD-ENG-066 "Adaptive Rate Limiting" -> host: core/src/mindustry/net/Administration.java:543-552 (639 nonblank LOC file); core/src/mindustry/net/ArcNetProvider.java:166-170 (545 nonblank LOC file)
  Why: Host packet-abuse defense is already specific and trusted; provider-health adaptive limiting does not solve an observed gap.
  Uses: RateLimiter`, `createLimiter`, `tryConsume`, `adaptLimit`, `getLimiter`, `listLimiters
  Saves: 0 engineer-days credited (basis: rejected candidate; no adoption value counted).
  Verified: C:ok I:ok B:— T:— S:scan — C:ok = Compiles (batch tsgo --strict --noEmit); I:ok = installed with install.mjs into an empty host and type-checked there with tsgo --noEmit --skipLibCheck; B:— = Not claimed (behavior); T:— = Not claimed (test coverage); S:scan = author's 13-rule deterministic static unsafe-construct sweep reported clean; not an independent security audit
  Mode: direct
  Ports to implement: none
SKIP

PROD-DEP-GUARDIAN — dep-guardian

[SKIP] CMPSBL PROD-DEP-GUARDIAN "dep-guardian" -> host: host-first inventory: no sufficiently specific attachment point
  Why: A Node-oriented dependency product with 3,242 closure LOC is disproportionate to the Java game gaps identified.
  Uses: DepGuardian`, `registerRule`, `removeRule`, `getRegisteredRules`, `registerUpgradeHandler`, `ReceiptChain`, `DEFAULT_GUARDIAN_CONFIG`, `getLifecycleSummary
  Saves: 0 engineer-days credited (basis: rejected candidate; no adoption value counted).
  Verified: C:ok I:ok B:exec T:— S:scan — C:ok = Compiles (batch tsgo --strict --noEmit); I:ok = installed with install.mjs into an empty host and type-checked there with tsgo --noEmit --skipLibCheck; B:exec = entry point loads; zero-arity exports were executed twice and compared structurally; T:— = Not claimed (test coverage); S:scan = author's 13-rule deterministic static unsafe-construct sweep reported clean; not an independent security audit
  Mode: direct
  Ports to implement: none
SKIP

PKG-TEST-HARNESS — @cmpsbl/test-harness

[SKIP] CMPSBL PKG-TEST-HARNESS "@cmpsbl/test-harness" -> host: tests/src/test/java/** (1,957 nonblank LOC total)
  Why: Its job is CMPSBL pipeline/bridge validation, not Mindustry JUnit packet/save testing; 19,970 closure LOC is excessive.
  Uses: TestResult`, `TestSuiteResult`, `FingerprintRecord`, `verifyFingerprint`, `validateManifest`, `testChainExecution`, `testBridge`, `testFirstContact`, `formatTestResults` +1 more
  Saves: 0 engineer-days credited (basis: rejected candidate; no adoption value counted).
  Verified: C:ok I:ok B:load T:— S:scan — C:ok = Compiles (batch tsgo --strict --noEmit); I:ok = installed with install.mjs into an empty host and type-checked there with tsgo --noEmit --skipLibCheck; B:load = entry point imports and exposes exports; no zero-arity behavior was fabricated; T:— = Not claimed (test coverage); S:scan = author's 13-rule deterministic static unsafe-construct sweep reported clean; not an independent security audit
  Mode: self-contained
  Ports to implement: none
SKIP

SUBP-05 — TRIAGE

[SKIP] CMPSBL SUBP-05 "TRIAGE" -> host: host-first inventory: no sufficiently specific attachment point
  Why: TRIAGE is a 943-closure-LOC recovery ladder where retry + one breaker cover the observed HTTP calls more directly.
  Uses: triageContract`, `createTriage`, `BUILT_IN_RULES`, `DEFAULT_CLASSIFICATION`, `classifyWith`, `normaliseKind`, `normaliseMessage`, `LadderRule`, `TriageOptions` +8 more
  Saves: 0 engineer-days credited (basis: rejected candidate; no adoption value counted).
  Verified: C:ok I:ok B:load T:— S:scan — C:ok = Compiles (batch tsgo --strict --noEmit); I:ok = installed with install.mjs into an empty host and type-checked there with tsgo --noEmit --skipLibCheck; B:load = entry point imports and exposes exports; no zero-arity behavior was fabricated; T:— = Not claimed (test coverage); S:scan = author's 13-rule deterministic static unsafe-construct sweep reported clean; not an independent security audit
  Mode: direct
  Ports to implement: none
SKIP

SUBP-06 — BULKHEAD

[SKIP] CMPSBL SUBP-06 "BULKHEAD" -> host: desktop/src/mindustry/desktop/steam/SNet.java:568-607 (577 nonblank LOC file)
  Why: Steam transport already implements ordered retry/backpressure and a 50 MiB queue cap; a generic bulkhead would duplicate trusted transport semantics.
  Uses: BulkheadOptions`, `BulkheadRunOptions`, `Bulkhead`, `createBulkhead`, `BulkheadSubject`, `bulkheadContract`, `BulkheadRejection`, `BulkheadPolicy`, `RejectionReason` +1 more
  Saves: 0 engineer-days credited (basis: rejected candidate; no adoption value counted).
  Verified: C:ok I:ok B:load T:— S:scan — C:ok = Compiles (batch tsgo --strict --noEmit); I:ok = installed with install.mjs into an empty host and type-checked there with tsgo --noEmit --skipLibCheck; B:load = entry point imports and exposes exports; no zero-arity behavior was fabricated; T:— = Not claimed (test coverage); S:scan = author's 13-rule deterministic static unsafe-construct sweep reported clean; not an independent security audit
  Mode: direct
  Ports to implement: none
SKIP

SUBP-03 — COMPANION

[SKIP] CMPSBL SUBP-03 "COMPANION" -> host: host-first inventory: no sufficiently specific attachment point
  Why: A 1,225-entry-LOC host-integration seam is premature while the Java emitter itself is Not claimed in the pre-purchase evidence.
  Uses: COMPANION_PORT_IDS`, `createFallbackClock`, `createFallbackRandom`, `createMemoryState`, `createFallbackMetadata`, `CountingTelemetry`, `createFallbackTelemetry`, `createFetchHttp`, `InProcessQueue` +42 more
  Saves: 0 engineer-days credited (basis: rejected candidate; no adoption value counted).
  Verified: C:ok I:ok B:exec T:— S:scan — C:ok = Compiles (batch tsgo --strict --noEmit); I:ok = installed with install.mjs into an empty host and type-checked there with tsgo --noEmit --skipLibCheck; B:exec = entry point loads; zero-arity exports were executed twice and compared structurally; T:— = Not claimed (test coverage); S:scan = author's 13-rule deterministic static unsafe-construct sweep reported clean; not an independent security audit
  Mode: direct
  Ports to implement: none
SKIP

VPACK-CYBER-PERIMETER-SUITE — Rate-Limit, Origin & Secret-Leak Defense Layer

[SKIP] CMPSBL VPACK-CYBER-PERIMETER-SUITE "Rate-Limit, Origin & Secret-Leak Defense Layer" -> host: host-first inventory: no sufficiently specific attachment point
  Why: It duplicates mature host perimeter controls, and AGENTS rule 12 says VerticalLayerPack artifacts cannot be attached by import even though the row says Mode=direct.
  Uses: cmpsbl_cps_watchtower`, `cmpsbl_cps_aegis_block`, `cmpsbl_cps_aegis_allow`, `cmpsbl_cps_aegis_check`, `cmpsbl_cps_bastion`, `cmpsbl_cps_cipher`, `CYBER_PERIMETER_SUITE_LAYER
  Saves: 0 engineer-days credited (basis: rejected candidate; no adoption value counted).
  Verified: C:ok I:ok B:load T:— S:scan — C:ok = Compiles (batch tsgo --strict --noEmit); I:ok = installed with install.mjs into an empty host and type-checked there with tsgo --noEmit --skipLibCheck; B:load = entry point imports and exposes exports; no zero-arity behavior was fabricated; T:— = Not claimed (test coverage); S:scan = author's 13-rule deterministic static unsafe-construct sweep reported clean; not an independent security audit
  Mode: direct
  Ports to implement: none
SKIP

VPACK-ADVERSARIAL-WARGAME — Continuous Red-Team Stress Layer

[SKIP] CMPSBL VPACK-ADVERSARIAL-WARGAME "Continuous Red-Team Stress Layer" -> host: host-first inventory: no sufficiently specific attachment point
  Why: The capability is relevant, but the layer must be Ascension-wrapped and is much broader than a test-only input generator.
  Uses: ADVERSARIAL_WARGAME_LAYER
  Saves: 0 engineer-days credited (basis: rejected candidate; no adoption value counted).
  Verified: C:ok I:ok B:load T:— S:scan — C:ok = Compiles (batch tsgo --strict --noEmit); I:ok = installed with install.mjs into an empty host and type-checked there with tsgo --noEmit --skipLibCheck; B:load = entry point imports and exposes exports; no zero-arity behavior was fabricated; T:— = Not claimed (test coverage); S:scan = author's 13-rule deterministic static unsafe-construct sweep reported clean; not an independent security audit
  Mode: direct
  Ports to implement: none
SKIP

VPACK-DETERMINISTIC-REPLAY-VAULT — Bug Reproduction & Replay Layer

[SKIP] CMPSBL VPACK-DETERMINISTIC-REPLAY-VAULT "Bug Reproduction & Replay Layer" -> host: host-first inventory: no sufficiently specific attachment point
  Why: Sealing every capability call is disproportionate; targeted incident replay is enough, and the layer cannot be directly imported.
  Uses: cmpsbl_replay_seal`, `cmpsbl_replay_get`, `cmpsbl_replay_count`, `DETERMINISTIC_REPLAY_VAULT_LAYER
  Saves: 0 engineer-days credited (basis: rejected candidate; no adoption value counted).
  Verified: C:ok I:ok B:load T:— S:scan — C:ok = Compiles (batch tsgo --strict --noEmit); I:ok = installed with install.mjs into an empty host and type-checked there with tsgo --noEmit --skipLibCheck; B:load = entry point imports and exposes exports; no zero-arity behavior was fabricated; T:— = Not claimed (test coverage); S:scan = author's 13-rule deterministic static unsafe-construct sweep reported clean; not an independent security audit
  Mode: direct
  Ports to implement: none
SKIP

VPACK-SENTINEL-EVOLUTION — Safe Patch Rollout Layer

[SKIP] CMPSBL VPACK-SENTINEL-EVOLUTION "Safe Patch Rollout Layer" -> host: host-first inventory: no sufficiently specific attachment point
  Why: Patch dependency simulation does not solve the observed updater trust gap; layer attachment also requires Ascension.
  Uses: cmpsbl_sent_enqueue`, `cmpsbl_sent_topo_order`, `cmpsbl_sent_simulate`, `cmpsbl_sent_apply`, `SENTINEL_EVOLUTION_LAYER
  Saves: 0 engineer-days credited (basis: rejected candidate; no adoption value counted).
  Verified: C:ok I:ok B:load T:— S:scan — C:ok = Compiles (batch tsgo --strict --noEmit); I:ok = installed with install.mjs into an empty host and type-checked there with tsgo --noEmit --skipLibCheck; B:load = entry point imports and exposes exports; no zero-arity behavior was fabricated; T:— = Not claimed (test coverage); S:scan = author's 13-rule deterministic static unsafe-construct sweep reported clean; not an independent security audit
  Mode: direct
  Ports to implement: none
SKIP

PRIM-ENG-01 — DREAM

[SKIP] CMPSBL PRIM-ENG-01 "DREAM" -> host: repository-wide host inventory
  Why: DREAM received a full read: its idle-cycle low-confidence pattern synthesis has no evidenced product/ops job here, costs a 47,391-LOC closure and PORT-PERSISTENCE, and the Java bridge remains Not claimed.
  Uses: PrimitiveClassification`, `PrimitiveSource`, `PrimitiveCatalogEntry`, `PRIMITIVE_CATALOG`, `registerAllPrimitives`, `getCatalogEntry`, `getCatalogBySource`, `getCatalogNames`, `invokePrimitive` +51 more
  Saves: 0 engineer-days credited (basis: rejected candidate; no adoption value counted).
  Verified: C:proj(12) I:ok B:exec T:— S:scan — C:proj(12) = Compiles under project settings; strict-mode errors are recorded by the number in the token; I:ok = installed with install.mjs into an empty host and type-checked there with tsgo --noEmit --skipLibCheck; B:exec = entry point loads; zero-arity exports were executed twice and compared structurally; T:— = Not claimed (test coverage); S:scan = author's 13-rule deterministic static unsafe-construct sweep reported clean; not an independent security audit
  Mode: self-contained
  Ports to implement: PORT-PERSISTENCE
SKIP

BLD-ENG-260 — Dream Synthesizer

[SKIP] CMPSBL BLD-ENG-260 "Dream Synthesizer" -> host: host-first inventory: no sufficiently specific attachment point
  Why: Offline memory consolidation has no host memory-learning pipeline to attach to.
  Uses: MemoryFragment`, `ConsolidationResult`, `DreamConfig`, `DreamSynthesizer
  Saves: 0 engineer-days credited (basis: rejected candidate; no adoption value counted).
  Verified: C:ok I:ok B:— T:— S:scan — C:ok = Compiles (batch tsgo --strict --noEmit); I:ok = installed with install.mjs into an empty host and type-checked there with tsgo --noEmit --skipLibCheck; B:— = Not claimed (behavior); T:— = Not claimed (test coverage); S:scan = author's 13-rule deterministic static unsafe-construct sweep reported clean; not an independent security audit
  Mode: direct
  Ports to implement: none
SKIP

BLD-ENG-271 — Dream Generation Gate

[SKIP] CMPSBL BLD-ENG-271 "Dream Generation Gate" -> host: host-first inventory: no sufficiently specific attachment point
  Why: Generation-depth limits only matter when synthesized memories exist; Mindustry has no such pipeline.
  Uses: DreamCandidate`, `MAX_GENERATION`, `memoryWeight`, `sortBySynthesisPriority`, `filterDreamCandidates`, `rankDreamCandidates
  Saves: 0 engineer-days credited (basis: rejected candidate; no adoption value counted).
  Verified: C:ok I:ok B:— T:— S:scan — C:ok = Compiles (batch tsgo --strict --noEmit); I:ok = installed with install.mjs into an empty host and type-checked there with tsgo --noEmit --skipLibCheck; B:— = Not claimed (behavior); T:— = Not claimed (test coverage); S:scan = author's 13-rule deterministic static unsafe-construct sweep reported clean; not an independent security audit
  Mode: direct
  Ports to implement: none
SKIP

BLD-ENG-164 — Dream Cross-Pollination

[SKIP] CMPSBL BLD-ENG-164 "Dream Cross-Pollination" -> host: host-first inventory: no sufficiently specific attachment point
  Why: Cross-pollinating dream insights is novel but unrelated to the host gaps.
  Uses: DreamInsight`, `DreamCrossPollination
  Saves: 0 engineer-days credited (basis: rejected candidate; no adoption value counted).
  Verified: C:ok I:ok B:— T:— S:scan — C:ok = Compiles (batch tsgo --strict --noEmit); I:ok = installed with install.mjs into an empty host and type-checked there with tsgo --noEmit --skipLibCheck; B:— = Not claimed (behavior); T:— = Not claimed (test coverage); S:scan = author's 13-rule deterministic static unsafe-construct sweep reported clean; not an independent security audit
  Mode: direct
  Ports to implement: none
SKIP

SUBSYS-04 — Shadow Mesh

[SKIP] CMPSBL SUBSYS-04 "Shadow Mesh" -> host: tests/src/test/java/**; core/src/mindustry/net/**
  Why: Whole-subsystem shadow/adversarial infrastructure has a 65,882-LOC closure and C:proj(14); no production shadow lane justifies it.
  Uses: generateAdversarialInputs`, `runShadowProbe`, `runAllShadowProbes`, `runShadowBatch`, `startShadowScheduler`, `stopShadowScheduler`, `getShadowMeshAnalytics`, `runShadowBuild`, `runAllShadowBuilds` +6 more
  Saves: 0 engineer-days credited (basis: rejected candidate; no adoption value counted).
  Verified: C:proj(14) I:ok B:— T:— S:scan — C:proj(14) = Compiles under project settings; strict-mode errors are recorded by the number in the token; I:ok = installed with install.mjs into an empty host and type-checked there with tsgo --noEmit --skipLibCheck; B:— = Not claimed (behavior); T:— = Not claimed (test coverage); S:scan = author's 13-rule deterministic static unsafe-construct sweep reported clean; not an independent security audit
  Mode: direct
  Ports to implement: PORT-PERSISTENCE; host peers: @types/node, zustand
SKIP

SUBSYS-14 — Terminal / Substrate Bridge

[SKIP] CMPSBL SUBSYS-14 "Terminal / Substrate Bridge" -> host: server/src/mindustry/server/ServerControl.java (1,255 nonblank LOC)
  Why: The 33,527-LOC command subsystem does not address raw socket authentication and would compete with the existing server command surface.
  Uses: executeCommand`, `dryRunCommand`, `executeWithApproval`, `executeImmediate`, `registerHandler`, `hasHandler`, `getHandler`, `validateRegistry`, `validateCommandOutput` +19 more
  Saves: 0 engineer-days credited (basis: rejected candidate; no adoption value counted).
  Verified: C:proj(7) I:ok B:— T:— S:scan — C:proj(7) = Compiles under project settings; strict-mode errors are recorded by the number in the token; I:ok = installed with install.mjs into an empty host and type-checked there with tsgo --noEmit --skipLibCheck; B:— = Not claimed (behavior); T:— = Not claimed (test coverage); S:scan = author's 13-rule deterministic static unsafe-construct sweep reported clean; not an independent security audit
  Mode: direct
  Ports to implement: PORT-PERSISTENCE

Gap map

GapEvidence in hostWhat addresses it
Executable update authenticityBeControl.java:112-118 executes a downloaded desktop JAR; lines 148-164 copy the downloaded server JAR into place; no local expected-digest/publisher-signature check found before either action.No correct catalog primitive found. Host must supply trusted digest/signature verification. BLD-ENG-229/009 may record evidence only.
Adversarial parser/security regression laneTests exist but no dedicated network/security/adversarial suite; Streamable and save chunk boundaries are good test targets.BLD-ENG-248 first; optionally BLD-ENG-105 for exact incident replay.
Bounded external dependency failure domainBeControl and SteamAdmin have error/fallback handling but no common retry/breaker/health policy.BLD-ENG-303 + BLD-ENG-011 + BLD-ENG-243.
Structured moderation/command evidenceServerControl writes logs and Administration owns state, but no immutable decision ledger/replay chain was found.BLD-ENG-136 + BLD-ENG-009 + BLD-ENG-105.
Remote command authentication, conditionaltoggleSocket reads lines and forwards to handleCommandString; however defaults are socketInput=false and address=localhost.BLD-ENG-108 only if non-loopback remote administration is an actual requirement; otherwise skip.
CI dependency pinningPR/push/deployment workflows clone Arc master.Host-only fix: pin Arc commit/tag. No catalog credit claimed.
Stream size bounding, client-sideStreamBegin.total is trusted as metadata and stream builders accumulate data; packet direction rules restrict these streams to server-to-client.Host protocol change/tests; BLD-ENG-248 can exercise the boundary, but no production cap component is claimed.

Quick wins

Low effort, high confidence, nothing on a production critical path first.

  1. Protocol Edge Fixture Factory — ~1–2 engineer-days (basis: 33 entry LOC + Java/JUnit mapping), test-only.
  2. Retry Policy Adapter — ~1–2 engineer-days (basis: 55 entry LOC + two HTTP call sites), initially limited to update/feed calls.
  3. Endpoint Health Card — ~1 engineer-day (basis: 85 entry LOC + two dependency adapters), passive before it drives behavior.

Do not touch

These are already specific, trusted host systems or intentional product behavior.

  1. Rate limiting / anti-DOS: keep Administration.java:543-552 and ArcNetProvider.java:129-170. BLD-ENG-012/066 would duplicate game-specific controls.
  2. Save rollback/version handling: keep SaveIO.java and versioned save machinery; it already backs up, restores and validates.
  3. Generated packet/entity protocol: do not layer Contract Evolution Mediator over generated/host-specific compatibility checks.
  4. Steam send queue: keep SNet ordered retry/backpressure and its 50 MiB queue cap; do not replace with BULKHEAD.
  5. Mod/script execution model: executable mods/Rhino scripting are intentional extensibility; generic “sandbox” framing would mischaracterize the product.
  6. Authoritative game simulation: no catalog item earned a reason to touch deterministic gameplay/state logic.

Honest totals: 9 engineered rows are feasible enough to retain (basis: Step 2), 8 create measurable value at default configuration (basis: BLD-ENG-108 is conditional), and the first funding gate should cover only the 3 quick wins until Java bridge evidence exists.

Step 6

Build versus buy

The current authoritative licence is US$499 once per company, perpetual. The kit’s older source-release/annual language is stale and is not used in this calculation.

BucketEngineer-weeksUS$ (range)Basis and assumptions
(A) Cost avoided — work already planned0US$0Pinned snapshot/README/issues included no evidence that these exact nine capabilities are committed roadmap work; no planned-budget credit.
(B) Capability acquisition — would probably not otherwise be built1.5–3.5US$9,000–21,000Basis: 789 total entry LOC across 9 retained rows (never closure LOC), kit LOC bands, correctness concerns from the catalog descriptions, overlap discounted; at US$150/h × 40 h/week.
(C) Portfolio and future reuse — conditional0 creditedUS$0 creditedArc and MindustryBuilds are referenced, but not evaluated. Marginal CMPSBL licence cost for another company repo would be US$0 under current perpetual terms, but this report assigns no reuse value without host evidence.
− Integration cost1–2US$6,000–12,000Basis: unclaimed Java emitter, Gradle/JUnit bridge, behavior-parity tests, and host security review for updater/auth boundaries; at US$150/h × 40 h/week.
= Net after US$499 licence−0.5 to +2.5−US$3,499 to +US$14,501B − integration − US$499; A=0 and C=0. Low case: 9,000−12,000−499. High case: 21,000−6,000−499.

Assumptions

US$150 per senior engineer-hour (basis: kit’s own costing convention), 40 paid engineering hours per week, one experienced Java engineer with security review available. Estimates err upward on integration because Java output is Not claimed and downward on capability value because portfolio reuse is credited at zero.

What the team would probably never have arrived at alone

The strongest counterfactual is not retry logic; it is the combination of adversarial fixture generation with forensic replay and structured/tamper-evident moderation evidence. Mindustry already has domain-specific reliability code, so the novel value is turning failures and operator decisions into reproducible evidence artifacts rather than adding another generic runtime layer.

Is this a good trade at the stated price?

Conditional yes. US$499 itself breaks even after 3.33 senior-engineer hours (basis: 499/150), but the real decision is the 1–2 week Java integration risk. Buy only if a post-purchase proof can generate/bridge BLD-ENG-248 or BLD-ENG-303 into a compiling Java 17/Gradle test path quickly. Do not buy if the primary expectation is cryptographic updater authentication: that capability is missing from the engineered catalog.

What would change this answer: verified Java bridge evidence for the retained IDs moves the verdict toward BUY; inability to produce behaviorally equivalent Java within the first test-only proof moves it to DO NOT BUY. A vendor-supplied general publisher-signature/release-digest verifier would materially increase value for this host.

Step 7

90-day roadmap, assuming it was bought

PhaseWhat shipsWhy hereGate to proceedEffortCumulative
0–30 daysLicense purchase only if ready to run a proof; build Protocol Edge Fixture Factory/Packet Boundary Lab in tests; optionally passive Endpoint Health Card.Tests are reversible and validate the unclaimed Java bridge before production dependency.Proceed only if emitted/bridged Java compiles under Java 17/Gradle and the same input cases produce expected behavior; stop purchase rollout if bridge parity fails.~3–5 engineer-days (basis: Step 5B #1 + passive metrics + bridge proof)~3–5 engineer-days
30–60 daysRetry Policy Adapter + Outbound Dependency Fuse; prototype Release Provenance Receipt/Update Evidence Gate without claiming authenticity.Uses the bridge only after a test proof; improves non-game external dependencies first.Updater gate must have a separately trusted expected digest/signature source and fail closed/manual on missing/mismatch; otherwise provenance stays evidence-only.~4–7 engineer-days (basis: retry/breaker/health + two updater/feed call sites + tests)~7–12 engineer-days
60–90 daysAdmin Decision Receipt/Black Box + targeted Forensic Replay. Add API Key Lifecycle only if remote non-loopback socket control is an explicit requirement.Operational evidence follows after core bridge/HTTP behavior is proven.Privacy/retention review passes; command socket remains disabled/localhost unless authenticated remote operation is deliberately approved.~4–8 engineer-days (basis: ledger/chain/replay + event schema; add ~2–4 d only if remote auth is required)~11–20 engineer-days plus optional auth

Dependencies

A valid purchase/grant record; post-purchase delivery including polyglot emitter; Java 17/Gradle bridge proof; JUnit fixtures; host security review for updater/auth changes; a trusted expected-digest/signature release source if the update gate is enabled.

Do not start here

Do not replace rate limiting, save recovery, Steam queueing, generated packet/version handling or game simulation. Do not call FNV structural fingerprints or webhook signatures “release authentication.”

Where the new designs sit

Days 0–30: Protocol Edge Fixture Factory and passive Endpoint Health Card. Days 30–60: Retry Policy Adapter and Release Provenance Receipt. Days 60–90: Admin Decision Receipt. The composites grow from those proven pieces.

If you only do one thing

Build the Packet Boundary Lab first. It simultaneously hardens real game parsers and tests whether the library can cross the TypeScript-to-Java boundary without touching production runtime.

Capacity assumption: one experienced Java engineer, about 40 engineering hours/week (basis: cost model), with occasional security review; roadmap intentionally does not plan parallel six-person work.

Discovery Vault — provisional, kept out of every total

Machine-synthesised discoveries worth reading after purchase

All 6,479 index rows were screened (basis: 1,510 disc-* + 4,969 vdisc-*). The pre-purchase kit does not contain vault source, so no API, LOC, verification or savings claim is made for the shortlist below.

Discovery idCapability (index row)Host concern it may touchStatusWhat to read first post-purchase
vdisc-3ede17d2GM and ANTI CHEAT collaborate with MODERATOR oversight to deliver automated ban confidence.Could overlap Mindustry moderation/ban confidence, but host already has ban/admin primitives; evaluate for evidence/ranking rather than auto-ban replacement.PROVISIONAL — index row only, source not read (pre-purchase)vault/vdisc-3ede17d2-gm-anti-cheat-collaborative-ban-confidence-engine.ts — read provenance header and actual exported surface before deciding.
vdisc-4298113cANTI CHEAT orchestrates GM, RAIDER, and SPECTATOR into a coordinated incident response workflow with real-time adaptation.Could map to coordinated cheating/abuse incident response on public servers; needs source review before any claim.PROVISIONAL — index row only, source not read (pre-purchase)vault/vdisc-4298113c-anti-cheat-led-multi-primitive-incident-response-engine.ts — read provenance header and actual exported surface before deciding.
vdisc-4285753bBridges GM analytical power with MODERATOR execution capabilities for intelligent, automated server health.Could map to operated server health/moderation automation; compare against the smaller endpoint-health design first.PROVISIONAL — index row only, source not read (pre-purchase)vault/vdisc-4285753b-server-health-intelligence-bridge.ts — read provenance header and actual exported surface before deciding.
vdisc-064bd6f8Keeps GM and ANTI CHEAT state synchronized bidirectionally — changes in either propagate instantly to the other with conflict resolution.Could synchronize game-master and anti-cheat state, but may conflict with host-specific admin/permission semantics.PROVISIONAL — index row only, source not read (pre-purchase)vault/vdisc-064bd6f8-gm-anti-cheat-bidirectional-sync.ts — read provenance header and actual exported surface before deciding.
vdisc-4d789f8cBALANCE orchestrates SPECTATOR, ANTI CHEAT, and ECONOMY into a coordinated replay analysis workflow with real-time adaptation.Could support replay/balance/anti-cheat analysis after a real replay corpus exists; not a current recommendation.PROVISIONAL — index row only, source not read (pre-purchase)vault/vdisc-4d789f8c-balance-led-multi-primitive-replay-analysis-engine.ts — read provenance header and actual exported surface before deciding.

The gaming-v1 subset contains 427 rows (basis: parsed keyword field); 229 had broad keyword/concept overlap with the host-first concerns, but only the five above are retained for post-purchase reading. None contributes to Step 4 ranking, Step 6 money or the lead statistics.

Step 8 — appended, never merged into the body

Self-correction addendum

Claim aboveRe-check resultEstimate change
Initial stream-risk hypothesisCorrected: Streamable.allow and Packets.StreamBegin/StreamChunk.allow return !server, so these stream packets are server-to-client. The resource-exhaustion concern is a malicious/buggy server stressing a client, not arbitrary client-to-server DDoS.Severity/scope reduced; no server-DDoS savings claim.
Optional command socket looked unauthenticatedConfirmed raw line forwarding in ServerControl.toggleSocket, but Administration defaults are socketInput=false and socketInputAddress=localhost.API-key recommendation downgraded to conditional; zero value/cost at defaults.
Updater integrity/authenticityConfirmed BeControl downloads then executes/replaces JAR with no local trusted expected-digest/publisher-signature comparison visible.Gap remains, but catalog credit reduced: BLD-ENG-229/009 provide evidence only; host trust anchor/signature is separate work.
Generic rate limiting might helpRejected after host pass: Administration exposes interaction/message/packet/chat controls and ArcNetProvider blacklists packet spam/DOS addresses.BLD-ENG-012/066 savings set to zero; existing host logic is do-not-touch.
Generic save reliability might helpRejected: SaveIO already moves old file to backup, restores it on write failure, validates primary/backup and falls back to backup metadata.No catalog save-reliability value counted.
Phase 2 vs Phase 3 metadata consistencyProgrammatic comparison across all 1,162 IDs found 0 mismatches on class/name/mode/entry/closure/Verified/constraints.Coverage confidence increased; no estimate change.
Discovery coverage parserInitial vdisc-only parsing would have missed the 1,510 disc-* primary rows; parser was corrected before coverage/shortlist totals.Final discovery coverage is 6,479, not 4,969; financial totals unchanged because discoveries are excluded.
Layer Mode=direct means directly importableFalse under governing instructions: AGENTS.md rule 12 says AscensionLayer/Primitive-Layer/VerticalLayerPack are not attachable by import and require Ascension wrapping.All matched VPACK rows rejected; avoids hidden Ascension cost.
Twin rows can be valued independentlyRejected: catalog marks twins (for example BLD-ENG-011 twin of STIER-EXTRA-02). Counting both would duplicate the same capability value.Twin counterpart value is deduplicated; no double-counted savings.
Kit licence/pricing copy is internally consistentFalse: AGENTS.md/LICENSING.md say one US$499 one-time perpetual licence, while CATALOG-PHASE-1-DIRECTIVES.md/AGENT-HANDOFF PART 1 and the HTML template retain retired free/source-release/annual wording. Current LICENSING.md explicitly overrides stale references.Report uses authoritative current licence. This is a kit control-plane defect, not a Mindustry defect.
Template/Phase 1 break-even arithmeticStale directive text says US$499 is about 1.9 hours at US$150/hour; arithmetic is 499/150 = 3.326..., rounded 3.33 hours.Break-even corrected to 3.33 hours.
Catalog has a general update-signature/checksum primitiveFalse after full engineered-row search: FNV-1a Fingerprint Gate is structural drift detection; Webhook Reliability is webhook-specific; no general publisher-signature/minisign/Ed25519/release-checksum verifier matched.Major library hole remains explicit; no false BUY credit.
Java bridge can be verified pre-purchaseFalse: instructions say Java is one of 23 target emitters whose output is Not claimed; this pre-purchase kit omits polyglot/.Integration estimate kept at 1–2 weeks and verdict remains conditional.
CI build dependency is fully pinnedNormal build uses archash, but PR/push/deployment workflows clone Arc master.Separate host-only hardening item added; no CMPSBL savings credit.
Final post-draft inventory pass: pinned ZIP still has 4511 members / 4238 files; extracted repository has 4238 original files plus exactly 2 required report files; Java file count remains 866.Confirmed: no host source/config file was created or modified by the evaluation; only COLLECTIVE-MASTER-LIBRARY-INTEGRATION-REPORT.html and .md were added at repo root.No estimate change; Step 1 counts confirmed. The difference between 4,511 ZIP members and 4,238 host files is 273 directory entries, not missing content.

This addendum records both host-claim corrections and evaluator/kit control-plane edge cases. It intentionally does not rewrite earlier body claims in place. The highest-risk evaluator mistakes would have been: reading the catalog before the host, treating a name match as a capability match, double-counting twins, sizing shared-entry/discovery rows, treating Mode=direct as permission to import layer classes, upgrading Not claimed Java output, or relabeling FNV/provenance/webhook semantics as executable-release authentication.

Claim ceiling

What is and is not verified

Extracted from systems the author has run in production since August 2025. Operationally exercised, not independently security-audited.

In pre-purchase evaluation, verification axes quoted in this report come verbatim from the generated AGENT-HANDOFF-CATALOG.md; in a full delivery, artifact manifests override it. Every component records testCoverage: Not claimed, and no component has had an independent third-party security review. Static scan results and adversarial suites are the author's own. TypeScript is canonical; emitted TypeScript/Python/JavaScript samples are build-checked, while the other 23 targets, including Java, are Not claimed.

Verification axes cited: C (compile), I (empty-host integration), B (behavior/load), T (test coverage), S (author-run security scan). “Not claimed” is preserved exactly where the catalog makes no claim.

The Collective Master Library — Licensed Edition v3.1.0

1,162 components, 2,135 delivered source files, 446,551 delivered source lines (basis: kit catalog rollup). Current authoritative terms: CMPSBL(R) Perpetual Edition License 1.0, US$499 USD paid once, perpetual, per company; no source-disclosure obligation. Offline delivery, no account, no telemetry. This paragraph corrects retired annual/source-release wording still present in the report template; Step 8 records the control-plane drift.

Buy at cmpsbl.com/canon