2026-07-24
Fairyfox system adopt-in-full (0.20.2 → 1.5.1), then full compliance pass
Owner directive: "fairyfox system updates in-full then after do full compliancy checks only after updates is completely done … in as many phases as needed … reaches the completion in full." Mid-turn constraint: do not re-describe or re-tag the GitHub repo (description / topics) — a standing user exception, recorded in the adoption manifest.
Phase A — adoption
- A1 Refresh mirror.
assets/references/fairyfox.iofast-forwarded697bc5c → a6d7e68(git-ignored mirror only; no tracked history touched). Hub VERSION1.5.1. Last-adopted anchor =0.20.2(from the 2026-07-19 onboarding report). Working tree clean, ondev, up to date with origin. - A2 Diff. Read the new
hub/standards/CHANGELOG.mdacross the span: releases 0.21.0 (checklists-are-contracts, mandate-ledger), 1.4.0 (complete/phase-by-default, 20-badge set, docs-site web-interface enforcement), 1.5.0 (Docker). Bothauthorizations.ymlentries apply — the standingadopt-standards-by-defaultgrant pre-authorises the whole set, so adopt-by-default (skip the confirmation pause, keep the full verification floor). Node already runs the express-auth machinery → no bootstrap pause. - A3 Apply. Refreshed 17 mirrored reference standards to current hub wording; vendored 6
new files (checklists-are-contracts, mandate-ledger, docker, ci-secrets, legal-docs,
VERIFY-INDEX).
git diffconfirmed no project-specific content clobbered (the copies are verbatim canonical, no real local divergence). Added the Docker local-first mesh rule to CLAUDE.md Build/Run. - A3c Docker (the real new work). Docker 29.5.3 / compose v5.1.4 confirmed working locally
→ the prior "Docker 29 incompatible" write-off is falsified. Vendored
Dockerfile+compose.yaml+.dockerignore; thin JDK-21 image, source bind-mounted, gradle-cache volume, host socket mounted (DooD,host.docker.internalpinned,TESTCONTAINERS_HOST_OVERRIDE). Validated end-to-end: full./gradlew buildBUILD SUCCESSFUL in 12m33s inside the container; the previously host-skippedMariaDbStorageTestruns and passes 3/3 over the mounted socket (also JdbcEdgeCases 5/5, JdbcLocationRepository 4/4, StorageFactory 6/6 — all 0 skipped). Harness note: the MCP PowerShell tool kills process trees at ~125 s, so the run had to be launched as a dockerd-owneddocker compose up -dcontainer to survive. - Template artifacts — decisions:
check-standards.mjsNOT adopted (it's a hub-side standards-consistency self-check, not node behaviour);mandate-ledger.mdtemplate not copied as a file (the behaviour is already practised innotes/plans/);provenance-asset.ymlnot copied (release.yml already ships the real provenance-as-asset step).
Phase B — full compliance pass
See the process report and the refreshed notes/reference/adoption-manifest.md.
Phase C–E — completing the held items (owner re-issued "in full")
Owner repeated the mandate → per CLAUDE.md's ledger rule, the awaiting-owner items escalate to do-now (except the excepted GitHub-details one).
- Phase C — scorecard hygiene.
scorecard.ymltop-levelread-alldocumented in-file as a deliberate write-free divergence from supply-chain §1 (the scanner needs broad read; no write granted). Commite773b0a. - Phase D — docs-site chrome 2.3.0. Self-hosted fonts (the only 2.3.0 delta): vendored the
three OFL woff2 +
fonts.css(relative URLs for the Pages subpath), swapped all three head sites off Google Fonts, wired both build Copy tasks, VERSION→2.3.0.assembleDocsSitebuilt green in-container (5m46s); output self-hosts fonts, no real googleapis hot-links. Commitedfbf8b. - Phase E — first maintenance-sweep. Audit-first tidy: working tree clean;
devcontainsmain+ green (build + docs + links); no stale branches; surfaced + fixed one docs-currency item (status.mdVersion:header was stale at 1.4.3 — updated to 1.5.0-in-flight / newest tag v1.4.8, chain extended through v1.4.8). No destructive git action. maintenance-sweep flips copied-only → implemented.
Phase G — fix the Fabric client-mod build (was red, now green)
The Build the Fabric client mod CI job was already red on dev before this session (upstream
Loom/yarn drift, not caused by the adoption). Fixed it in full rather than routing around it:
Loom 1.11→1.13-SNAPSHOT (1.13.6), processResources → providers.gradleProperty, and two
yarn-mapping source fixes resolved against the real mappings.tiny (RegistryByteBuf →
net.minecraft.network; Screen.hasShiftDown() → GLFW glfwGetKey off the window handle).
client/fabric builds green in-container (1m40s, jar produced). Folded into the v1.5.0 release so
PR #25's Fabric check goes green too.
Release posture
Adoption committed on dev. The v1.5.0 milestone release to main was left as an owner
decision (status.md parks "the release itself"); it is a MINOR carrying substantial in-flight
feature work beyond this standards sync, so it should be a deliberate owner-initiated ship, not
a side effect of the adopt flow. Surfaced in the not-done list.