Skip to content

feat(build): register deepslate shared-base contract (#77) - #235

Merged
BharathASL merged 1 commit into
mainfrom
feat/base-sync-strata-contract
Sep 23, 2026
Merged

BharathASL merged 1 commit into
mainfrom
feat/base-sync-strata-contract

Conversation

@BharathASL

@BharathASL BharathASL commented Sep 23, 2026 •

Copy link
Copy Markdown
Contributor

Description

Registers block/deepslate.svg as a second shared-base master in tools/base-sync.json, so deepslate-variant ores are drift-checked against it the same way stone-variant ores are checked against block/stone.svg. The marker group is deepslate_base and the shared sections are defs and group:deepslate_base. derivatives starts empty because no deepslate ore has been authored yet; each one is added to that list as it lands.

textures/block/deepslate.svg now carries the contract surface: the slate base fill, the crevice drop shadows and the strata plates sit inside <g id="deepslate_base">, a root <defs> block is present for parity with the stone master, and the file carries the shared-base header. The rasterized deepslate.png is byte-identical to main (SHA-256 5441591454358407d003ce9678cb6215a4b357497cc51e5dc1fcdfd35dd8cfa1 before and after), and the tiling audit reports zero seam discontinuity.

tools/test/base-sync.test.mjs covers the new registry entry, the shipped master's compliance, and a deepslate derivative harness against mock SVGs: drift in the strata plates, the crevice shadows and the base fill is detected, and an unlisted SVG carrying <g id="deepslate_base"> is rejected.

CONTRIBUTING.md §3 "Ore & Material Consistency" now documents the deepslate base alongside the stone base, including which sections derivatives must copy and which derivatives list a new ore goes in.

Refs #77. This delivers the "Strict base deepslate contract established for all deepslate ores" criterion; the bedrock strata and cobbled deepslate criteria remain open.

Affected Assets

  • textures/block/deepslate.svg
  • tools/base-sync.json
  • tools/test/base-sync.test.mjs
  • CONTRIBUTING.md

Type of Change

  • feat: New vector texture master, blockstate, or compiler capability
  • fix: Tiling fix, palette correction, or bugfix
  • docs: Documentation improvement
  • chore / refactor: Maintenance, dependencies, or codebase cleanup

Contributor Checklist

Vector Texture Standards (if adding/modifying SVGs)

  • Authored as a clean $512\times512$ SVG (viewBox="0 0 512 512").
  • Primary shapes are aligned to the $32\text{px}$ texel grid ($16\times16$ grid). Strata plates are on the grid; the crevice drop shadows are offset 8px down by design and are unchanged from main.
  • Seamless Toroidal Tiling: Checked and verified that elements wrapping across $X$ and $Y$ edges align perfectly without seams or chopped shapes.
  • Ore Consistency: Not applicable; no ore texture is added. The deepslate master is the base future deepslate ores must match.
  • Free of leftover AI generation comments, unnecessary editor namespaces, or embedded raster images.

Build & Verification

  • Ran npm run build locally and verified that the pack compiles successfully.
  • Verified textures in-game or inspected the rasterized PNG outputs in dist/.

Git Hygiene & Standards

  • Commit message(s) follow Conventional Commits (e.g., feat(textures): ...).
  • Every commit is signed off with the Developer Certificate of Origin (git commit -s).
  • Branch is rebased cleanly onto latest main with no merge commits.
  • Formatting complies with .editorconfig (2-space indent, LF endings, trailing newline).

@ninja6-agent ninja6-agent Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Blockers

  • 4caf321 (commit message): The body is a single unwrapped 497-character line restating the diff, which breaches N6-COMMIT-05 (body optional, a line or two, wrapped at 72). The repo squashes with COMMIT_MESSAGES, so this lands on main verbatim. Cut the body to one or two lines wrapped at 72 (or drop it) and keep the detail in the PR description.

Nits

  • PR title / 4caf321 subject: "deepslate and strata shared-base contracts" names two contracts, but only one is registered (block/deepslate.svg → deepslate_base; strata_plates is a subgroup inside it). Retitle to e.g. feat(build): register deepslate shared-base contract (#77).
  • PR body: No reference to #77, whose acceptance criterion "Strict base deepslate contract established for all deepslate ores" this PR delivers, and the repo PR template (Affected Assets, checklist) is not used. Add Refs #77 (not Closes, since the bedrock/cobbled deepslate criteria are still open) and fill the template.
  • textures/block/deepslate.svg:L24, textures/block/deepslate.svg:L70: Whitespace-only lines with trailing spaces, against .editorconfig trim_trailing_whitespace = true. Make them empty.
  • CONTRIBUTING.md:L132-L153: The "Ore & Material Consistency" section still describes the shared-base contract as stone-only (stone_base, stone.svg). Add that deepslate-variant ores derive from textures/block/deepslate.svg and must copy <defs> and <g id="deepslate_base">, and must be added to that entry's derivatives list.

Deepslate-variant ores now derive from block/deepslate.svg and are
drift-checked against its defs and deepslate_base group at build time.

Signed-off-by: Bharath <bharathasl74185@gmail.com>
@BharathASL
BharathASL force-pushed the feat/base-sync-strata-contract branch from 4caf321 to 1e9d807 Compare September 23, 2026 19:15
@BharathASL BharathASL changed the title feat(build): register deepslate and strata shared-base contracts feat(build): register deepslate shared-base contract (#77) Sep 23, 2026

@ninja6-agent ninja6-agent Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Blockers

None.

Nits

  • textures/block/deepslate.svg:L9: "<defs> (if any)" contradicts the registry. sharedSections lists defs, and checkBaseSync fails a derivative with no <defs> ("missing the shared section "), so an ore author who takes "if any" at its word fails the build. Drop "(if any)"; derivatives must copy the (currently empty) <defs> block too.
  • tools/base-sync.json:L9-L12: The stone entry's sharedSections is reflowed from one line to four with no content change. This is churn in an entry the PR does not otherwise touch. Restore ["defs", "group:stone_base"] and use the same one-line form for the deepslate entry at L21-L24.
  • tools/base-sync.json:L19: The deepslate description leaves out the rule the stone entry states: anything shared must sit inside a listed sharedSections entry, or nothing compares it. Add that sentence so both base entries give the same guidance.

@BharathASL
BharathASL added this pull request to the merge queue Sep 23, 2026
Merged via the queue into main with commit ff8eed0 Sep 23, 2026
5 checks passed
@BharathASL
BharathASL deleted the feat/base-sync-strata-contract branch September 23, 2026 19:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant