Repository navigation
fix(lighting): migrate warm candle fixtures - #121
Merged
Merged
Conversation
1 of 4 tasks
This was referenced Aug 11, 2026
zoeyrose
marked this pull request as draft
August 12, 2026 05:14
zoeyrose
marked this pull request as ready for review
August 12, 2026 05:20
|
🎉 This PR is included in version 1.8.15 🎉 The release is available on:
Your semantic-release bot 📦🚀 |
zoeyrose
added a commit
that referenced
this pull request
Aug 12, 2026
## Summary - make all six visibly lit candle fixtures inherit a small `ffd080` warm-gold source while leaving both off states dark - migrate 331 redundant same-tile neutral helpers into candle-local radii across 91 maps while preserving every radius-2 through radius-9 footprint - cover all 478 fixtures across 119 maps with a fail-closed semantic fixture contract while retaining main-line Classic provenance and replacement-runtime boundaries Canonical `main` companion for #90 after the separately validated `1.x` companion merged as [#121](#121). Under the master program's closure constraint, this pull request intentionally has no closing keyword; #90 remains open for the final exact-tip audit and human closure. ## Coordinates and release-line relationship - Exact base: `main@7075ad9` - Exact head: `be09e752312dcb11c5f3906b2207a5dd4660a02d` - Exact tree: `8487f5a8d50e91f1e649620ebefa1fc074dbd119` - Merged `1.x` squash: `08ebe8d39eb2d8af0dddbb120af178d87e1fb7f6` - Shape: exactly one commit and 102 changed paths All 91 affected maps, `arch/indoor/candles.arc`, the required-fixture contract, and the syntax decision/evidence are byte-identical to the merged companion. Seven line-native review/runtime/test files differ only to preserve main's pinned Classic source review, historical `classic_views`, explicit replacement-runtime-unavailable boundary, and corresponding tests/docs. No release branch or generated output was copied wholesale. ## Authored behavior - `candle_on` and `candle2_on` default to radius 2; `candlelight1.101` through `candlelight4.101` default to radius 3; all resolve to `ffd080`. - `candle_off` and `candle2_off` remain dark. - 235 positive local overrides retain existing room-scale footprints. - Three members of the four-candle composite and one candle sharing a tile with a visible wall fireplace are explicitly non-emitting, each with exactly one reviewed same-tile source. - The map diff contains exactly 331 complete helper removals and 239 `glow_radius` fields—235 positive transfers and four zero-radius exceptions—with no other map-line changes. ## Fail-closed review contract Schema v6 pins the six archetypes, expected radii/color, exact per-archetype counts, 119-map coverage, four intentional non-emitters, 18 contextual checks, and every resolved placement digest. `maps/light-source-fixture-contract.json` independently requires the candle group and check set, so deleting its ledger row still inventories all 478 fixtures and fails validation. A regression test covers that path. Both review controls are excluded from playable runtime packages. The current portal, fireplace, crystal, glower, palette, rationales, art overrides, Classic provenance, and replacement-runtime limits remain integrated. The provider-keyed benchmark adapter remains owned by #138. Retired light-source evidence, manifest, proof scene, capture tooling/tests, and capture-bound fields remain absent. ## Validation - `python3 tools/validate.py` — passed 129 tests plus lossless validation of 1,355 archetypes/3,651 maps, schema, 8,105-definition/68,515-reference catalog, contracts, syntax, resources, and isolated runtime collection - `python3 tools/world_content_audit.py lights --check` — passed: 117 archetypes, 10 artifacts, 11,682 instances across 638 maps; 6,338 explicit colors, 5,471 intentional neutral, zero unreviewed - 44 focused world-audit, runtime-exclusion, content-catalog, and syntax tests — passed - cross-line mechanical audit — all 91 pre-change and post-change map blobs exactly match their `1.x` coordinates; 331 helper transfers, 235 positive overrides, and four radius-zero exceptions are exact - syntax source/snapshot/docs — p10/p50/p90/max selection is current; maximum is 95,641 bytes, 2,777 objects, SHA-256 `e19607b59b6be941ff488687c81b5dc2c6c776743226686e8acb8c1671cc976d` - JSON parsing, prohibited-surface search, and `git diff --check` — passed ## Runtime boundary The replacement stack still has no integrated content build/runtime/rendering adapter. This change validates the authored mirror and semantic contracts without claiming live visual activation; integration remains tracked by atrinik/atrinik#266, atrinik/atrinik#269, and atrinik/atrinik#270. Classic visual conclusions remain in the checked semantic review under the superseding evidence policy. Optional renderer diagnostics belong only under ignored `build/` or deployment-owned output and are not a merge gate. Independent exact-head review of remote head `be09e752312dcb11c5f3906b2207a5dd4660a02d` completed with zero actionable findings. It independently reconstructed all 331 helper transfers, confirmed all 478 fixtures and four intentional nonemitters, verified exact authored cross-line identity and runtime-package exclusions, and passed focused audit, catalog, syntax, and diff checks.
zoeyrose
added a commit
that referenced
this pull request
Aug 23, 2026
## Base update #170 and #171 are merged. This branch is rebased directly onto merged #171 (`66a3f0c53`), so the PR now contains only its gameplay/server changes. It contains no inherited #171 client/protocol files or metaserver Worker files; the Worker implementation is owned by its separate repository. ## Summary - distribute kill XP across the skills that actually contributed damage, while preserving party sharing, anti-kill-steal boundaries, XP caps, and loot eligibility - make trap finding/disarming probabilistic and anti-reroll, retain a meaningful trip risk, increase direct trap damage, prevent double-triggering reusable traps, and calculate trap XP like level-relative kill XP - send depletion as applied in its first item update and refresh flags/tooltips immediately after death/stat drain - recommend the implemented `remove depletion` spell in authored content - ignore zero-value/non-progressive disease symptoms during symptom reduction Closes #121. Closes #144. ## Validation - full warning-as-error Linux client/server build after realignment - all 25 CTest targets, including QUIC network integration and Python plugin runtime - focused attack, living, and rune regression suites - narrow archetype collection confirming the corrected depletion tooltip - targeted clang-tidy review, repository formatting, and `git diff --check` - audited the complete `master...HEAD` file list to confirm the separately owned Worker implementation is absent ## Review attention The branch includes bounded/tag-validated per-victim contribution state and deterministic per-player/trap probability hashing. Live balance attention should focus on mixed-skill boss fights, party members changing maps at death, corpse-heavy level 10-30 areas, high-skill disarmers, and reusable/multi-payload runes.
zoeyrose
added a commit
that referenced
this pull request
Aug 23, 2026
## Summary - make all six visibly lit candle fixtures inherit a small `ffd080` warm-gold source while leaving both off states dark - migrate 331 redundant same-tile neutral helpers into candle-local radii across 91 maps while preserving every radius-2 through radius-9 footprint - cover all 478 fixtures across 119 maps with a fail-closed semantic fixture contract while retaining main-line Classic provenance and replacement-runtime boundaries Canonical `main` companion for #90 after the separately validated `1.x` companion merged as [#121](#121). Under the master program's closure constraint, this pull request intentionally has no closing keyword; #90 remains open for the final exact-tip audit and human closure. ## Coordinates and release-line relationship - Exact base: `main@9a14c793400f004809b96b336dae7280daf7e954` - Exact head: `15ef327d38c3905b6795c6dc64666022ac9c4e4c` - Exact tree: `8487f5a8d50e91f1e649620ebefa1fc074dbd119` - Merged `1.x` squash: `1c5e779a74bbbb0bd4b29aba720ab9b41a5244fb` - Shape: exactly one commit and 102 changed paths All 91 affected maps, `arch/indoor/candles.arc`, the required-fixture contract, and the syntax decision/evidence are byte-identical to the merged companion. Seven line-native review/runtime/test files differ only to preserve main's pinned Classic source review, historical `classic_views`, explicit replacement-runtime-unavailable boundary, and corresponding tests/docs. No release branch or generated output was copied wholesale. ## Authored behavior - `candle_on` and `candle2_on` default to radius 2; `candlelight1.101` through `candlelight4.101` default to radius 3; all resolve to `ffd080`. - `candle_off` and `candle2_off` remain dark. - 235 positive local overrides retain existing room-scale footprints. - Three members of the four-candle composite and one candle sharing a tile with a visible wall fireplace are explicitly non-emitting, each with exactly one reviewed same-tile source. - The map diff contains exactly 331 complete helper removals and 239 `glow_radius` fields—235 positive transfers and four zero-radius exceptions—with no other map-line changes. ## Fail-closed review contract Schema v6 pins the six archetypes, expected radii/color, exact per-archetype counts, 119-map coverage, four intentional non-emitters, 18 contextual checks, and every resolved placement digest. `maps/light-source-fixture-contract.json` independently requires the candle group and check set, so deleting its ledger row still inventories all 478 fixtures and fails validation. A regression test covers that path. Both review controls are excluded from playable runtime packages. The current portal, fireplace, crystal, glower, palette, rationales, art overrides, Classic provenance, and replacement-runtime limits remain integrated. The provider-keyed benchmark adapter remains owned by #138. Retired light-source evidence, manifest, proof scene, capture tooling/tests, and capture-bound fields remain absent. ## Validation - `python3 tools/validate.py` — passed 129 tests plus lossless validation of 1,355 archetypes/3,651 maps, schema, 8,105-definition/68,515-reference catalog, contracts, syntax, resources, and isolated runtime collection - `python3 tools/world_content_audit.py lights --check` — passed: 117 archetypes, 10 artifacts, 11,682 instances across 638 maps; 6,338 explicit colors, 5,471 intentional neutral, zero unreviewed - 44 focused world-audit, runtime-exclusion, content-catalog, and syntax tests — passed - cross-line mechanical audit — all 91 pre-change and post-change map blobs exactly match their `1.x` coordinates; 331 helper transfers, 235 positive overrides, and four radius-zero exceptions are exact - syntax source/snapshot/docs — p10/p50/p90/max selection is current; maximum is 95,641 bytes, 2,777 objects, SHA-256 `e19607b59b6be941ff488687c81b5dc2c6c776743226686e8acb8c1671cc976d` - JSON parsing, prohibited-surface search, and `git diff --check` — passed ## Runtime boundary The replacement stack still has no integrated content build/runtime/rendering adapter. This change validates the authored mirror and semantic contracts without claiming live visual activation; integration remains tracked by atrinik/atrinik#266, atrinik/atrinik#269, and atrinik/atrinik#270. Classic visual conclusions remain in the checked semantic review under the superseding evidence policy. Optional renderer diagnostics belong only under ignored `build/` or deployment-owned output and are not a merge gate. Independent exact-head review of remote head `15ef327d38c3905b6795c6dc64666022ac9c4e4c` completed with zero actionable findings. It independently reconstructed all 331 helper transfers, confirmed all 478 fixtures and four intentional nonemitters, verified exact authored cross-line identity and runtime-package exclusions, and passed focused audit, catalog, syntax, and diff checks.
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.
Summary
ffd080warm-gold source while leaving both off states darkRelated issue: #90. This is the separate Classic
1.xcompanion and is intentionally non-closing.Reconciliation
d863b1d66967841ad56ae5f205e88d87c681a68866ccf13370b508d1faf16600ef1175bb94f964e3966a8f4af6d82e45c931a4b9cedf8bbb6e5b80ecAuthored behavior
candle_onandcandle2_ondefault to radius 2;candlelight1.101throughcandlelight4.101default to radius 3; all resolve toffd080.candle_offandcandle2_offremain dark.glow_radiusfields; placement, art, scripts, obstruction, and gameplay fields are preserved.Fail-closed review contract
Schema v6 pins the six archetypes, expected radii/color, exact per-archetype counts, 119-map coverage, four intentional non-emitters, 18 contextual checks, and the digest of every resolved placement.
maps/light-source-fixture-contract.jsonindependently requires the candle group and check set, so deleting its ledger row still inventories all 478 fixtures and fails validation. A regression test covers that deletion path. Both the ledger and required-fixture contract are excluded from playable runtime archives.Validation
python3 tools/validate.py— passed 131 tests plus lossless validation of 1,355 archetypes/3,651 maps, schema, catalog, contracts, syntax, resources, and both1.8.2archivespython3 tools/world_content_audit.py lights --check— passed: 117 archetypes, 10 artifacts, 11,682 instances across 638 maps; 6,338 explicit colors, 5,471 intentional neutral, zero unreviewedgit diff --check— passedOptional renderer diagnostics remain ignored under
build/or deployment-owned output and are not a merge gate.