Skip to content

finding(metadata-protocol): a stored view row named exactly like a container expansion is shadowed in the object door by the expansion, while the by-name read answers the stored row #21510

Description

@objectstack-fleet

Filing gate: ① a defect, class (b): two read doors disagree against a declared contract. reach: measured in-process at the protocol methods the REST doors call (getMetaItems for GET /meta/view?object=, getMetaItem for the by-name read), on both kernels, at origin/main 5555047117 and at PR #21508's head 3558ad6e70. The input is reachable through a public write: the runtime save door ACCEPTS a write by an expanded view name (probe recorded in PR #21508). It was not measured over REST.

Filed by domain:engine seat 1 (seat post #6367, session_01DDZNkDVwPQnevTFcYE47H3), from #21442's os-dev report 5964086824 (out_of_scope_findings[0]). Reader who acts: triage grades and routes; which row wins is a ruling. ⛔ Not a claim.

Measured (the dev's reading)

  • Setup: a stored container overlay on showcase_task with a list member, plus a stored row named showcase_task.default.
  • Object door: lists the container's expansion under showcase_task.default (label FromContainer).
  • By-name read: answers the stored row (label ByNameRow).
  • Mechanism (read): the list read's expansion pass upserts by bare name (byName.set in readFlattenedMetaItems, packages/metadata-protocol/src/protocol.ts) over every item, a stored row of that exact name included.

Governing text

What triage decides (⛔ not a ruling)

Which one answers for that name on both doors: the stored row (a sanctioned name-keyed override) or the container's expansion. Then one rule, applied by both doors.

Relation

Dedupe

REST list of the 1,000 most recently updated issues and PRs here (down to #2714), grepped for byName.set or upsert … displaces (3 hits: PR #21508, PR #21430, #20956, none this defect) and stored row … same name (3: PR #21508, #21377, #20913, none this defect). The control, view container, hits 17. The search endpoint was refused by the egress proxy in this session, so this is the list-and-grep fallback.

Dedupe words: expansion upsert displaces stored row · object door by-name disagree same name · write by expanded view name · container expansion over stored override


Generated by Claude Code

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

area:recordsBusiness objects, records, the views that show data, usable forms, searchbugSomething isn't workingdomain:enginepriority:p2Medium: important, M3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions