✂️ Refactor
- clientside: a seam for what a Forge-family loader provides (599a81d)
- clientside: drop a fixture no guard reads (3ba3404)
- clientside: let the registry offer more than one ref per mod id (89730de)
- clientside: name the verdict after the target, not the loader (1d21e26)
- clientside: route the dependency comparison through VersionOfFile (bcce3c6)
📔 Docs
- audit and analysis of the UNVERIFIABLE pass (iteration 1) (1983d94)
- audit and analysis, iteration 2 (3d29c5b)
- audit and analysis, iteration 3 (b818eda)
- close B36 — the Connector boot is dropped, not deferred (d3131bc)
- document the last 9 declarations Dokka reported silent (dc763e9)
- iteration 1's resolutions, and why four findings were recorded rather than rewritten (2cb1259)
- iteration 2's resolutions, and M-4 corrected in place (7cc2905)
- iteration 3's resolutions, and what three passes were each good for (e6b6ed0)
- make the renamed field findable, and scope the channel rule (4d605ad)
- measured counts, and three lessons from the loader-choice pass (a8bb9f7)
- re-measure clientside after the end-to-end guards (13cc457)
- the branch's measured equivalence against develop (99c0896)
- the false positive in the published list, and the audit that missed it (8c3f6a4)
- the field report that found a class, not a case (32c9b58)
- the grind axis, and the per-loader claims it made false (08116fa)
- the three landmines the audit iterations produced (e8c7915)
- the two facts a real jar had to settle, and what they show (9f660ad)
- the UNVERIFIABLE pass, its landmines and its two deferrals (f823999)
- the whole branch proved equivalent to develop for every pre-existing guard (5a38e8d)
- what the public grinder's 40 dependency failures turned out to be (aa7de38)
- clientside: the two ways a loader choice is now re-opened after staging (92a9f51)
- clientside: why LOADER_PRIORITY starts at NeoForge, measured (071f023)
- plugin-grinder: document the 19 declarations Dokka reported silent (80d3ffc)
📦 Other
- Run claude doctor (fbe8136)
🧪 Tests
- pin the six rules the analysis found asserted nowhere (8c9415d)
- api: pin that an unparseable Minecraft version cannot crash NeoForge dispatch (0c10011)
- clientside: both new refusals reach re-selection, through real staging (53be818)
- clientside: name the sampled artifact's guards after what they pin, and pin the producer (3e1e135)
- clientside: pin a client-only dependency as decisive evidence (RED) (ad0accd)
- clientside: pin botanypots as a mod id no guess can reach (RED) (5b904a7)
- clientside: pin re-selecting the loader from the jar (red) (c51d67e)
- clientside: pin that a clean boot outranks an inherited client-only proof (52d46b9)
- clientside: pin that a Connector placeholder is not a Forge mod (3a671ff)
- clientside: pin that a CurseForge dependency is found across the version line (3853b77)
- clientside: pin that a Forge-family loader provides its own id (RED) (f898e49)
- clientside: pin that a forked project serves its original's mod id (red) (7c8207a)
- clientside: pin that a release beats a newer-Minecraft beta (4eadf4e)
- clientside: pin that a verdict names the file staging selected (e9f6910)
- clientside: pin that Quilt's
unlessclause satisfies a requirement (c1ac29d) - clientside: pin the Connector marker in NeoForge's renamed descriptor (de4ffee)
- clientside: pin the line prefix, and a dot that must not separate (RED) (f28e997)
- clientside: pin the loader gate to the descriptor eras (851098c)
- clientside: pin the plain build over its own variant (RED) (9e2a199)
- clientside: pin the three defects the audit found (red) (99fefab)
- clientside: pin the two ways a declared range fails to narrow (RED) (c5b3f0d)
- clientside: pin the two ways a dependency ref goes missing or is invented (red) (9643d2d)
- clientside: pin three CurseForge ids no slug guess can reach (RED) (739febe)
- grinder: pin that a verdict's identity is its Minecraft line (6066438)
- grinder: pin that only a followable scheme becomes an href (red) (52c09e7)
- grinder: pin that the Filename column names the sampled artifact (cbddb26)
🚀 Features
- clientside,grinder: grind one target per Minecraft version-line (d39af6e)
- clientside: boot a caller-chosen target, and carry its Minecraft version (f81ea45)
- clientside: MinecraftLinePolicy, which lines of a project get ground (4aee754)
- clientside: pickGrindTargets, one loader per Minecraft line (21310b7)
- grinder: SPC_GRINDER_MINECRAFT_LINES_NEWEST and _LINE_ANCHORS (e0ac9fb)
- grinder: the report shows and filters the Minecraft line (602f088)
- plugin-grinder: show the Minecraft line a verdict is about (b05379a)
🛠 Fixes
- build: refuse to configure a Dokka module that has no module.md (fae4402)
- build: stop dokkaJavadocJar failing on a duplicate index.html (780115b)
- ci: publish the api's javadoc jar, not every module's (0731b75)
- ci: stop five workflows running on the creation of alpha/beta (b8b28d8)
- clientside,grinder: a clean boot outranks an inherited client-only proof (4bc3516)
- clientside,grinder: judge a demand the loader itself has to satisfy (60ad8fe)
- clientside: a bundled jar's own demands bind like a staged jar's (6acd289)
- clientside: a dependency the loader calls client-only is a finding (2226261)
- clientside: a verdict names the artifact that actually staged (4bdc748)
- clientside: an
unlessalternative counts when it is bundled, not only provided (e775fbd) - clientside: an exhausted backtrack is nobody's failure, not the host's (6ce930d)
- clientside: an untagged file means Forge only where the facet did not exist (fc7baf3)
- clientside: ask a dead pin once, like a live one (5db90b2)
- clientside: ask CurseForge for the dependency's version line (cf78607)
- clientside: fetch a dependency from the other platform when ours has none (7028c7e)
- clientside: honour Quilt's
unlessclause when staging a dependency (1443d9f) - clientside: honour the range a jar declares, and file a mixin failure as one (2af13e9)
- clientside: judge a demand on the loader's own id (78bebad)
- clientside: keep both disagreement channels, and order the retries in one place (4e70870)
- clientside: prefer a plain build over its own variant (6aeec16)
- clientside: prefer the newest release, then beta, then alpha (eb277c8)
- clientside: re-check a publishable crash on its own era's other loader (17d1f19)
- clientside: reach the fork that serves the original's mod id (6ee12d4)
- clientside: reaching Mojang's rendering layer is client-only evidence (85133ad)
- clientside: read a jar's loader at the descriptor era it was built in (3d61e97)
- clientside: read a line-prefixed version, and stop a dot separating one (551bcb2)
- clientside: read the Connector marker from both TOML descriptors (7e4611e)
- clientside: read the mod's own version, qualifier and all (e35dfcc)
- clientside: refuse a loader that cannot reach the build the jar demands (9a52ef9)
- clientside: resolve a pinned dependency, and stop inventing a
nullone (37e2d27) - clientside: resolve betterquesting, sewingkit and botanypots on CurseForge (bee99ba)
- clientside: resolve botanypots, a slug the guess cannot reach (56cfd7d)
- clientside: resolve the six mod ids observed going unresolved (a237817)
- clientside: verify a Connector placeholder under the loader it really is (971d9e8)
- clientside: verify a mis-ticked jar under the loader it declares (355d322)
- docs: resolve the KDoc links whose targets exist but are unreachable (3e60748)
- docs: stop documenting Confidence, which was deleted (deefe7f)
- grinder: key a verdict on its Minecraft line, not its modloader (cafa60a)
- grinder: link a project only when the scheme is one a browser should follow (a862556)
- grinder: re-file boot artifacts written before the Minecraft line (179bc9c)
- grinder: the Filename column carries the sampled artifact's real name (ab188df)
- plugin-grinder: add the module.md every Dokka task in this module requires (f797481)
VirusTotal
ServerPackCreator-9.0.0-alpha.9.jar- https://www.virustotal.com/gui/file-analysis/YjMyM2RhNTk2YWU1MWRhOWI4MzgxMjQyMDgyYWFkZTQ6MTc4OTQxMjg0NQ==serverpackcreator-api-9.0.0-alpha.9-javadoc.jar- https://www.virustotal.com/gui/file-analysis/ZjQzNDM2ZDZiZWMzMjEyOTBmNmFmMjI4YWQ2MDI2MDQ6MTc4OTQxMjg0Ng==serverpackcreator-api-9.0.0-alpha.9-sources.jar- https://www.virustotal.com/gui/file-analysis/YzZlZGJiOWE5MGQ3MzdiY2M5MGRiNmU2OGFmMTM3NjU6MTc4OTQxMjg0OQ==serverpackcreator-api-9.0.0-alpha.9.jar- https://www.virustotal.com/gui/file-analysis/YzEyYzc5ZjAyNjllOTgwMTQ1ZjMyMjQ0ZjIyMjBhZTA6MTc4OTQxMjg1MQ==serverpackcreator-app-9.0.0-alpha.9-javadoc.jar- https://www.virustotal.com/gui/file-analysis/NzM0OTMxYmZiOTI2ZmI1MjlkNWVhNzZmMjQzZGRlMzA6MTc4OTQxMjg1Mw==serverpackcreator-plugin-example-9.0.0-alpha.9.jar- https://www.virustotal.com/gui/file-analysis/OWNkZDY4MDdkZWZjZGI0ZDE5OTFhZTgyNTY4YzM5NDc6MTc4OTQxMjg1NA==ServerPackCreator-9_0_0-alpha_9-Installer-Linux-amd64.sh- https://www.virustotal.com/gui/file-analysis/YWU5ZjkxMGY0ZTRjMWNiZWM0ZjBlN2JjYTYxODQ1OGI6MTc4OTQxMjg2NA==ServerPackCreator-9_0_0-alpha_9-Installer-Mac.dmg- https://www.virustotal.com/gui/file-analysis/OGY5OTYzNTZhNmU5OWU2MzRlOGFiNGQ5YTkyODRjYjA6MTc4OTQxMjg3NQ==ServerPackCreator-9_0_0-alpha_9-Installer-Windows-x86_64.exe- https://www.virustotal.com/gui/file-analysis/ZjUyODVmNDBiOTZmNGFiZGM4ZDFiYmMxMDY4ZjU0N2U6MTc4OTQxMjg4NQ==