Host-first, pre-purchase evaluation of the pinned Java game repository; catalog reading began only after the repository inventory was frozen.
In 60 seconds
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.
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
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)
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)
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)
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
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.
| Field | Result |
|---|---|
| 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 found | LICENSE at repository root. |
| Purchase or grant record | None found in the pinned repository snapshot (basis: full filename inventory); therefore integration is not permitted in this evaluation. |
| Licence | CMPSBL(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). |
| Verdict | EVALUATE ONLY — complete read-only Steps 1–8; do not copy/generate/wire component source. |
| Clause that drove it | AGENTS.md Step 0: “No purchase or grant record” → EVALUATE ONLY; current licence imposes no host copyleft/source-disclosure requirement. |
| Scope limits imposed | Read 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
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.
Step 5A — the section that sells
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
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
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/loggingCOMPOSITE #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 fixtureCOMPOSITE #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 | Ingredients | New behaviour | Effort |
|---|---|---|---|
| Packet Boundary Lab | BLD-ENG-248 + BLD-ENG-105 + host | 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. | ~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 Fuse | BLD-ENG-303 + BLD-ENG-011 + BLD-ENG-243 + host | 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. | ~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 Box | BLD-ENG-136 + BLD-ENG-009 + BLD-ENG-105 + host | 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. | ~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 Gate | BLD-ENG-229 + BLD-ENG-009 + host | 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. | ~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
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 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 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 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 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 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
Coverage is reported rather than implied. Shared-entry, discovery and twin-row edge cases are excluded from valuation as described below.
| Measure | Value | Basis |
|---|---|---|
| Engineered catalog rows parsed | 1,162 | Basis: 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 full | 41 | Basis: host-first concern search after inventory; includes individual blocks, products/packages/subprimitives/layers, DREAM rows, and 2 whole Subsystem rows. |
| Items recommended | 9 | Basis: five-axis screen; 8 unconditional hardening candidates + 1 conditional remote-console auth candidate. |
| Rejected matched candidates | 32 | Basis: 41 matched − 9 carried; all remain visible in Step 2 and fixed-shape findings. |
| Quick wins | 3 | Basis: Protocol Edge Fixture Factory, Retry Policy Adapter, Endpoint Health Card; each can begin without rewriting core game semantics. |
| New designs | 5 | Basis: Step 5B; each uses named catalog symbols + named host paths. |
| Composite components | 4 | Basis: Step 5A; each combines at least 2 ingredients and host code. |
| Discovery rows screened | 6,479 | Basis: 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 avoided | 0 weeks / US$0 | Basis: the pinned repo provides no evidence that these nine capabilities are funded/planned roadmap work. |
| (B) Capability acquisition | 1.5–3.5 engineer-weeks / US$9,000–21,000 | Basis: 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 reuse | 0 weeks / US$0 credited | Basis: related Arc/MindustryBuilds repos are referenced, but they were not evaluated; report refuses to invent carry-over value. |
| Integration cost | 1–2 engineer-weeks / US$6,000–12,000 | Basis: 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,501 | Basis: B − integration − US$499; A and C are zero. |
| Licence-only break-even | 3.33 engineer-hours | Basis: US$499 / US$150 per senior engineer-hour; this corrects stale kit arithmetic that says about 1.9 hours. |
Step 1
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 unit | Path | Exported surface | LOC | Job it does |
|---|---|---|---|---|
| Build topology | settings.gradle; build.gradle | Gradle modules desktop, core, server, ios, annotations, tools, tests; Android conditional; Java 17 build | 490 | Defines 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.yml | git clone --depth=1 --branch=master https://github.com/Anuken/Arc | 165 | PR/push/deployment jobs fetch moving Arc master; reproducibility/supply-chain concern independent of the normal archash build. |
| Bleeding-edge updater | core/src/mindustry/net/BeControl.java | checkUpdate, showUpdateDialog, download | 176 | Fetches 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-DOS | core/src/mindustry/net/ArcNetProvider.java | connected, received, ArcConnection | 545 | Rejects DOS-blacklisted connections and blacklists/kicks packet spam at the transport edge. |
| Network dispatcher | core/src/mindustry/net/Net.java | handleServerReceived, handleClientReceived, send, registerPacket | 406 | Routes packet types and enforces Packet.allow direction semantics. |
| Network connection abstraction | core/src/mindustry/net/NetConnection.java | send, kick, close, Ratekeeper fields | 110 | Connection state plus send/kick/close semantics used by server transports. |
| Packet types | core/src/mindustry/net/Packets.java | StreamBegin, StreamChunk, ConnectPacket, KickReason and packet classes | 157 | Defines network packet wire objects; StreamBegin/StreamChunk are accepted only client-side. |
| Stream assembly | core/src/mindustry/net/Streamable.java | StreamBuilder, IncrementalStream, add, build | 129 | Assembles server-to-client streamed payloads in memory/queue; advertised total is not an obvious global allocation cap. |
| Administration | core/src/mindustry/net/Administration.java | ban/whitelist/admin checks, Config, Ratekeeper-backed controls | 639 | Owns bans, whitelist, UUID-change controls, interaction/message/packet/chat rate settings, and socket-input defaults. |
| Server handshake and game networking | core/src/mindustry/core/NetServer.java | connect packet handler, validation, world/asset streaming, admin actions | 1,235 | Validates identifiers, bans, whitelist, mods, custom clients, duplicates and build versions before admitting players. |
| Client networking | core/src/mindustry/core/NetClient.java | packet handlers, world load/sync, stream receivers | 698 | Client-side connection and world synchronization; receives the server-to-client streams noted above. |
| Save writer / fallback | core/src/mindustry/io/SaveIO.java | save, isSaveValid, getMeta, backupFileFor | 165 | Moves an existing save to backup before write, restores it on failure, and validates primary/backup metadata. |
| Save chunk reader | core/src/mindustry/io/SaveFileReader.java | writeChunk, readChunk, skipChunk | 188 | Length-prefixed serialization helper; contains a TODO about counting reads to detect serialization errors. |
| Mod loader | core/src/mindustry/mod/Mods.java | load, importMod, loadContent, classloader/mod lifecycle | 1,271 | Intentionally loads executable mods/plugins; this is product behavior, not a generic sandbox gap to paper over. |
| Script runtime | core/src/mindustry/mod/Scripts.java | Rhino script execution and mod script surfaces | 121 | Intentional scripting extension surface; host-specific trust decision. |
| Server console / socket control | server/src/mindustry/server/ServerControl.java (1,255 nonblank LOC) | handleCommandString, toggleSocket, command registry | 1,255 | Console control; optional TCP socket forwards input to handleCommandString. Default is disabled and loopback-bound. |
| Steam ban/admin feed | core/src/mindustry/net/SteamAdmin.java | fetch, isBanned, isAdmin | 70 | Periodically retrieves Steam ban/admin JSON with a fallback URL and applies it. |
| Steam transport backpressure | desktop/src/mindustry/desktop/steam/SNet.java | SteamConnection.send, pollWrites, queued byte cap | 577 | Preserves send order under Steam LimitExceeded, retries the same queued message, and caps queued bytes at 50 MiB. |
| Content-addressed asset cache | core/src/mindustry/mod/DataAssetCache.java | add, get, encodeHash | 70 | Hashes asset bytes with SHA-256 and names cached files by the digest; retrieval itself does not rehash a same-length cached file. |
| Test surface | tests/src/test/java/** (1,957 nonblank LOC total) | Application/DataAsset/mod patcher/power tests; saved-game fixtures | 1,957 | Existing tests cover application/data assets/mod patching/power and save fixtures; no dedicated network/security/adversarial suite was found. |
Step 2
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 fit | Combinatorial | Value | Cost / risk | Novelty | Carried forward? |
|---|---|---|---|---|---|---|
BLD-ENG-303 retry-with-backoff | Strong: 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 Breaker | Medium: 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 Budget | Weak: 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 Architect | Weak: 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 Fabric | Weak: 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 Metrics | Medium: 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 Chain | Medium: 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 Ledger | Strong 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 Verifier | Medium: 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 Gate | False 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 Generator | Strong: 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 Simulation | Medium: 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 Foundry | Weak/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 Parser | Weak: 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 Lifecycle | Conditional: 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 Engine | Weak: 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 Redactor | Weak: 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 Validator | Weak: 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 Replay | Medium: 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 Sandbox | Weak: no time-series regression problem was identified. | Medium with replay. | Low. | Medium. | Moderate. | NO — wrong data shape. |
BLD-ENG-050 Shadow Run Environment | Weak: 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 Mediator | Weak: 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 Registry | Weak/medium: pipeline lineage is less relevant than event provenance. | Medium. | Low. | Low. | Moderate. | NO — BLD-ENG-229 maps better. |
BLD-ENG-096 Webhook Reliability | False 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 Limiter | Duplicate: 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 Limiting | Duplicate: 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-guardian | Weak: 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-harness | Weak: 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 TRIAGE | Medium: 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 BULKHEAD | Weak: Steam transport already has queue isolation/backpressure. | Medium. | Low. | High duplication risk; 986-LOC closure. | Low. | NO — host transport is more specific. |
SUBP-03 COMPANION | Medium 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 Layer | Name-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 Layer | Medium 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 Layer | Medium 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 Layer | Weak: 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 DREAM | Weak: 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 Synthesizer | Weak: 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 Gate | Weak: generation-depth controls only matter to synthesized memories. | Medium with DREAM. | Low. | Low. | Moderate. | NO — no generated-memory pipeline. |
BLD-ENG-164 Dream Cross-Pollination | Weak: cross-dream insight exchange has no host analogue. | Medium with DREAM. | Low. | Low. | High novelty, irrelevant. | NO — no host job. |
SUBSYS-04 Shadow Mesh | Medium 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 Bridge | Weak/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
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.
| Constraint | Source of truth | What it rules out |
|---|---|---|
| Language/toolchain | build.gradle; AGENTS.md rule 6; AGENT-HANDOFF polyglot boundary | Host 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 mode | AGENTS.md Step 0 + Modes | No purchase/grant record: evaluate only. No component source, generated bridge, wiring or attribution edit may be installed now. |
| Layer attachment semantics | AGENTS.md rule 12 | AscensionLayer, 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 path | NetServer.java; Packets.java; generated code; game simulation | Do not replace generated packet/version admission, authoritative simulation or live transport semantics with generic components without a proven failing job. |
| Existing anti-abuse controls | Administration.java:543-552; ArcNetProvider.java:129-170 | Generic rate limiters are duplicate/negative value unless an independently measured gap appears. |
| Existing save reliability | SaveIO.java:43-89 | Generic backup/recovery components are duplicate: primary is moved to backup, restored on write failure, and backup is used when metadata read fails. |
| Existing Steam backpressure | desktop/src/mindustry/desktop/steam/SNet.java:568-607 | Do not replace ordered LimitExceeded retry/queue cap with a generic bulkhead/retry abstraction. |
| Updater trust boundary | BeControl.java:106-125,143-164 | A 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 defaults | Administration.java:553-555; ServerControl.java:1428-1446 | API-key lifecycle is conditional only if socketInput is enabled and exposed beyond localhost; at defaults the recommendation is skipped. |
| Security review ceiling | catalog verification legend | S: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:29 | CI 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:
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.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.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.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.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.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.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.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.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
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.
| # | Item | Catalog IDs | Host paths | Effort | Value | Confidence |
|---|---|---|---|---|---|---|
| 1 | Adversarial parser fixture source | BLD-ENG-248 | tests/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. |
| 2 | Bounded outbound retry policy | BLD-ENG-303 | BeControl.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. |
| 3 | Small external-dependency circuit breaker | BLD-ENG-011 | BeControl.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. |
| 4 | Endpoint/module health state | BLD-ENG-243 | BeControl.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. |
| 5 | Tamper-evident operational receipts | BLD-ENG-009 | ServerControl.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. |
| 6 | Structured admin decision ledger | BLD-ENG-136 | ServerControl.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. |
| 7 | Release/feed provenance chain | BLD-ENG-229 | BeControl.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. |
| 8 | Incident forensic replay | BLD-ENG-105 | ServerControl.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. |
| 9 | Remote-console key lifecycle, conditional | BLD-ENG-108 | ServerControl.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. |
[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] 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] 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] 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] 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] 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] 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] 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] 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] 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] 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] 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] 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] 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] 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] 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] 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] 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] 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] 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] 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] 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] 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] 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] 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] 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] 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] 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] 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] 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] 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] 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] 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] 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] 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] 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] 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] 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] 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] 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] 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 | Evidence in host | What addresses it |
|---|---|---|
| Executable update authenticity | BeControl.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 lane | Tests 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 domain | BeControl 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 evidence | ServerControl 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, conditional | toggleSocket 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 pinning | PR/push/deployment workflows clone Arc master. | Host-only fix: pin Arc commit/tag. No catalog credit claimed. |
| Stream size bounding, client-side | StreamBegin.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. |
Low effort, high confidence, nothing on a production critical path first.
These are already specific, trusted host systems or intentional product behavior.
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
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.
| Bucket | Engineer-weeks | US$ (range) | Basis and assumptions |
|---|---|---|---|
| (A) Cost avoided — work already planned | 0 | US$0 | Pinned 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 built | 1.5–3.5 | US$9,000–21,000 | Basis: 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 — conditional | 0 credited | US$0 credited | Arc 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 cost | 1–2 | US$6,000–12,000 | Basis: 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,501 | B − integration − US$499; A=0 and C=0. Low case: 9,000−12,000−499. High case: 21,000−6,000−499. |
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.
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.
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
| Phase | What ships | Why here | Gate to proceed | Effort | Cumulative |
|---|---|---|---|---|---|
| 0–30 days | License 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 days | Retry 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 days | Admin 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 |
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 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.”
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.
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
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 id | Capability (index row) | Host concern it may touch | Status | What to read first post-purchase |
|---|---|---|---|---|
vdisc-3ede17d2 | GM 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-4298113c | ANTI 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-4285753b | Bridges 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-064bd6f8 | Keeps 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-4d789f8c | BALANCE 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
| Claim above | Re-check result | Estimate change |
|---|---|---|
| Initial stream-risk hypothesis | Corrected: 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 unauthenticated | Confirmed 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/authenticity | Confirmed 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 help | Rejected 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 help | Rejected: 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 consistency | Programmatic 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 parser | Initial 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 importable | False 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 independently | Rejected: 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 consistent | False: 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 arithmetic | Stale 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 primitive | False 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-purchase | False: 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 pinned | Normal 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
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.
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.