Recorded by the domain:devx @ objectui execution seat (PM session session_01FhBNJcLRZLe8M87VcUgpKr, R46) while accepting objectui#8173's measurement. ⛔ Filed finding only, unassigned — grading, domain:* and routing are the triage seat's. ⛔ Not a defect claim: nothing is broken, and the convention works.
Dedup: os-verify-lock and verify lock heavy both return 0 open issues; control term COVERED_SPECIFIERS returns 5 on the same instrument, so the zero is a reading and not a broken search.
What was observed
Every objectui agent that needs to run a heavy verification (a full vitest run, a timing measurement, a whole-project suite) has to serialise against the other agents sharing this 4-core container. The lock they use is:
/home/user/objectstack/scripts/pm/os-verify-lock.sh
— which lives in the sibling objectstack checkout, not in this repository. objectui has no scripts/pm/os-verify-lock.sh of its own, and nothing in objectui's own documentation names the path.
Measured during objectui#8173's measurement run (2026-09-07, ~15:52–16:35Z): three objectui worktrees were reaching for it by absolute path at the same time — the #8173 measurement (slot issue-8173-measure), and the #8139 and #8141 devs for their own verification runs. So it is not one agent's improvisation; it is the working convention, arrived at independently.
Why it is worth a card rather than nothing
An agent that does not know the path has two bad options, and both cost more than a line of prose would:
- Run heavy verification unserialised, which is how one agent's
turbo build lands inside another's timing measurement. objectui#8173 declared this hazard explicitly and designed a paired arm structure around it precisely because the lock excludes only other locked runs.
- Skip the heavy run and report a lighter one, which is a quieter failure.
The convention is discovered by reading another agent's report or another repo's AGENTS.md. That is a per-agent rediscovery cost on something that is already stable and already unanimous.
⛔ What this is NOT proposing
- ⛔ Not proposing that objectui grow its own copy of the script. A second lock file would defeat the point — the resource being serialised is the container, which both repos share, so a per-repo lock would let one objectui agent and one objectstack agent run heavy suites simultaneously while each believed it held the lock.
- ⛔ Not proposing an edit as a rider on any code PR. The natural home is objectui's
AGENTS.md, which is governed surface — such a PR parks for a human by design, so it must be a deliberate, separately-reviewed change and never a line slipped into an unrelated diff.
- ⛔ Not proposing wording. Whether this belongs in
AGENTS.md, in a lane reference, or nowhere at all is a judgement about the governed surface, and this seat does not make it.
Reproduce
ls /home/user/objectstack/scripts/pm/os-verify-lock.sh # present
ls scripts/pm/ 2>/dev/null # objectui has no such directory
grep -rn "os-verify-lock" AGENTS.md CLAUDE.md 2>/dev/null # no hit in objectui's own docs
Related: objectui#8173 (the measurement that surfaced it, and which declared the shared-box hazard in its own method section).
Generated by Claude Code
Recorded by the
domain:devx @ objectuiexecution seat (PM sessionsession_01FhBNJcLRZLe8M87VcUgpKr, R46) while accepting objectui#8173's measurement. ⛔ Filedfindingonly, unassigned — grading,domain:*and routing are the triage seat's. ⛔ Not a defect claim: nothing is broken, and the convention works.Dedup:
os-verify-lockandverify lock heavyboth return 0 open issues; control termCOVERED_SPECIFIERSreturns 5 on the same instrument, so the zero is a reading and not a broken search.What was observed
Every objectui agent that needs to run a heavy verification (a full
vitest run, a timing measurement, a whole-project suite) has to serialise against the other agents sharing this 4-core container. The lock they use is:— which lives in the sibling
objectstackcheckout, not in this repository. objectui has noscripts/pm/os-verify-lock.shof its own, and nothing in objectui's own documentation names the path.Measured during objectui#8173's measurement run (2026-09-07, ~15:52–16:35Z): three objectui worktrees were reaching for it by absolute path at the same time — the #8173 measurement (slot
issue-8173-measure), and the #8139 and #8141 devs for their own verification runs. So it is not one agent's improvisation; it is the working convention, arrived at independently.Why it is worth a card rather than nothing
An agent that does not know the path has two bad options, and both cost more than a line of prose would:
turbo buildlands inside another's timing measurement. objectui#8173 declared this hazard explicitly and designed a paired arm structure around it precisely because the lock excludes only other locked runs.The convention is discovered by reading another agent's report or another repo's
AGENTS.md. That is a per-agent rediscovery cost on something that is already stable and already unanimous.⛔ What this is NOT proposing
AGENTS.md, which is governed surface — such a PR parks for a human by design, so it must be a deliberate, separately-reviewed change and never a line slipped into an unrelated diff.AGENTS.md, in a lane reference, or nowhere at all is a judgement about the governed surface, and this seat does not make it.Reproduce
Related: objectui#8173 (the measurement that surfaced it, and which declared the shared-box hazard in its own method section).
Generated by Claude Code