Skip to content

fix(lighting): migrate warm candle fixtures - #121

Merged
zoeyrose merged 6 commits into
1.xfrom
feat/90-warm-candle-fixtures-1x
Aug 12, 2026
Merged

zoeyrose merged 6 commits into
1.xfrom
feat/90-warm-candle-fixtures-1x

Conversation

@zoeyrose

@zoeyrose zoeyrose commented Aug 11, 2026 •

Copy link
Copy Markdown
Member

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 and keep both review controls out of runtime packages

Related issue: #90. This is the separate Classic 1.x companion and is intentionally non-closing.

Reconciliation

  • Exact live base: d863b1d66967841ad56ae5f205e88d87c681a688
  • Exact reviewed PR head: 66ccf13370b508d1faf16600ef1175bb94f964e3
  • Exact reviewed tree: 966a8f4af6d82e45c931a4b9cedf8bbb6e5b80ec
  • The branch was updated by a normal fast-forward reconciliation commit; its base-to-head tree is identical to the independently reviewed local candidate.
  • Current portal, fireplace, crystal, glower, palette, rationales, art overrides, and semantic digests remain integrated.
  • The provider-keyed benchmark adapter remains owned by fix(syntax): resolve provider-keyed benchmark topology inputs #138 and is not included.
  • Retired light-source evidence, manifest, proof scene, capture tooling/tests, and capture-bound fields remain absent.

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.
  • Map diffs contain only complete helper removals and intentional glow_radius fields; 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.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 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 both 1.8.2 archives
  • 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
  • 48 focused world-audit, runtime-exclusion, content-catalog, and syntax tests — passed
  • mechanical map audit — exactly 331 complete helper removals, 235 positive transfers, and four radius-zero exceptions; no other map-line classes
  • corrected-head independent review — zero actionable findings across all 102 changed paths
  • JSON parsing, prohibited-surface search, and git diff --check — passed

Optional renderer diagnostics remain ignored under build/ or deployment-owned output and are not a merge gate.

@zoeyrose zoeyrose changed the title feat(lighting): migrate warm candle fixtures fix(lighting): migrate warm candle fixtures Aug 12, 2026
@zoeyrose
zoeyrose marked this pull request as ready for review August 12, 2026 05:20
@zoeyrose
zoeyrose merged commit 08ebe8d into 1.x Aug 12, 2026
5 checks passed
@zoeyrose
zoeyrose deleted the feat/90-warm-candle-fixtures-1x branch August 12, 2026 15:18
@github-actions

Copy link
Copy Markdown

🎉 This PR is included in version 1.8.15 🎉

The release is available on:

Your semantic-release bot 📦🚀

@github-project-automation github-project-automation Bot moved this from Review to Done in Atrinik work Aug 12, 2026
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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

1 participant