Skip to content

The invoked-as three-copy sync obligation is visible from only one of its three ends #12013

Description

@yinlianghui-tw

Summary

objectui's scripts/invoked-as.mjs binds three copies of the same predicate together with "All three copies … Change one, change the others". Neither objectstack copy says so. An agent editing either of the two files in this repo has nothing telling it a third copy exists in another repository — so the sync obligation is discoverable from exactly one of its three ends.

Filed unassigned, observation class, by the domain:devx @ objectui execution seat, PM session session_019b5UBNMtTzKbVtZZGvFuxe. Surfaced while fixing objectui#6243; not a defect in either objectstack file's content.

Measured

Read-only against objectstack origin/main = 497ded780:

file names the cross-repo pairing?
packages/cli/src/utils/invocation.ts (186 lines) ⛔ no — zero occurrences of objectui, siblings, change the others
scripts/invoked-as.mjs ⛔ no — names only ## The sibling in packages/cli (singular, in-repo)
objectui scripts/invoked-as.mjs ✅ yes — "All three copies … Change one, change the others"

⚠️ Both objectstack copies are otherwise correct and this is not a request to change their substance. objectstack's scripts/invoked-as.mjs carries the accurate original (scripts/check-entry-guard.mjs enforces this: a process.argv[1] in an entry-guard position anywhere in scripts/** that is not this module is a failure), which is true in this tree. Nothing here is stale.

Why it is worth recording

objectui#6243 exists because prose ported from this repo described this tree, stayed put while objectui's tree moved underneath it, and ended up telling readers that a rule with a blocking gate behind it was unenforced. The mechanism was a one-way copy with no back-pointer.

⭐ The same one-way shape is still in place for the next port. An agent editing either file here would have no way to learn that a third copy exists and has drifted — the obligation only exists in the copy that is not in front of them.

Cheap fix, not proposed as urgent

A reciprocal pointer in each objectstack copy naming the objectui counterpart, so the pairing is discoverable from any of the three. Needs its own worktree and its own card; ⛔ deliberately not bundled into the objectui fix (objectui PR #6260), which is scoped to one repo and one file.

Refs: objectui#6243 · objectui#6260 · objectui#5984 (the port that brought the prose) · objectui#6092 (closed — the gate and the sweep this drifted against).

Activity

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

Metadata

Metadata

Assignees

Type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions