github Griefed/ServerPackCreator 9.0.0-alpha.8

latest releases: 9.0.0-alpha.9, continuous
pre-release5 days ago

⚠ BREAKING CHANGES

  • api: publish every version meta as a snapshot, not as live state
  • clientside: delete Confidence and aggregateFor
  • grinder: one deploy script, with the mode decided by uid
  • clientside,grinder,app: remove the headless-browser download route

✂️ Refactor

  • clientside: ask the learned refs once in mappingsFor (61e0bc9)
  • clientside: delete the dead deriveStems, keeping what it documented (850f89c)
  • clientside: gather patch neighbours from one set, not two (579c7cf)
  • clientside: move the confidence fold into the companion (33cec03)
  • clientside: one ambiguity fold, and no nullable reason to interpolate (9b58349)
  • clientside: one type for what a boot did, not two (2a194ce)
  • clientside: read the placeholder marker without a deprecated call (1ebfd7d)
  • clientside: route every boot attempt through one BootVerifier.boot (c3fe991)
  • clientside: the audit's three LOW code findings (9ee88ba)
  • clientside: the ladder reads its patterns from the rules file (d2d08c7)
  • grinder: drop the dead decisive() from the fallback renderer (b174662)
  • grinder: escape the Scanned cell like every other one (4e4cd96)
  • grinder: extract the configuration and the sweep out of main (6de769d)
  • grinder: rename CrashLogStore to BootLogStore (6ec7dc0)
  • grinder: stop depending on Confidence (a9ed8e7)

📔 Docs

  • audit and analyse today's commits (cf6cdc3)
  • clientside 438 -> 466 in the root status table (b37d74a)
  • clientside 466 -> 471 in the root status table (f4cf9ab)
  • clientside 475, grinder 509 in the root status table (955319d)
  • close B35 per the backlog's own convention and record the census (f7ffd9d)
  • close B36 — the store was reset, so the requeue was never needed (8b5248a)
  • close both audit logs — every finding resolved or accepted (786b7bf)
  • close the documentation debt both batches left (309a0ff)
  • close the landing obligations for the decisive-evidence gate (d64b649)
  • close the plugin-recursion issue and record how it hid (127c3ec)
  • commit the iteration-41 audit that was sitting in the working tree (e053654)
  • complete the Refactor-state migration whose other half was committed by mistake (7e484cc)
  • correct the grinder suite count for the new endpoint guards (a2580fd)
  • correct the grinder suite count in the log (142f53d)
  • file B35 for the verdict store per-record whole-file rewrite (746c0dd)
  • file B36 — the published HIGH verdicts need re-grinding after deploy (592f1ce)
  • mark the superseded precedence as history, and correct the suite count (659bb6f)
  • plugin-grinder 72 -> 73 in the root status table (f50c867)
  • record B6's merge gate — HIGH 8 -> 4, controls held, no regressions (3af47ea)
  • record both dependency defects and the test-boundary lesson (7c54a0f)
  • record feature B and the two inverted safety properties (f0bbd89)
  • record that a survived boot counts, and that a refusal names the lock (93cedad)
  • record that CI caught the clean-build break and the red went unactioned (f68041c), closes #301 #306
  • record that optional dependencies are flagged, not required (cb72743)
  • record the analysis fixes and the audit sweep that found nothing open (7425f22)
  • record the audit resolutions and the landmines they produced (c6833b3)
  • record the audit's resolution, the boot's owner, and the crash-log store (e78fd65)
  • record the by-file dependency count and the clean-build gap (aef58a4)
  • record the decisive-evidence gate and the census that justified it (8695a52)
  • record the Docker IT, B0 regression and Fabric API acceptance runs (16a0d4c)
  • record the equivalence check against develop's test tree (4107e86)
  • record the equivalence proof, its four signature changes and 16 deltas (22759c3)
  • record the four-verdict result system and where its rules live (8e337ff)
  • record the hostname, Forge-launch and scan-date findings (5cbce8e)
  • record the live verification of per-attempt boot-log capture (b6ec278)
  • record the Logs column sort in the grinder's snapshot (557ad1f)
  • record the measured ServerStarterJar/Forge range (84a6d58)
  • record the plugin module and the new grinder endpoint (1a62eed)
  • record the re-grind queue and its three placement landmines (f210c8c)
  • record the report query layer and its measurements (fbab42c)
  • record the rules' measured recovery and the poisoned cache tuple (1e5b21d)
  • record the shared staging directory behind the 26.2 boots (5c4fcfa)
  • record the source-jar entry and the re-check that stayed local (7a7d9e9)
  • record the tmpfs exec decision and what noexec was costing (4ffe309)
  • record the two-pattern split and why only one is publishable (7706a4c)
  • record what the crash-log census changed in the clientside engine (7ac5a5b)
  • record why a jar's own range now re-selects instead of refusing (b8a6081)
  • record why the browser download route is gone, in every place that claimed it (125d64f)
  • refresh the clientside row after the three field-report fixes (6c8f066)
  • regenerate the license report after the Playwright removal (e42cb53)
  • sync the suite counts after restoring the shutdown guards (9568120)
  • the 2026-09-08 audit and analysis of the backtrack range (997051d)
  • the analysis and audit, in the refactor log (86d3d44)
  • the audit findings, and the gate that keeps the patch fallback safe (c2123f2)
  • the six verdicts, and the three ways a dependency was "unavailable" (a8d1dab)
  • api: document the eight declarations dokka reported undocumented (428c6e7)
  • app: document GuiProps, ConfigEditor, BeanConfiguration and the CLI parsers (c61329a)
  • app: document the modpack/storage/stats services and the entry point (715eaa7)
  • app: document the settings panels, GUI components and task queue (f81c4ba)
  • app: document the web entities, stats and the scroll components (edd1be0)
  • app: finish the dokka backlog — 626 → 0 undocumented (acfed4b)
  • audit: cite commit subjects, and correct the premise the rebase was proposed on (ab13c6f)
  • audit: close iteration 33, and add the convention MED-3 earns (f397a11)
  • audit: iteration 25 — shutdown during a re-grind drain, and a log line that prints a data class (ef88492)
  • audit: iteration 26 — a negative sleep, an unbounded read, and a URL nobody checks (35f6206)
  • audit: iteration 27 — findings and resolutions (997fb21)
  • audit: iteration 28 — header/cell coupling, sibling-marker review (7dcbd10)
  • audit: iteration 29 — the template change (5ef46ce)
  • audit: iteration 30 resolutions and the iteration 31 re-audit (6d0c62b), closes #301 #306
  • audit: iteration 32, and fix the api suite count it found stale (712f633)
  • audit: name the dead commits by subject, and record the repo-wide citation sweep (d83dfd9)
  • audit: record the history rebuild that closed MED-1, LOW-1 and MED-2's instances (0930519)
  • audit: resolutions for iterations 25 and 26 (1d221ef)
  • ci: record the two mirror failures, and why news is not gated on the mirror (01cc1f2)
  • clientside,grinder: document what dokka reported undocumented (9000e99)
  • clientside: close the candidate half of the untagged-loader rule (361db79)
  • clientside: document the backtrack's data classes, and reunite one orphaned KDoc (03032f4)
  • clientside: landmine the silent rung, and correct two counts that had drifted (49ffa77)
  • clientside: name every prevented-grind path, not just the staging ones (ccc839b)
  • clientside: re-attach seven KDoc blocks, and correct the decisive set (d72a949)
  • clientside: record the confidence-keyed refusal split (d8239ca)
  • clientside: record the Connector-placeholder scanner redirect (de7245e)
  • clientside: record the decorated-version defect and the refusal vocabulary (ab27873)
  • clientside: record the dependency-set backtrack (9f2f5a2)
  • clientside: record the NeoForge/Forge 1.20.1 parity band (7ad0a77)
  • clientside: record the nested-jar blind spot in the backtrack (5e84224)
  • clientside: record the untagged-loader landmine and the candidate half (e05f2ef)
  • clientside: record the version-range fixes and the open CurseForge gap (8514e93)
  • grinder: correct the claim that Logs is meaningless to sort (62e41bb)
  • grinder: document the boot-rule status field and drop a stale claim (1007993)
  • grinder: landmine the four defects worth not re-introducing (2ac1d8e)
  • grinder: re-attach six KDoc blocks that documented nothing (f131d2e)
  • grinder: record sortKey and the single confidence rank table (9de940d), closes #4
  • grinder: record the missing-image outage and what it changed (7b45d7f)
  • grinder: repair three KDoc links to the deleted Confidence type (482f54c)
  • plugin-example: document the addons logger companion (57d22b5)

📦 Other

  • api: refresh the shipped manifest snapshots (89639fc)
  • clientside: correct three statements this branch made stale (37158ae)
  • plugin-grinder: ignore the module's ServerPackCreator test home (22d3143)

🦊 CI/CD

  • drop the Playwright dependency and its CI prerequisite (5dc2002)

🧪 Tests

  • close the coverage gaps the analysis found (M-3, M-4, M-5, L-1) (4dcf250)
  • api,clientside: pin that an optional dependency is not a requirement (5029ef9)
  • api,clientside: pin that quilt_base is a mod, not the Quilt platform (24aa11c)
  • api: pin B0's generation regression check, and the gap it found (18fa4ec)
  • api: pin every Minecraft list accessor, not the three written down (8bb194e)
  • api: pin Fabric API as a dependency and every declared version range (5027907)
  • api: pin that a missing malware scanner cannot abort generation (0029414)
  • api: pin that a Quilt pack scan keeps a Fabric jar's dependencies (5788bab)
  • api: pin that a scan reports the Minecraft the jar declares (b54b4df)
  • api: pin that an extension belongs to one plugin (bbfdf42)
  • api: pin that an unreadable Minecraft version takes the bypass (ad4ef05)
  • api: pin that no version meta hands out live state (fdbedd4)
  • api: pin that setupQuilt notices a pack with no Minecraft server jar (4a84a2d)
  • api: pin that version metadata is not handed out as live state (7ae95ab)
  • api: pin which Forge versions bypass the ServerStarterJar (ec19d82)
  • api: reproduce the plugin-loading recursion in the suite (b5f74ee)
  • clientside,grinder: pin per-attempt staging to (platform, slug, loader) (638cbf0)
  • clientside,grinder: pin whose boot disproves, and whose identity is reaped (b70bbf7)
  • clientside: characterize the filename pattern before depending on it (da56caa)
  • clientside: close the coverage gaps the same-day analysis found (89ae3d8)
  • clientside: pin a crash re-check spanning loaders and Minecraft lines (1f4dea4)
  • clientside: pin a loader that never bootstrapped as inconclusive (7f8aa8b)
  • clientside: pin all sixteen ladder rungs, not ten of them (930e2a6)
  • clientside: pin an unreadable @argfile as inconclusive (b74e624)
  • clientside: pin bumping the pack to a version the jar itself accepts (f0a6d5c)
  • clientside: pin comma-separated unions of version ranges (c972efb)
  • clientside: pin operator-editable console rules and their place in the ladder (f12b9db)
  • clientside: pin that a bundled dependency is never fetched or missing (5f60a72)
  • clientside: pin that a component too large to represent is unreadable (9fbfffa)
  • clientside: pin that a confirmation names the rule that decided it (9e39825)
  • clientside: pin that a Connector placeholder is scanned as Fabric (0396459)
  • clientside: pin that a constraint narrows dependency choice but never empties it (2ebc6b0)
  • clientside: pin that a dependency is sought at the version being booted (2f31bd8)
  • clientside: pin that a dependency never crosses a Minecraft version (c065ce9)
  • clientside: pin that a dependency the jar never asks for cannot refuse a boot (fd1a164)
  • clientside: pin that a file carries every project its page links (66a10b3)
  • clientside: pin that a jar staged under two refs counts once (3c110a0)
  • clientside: pin that a loader too old for the mod is re-checked (0e8de06)
  • clientside: pin that a mapped, resolved, unstageable dependency refuses (3d79f0d)
  • clientside: pin that a mod cannot claim the launcher's excuse (ff8dc82)
  • clientside: pin that a Modrinth source jar is not a mod file (bcc8021)
  • clientside: pin that a nested library's version reaches the conflict check (f8326eb)
  • clientside: pin that a pack with no server jar is inconclusive (1a8dea2)
  • clientside: pin that a refusal names mods, not platform ids (5568b0a)
  • clientside: pin that a resolved dependency knows its own name (fbea4b0)
  • clientside: pin that a rule which decided a boot is named on the verdict (4c7bcba)
  • clientside: pin that a self-contradicting dependency set backtracks (be01428)
  • clientside: pin that a staged dependency cannot refuse its own boot (d2a6f0d)
  • clientside: pin that a survived boot counts, and a locked download says so (6d6bdfe)
  • clientside: pin that a wrong-Minecraft dependency is dropped pre-boot (17dfa82)
  • clientside: pin that an all-untagged project is still ground (acc44f2)
  • clientside: pin that an unmet dependency names why it is unmet (0ed2674)
  • clientside: pin that an unobtainable dependency is not preferred (a4e2c82)
  • clientside: pin that an unreadable staged version is not a conflict (9d67140)
  • clientside: pin that an unresolved required id asks the linked projects (7a66dc5)
  • clientside: pin that an untagged file is unknown, not incompatible (6410c9f)
  • clientside: pin that attribution annotates and never moves a verdict (7ac7da0)
  • clientside: pin that client-only proof is about the mod, not the build (901b03f)
  • clientside: pin that every ladder rung finds its bundled pattern (312459e)
  • clientside: pin that extracting the ladder into rules changes no verdict (1312bc0)
  • clientside: pin that Fabric API's modules resolve to Fabric API (b011ac5)
  • clientside: pin that folding no unmet dependencies answers, not throws (17d8332)
  • clientside: pin that metadata sideness is decided by rules too (dd549fb)
  • clientside: pin that NeoForge runs Forge mods on Minecraft 1.20.1 (821b2d3)
  • clientside: pin that one mod id can be served by two projects (ac5bdcd)
  • clientside: pin that QSL's module ids resolve to QSL (20f12f7)
  • clientside: pin that the learned map can outlive the process (056246f)
  • clientside: pin that there is one download route and no browser fallback (6ff2b4b)
  • clientside: pin that YACL's versioned mod id resolves to its project (5142840)
  • clientside: pin the ambiguity rule across a pack, not just within a jar (838f35a)
  • clientside: pin the client-library evidence that shipped as an example (a2dfcb4)
  • clientside: pin the environment excuses the crash logs demanded (5c3df0a)
  • clientside: pin the fold that replaces aggregateFor (69b23fe)
  • clientside: pin the four-state verdict, and that a prevented grind is an Error (c6790cd)
  • clientside: pin the id-to-project mapping learned from staged jars (3e104eb)
  • clientside: pin the manifest-id to platform-project mapping (50f3a01)
  • clientside: pin the patch-version dependency fallback (fd732d3)
  • clientside: pin the per-attempt boot-artifact sink (b291160)
  • clientside: pin the refusal path the first label fix missed (63521e8)
  • clientside: pin the refusal split on mapping confidence (08a40a6)
  • clientside: pin the two platform shapes that produced live false positives (576912c)
  • clientside: pin the two prevented-grind paths the redesign missed (c453b8d)
  • clientside: pin the version a jar's own range would have us pick (d2fb045)
  • clientside: pin version-constraint matching across both loader grammars (211a639)
  • clientside: pin what a finished boot leaves behind (4002b42)
  • clientside: pin which rung decided a boot, against five real logs (cc3cbb1)
  • clientside: pin which unmet dependencies may refuse a boot (89d388e)
  • clientside: pin who a prevented grind is blamed on (ed492bf)
  • clientside: reproduce JEI's refusal — a jar range that excludes its own version (f980c13)
  • clientside: separate the two dependency-preference arms that never were (dbd6864)
  • grinder: execute the dashboard's script under node (e91c4d6)
  • grinder: gate the store benchmark and answer B35 with numbers (375f1bb)
  • grinder: hold the loader-line wiring the step-down pin never reached (def87f1)
  • grinder: pin --requeue-since, the selector an outage needs (0836c71)
  • grinder: pin a durable home for crash consoles, and the endpoint buttons (bde4f73)
  • grinder: pin a non-negative slice, a bounded crash-log read, and a rejected link (7f5a8c5)
  • grinder: pin a self-contained live dashboard for /status (179b292)
  • grinder: pin an immediate re-grind queue that ignores freshness (552b49f)
  • grinder: pin coalesced verdict writes (B35) (c9275c5)
  • grinder: pin each column against its own sentinel before restructuring (4265c07)
  • grinder: pin every field of the LoaderVerdict-to-GrindVerdict mapping (991fea0)
  • grinder: pin per-attempt keeping, pruning, the budget and adoption (6702820)
  • grinder: pin sorting by the Logs column (056fc55)
  • grinder: pin template provenance on the path production takes (0531ce6)
  • grinder: pin that a blamed dependency is queued, and record the live run (47ccb99)
  • grinder: pin that a boot can execute from its own tmpfs (5d57bfa)
  • grinder: pin that a boot container can resolve its own hostname (775a41f)
  • grinder: pin that a crashed boot's console is copied out of staging (c8bbf85)
  • grinder: pin that a failed install is not reported as a skipped one (2ee4925)
  • grinder: pin that a failed queue write leaves no scratch behind (c5e1c56)
  • grinder: pin that a missing runtime image stops the daemon (ac3f151)
  • grinder: pin that a restored id with no usable ref leaves no entry (d7596cf)
  • grinder: pin that a thrown loader install names the exception (ba09ca0)
  • grinder: pin that an unavailable loader install says why (5c420cf)
  • grinder: pin that an unreadable verdict store is not overwritten (b1b9c4f)
  • grinder: pin that an unusable knob value falls back like an unparseable one (f433539)
  • grinder: pin that confidence sorts by severity, not alphabetically (13de74b)
  • grinder: pin that every table header has a cell beneath it (bfc1278)
  • grinder: pin that Fabric and Quilt can step down a loader build (436de8f)
  • grinder: pin that Forge boots from its argfile, not the starter jar (8c306f7)
  • grinder: pin that only a confirmation is published (6e8cd71)
  • grinder: pin that the container-stop drain gives up (cdc45ba)
  • grinder: pin that the pass counter is not shadowed (96701a3)
  • grinder: pin that the report and CSV speak the four verdicts (34e405b)
  • grinder: pin the declared sideness and jar scan on a recorded verdict (c0a81f0)
  • grinder: pin the file that carries the learned map across restarts (da10248)
  • grinder: pin the Filename column beside the name pattern (eaf52b5)
  • grinder: pin the JSON verdict feed the GUI plugin reads (1b671e6)
  • grinder: pin the per-pass counters as per-pass (c097498)
  • grinder: pin the report server's favicon (3c534e0)
  • grinder: pin the scan date on the overview and in the CSV (4dd5c24)
  • grinder: pin the shutdown gap, the live pass size, and a sliced wait (d20fc2c)
  • grinder: pin verdict filtering, sorting and paging as a pure unit (ef5f159)
  • grinder: prove the Logs sort through the real handler (aca684c)
  • grinder: restore the five shutdown guards a refactor deleted (audit H1) (3ef3930)
  • plugin-grinder: pin the audit's four findings and the missing edge cases (70301ac)
  • plugin-grinder: pin the clientside-entry injection (732fdc7)
  • plugin-grinder: pin the Declared and JAR sideness columns (03cf347)
  • plugin-grinder: pin the URL rule, the client and the selection store (98ecefc)
  • plugin-grinder: pin the verdict table's selection logic (758ea95)

🚀 Features

  • ci: announce releases on Discord from Forgejo (4f42a76)
  • clientside,grinder,app: remove the headless-browser download route (04e746a)
  • clientside,grinder: a verified LWJGL rule, and the harness defect it found (3fd6eb8)
  • clientside: ask the linked projects when a required id resolves to nothing (b99a850)
  • clientside: collect a boot's console, server logs and crash reports (ebc72b3)
  • clientside: fold one loader's evidence into the four-state verdict (fa3400a)
  • clientside: hand every boot attempt's artifacts to a sink (a6f9292)
  • clientside: learn the id-to-project bridge from the jars staging downloads (e504d1c)
  • clientside: let an operator's console rules decide a boot (0d0b43d)
  • clientside: LOCKED and UNVERIFIABLE, so ERROR means what it says (8093d4b)
  • clientside: map a manifest mod id to its platform project ref (fb4d5bd)
  • clientside: match a dependency file against its declared constraint (1a3d715)
  • clientside: match a mod file's version against its declared constraint (bdd9cd9)
  • clientside: metadata sideness is decided by rules, not by a hardcoded fold (5ed6357)
  • clientside: name the rule that decided a boot, on the outcome itself (9eaf2a3)
  • clientside: record the dependency a crash names, without moving the verdict (ffe3843)
  • clientside: ship the built-in ladder as an editable rules file (53b2e16)
  • clientside: split refusable dependencies from merely-unmapped ones (3d2c3c9)
  • clientside: stage the dependencies a jar manifest declares alone (18f59b4)
  • clientside: the four-state verdict and the pure policy that decides it (2c611da)
  • clientside: delete Confidence and aggregateFor (8c18001)
  • grinder: --bootstrap prepares a host that never ran the grinder (02b3fac)
  • grinder: --clear installs onto a clean slate (d6cf580)
  • grinder: --requeue-since, for a window the daemon was broken in (4976ff7)
  • grinder: a live, framework-free dashboard for /status (4e1e544)
  • grinder: add an unattended update script for the deployed service (a087cdf)
  • grinder: an immediate re-grind queue that jumps the crawl and the TTL (2376d75)
  • grinder: audit a live grinder's published verdicts against their evidence (90bdb84)
  • grinder: give the report a favicon (0c80e2a)
  • grinder: grant the build account sudo for the run instead of demanding it (3658eee)
  • grinder: install the headless browser prerequisite instead of warning about it (799fc95)
  • grinder: keep crashed boots' consoles and reach every endpoint from the report (f94a4c7)
  • grinder: keep every non-survived attempt's logs and link them per row (f249e18)
  • grinder: make the verdict-less rule fallback an operator choice (41be7a2)
  • grinder: persist the learned mod-id map to SPC_GRINDER_HOME (35c77cb)
  • grinder: publish only confirmations, and record what the mod claimed (a7cda82)
  • grinder: record the sideness and jar scan behind every verdict (6b86c1a)
  • grinder: render the report from a server-side query (d41c37e)
  • grinder: requeue a dependency blamed for a crash, and show the staged pack (1714da9)
  • grinder: select verdicts server-side by search, filter, sort and page (b9b06be)
  • grinder: serve verdicts as JSON at /verdicts.json (8338460)
  • grinder: show the sampled artifact's pattern beside the published one (15c25dd)
  • grinder: show when each mod was scanned (3b1392f)
  • grinder: sort the report by the Logs column (8fc40bf)
  • grinder: the report and CSV speak the four verdicts (d0adf2d)
  • grinder: wire the console-rule file, its errors and the rule column (a05a259)
  • grinder: one deploy script, with the mode decided by uid (f8f41db)
  • plugin-grinder: fetch verdicts and persist the selection (c17cf9a)
  • plugin-grinder: inject the selection into clientMods before generation (0a0c6e6)
  • plugin-grinder: scaffold the module and its plugin descriptor (0885d32)
  • plugin-grinder: show Declared and JAR sideness beside the verdict (9c3ef12)
  • plugin-grinder: the four-pane GUI tab (a68204a)

🛠 Fixes

  • api,clientside: an optional dependency is not a requirement (88a6a19)
  • api,clientside: never boot a jar on a runtime it does not declare (2a073a0)
  • api,clientside: quilt_base is a QSL module, so stop excusing it as the platform (98f183f)
  • api,clientside: stop leaking exit hooks, keep errors visible, serialise refreshes (e716460)
  • api: a malware scanner that cannot run must not abort generation (9808923)
  • api: bypass the ServerStarterJar where it cannot launch Forge (c9106d0)
  • api: fetch the Minecraft server jar for Quilt on its own terms (7e327da)
  • api: keep a Fabric jar's declaration when scanning a Quilt pack (804efd8)
  • api: load plugins as a step, after the API they reach into exists (1d7b05d)
  • api: never compare an unreadable Minecraft version component (4af6631)
  • api: publish version metadata as snapshots, not as live mutable state (7e2d49a)
  • api: put the refresh coroutine on the lock it was supposed to take (a27b632)
  • api: rescue a dependency by the ids a mod actually answers to (cd18edf)
  • api: scope an extension lookup to the plugin it was asked about (431f3f8)
  • api: stop excluding Fabric API and QFAPI, and record dependency version ranges (ea7933c)
  • api: publish every version meta as a snapshot, not as live state (c3d2238)
  • ci: probe the mirror before the release POST, and make mirror re-runnable (deafdd5)
  • clientside,grinder: a slug is not an identity — stage per platform (82c0c9c)
  • clientside: a cross-loader survivor is not the verdict's own boot (43d5948)
  • clientside: a dependency in the pack cannot refuse its own boot (f2d8b7d)
  • clientside: a dependency the candidate ships is never fetched or missing (5154070)
  • clientside: a digit-less wildcard constraint must accept, not refuse (edd9627)
  • clientside: a grind that never ran is an Error, on every path (5a25860)
  • clientside: a loader that never bootstrapped is not a mod crash (f3ca8d2)
  • clientside: a Modrinth source jar is not a mod file (14c8539)
  • clientside: a nested library counts as staged when judging the pack (2939982)
  • clientside: a pack with no Minecraft server jar is a launch failure (f3e5575)
  • clientside: a staging refusal names why each dependency is unmet (06c3ac3)
  • clientside: a version component we cannot represent is unreadable (60a0e77)
  • clientside: a version we cannot read is not evidence of a conflict (3156d60)
  • clientside: an unreadable @argfile is a broken install, not a mod crash (c54637d)
  • clientside: anchor the launcher's argfile excuse to line start (b88f502)
  • clientside: backtrack a dependency whose demands the pack cannot meet (20f5895)
  • clientside: bump the pack to a Minecraft version the jar itself accepts (79617c1)
  • clientside: carry every linked project, not only the required ones (1a798cf)
  • clientside: client-only proof is about the mod, so it crosses builds and loaders (a808a86)
  • clientside: count a staged dependency once, by file rather than by ref (0761aef)
  • clientside: count a survived boot, and say why a locked file would not download (5afd1ef)
  • clientside: credit the deciding rule, not one that merely matched alongside (b5e08ec)
  • clientside: do not remember an id a restore had no ref for (dd0482b)
  • clientside: drop a dependency whose descriptor excludes the pack's Minecraft (ba2947a)
  • clientside: fail a rule's missing or unreadable verdict safe to INCONCLUSIVE (b76a6c9)
  • clientside: give a resolved dependency its real slug, on both platforms (742e9fa)
  • clientside: grind a project whose files carry no loader tag (fb9d845)
  • clientside: implement ModPlatform.name in the two test fixtures (b3d7e65)
  • clientside: key the refusal split on mapping confidence, not distance (625145c)
  • clientside: let NeoForge boot a Forge jar on Minecraft 1.20.1 (2329996)
  • clientside: look for a dependency at the Minecraft version being booted (67b848f)
  • clientside: LWJGL and FML's invalid-dist are decisive, and now shipped (bb82781)
  • clientside: make a ladder rung that cannot find its pattern say so (0cd909f)
  • clientside: make preventionCauseFor total (1b7f883)
  • clientside: name the mod, not its platform id, when a dependency is missing (ad3bbbb)
  • clientside: name the third refusal branch, and call a locked dependency locked (b3f50b6)
  • clientside: never stage a dependency for another Minecraft version (6e3063a)
  • clientside: prefer a dependency file that can actually be downloaded (307f3e5)
  • clientside: publish only a crash that is decisive evidence of sideness (556efc0)
  • clientside: re-check a crash across loaders and Minecraft lines (39d3403)
  • clientside: re-check the newest loader build for any boot the build could explain (542f1fb)
  • clientside: re-select a Minecraft version the jar accepts, don't refuse (793a5a7)
  • clientside: read a comma-separated union of version ranges (3c19f8a)
  • clientside: refuse when a mapped dependency has no usable file (b55e972)
  • clientside: remember every project that proves a mod id, and try each (c7cbad2)
  • clientside: resolve Fabric API's module ids to Fabric API (7062157)
  • clientside: resolve QSL's module ids to QSL (cbf1f08)
  • clientside: resolve YACL's versioned mod id to its project (ac9612f)
  • clientside: scan a Connector placeholder as the Fabric mod it wraps (bcb9cfc)
  • clientside: stage a dependency from a neighbouring patch release (3bd168f)
  • clientside: stop scoring harness failures as the mod's crash (467a4da)
  • clientside: the console decides, the metadata only declares (8d5e693)
  • clientside: the jar decides which platform dependencies it actually needs (e018250)
  • clientside: treat a file with no loader tag as unknown, not incompatible (98e2395)
  • grinder: a slice that cannot go negative, a tail that is not read whole, a link that is refused (17df60c)
  • grinder: actually consult the template-provenance check before serving a cached install (1ee6873)
  • grinder: boot Forge from its argfile instead of the ServerStarterJar (02cc17e)
  • grinder: bound the container-stop drain so shutdown cannot hang (eecbbd9)
  • grinder: close the remaining audit-32 findings, and record what was not closed (5c51d78)
  • grinder: close the shutdown gap the drain opened, and stop making a queued re-grind wait (447acaf)
  • grinder: close the verdict store on shutdown, and stop shadowing it (acaf8d7)
  • grinder: coalesce verdict-store writes (B35) (136d571)
  • grinder: delete the queue's scratch file when a write fails (b3f538f)
  • grinder: fall back when a knob is unusable, not only when it is unparseable (0e6eb1b)
  • grinder: grade the audit per verdict, not per kept console (18cd412)
  • grinder: leave the Forge launch path to the templates (a392857)
  • grinder: let Fabric and Quilt step down a loader build (3a17016)
  • grinder: log the exception a loader install threw, not only its message (8743571)
  • grinder: make a boot container's own hostname resolvable (583d35f)
  • grinder: mount a boot's tmpfs executable (00ac21d)
  • grinder: prove chromium launches for the service account, not just that it installed (4ec3ba3)
  • grinder: read the unit that systemd actually runs, not the checkout's pristine copy (c2b6596)
  • grinder: reap the identity the staging was named from (0e717fe)
  • grinder: refuse to deploy from a copy inside the checkout it wipes (e821d76)
  • grinder: refuse to grind without the runtime image (1172eef)
  • grinder: reset the per-pass counters when a pass begins (ae2c7de)
  • grinder: say why a loader install is unavailable, not that none is cached (7bb2a32)
  • grinder: sort confidence by severity, from a single rank table (8eff064)
  • grinder: tell an attempted install apart from a suppressed one (b96ee46)
  • grinder: the audit IT reads the CSV column that exists (84119c1)
  • grinder: the dashboard links only absolute http(s) URLs (4fe0745)
  • grinder: the pass-completion log prints the pass number again (59f7d71)
  • grinder: tolerate unknown fields and preserve an unreadable verdict store (3f60ad3)
  • plugin-grinder: close the audit's findings (ed8198d)
  • plugin-grinder: give JAR sideness a width its commonest value fits in (b0bc490)
  • plugin-grinder: widen Declared so CONTRADICTORY stops clipping (adb2174)

VirusTotal

Don't miss a new ServerPackCreator release

NewReleases is sending notifications on new releases.