Skip to content

feat(quests): teach the Incuna apartment flow - #111

Merged
zoeyrose merged 25 commits into
mainfrom
feat/105-incuna-apartment-main
Aug 11, 2026
Merged

zoeyrose merged 25 commits into
mainfrom
feat/105-incuna-apartment-main

Conversation

@zoeyrose

@zoeyrose zoeyrose commented Aug 11, 2026 •

Copy link
Copy Markdown
Member

Summary

  • make the Lost Memories apartment lesson regional: Incuna grants its own tiny beach nook instead of reusing Strakewood housing
  • add a 24×24 ocean-and-sand map with a deliberately small 12-tile living area, one chest, and a two-part hammock that teaches and acts as the save bed
  • author stable NPC, property, action, map-object, and schema identities for Elara Harth, the Incuna portal, and the new property
  • keep Strakewood and Eld Woods ownership independent and validate exact steward/portal bindings, entry/return coordinates, and the owner gate
  • add two newly generated authored gameplay images, hammock_a.101.png and hammock_b.101.png, with explicit Zoey Rose / GPLv2 attribution and an OpenAI image-generation provenance note on each entry in the adjacent LICENSE

Closes #105.

Authored media and diagnostic imagery

The hammock PNGs are intentional source assets used by gameplay. They are not lighting screenshots, contact sheets, or other generated review output. Their adjacent license enumerates both files directly. The repository's semantic-only lighting-review policy therefore does not remove or prohibit these authored assets.

No light-source evidence PNG, capture manifest, proof scene, or capture-only tool is tracked by this head.

Release-line relationship

The independently validated Classic companion is #112. It links this canonical main PR without taking ownership of issue completion.

Runtime boundary

Replacement-stack ownership/grant execution remains deferred to atrinik/server#53 and atrinik/protocol#9. This PR keeps main on the typed property-service boundary and fails closed if that action is unavailable; Classic is not substituted as replacement runtime verification.

Coordinates

  • base: main@fde585e2dce52915704fa49608c07e8889f77bf5
  • head: 2b6c1181969b540bd0fedf4067661dcc33fe5531
  • branch: feat/105-incuna-apartment-main

Validation

  • python3 arch/license_check.py --text-only --directory=arch/outdoor/hammock — 2 licensed, 0 unlicensed; no invalid file/directory entry
  • python3 tools/validate.py — 128 tests passed; lossless core validated 1,355 archetypes and 3,651 maps; schema, catalog, contracts, syntax prototypes, resource collection, provenance/release gates, and isolated archives passed
  • light review — 97 archetypes, 4 artifacts, 11,393 instances across 625 maps; 5,558 explicit colors, 5,936 intentional neutral, zero unreviewed
  • content catalog — 8,105 definitions and 68,597 references
  • git ls-tree -r --name-only HEAD -- maps/light-source-evidence tools/light-source-review tools/light_review_evidence.py tools/tests/test_light_review_evidence.py — no paths
  • git diff --check

@zoeyrose zoeyrose moved this to Review in Atrinik work Aug 11, 2026
@zoeyrose
zoeyrose marked this pull request as ready for review August 11, 2026 10:48
…ment-main

# Conflicts:
#	prototypes/authored-syntax-v1/baseline-lock.json
#	schemas/authored-content-v1/FIELDS.md
#	schemas/authored-content-v1/editor-properties.json
#	schemas/authored-content-v1/field-ids.h
#	schemas/authored-content-v1/field-metadata.json
#	tools/tests/test_content_catalog.py
zoeyrose added a commit that referenced this pull request Aug 11, 2026
## Summary

- deliver an Incuna-specific starter property on Classic `1.x` instead
of granting access to Strakewood apartments
- add a 24×24 beach nook with a deliberately tiny 12-tile living area,
one chest, coastal dressing, and a two-part hammock that teaches and
acts as the save bed
- grant the sole Incuna tier exactly once, preserve its entitlement and
stored contents, gate the portal by ownership, and advance the tutorial
only after using the hammock
- preserve the apartment runtime collection changes and the exact
binding, owner-gating, idempotency, persistence, map-reload,
compatibility, and hammock-vocabulary tests
- add two newly generated authored gameplay images, `hammock_a.101.png`
and `hammock_b.101.png`, with explicit Zoey Rose / GPLv2 attribution and
an OpenAI image-generation provenance note on each entry in the adjacent
`LICENSE`

Linked issue: #105. Canonical main PR: #111.

## Authored media and semantic lighting policy

The hammock PNGs are intentional source assets used by gameplay, not
generated lighting evidence. Their adjacent license enumerates both
files directly. The semantic-only policy from #126 and merged PR #127
removes lighting contact sheets, their manifest, the proof scene, and
capture-only tooling; it does not remove or prohibit authored gameplay
art.

This reconciliation keeps the apartment's schema-v5 semantic map digest
but performs no light-source PNG or manifest refresh. No light-source
evidence or capture-only path is tracked by this head.

## Coordinates

- base: `1.x@b342d56`
- head: `d67ffd281030b9b7a8bc4c9ea3002b5e4592a11c`
- branch: `feat/105-incuna-apartment-1x`
- worktree:
`/workspaces/atrinik/workspace/worktrees/content-1x/issue-105-apartment-1x`

## Validation

- `python3 arch/license_check.py --text-only
--directory=arch/outdoor/hammock` — 2 licensed, 0 unlicensed; no invalid
file/directory entry
- `python3 tools/world_content_audit.py lights --check` — 97 archetypes,
4 artifacts, 11,393 instances across 625 maps; 5,579 explicit colors,
5,915 intentional neutral, zero unreviewed
- `python3 tools/validate.py` — 128 tests passed; lossless core
validated 1,355 archetypes and 3,651 maps; schema, catalog, contracts,
syntax prototypes, resource collection, and both release archives passed
- content catalog — 8,105 definitions and 68,595 references
- `git ls-tree -r --name-only HEAD -- maps/light-source-evidence
tools/light-source-review tools/light_review_evidence.py
tools/tests/test_light_review_evidence.py` — no paths
- `git diff --check`

## Manual verification handoff

Use only the dedicated `issue-105-apartments` profile with a fresh
scenario and unique topology/port. Play through Sam's Incuna handoff,
speak to Elara, claim and enter the beach nook, store an item in its
sole chest, use the hammock, exit/re-enter, and relog. Confirm the
priest objective, entitlement, return point, and stored item persist;
repeat steward and portal interactions to confirm the grant remains
idempotent and does not unlock another region's housing. Stop the exact
topology with `./atrinik down NAME` before resetting its scenario. No
cleanup apply is required.
@zoeyrose
zoeyrose merged commit 908fd37 into main Aug 11, 2026
5 checks passed
@zoeyrose
zoeyrose deleted the feat/105-incuna-apartment-main branch August 11, 2026 18:32
@github-project-automation github-project-automation Bot moved this from Review to Done in Atrinik work Aug 11, 2026
@github-actions

Copy link
Copy Markdown

🎉 This PR is included in version 2.3.0 🎉

The release is available on:

Your semantic-release bot 📦🚀

zoeyrose added a commit that referenced this pull request Aug 11, 2026
## Summary

- update the Classic `1.x` grammar-contract documentation from the stale
pre-apartment count of 283 to the current authoritative count of 285
- add a regression test that parses the documented claim and compares it
to `object_grammar.known_fields`
- keep the grammar inventory, schema, authored content, gameplay, and
generated output unchanged

Linked issue: #135. The canonical `main` companion will carry the sole
closing keyword after this maintenance PR merges.

## Release-line reconciliation

At the pre-apartment snapshots, both release lines contained 283 known
object fields. #111/#112 added the shared `npc_id` and `property_id`
fields, making both current inventories byte-identical at 285 entries.
The current `1.x` documentation still reports 283; `main` reports 282.
This PR corrects and protects `1.x` first.

## Coordinates

- base: `1.x@ca2ed0f`
- head: `2e989fa9d6e11de7bc329e0e0e78ef312c6f2fcc`
- branch: `fix/135-grammar-field-count-1x`
- changed paths: `docs/CONTENT_GRAMMAR_CONTRACTS.md`,
`tools/tests/test_content_contracts.py`

## Validation

- focused documentation invariant test — passed
- `python3 tools/validate.py` — 129 tests passed; 3,561 canonical
archetypes complete
- `git diff --check`
- `git ls-files 'maps/light-source-evidence/*'` — empty
- exact remote comparison — one commit and both remote blobs identical
to the locally validated files

## Review

One complete leaf review confirmed the prose claim is derived from the
authoritative list length, the diff is limited to two paths, the
inventory remains unchanged at 285 entries, and no retired evidence or
generated output is introduced. No actionable findings remain.
zoeyrose added a commit that referenced this pull request Aug 23, 2026
## Summary

- make the Lost Memories apartment lesson regional: Incuna grants its
own tiny beach nook instead of reusing Strakewood housing
- add a 24×24 ocean-and-sand map with a deliberately small 12-tile
living area, one chest, and a two-part hammock that teaches and acts as
the save bed
- author stable NPC, property, action, map-object, and schema identities
for Elara Harth, the Incuna portal, and the new property
- keep Strakewood and Eld Woods ownership independent and validate exact
steward/portal bindings, entry/return coordinates, and the owner gate
- add two newly generated authored gameplay images, `hammock_a.101.png`
and `hammock_b.101.png`, with explicit Zoey Rose / GPLv2 attribution and
an OpenAI image-generation provenance note on each entry in the adjacent
`LICENSE`

Closes #105.

## Authored media and diagnostic imagery

The hammock PNGs are intentional source assets used by gameplay. They
are not lighting screenshots, contact sheets, or other generated review
output. Their adjacent license enumerates both files directly. The
repository's semantic-only lighting-review policy therefore does not
remove or prohibit these authored assets.

No light-source evidence PNG, capture manifest, proof scene, or
capture-only tool is tracked by this head.

## Release-line relationship

The independently validated Classic companion is #112. It links this
canonical `main` PR without taking ownership of issue completion.

## Runtime boundary

Replacement-stack ownership/grant execution remains deferred to
`atrinik/server#53` and `atrinik/protocol#9`. This PR keeps `main` on
the typed property-service boundary and fails closed if that action is
unavailable; Classic is not substituted as replacement runtime
verification.

## Coordinates

- base: `main@d14d678`
- head: `7a8f2cf4b97c0bc200a066d611f2ef8f660018ee`
- branch: `feat/105-incuna-apartment-main`

## Validation

- `python3 arch/license_check.py --text-only
--directory=arch/outdoor/hammock` — 2 licensed, 0 unlicensed; no invalid
file/directory entry
- `python3 tools/validate.py` — 128 tests passed; lossless core
validated 1,355 archetypes and 3,651 maps; schema, catalog, contracts,
syntax prototypes, resource collection, provenance/release gates, and
isolated archives passed
- light review — 97 archetypes, 4 artifacts, 11,393 instances across 625
maps; 5,558 explicit colors, 5,936 intentional neutral, zero unreviewed
- content catalog — 8,105 definitions and 68,597 references
- `git ls-tree -r --name-only HEAD -- maps/light-source-evidence
tools/light-source-review tools/light_review_evidence.py
tools/tests/test_light_review_evidence.py` — no paths
- `git diff --check`
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

feat(quests): teach apartments through the Incuna opening

1 participant