docs(spec): spec-0030 — deliberate shorelines (the flood verb) - #329
Open
stellarfeline wants to merge 6 commits into
Open
docs(spec): spec-0030 — deliberate shorelines (the flood verb)#329stellarfeline wants to merge 6 commits into
flood verb)#329stellarfeline wants to merge 6 commits into
Conversation
…er-area walk_y datum, DW0364/DW0366/DW0367 (WIP: tests/docs follow) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…er-area walk_y datum, DW0364/DW0366/DW0367 (dsl 0.9.0)
Stage-1 horizon generalizes into the spec-0026 composition: string shorthands
(byte-identical for void/ocean) OR the object form {base, ...params}, all six
bases parsed and param-validated; flatland lands end-to-end (grass superflat
ambient one block under the scene walk plane, plains biome, bare);
valley/cherry-valley/summit/sky are reserved (DW0141) until their surround
slices. Placement moves to the per-area datum walk_ref_y - walk_y (DW0367),
retiring plan::OCEAN_BASE_Y; DW0364 proves every placed piece's standable
cells sit above the flood level empirically, with no waterline_y exemption —
the #149 flooded-interior class is now impossible by construction.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…dation # Conflicts: # crates/compiler/src/lib.rs # crates/compiler/tests/cli.rs # crates/dsl/src/envelope.rs # crates/dsl/src/lib.rs # docs/reference/compiler.md # versions.toml
…am, not by this slice The DW0366 row claimed `summit.vista_radius`'s floor was unenforceable because the spec contradicted itself (floor 192 vs default 176). That was true when the foundation slice reported it and stopped being true on 2026-08-04: the spec-0026 amendment (PR #261, on `main` for 66 commits now) resolved both open params — `vista_radius` measured from the scene bounding box, floor 192, default 208; and `blend_width` 1..=16. Enforcement is deliberately NOT added here. Both params configure surrounds this slice does not emit, and the valley slice (task #155 W-B, PR #259, based on this branch) already carries the checks and the corrected default verbatim. Implementing them twice would put a duplicate in the dependent branch's path for no behaviour gained. The row now says what is true: the ambiguity is resolved, the enforcement is owed, and which slice owes it. No behaviour change: `dsl::validate::horizon_rules` and `horizon_defaults` are byte-identical to this branch's pre-merge state. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AjQ5p1Kv5MrkGPumi7yXWL
…compiler proves (task #shallows) `DW0364` refuses standable ground at or below the horizon's flood line with no exemption, deliberately: that exemption is what made #149 invisible. Applied to the released `nobodys-cave-island` it fires on 26 cells at world y=62 — the shoreline the two bank-falls batches exist to make. Owner ruling 2026-08-06: the sculpted shoreline stays, and it needs a first-class declaration. The declaration is NOT a suppression switch. `flood` admits the horizon's ambient sea into a declared envelope; the compiler computes which cells the sea actually reaches and materializes them as water, in the model AND in the emitted world. A cell stops being a `DW0364` violation only by ceasing to be ground. Three properties do the safety work, and none of them is "skip the check": - a sealed room under the sea is unreachable by the sea, so declaring `flood` over the #149 fixture is `DW0394`, never green — it only changes which red; - over-declaring costs you your own map (a wider envelope wets more of it, and an envelope that swallows a corridor turns nav red), so it silences nothing; - under-declaring is `DW0395`: water that runs on past the envelope into an undeclared air cell of a placed piece means the shoreline is not where the author said it is. Re-proved after every later batch. `DW0364` keeps its exact rule, tier and domain. A campaign that declares no `flood` emits byte-for-byte what it emitted before (`DW0141` fences the verb below world-edits 0.9.0). Spec (proposal) in `docs/specs/spec-0029-deliberate-shorelines.md`; the proof is `crates/compiler/tests/spec0029_flood.rs` plus the island build, which goes green on exactly this declaration with 25 wetted cells while `DW0364` goes on refusing the one sealed pocket the envelope also covers. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AjQ5p1Kv5MrkGPumi7yXWL
…ken on an unmerged branch Two workers picked the next free spec number on the same day from `main`, where the highest is 0028. Neither could see the other's branch: `docs/spec-0029-i18n-v2` already holds `spec-0029-i18n-v2-client-selected-language.md`. Text-only rename plus the test-file name; no behaviour change. `spec0030_flood` 6/6 green.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Owner ruling (b), 2026-08-06: the island's waterline cells are intended, not a defect — so they need a first-class declaration.
The constraint that decided the design: a declaration that merely suppresses the check is the same hole with a nicer name.
DW0364has no waterline exemption deliberately — that exemption is what made #149 invisible.Four decisions:
flood: the author names an envelope, and the compiler works out what the sea actually reaches inside it and builds that water. It does not place water on request and it does not skip anything.DW0364is untouched. A cell stops being a violation only by ceasing to be ground — water is not standable. The verb can only take walkable cells away, never grant one. That is why this is not an exemption in a costume.DW0394(the sea reaches nothing here) andDW0395(the water does not stop where you said).floodover it isDW0394, never green.One of the island's 26 cells stays red, correctly — a sealed one-block dry pocket the sea cannot reach. A genuine content defect
DW0364found and the declaration refuses to hide; the content half fills it. (The other correction: 26 was 25 + a bug — one cell was never shoreline.)Numbered 0030, not 0029: two workers picked the next free number on the same day from
main, where the highest is 0028, and neither could see the other's branch.spec-0029is taken by i18n v2.Player-visible bytes move (24 appended lines in
world_edits.mcfunction, oneforceload, manifest hashes), so this belongs to the owner's playtest batch and is held, not merged on green.