WORK-610
ID:WORK-610Status:ready

Let findAllByName resolve owner-marked nodes across a rune boundary

SPEC-146 Problem 2. findAllByName stops dead at any nested data-rune, which is right for every rune today and wrong the moment content is placed inside a primitive on another rune's behalf (SPEC-145). Only node-sourced values are affected: properties from a node, text, and the node half of entities. Attribute-sourced values resolve through the field bag and are untouched by nesting.

Priority:mediumComplexity:simpleMilestone:v0.39.0Source:SPEC-146
changeset-release/main View source

Criteria completion

Criteria completion: 0 of 7 (0%) checked; tracking started on Oct 7, no incremental history yet0%25%50%75%100%Oct 7Oct 11

Tracking started Oct 7 — check back for trends.

Branches 5
History 4
  1. 7effda1
    Content editedby Claude
    plan: close WORK-610
  2. ed2b992
    Content editedby Claude
    fix(runes): let findAllByName resolve owner-marked nodes across a rune b
  3. c9b8c9c
    Created (ready)by github-actions[bot]
  4. 1046f41
    Content editedby Claude
    docs(plan): add v0.39.0 milestone, Declarations part two

Approach

Replace the hard stop with SPEC-146's foreign mode: past another rune's boundary keep descending, but admit only nodes carrying data-owner equal to the resolving rune. The marker comes from WORK-609.

This change is meant to be inert: no rune places content across a boundary yet, so the foreign branch finds nothing and output must not move (D5). The baseline check is the proof.

Acceptance Criteria

  • findAllByName crosses a nested-rune boundary in foreign mode, admitting only nodes marked for the resolving rune
  • The node-sourced scope of Problem 2 is asserted by a test pair: one table over a composed and a declared tree, where the attribute-sourced property resolves in both and the node-sourced one resolves only after the fix
  • A composed entity whose schema values are all attributes publishes correctly before this change, asserted so the narrower scope cannot be lost
  • Multiplicity is preserved: a node-sourced property carrying a set (recipe's ingredient shape, SPEC-154) resolves every member across the boundary
  • The character / character-section name collision the guard was added for remains suppressed, asserted by a test naming that history
  • npm run seo:baseline:check shows zero diff attributable to this change
  • refrakt contracts --check reports no drift on either contract copy

Blocked by

  • WORK-609

References

  • SPEC-146 — Problem 2, the mechanism, D5
  • SPEC-145 — the consumer this unblocks