Skip to content

One veil, one door; a sibling is not a parent - #186

Merged
blisspixel merged 1 commit into
mainfrom
fix/veil-and-lineage
Aug 9, 2026
Merged

One veil, one door; a sibling is not a parent#186
blisspixel merged 1 commit into
mainfrom
fix/veil-and-lineage

Conversation

@blisspixel

Copy link
Copy Markdown
Owner

The last two confirmed findings from this hunt round. Both are the same shape: a rule that was right, and a surface that did not follow it.

One veil, one door

The veil gate moved into core earlier this cycle so both faces read one rule. But the MCP face only shared the gate, not the door: its room lookup was the catalog alone, so a learner the terminal admitted to an unlisted room was told here that the room does not exist. One player, one standing, two answers depending on which face they asked through.

describe_room, reveal_room, and play_room now find rooms through one door (find_room_for), which is the catalog always plus the unlisted ones for a journey behind_the_veil admits. A player outside the veil still finds the room unlisted, because this opens the same door the terminal opens, not a wider one; the test pins both halves.

play_room needed the journey threaded in to ask that question, which it now has from the dispatcher that already held the path. Variation stays a catalog contract, as on the terminal.

A sibling is not a parent

An untitled creation's canonical link excludes lineage, so two unedited forks of the same parent carry identical links and identical descents. Matching on the link alone let each adopt the other: both wore a remix badge, the real parent went uncredited, and D walked a circle between them forever.

A candidate that descends from the same creation is standing beside this one, not above it. The test puts a parent and two twin forks on one wall, walks up from each twin and requires the walk to end (at the parent), and requires the parent to carry both remixes.

Full workspace gates green through the pre-commit hook.

Two confirmed hunt findings, both about a rule that was right and a
surface that did not follow it.

The veil gate moved into core earlier this cycle so both faces read one
rule, but the MCP face only shared the gate, not the door: its room
lookup was the catalog alone, so a learner the terminal admitted to an
unlisted room was told here that the room does not exist. One player,
one standing, two answers. describe, reveal, and play now find rooms
through one door on both faces. A player outside the veil still finds
the room unlisted: this opens the same door, not a wider one, and the
test pins both halves.

On the Gallery wall, an untitled creation's canonical link excludes
lineage, so two unedited forks of the same parent carry identical links
and identical descents. Matching on the link alone let each adopt the
other: both wore a remix badge, the real parent went uncredited, and D
walked a circle between them forever. A candidate that descends from
the same creation is standing beside this one, not above it. The test
walks up from both twins and requires the walk to end, at the parent,
and requires the parent to carry both remixes.
Copilot AI lite review requested due to automatic review settings August 9, 2026 16:40

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This pull request aligns behavior across faces and fixes a gallery lineage resolution edge case that could create incorrect remix attribution and parent cycles.

Changes:

  • MCP face now resolves room IDs through a shared lookup path that includes hidden rooms only when the journey is behind the veil, matching terminal behavior.
  • play_room is updated to accept the journey context, and a regression test pins consistent behavior for describe, reveal, and play.
  • Gallery lineage resolution now avoids treating sibling forks (same parent link) as parent candidates, with a test covering the twin fork scenario.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated no comments.

File Description
faces/mcp/src/main.rs Introduces find_room_for and threads journey context into play_room, plus tests to ensure hidden room access matches terminal rules.
faces/app/src/gallery.rs Prevents sibling fork mis-parenting in resolve_lineage and adds a regression test to ensure lineage walks terminate at the real parent.
CHANGELOG.md Documents both fixes in the Unreleased section.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@blisspixel
blisspixel merged commit 93fef54 into main Aug 9, 2026
18 checks passed
@blisspixel
blisspixel deleted the fix/veil-and-lineage branch August 9, 2026 16:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants