Repository navigation
feat(placement-plan): apply the owner decisions of 2026-10-19 - #48
Conversation
Record the owner's answers to the six questions plan version 2 left open as dated generator inputs and check each one: 1. Zechna's first hole stays a portal: its blocked stairwell site carries owner_decision (OWNER_PORTALS). 2. Stairwells without stair archetypes show the owner's fallback on their intermediate tiles: wells ladder_down (SR17, SR18), invis_exit stairs_stone_down (SW6). A stair family still wins. 3. rockforge_c is a proposed placement on layer -7, exactly under rockforge_b (OWNER_ALIGN replaces the tentative alignment hint). 4-6. The 'below' orientations, version 1's classifications, the relayering judgement calls, the v1 placement changes and the seam stair archetypes are confirmed as derived. The generator refuses to publish when a decision no longer matches, and verify_plan.py re-checks every decision from the JSON (plan schema /5). Regenerated from atrinik/content main 3828651987a5 (inputs digest unchanged). REPORT.md lists one new open question: rockforge_c's 25 maps are empty, so its placement occupies no tile. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Dependency Review✅ No vulnerabilities or license issues found.Scanned FilesNone |
|
@codex review Please do a deep, thorough review of the whole diff and the code it touches. Report every issue you find in this pass: correctness, security, concurrency, error handling, edge cases, tests and docs, including lower-severity (P2) findings, not only the most important few. Every finding gets fixed each round, so a complete list now saves extra rounds. Please do a deep, thorough review of the whole diff and the code it touches and report every issue you find in this pass, including P2s, not only the most important few. Risky areas: the fail-closed owner-decision checks in build_plan.py, the verifier's new checks for decided portals, appearance fallbacks and owner alignments in verify_plan.py, and whether the generator and verifier agree. |
|
@codex security review |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
🛡️ Codex Security ReviewSecurity review completed. No security issues were found in this pull request. Reviewed commit: Only the user who started this review can view the report in Codex. ℹ️ About Codex security reviews in GitHubThis is an experimental Codex feature. Security reviews are triggered when:
Once complete, Codex will leave suggestions, or a comment if no findings are found. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 4aa9b9cad7
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Address the first Codex review round of #48: - A portal decision names one exit object (source map, line, tile, archetype) and the plane ends of its blocked site, so a duplicate hole on the tile or a moved site is not silently treated as decided. - Every stair-art fallback must still dress a stairwell; an unused one is a stale decision (generator and verifier). - The verifier rejects an owner alignment on a group with exit records, and the generator re-checks it after wiring. - Each confirmed placement change must end at its group's current offsets. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Round 1 (Codex review of 4aa9b9c): 4 P2 findings, all fixed in 3fdbe3e.
Validation on 3fdbe3e: |
|
@codex review Please do a deep, thorough review of the whole diff and the code it touches. Report every issue you find in this pass: correctness, security, concurrency, error handling, edge cases, tests and docs, including lower-severity (P2) findings, not only the most important few. Every finding gets fixed each round, so a complete list now saves extra rounds. Please do a deep, thorough review of the whole diff and the code it touches and report every issue you find in this pass, including P2s, not only the most important few. Risky areas: the fail-closed owner-decision checks in build_plan.py, the verifier's checks for decided portals, appearance fallbacks and owner alignments in verify_plan.py, and whether the generator and verifier agree. |
|
@codex security review |
🛡️ Codex Security ReviewSecurity review completed. No security issues were found in this pull request. Reviewed commit: Only the user who started this review can view the report in Codex. ℹ️ About Codex security reviews in GitHubThis is an experimental Codex feature. Security reviews are triggered when:
Once complete, Codex will leave suggestions, or a comment if no findings are found. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 3fdbe3ee72
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Address the second Codex review round of #48 with one rule instead of more special cases: a decision holds only while the evidence it was made on is unchanged. - Portal: the premise (SHA-256 of the canonical JSON) of the blocked site record: owners, ends, exits and what occupies the column. - Orientation: the derived evidence itself ("name keyword (below)"), so a directional exit that also says "below" is a new premise. - Classification: the premise of the derived evidence. - Alignment: the premise of the group's sheet layout. - Stair-art fallback: the stairwells it dresses (SW6, SR17, SR18). The generator refuses to publish on any change and names the new premise; verify_plan.py recomputes every binding from the JSON. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Round 2 (Codex review of 3fdbe3e): 2 P2 findings, both fixed in bb28657. Both findings were cases of a decision outliving its premise. Instead of adding checks one case at a time, every owner decision is now bound to the evidence it was made on, and it stops applying when that evidence changes:
The generator refuses to publish on any change and names the new premise. Validation on bb28657: |
|
@codex review Please do a deep, thorough review of the whole diff and the code it touches. Report every issue you find in this pass: correctness, security, concurrency, error handling, edge cases, tests and docs, including lower-severity (P2) findings, not only the most important few. Every finding gets fixed each round, so a complete list now saves extra rounds. Please do a deep, thorough review of the whole diff and the code it touches and report every issue you find in this pass, including P2s, not only the most important few. Risky areas: binding each owner decision to its evidence (premise fingerprints) in build_plan.py and verify_plan.py, and whether the generator and verifier agree. |
|
@codex security review |
🛡️ Codex Security ReviewSecurity review completed. No security issues were found in this pull request. Reviewed commit: Only the user who started this review can view the report in Codex. ℹ️ About Codex security reviews in GitHubThis is an experimental Codex feature. Security reviews are triggered when:
Once complete, Codex will leave suggestions, or a comment if no findings are found. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: bb286579e7
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Address the third Codex review round of #48: - Each stair-art fallback is bound to the stairwells it dresses by id and by the premise of the stairwell record (kind, owners, direction and every replaced exit), so a different stairwell that takes a positional id such as SW6 is not dressed by the old decision. - The verifier requires a settings entry for every owner confirmation a group carries in its evidence (orientations, classifications), so dropping an entry from settings fails. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…rint Record the owner's 2026-10-19 answer to the question this plan raised (decision 7, OWNER_NO_FOOTPRINT, settings.owner_no_footprint): rockforge_c stays placed although its 25 maps are empty headers, so it occupies no tile. A footprint appears automatically when content is added and the plan is regenerated, and the spot is fixed, so a later collision makes the generator refuse. The open item in REPORT.md clears; no owner decision is open. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Round 3 (Codex review of bb28657): 2 P2 findings, both fixed in eee0cdc.
Also in this push: d9ede80 records the owner's answer (2026-10-19) to the question this PR raised: keep Validation on d9ede80: |
|
@codex review Please do a deep, thorough review of the whole diff and the code it touches. Report every issue you find in this pass: correctness, security, concurrency, error handling, edge cases, tests and docs, including lower-severity (P2) findings, not only the most important few. Every finding gets fixed each round, so a complete list now saves extra rounds. Please do a deep, thorough review of the whole diff and the code it touches and report every issue you find in this pass, including P2s, not only the most important few. Risky areas: binding each owner decision to its evidence (premise fingerprints) in build_plan.py and verify_plan.py, the new owner_no_footprint decision, and whether the generator and verifier agree. |
|
@codex security review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: d9ede80f8c
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
🛡️ Codex Security ReviewSecurity review completed. No security issues were found in this pull request. Only the user who started this review can view the report in Codex. ℹ️ About Codex security reviews in GitHubThis is an experimental Codex feature. Security reviews are triggered when:
Once complete, Codex will leave suggestions, or a comment if no findings are found. |
…t decisions Address the fourth Codex review round of #48: - The owner alignment's premise covers what its reason rests on: the sheet layouts of rockforge_a, rockforge_b and rockforge_c and the exit records between them (the a<->b stairs), not only rockforge_c's own sheets. - Every placed group without a footprint needs an owner decision to keep it placed: the generator refuses otherwise and the verifier fails, so dropping or redirecting settings.owner_no_footprint is caught. A decided group may still gain a footprint later. - REPORT.md describes a decided group by its current footprint, so it no longer calls a group empty once content is added. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Round 4 (Codex review of d9ede80): 3 P2 findings, all fixed in 2f9460a.
Validation on 2f9460a: |
|
@codex review Please do a deep, thorough review of the whole diff and the code it touches. Report every issue you find in this pass: correctness, security, concurrency, error handling, edge cases, tests and docs, including lower-severity (P2) findings, not only the most important few. Every finding gets fixed each round, so a complete list now saves extra rounds. Please do a deep, thorough review of the whole diff and the code it touches and report every issue you find in this pass, including P2s, not only the most important few. Risky areas: the evidence bindings (premises) of the owner decisions in build_plan.py and verify_plan.py, and whether the generator and verifier agree. |
|
@codex security review |
🛡️ Codex Security ReviewSecurity review completed. No security issues were found in this pull request. Reviewed commit: Only the user who started this review can view the report in Codex. ℹ️ About Codex security reviews in GitHubThis is an experimental Codex feature. Security reviews are triggered when:
Once complete, Codex will leave suggestions, or a comment if no findings are found. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 2f9460a5a0
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Address the fifth Codex review round of #48 for the whole class rather than case by case: every premise now covers the full JSON records behind its decision, computed the same way by the generator and the verifier. - Portal: the blocked site record and the full record of each of its exits. - Classification: the derived evidence plus the group's maps, the content fields of every exit record it holds (the garden's hole target included) and its script references. - Orientation: the derived evidence plus the same group content. - Relayering judgement calls: the calls and every record they summarise (regions, kept regions, moved units, caves, split tiles, seams, new stairs, steep steps, new contacts) and the one-way relayering stairwells. premise() hashes the evidence as the plan's JSON holds it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Round 5 (Codex review of 2f9460a): 2 P2 findings, both fixed in 11092ef. Both were premises that left part of the evidence out. Instead of adding the specific missing piece, every premise now covers the full JSON records behind its decision, computed by the same functions in the generator and the verifier (a test checks the two copies agree):
Validation on 11092ef: |
|
@codex review Please do a deep, thorough review of the whole diff and the code it touches. Report every issue you find in this pass: correctness, security, concurrency, error handling, edge cases, tests and docs, including lower-severity (P2) findings, not only the most important few. Every finding gets fixed each round, so a complete list now saves extra rounds. Please do a deep, thorough review of the whole diff and the code it touches and report every issue you find in this pass, including P2s, not only the most important few. Risky areas: the evidence premises of the owner decisions (build_plan.py and verify_plan.py), and whether the generator and verifier agree. |
|
@codex security review |
🛡️ Codex Security ReviewSecurity review completed. No security issues were found in this pull request. Reviewed commit: Only the user who started this review can view the report in Codex. ℹ️ About Codex security reviews in GitHubThis is an experimental Codex feature. Security reviews are triggered when:
Once complete, Codex will leave suggestions, or a comment if no findings are found. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 11092ef9d4
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Address the sixth Codex review round of #48: - The verifier derives each placed group's footprint from its member occupied_rows and requires occupied_tiles_by_layer to repeat it, so a claimed footprint cannot bypass the no-footprint decision. - An owner decision's date must be one schema /5 records (2026-10-19), not any digit-shaped value. - The generator checks up front that every group an owner decision names still exists, and refuses with the documented message instead of a KeyError. - New fidelity tests: an owner decision removed from settings together with its effect is a self-consistent edit that the JSON-only check cannot see; verify_content (the rebuild from the generator's OWNER_* constants) rejects it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Round 6 (Codex review of 11092ef): 4 P2 findings. 3 are fixed in 7e1d57c and 1 is declined with evidence.
Validation on 7e1d57c: |
|
@codex review Please do a deep, thorough review of the whole diff and the code it touches. Report every issue you find in this pass: correctness, security, concurrency, error handling, edge cases, tests and docs, including lower-severity (P2) findings, not only the most important few. Every finding gets fixed each round, so a complete list now saves extra rounds. Please do a deep, thorough review of the whole diff and the code it touches and report every issue you find in this pass, including P2s, not only the most important few. Note: the JSON-only verifier deliberately leaves self-consistent edits (a decision dropped from settings together with its effect) to the content-fidelity check, per its docstring. |
|
@codex security review |
🛡️ Codex Security ReviewSecurity review completed. No security issues were found in this pull request. Reviewed commit: Only the user who started this review can view the report in Codex. ℹ️ About Codex security reviews in GitHubThis is an experimental Codex feature. Security reviews are triggered when:
Once complete, Codex will leave suggestions, or a comment if no findings are found. |
|
Codex Review: Didn't find any major issues. Hooray! Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
Summary
Applies the owner's 2026-10-19 answers to the six questions the overworld placement plan (version 2, #45 and #47) left open, plus the answer to the one question this PR raised (decision 7). Each answer is a dated input of the generator, recorded in the JSON settings, bound to the evidence it was made on, and checked by the verifier. The plan, the JSON and
REPORT.mdare regenerated fromatrinik/contentmain3828651987a5.OWNER_PORTALS: the blocked stairwell site of world_7_66_-1 (13,15) carriesowner_decision; the exit stays a portal; no stairwell through zechna_temple_1_1STAIRWELL_APPEARANCE_FALLBACKSby exit archetype (well_bucket,well_stone->ladder_down;invis_exit->stairs_stone_down). Applied to SR17, SR18 (ladder_down) and SW6 (stairs_stone_down).OWNER_ALIGN: #26rockforge_cis a proposed placement (no longer tentative) on layer -7, exactly under rockforge_b at the same x/y (-13, 1347, -7)OWNER_ORIENTATIONSfor #3 cave_morlarg, #16 lab, #17 dark_cave, #18 giant_strongholdOWNER_CLASSIFICATIONS: Everlink and the Loki desert-plane chain (incl. unusual_garden) other_world; the three Incuna lower decks ship; hall_of_dms systemOWNER_RELAYERING_JUDGEMENT_CALLS(all 11, exactly as listed),OWNER_PLACEMENT_CHANGES_FROM_V1(ellamin, rockforge_a/_b/_c one layer deeper),SEAM_STAIR_ARCHETYPES(the 46 seam stairs keepstairs_stone_up/stairs_stone_down)OWNER_NO_FOOTPRINT: its 25 maps are empty headers, so it occupies no tile. A footprint appears automatically when content is added and the plan is regenerated, and the spot is fixed, so a later collision makes the generator refuse.REPORT.mdmoves items 1-6 (and adds 7) to "Owner decisions applied" under "Decided 2026-10-19", updates the summary (28 placed groups / 207 maps, 30 separate / 267 maps, no unreachable group), and lists no open owner decision.Implementation / behavior
/5. New settings:owner_portals,stairwell_appearance_fallbacks(with the arch file defining each appearance),owner_alignments(replacestentative_alignments),owner_no_footprint,owner_orientations,owner_classifications,owner_relayering_judgement_calls,seam_stair_archetypes. Each entry has adecideddate. A placement fixed by the owner carriesalignment_reason(replacestentative_reason). A blocked site whose exits the owner keeps as portals carriesowner_decision.name keyword (below)). A classification is bound to the premise of its evidence. The judgement calls are bound to their exact texts. The generator fails closed: it refuses to publish when any binding no longer holds (naming the new premise), or when an archetype it adds is not defined in content. This follows the existing pattern for the 2026-10-18 decoration decision.owner_decisionexactly when all its exits are decided;v2equal to the group's offsets) hold, and every confirmation a group carries has its settings entry;owner_decision, SW6/SR17/SR18's appearance (5 intermediate tiles) and the schema. No PNG changes, because rockforge_c occupies no tiles (see below).Validation
Run in
/home/zoey/dev/worktrees/content-toolkit-decisionsagainst a clean clone ofatrinik/contentmain3828651987a5(/home/zoey/dev/worktrees/content-plan-v2-input):PATH=~/.cargo/bin:<syft 1.50.0, checksum-verified>:$PATH PLACEMENT_PLAN_CONTENT=<clone> tools/validate.sh: passed (exit 0)python3 -I scripts/verify_plan.py placement-plan.json --content <clone>: ok, exit 0python3 -I scripts/build_plan.py --content <clone> --out . --check: all 34 artifacts byte-identicalPLACEMENT_PLAN_CONTENT=<clone> python3 -I scripts/test_placement_plan.py: 100 tests OK, including the newOwnerDecisions(verifier tampering),OwnerDecisionRules(the generator's fail-closed checks, no content needed) and report open-decision testsgit diff --check: cleanContent main moved from
3ad20150da76(#45/#47) to3828651987a5. The only new commit (atrinik/content#274) touches.github/dependabot.ymlandpackage*.json, nothing underarch/ormaps/. The inputs digest is unchanged (fadd4780f4b88028), and with the old code the rebuild differed only incontent_git_head.Limitations / follow-up
rockforge_cmaps are empty: a map header and tile links, no objects (rockforge_b has 23 of 25 empty; listed under "Data problems found"). The owner answered on 2026-10-19: keep it placed with no footprint (decision 7).🤖 Generated with Claude Code