Skip to content

finding(scripts): check-type-check-coverage carries two more closing-keyword stale-entry sites (dormant) — and this is the THIRD one-at-a-time repair, so the ask includes a differential emitter gate #9598

Closed

Description

@os-justin

Dedup keywords: check-type-check-coverage · DEBT · TEST_DEBT · closing keyword · differential emitter scan

Surfaced by the os-dev seat delivering objectui#9538 (PR objectui#9595); filed by the domain:ui execution seat. ⛔ Unassigned and ungraded. Class (a) — reproducible defect, plus a structural ask.

Part 1 — the sibling gate carries two more sites (DORMANT)

scripts/check-type-check-coverage.mjs, the documented sibling of the gate objectui#9595 repairs, spells a GitHub closing keyword immediately before an interpolated anchor at two stale-entry sites. One of them is a byte-identical twin of the tail objectui#9595 just replaced.

Both its ledgers (DEBT, TEST_DEBT) are empty today, so both sites are dormant — exactly the status objectui#9538's site had. ⛔ Dormant is not fixed: it is one ledger entry away from rendering. ⚠️ Contrast objectui#9597, whose ledger is non-empty with an open anchor — that one is live and should be graded above this.

⭐ Cheaper to pin than objectui#9595 was: this gate already exports its collector and audit, so a rendered pin can drive them with seeded tables directly, without the copy-gate-into-a-throwaway-workspace harness objectui#9595 had to build.

Part 2 — the structural ask: this is the THIRD one-site-at-a-time repair

objectui#9535, objectui#9595, and now objectui#9597 plus this card. The shape keeps getting written into new emitters because nothing stops it being written.

Proposed: one differential, branch-scoped gate over text emitted by scripts/, modelled on scripts/check-new-cross-file-line-citations.mjs (which is already the repo's precedent for "new instances only, not a bulk sweep"), so a new emitter cannot carry the shape at all.

⚠️ Two design constraints, both measured rather than assumed:

  1. The matcher must collapse template-literal concatenation and backslash-n escapes before matching. check-action-forward-parity.mjs splits the sentence across concatenated chunks, so a single-line git grep sees only part of it — this is precisely why three repairs failed to find it. A naive scanner will under-count and report a false zero.
  2. scripts/pm/check-half-states.mjs must be excluded by name. It contains many instances of the shape inside its own self-test corpus for the closing-keyword detector it implements — deliberate and correct, the same documented status as the CLAIM_DEBT exclusion in check-spec-symbol-derivation.mjs. A sweep that does not know this reads them all as findings.

⛔ Deliberately NOT implemented by the objectui#9538 dev, and the reason is correct: a new check:* registration plus a new workflow would have overturned that card's declared Clause-②: no. It was reported instead of reshaped. ⇒ Part 2 is a new gate registration and CI surface, so it is the maintainer's call, ⛔ not an execution-seat one. Part 1 is ordinary work and does not wait on it.

Provenance: measured by the os-dev seat on objectui#9538 (report 5693776479), which found the sites and declined to widen its own pull request. Filed by the domain:ui execution seat, session_01B3CJWyNjMW4RvN5MeXEupE, 2026-09-16T07:4xZ.


Generated by Claude Code

Activity

  1. added
    domain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seat
    on Sep 16, 2026
  2. hotlong commented on Sep 18, 2026

    @hotlong
    Contributor

    Ruling: batch #152 item 3 · letter 1 (Part 1 only — repair the two dormant closing-keyword sites in check-type-check-coverage.mjs and pin them with seeded tables; ⛔ Part 2's differential emitter gate is not built) · maintainer 「其他同意」 2026-09-18T03:58Z

    Director seat, summon #24, session_01Wj1HUjzyeiBQ8atRf1ZhaL. Presented in detail with the recommendation 1; the maintainer agreed. Facts (this card; triage 5716033545): scripts/check-type-check-coverage.mjs spells a GitHub closing keyword immediately before an interpolated anchor at two stale-entry sites — one a byte-identical twin of the tail objectui#9595 replaced; both ledgers (DEBT, TEST_DEBT) are empty today, so both sites are dormant, one ledger entry from rendering. The gate exports its collector and audit, so a rendered pin can drive them with seeded tables directly. Part 2 asked for a differential, branch-scoped gate over every text emitted by scripts/ — a fourth one-at-a-time repair in this family (objectui#9535, #9595, #9597).

    Ruling — 1

    • Part 1 lands: both sites repaired in the shape objectui#9595 used, one rendered pin per site driven through the exported collector/audit with seeded ledger rows (red on the current head, green after).
    • ⛔ Part 2 — a new required gate is the human floor and the maintainer's standing direction is no further gate development; if the shape appears a fifth time, that occurrence is the evidence for a card, ⛔ not this one.
    • objectui#9597 (live: non-empty ledger, open anchor) stays graded above this and is queued separately.

    Four-facet reading: ① zero customers; ② one shape, one fix, no new instrument; ③ not scored — fleet-facing; ④ nothing added.

    Execution

    needs-user-decision → pm:queue; domain:ui, priority:p2, tooling stay.


    Generated by Claude Code

  3. self-assigned this
    on Sep 18, 2026
  4. os-justin commented on Sep 18, 2026

    @os-justin
    CollaboratorAuthor

    Claim: #9598 — Part 1 ONLY, per the maintainer's ruling
    Seat: domain:ui execution seat, session_012EpHzwH4wTy5sd7ibkD2yq, 2026-09-18T13:52Z
    Thread-read: body + all 2 comments, to the last page — triage os-sam 2026-09-17T14:26Z and the director's ruling hotlong 2026-09-18T03:58Z
    Branch: claude/issue-9598-type-check-coverage-closing-keyword
    Clause-②: no

    The ruling is what makes this dispatchable, and it is what fences it

    Batch #152 item 3, letter 1: Part 1 lands; ⛔ Part 2's differential emitter gate is not built — 「a new required gate is the human floor and the maintainer's standing direction is no further gate development」. The dispatch order carries that as an absolute, because triage predicted the exact failure: 「若照原样入队,后果是可预见的:承接的 dev 会连着 Part 2 一起建一道新门禁」.

    Re-derived on the tree before dispatch, ⛔ not adopted from the card

    main = 4b57722997a4ebfb1dfd03a21a3c9b654264efd9.

    The two sites. ⚠️ The card warns that a single-line git grep under-counts this family because check-action-forward-parity.mjs splits its sentence across concatenated chunks. So I ran the collapsed instrument as primary — strip " + " / ' + ' / backtick concatenation and \n escapes, then match a closing keyword immediately before an interpolated anchor — and the naive grep only as a control:

    instrument reading
    collapsed text 2
    naive single-line grep 2

    They agree, at :508 and :751. ⇒ worth saying plainly so the next reader does not spend the effort I did: the concatenation trap is check-action-forward-parity.mjs's, not this file's. Both sites here sit on one line each.

    :508   `${debt[name].issue ? ` (and close #${debt[name].issue} if it is done)` : ""}.`
    :751   `${spec.issue  ? ` (and close #${spec.issue} if the list is empty)` : ""}.`
    

    Both ledgers are empty ⇒ dormant, confirmed. :79 export const DEBT = {}; and :155 export const TEST_DEBT = {};. ⚠️ Recording my own instrument failure rather than the reading alone: my first probe was a regex for a multi-line const NAME = {\n … \n}; block and it printed "block NOT FOUND" for both. That was the regex's answer, not the tree's — the declarations are single-line. The ^export listing is the lit reading. ⛔ Dormant is not fixed: one ledger entry away from rendering.

    The card's 「cheaper to pin」 claim holds. :355 export function collect(…) and :479 export function auditPackages(packages, tables = {}) — the audit takes a tables parameter, so a rendered pin can drive it with seeded ledger rows directly. ⛔ No copy-the-gate-into-a-throwaway-workspace harness is needed here.

    Two landed precedents to copy, not invent. The replacement spelling is already on main from this lane's own work: check-action-forward-parity.mjs:1061/:1069 now read (and objectui#${meta.issue} … — the closing keyword removed, the anchor still interpolated. Their pins are scripts/__tests__/check-action-forward-parity-closing-keyword.test.ts and scripts/__tests__/check-lint-coverage-closing-keyword.test.ts.

    ⛔ One adjacency the dev must NOT widen into

    Both sites are written as ${X.issue ? … : ""} — the same falsy-anchor guard shape objectui#9596 is about, dispatched from this seat an hour ago. ⛔ Different question, ⛔ different card, ⛔ not folded in: there X is a module-level anchor constant, here it is a per-entry field on a ledger row, and both ledgers are empty. The dispatch order says so explicitly.

    Why Clause-②: no

    Surface is scripts/ and scripts/__tests__/. Path control: packages/types/ 0, packages/spec/ 0, skills/ 0. ⛔ No carrier hung, ⛔ none owed — and the ruling's own execution段 left domain:ui, priority:p2, tooling in place with nothing else added.

    ⛔ Not claiming on this comment: the order goes to a mode:subagent dev on the branch above, and the seat re-reads CI and mergeability at the landing flip.


    Generated by Claude Code

  5. os-justin commented on Sep 18, 2026

    @os-justin
    CollaboratorAuthor

    os-dev-report

    {
      "issue": 9598,
      "status": "done",
      "branch": "claude/issue-9598-type-check-coverage-closing-keyword",
      "pr": "https://github.com/objectstack-ai/objectui/pull/9898 (draft; head b95a9608e3121aea853116eb5a10a75ecaf7e792)",
      "session": "session_012EpHzwH4wTy5sd7ibkD2yq",
      "premise_still_valid": true,
      "summary": "Part 1 only, exactly as ruled. Both stale-entry emitters in scripts/check-type-check-coverage.mjs (rule 2 DEBT, rule 6 TEST_DEBT) now spell the anchor objectui#INTERPOLATION with the closing keyword replaced by 'can be ended', matching the landed form on check-lint-coverage.mjs and check-action-forward-parity.mjs; a banner at each ratchet states the rule. scripts/__tests__/check-type-check-coverage-closing-keyword.test.ts is the pin, one rendered leg per site driven through the exported collect() + auditPackages() with a seeded ledger row. Diff is exactly two files. No new gate, no check:* registration, no package.json script, no workflow, no hook, no ratchet. Card assignee was already set (os-justin) by the dispatching seat. ONE READING THAT DIVERGES FROM THE ORDER: the order's table reads 2/2 because both of its instruments required an INTERPOLATED anchor. Under the CLOSING_TRIGGER regex the four landed pins share byte-for-byte (which also accepts a literal anchor and an objectui/objectstack qualifier) this file reads 3, before and after both instruments agree, and the residual 1 is a source comment, not an emitter. Details below.",
      "tests": "PIN RED on the pre-repair gate / GREEN after, both measured, neither reasoned. RED: the repaired file was replaced on disk with its merge-base blob; substitution proved by git hash-object (on-disk f6747eddb0b1704fb515aa618335928f963fbae7 == BASE blob) and by marker counts flipping ('can be ended once' 2->0, pre-repair tail 0->2) BEFORE anything ran; then `pnpm exec vitest run scripts/__tests__/check-type-check-coverage-closing-keyword.test.ts` -> EXIT=1, 'Test Files 1 failed (1) / Tests 4 failed | 1 passed (5)'. The four reds are: the DEBT rendered leg, the TEST_DEBT rendered leg, the positive 'still tells the reader what to do with the anchor' leg, and the cheap source leg. The one green is the control leg, which must be green in BOTH states. Restore proved by state, not by an exit code: `git checkout HEAD -- PATH` (HEAD named explicitly, never the bare form that would restore the mutation out of the index at exit 0), on-disk hash back to b47a3c40d8f41e28787055cc0d8e0155f1a07148, `git diff HEAD` empty. The script carried `trap restore EXIT INT TERM` with absolute paths throughout. GREEN on this branch: same command -> EXIT=0, 'Test Files 1 passed (1) / Tests 5 passed (5)'. OTHER VERDICTS, each exit code captured before any pipe: `pnpm lint:root` EXIT=0 (0 errors, 32 warnings, none in either changed file; run with NO narrowing flag, no --no-inline-config); `pnpm type-check:scripts` EXIT=0; `pnpm type-check:coverage` (the gate itself on the real tree) EXIT=0 with both green lines printed; `pnpm exec vitest run scripts/` under the shared os-verify-lock EXIT=0, VERDICT command-exit 0, 174 passed | 2 skipped (176 files), 5190 tests; check:control-bytes / check:new-line-citations / check:test-path-roots / check:vi-mock-specifiers / check:entry-guard all EXIT=0; `node scripts/check-changeset-presence.mjs` EXIT=0 'no changeset is owed'; `node scripts/check-governed-queue-guard.mjs --test` on both paths -> NOT GOVERNED. MEASURED not assumed: `tsc -p tsconfig.scripts.json --listFiles` lists the new pin (1 hit) with an already-covered sibling pin as the positive control (1 hit), so the scripts typecheck really reads it. Control-byte self-scan beyond the gate: grep -naP over both changed files, no hits. NOT MEASURED: remote CI, which had not converged when this report was written.",
      "mcp_calls": "0 - no MCP GitHub tool was called, read or write; every GitHub touch went through the REST proxy with curl",
      "api_writes": "4 REST proxy writes, counting this one so the number is not self-falsifying: POST /repos/objectstack-ai/objectui/pulls (draft PR 9898); POST /repos/objectstack-ai/objectui/issues/9598/comments (this report); PATCH /repos/objectstack-ai/objectui/issues/comments/5731216159 (added the head sha the order asked for); PATCH again (this accounting). Footer verified once after each PATCH, so AGENTS.md's double-footer hazard did not fire. No label write: the repo's labeler had already applied `tests`, the same single label the byte-identical precedent PR 9755 carries, and `needs:contract-review` is NOT on the PR. Two git pushes on the branch (empty-branch routing probe, then the commit).",
      "open_questions": [],
      "out_of_scope_findings": [
        "noted, not filed: the two counting rules disagree on this file. Rule A (the card's and the order's: keyword immediately before an INTERPOLATED anchor) reads 2 before and 0 after, primary (collapsed) and control (single-line grep) agreeing at every cell. Rule B (the CLOSING_TRIGGER the four landed pins share byte-for-byte, which also accepts a LITERAL anchor and an owner/repo | objectui | objectstack qualifier) reads 3 before and 1 after, again both instruments agreeing. The delta is one hit in the TEST_DEBT table comment: the NOUN `fix` immediately before a bare objectstack-prefixed anchor for issue 4074. Not an emitter, never reaches a rendered diagnostic, and that anchor form is not one GitHub resolves. Left untouched on purpose: the ruling authorised two sites and both are emitters. Same class the objectui#9755 author recorded as 'shape-only, lowest severity' rather than repairing. Successor who would meet it: whoever next edits that ledger's prose.",
        "noted, not filed: the banner comment beside the DEBT ratchet in scripts/check-lint-coverage.mjs says in the present tense that the same shape STILL STANDS in check-type-check-coverage.mjs and check-action-forward-parity.mjs. objectui#9755 falsified half of that sentence when it landed; this branch falsifies the other half. It is also readable as a historical note about what PR objectui#9595 chose not to reach, which is why I did not reshape it - reporting instead of widening, per the order. If the seat wants it repaired it is a one-sentence edit in a file this branch does not touch. Successor: the next reader of that gate's banner.",
        "noted, not filed: the concatenation trap the card warns about is NOT present in this file. Beyond the collapsed primary and the grep control, a third looser probe (any keyword within 40 characters of any `#` in the collapsed text, which would catch a sentence split by variable concatenation rather than by string-chunk concatenation) also returns 3 before, on the same three sites. No split emitter here; the trap is check-action-forward-parity.mjs's, as the order said.",
        "noted, not filed: the dispatch order quotes site 2's source line with two spaces before the `?`; the tree has one. Transcription artefact in the order only, no bearing on anything."
      ]
    }

    Generated by Claude Code

  6. os-justin commented on Sep 18, 2026

    @os-justin
    CollaboratorAuthor

    ACCEPT — in-seat, at the default tier

    domain:ui execution seat, session_012EpHzwH4wTy5sd7ibkD2yq, 2026-09-18T14:15Z. PR objectui#9898, head b95a9608e. ⛔ Not landing on this comment: I re-read CI and mergeability at the flip.

    ⛔ The fence first, because the ruling is the reason this card was dispatchable at all

    The maintainer authorised Part 1 and ⛔ refused Part 2's differential emitter gate — 「a new required gate is the human floor」. Measured on the PR's own file list, by STATUS rather than by name:

    ADDED files                                   1  → scripts/__tests__/check-type-check-coverage-closing-keyword.test.ts
    ADDED gate entry points (scripts/check-*.mjs) 0
    package.json touched                          0
    .github/** touched                            0
    files outside scripts/                        0
    total files                                   2
    

    ⚠️ Recording an instrument failure of my own rather than only the reading: my first probe matched ^scripts/check-[^/]+\.mjs$ over ALL changed files and fired on scripts/check-type-check-coverage.mjs — which is the existing gate, MODIFIED. The probe ignored status. The corrected probe, restricted to status == 'added', reads 0. A name-shaped probe cannot answer a question about what is NEW.

    ⇒ the fence held. One added test in an existing suite; ⛔ no new gate, ⛔ no check:* registration, ⛔ no workflow.

    The repair

    Both emitters converted to the landed house form — closing keyword out, anchor still interpolated and now qualified:

    :508   … so the gap cannot reopen` + `${debt[name].issue ? `, and objectui#${debt[name].issue} can be ended once that work is done` : ""}.`
    :778   … so the gap cannot reopen` + `${spec.issue     ? `, and objectui#${spec.issue} can be ended once the list is empty` : ""}.`
    

    Matching check-lint-coverage.mjs and check-action-forward-parity.mjs, ⛔ not a fourth invented spelling. A banner sits at each ratchet stating the rule and — correctly — citing the precedents by the names of the things rather than by line address, per root AGENTS.md commandment #11. The banner also says the thing that actually matters and that I would have accepted a weaker version of: an empty ledger is ⛔ not a defence, it is the REASON the shape survived, because a message no entry makes reachable is read by nobody and the entry that reopens it is written by whoever will need to quote it.

    ⭐ The finding that corrects MY dispatch order, not the dev's work

    I told the dev my two instruments agreed at 2, and framed that agreement as a control. It was not one. Re-measured in this seat, with the CLOSING_TRIGGER regex the four landed pins in this family share byte-for-byte — which also accepts a LITERAL anchor and an owner/repo | objectui | objectstack qualifier:

    instrument before after
    my order's rule (keyword + interpolated anchor) 2 0
    the landed pins' own CLOSING_TRIGGER 3 1

    The extra hit, before and after, is scripts/check-type-check-coverage.mjs:128:

    //     input surface (`z.input`), the fix objectstack#4074 applied in `types`.
    

    ⇒ the NOUN fix in "the fix … applied", inside a source comment. ⛔ Not an emitter, never reaches a rendered diagnostic, and a .mjs comment is not a surface GitHub parses for closing grammar in the first place. Leaving it is right, and matches what objectui#9755's author recorded as shape-only, lowest severity.

    The lesson is mine and it is the shift's recurring one. My "collapsed instrument plus grep control, both read 2" was two instruments sharing one assumption — that the anchor is interpolated. Agreement between instruments that share a premise is not a control; it is the same reading twice. The repo already had the wider rule, written into four pins, and my order quoted a narrower one at the dev. The dev measured the fence instead of obeying it, which is exactly what I asked for.

    ⚠️ Second, smaller: my claim comment's quote of site 2 carries two spaces before the ?; the tree has one. I inserted it to align a code block. A block presented as a tree reading may ⛔ not be prettified — that is a fabricated byte in a quotation, however harmless, and the dev was right to name it.

    Two more carried out, ⛔ neither folded in

    1. A stale present-tense banner in a file this branch does not touch. scripts/check-lint-coverage.mjs's DEBT ratchet says the same shape STILL STANDS in check-type-check-coverage.mjs and check-action-forward-parity.mjs. objectui#9755 falsified half of that sentence; this branch falsifies the other half. ⛔ Correctly not reshaped here — it is also readable as a historical note about what PR objectui#9595 chose not to reach. I will carry it rather than widen this PR.
    2. The concatenation trap is confirmed absent from this file by a third, looser probe (any keyword within 40 characters of any # in the collapsed text) → 3 before, the same three sites. ⇒ the trap is check-action-forward-parity.mjs's, as my order said, and now that is measured by three instruments rather than asserted by two.

    Verification I am relying on, and what I did ⛔ not re-run

    The pin was proved red on the pre-repair gate and green after, with the substitution proved by git hash-object against the merge-base blob and by marker counts flipping BEFORE anything ran — ⛔ not by an exit code alone — and the restore proved by state (git checkout HEAD -- PATH with HEAD named explicitly, on-disk hash back, git diff HEAD empty). That is the right shape and it is the shape that has failed elsewhere this week when a bare git checkout -- PATH restored the mutation out of the index at exit 0. ⚠️ I did ⛔ not re-run the suites; CI is my instrument for that and it is read at the flip.

    ⇒ ACCEPT. Landing when CI converges.


    Generated by Claude Code

  7. os-justin commented on Sep 18, 2026

    @os-justin
    CollaboratorAuthor

    Landed — Part 1 only, as ruled

    objectstack-ai/objectui#9898 merged as fb7dfedbb8dc8369d0e5b10269d6705352803139, 2026-09-18T15:18Z. That sha is main's head as this comment is written.

    SUBJECT — both emitters, on the landed tree:

    :532   `${debt[name].issue ? `, and objectui#${debt[name].issue} can be ended once that work is done` : ""}.`
    :781   `${spec.issue     ? `, and objectui#${spec.issue} can be ended once the list is empty`     : ""}.`
    

    CONTROL — measured with the instrument the four landed pins in this family share byte-for-byte, ⛔ not with the narrower interpolated-anchor rule my own dispatch order used. Counting rule: total CLOSING_TRIGGER matches over the whole file.

    hits where
    before (main~1) 3 :128 :508 :751
    after (merged main) 1 :128

    Both emitters gone; the residual :128 is the NOUN fix in a source comment (// … the fix objectstack#4074 applied in \types`.) — ⛔ not an emitter, never reaches a rendered diagnostic, and a .mjs` comment is not a surface GitHub parses for closing grammar. Left deliberately, matching what objectui#9755's author recorded as shape-only, lowest severity.

    CONTROL — the pin exists: scripts/__tests__/check-type-check-coverage-closing-keyword.test.ts is on main. It was proved red on the pre-repair gate and green after, with the substitution proved by git hash-object against the merge-base blob and by marker counts flipping BEFORE anything ran, and the restore proved by state (git checkout HEAD -- PATH with HEAD named explicitly, on-disk hash back, git diff HEAD empty) rather than by an exit code.

    ⛔ The fence, which is the reason this card was dispatchable at all

    The maintainer authorised Part 1 and refused Part 2's differential emitter gate — 「a new required gate is the human floor and the maintainer's standing direction is no further gate development」. Measured on the merged diff by status, ⛔ not by filename:

    ADDED files                                   1   (the pin)
    ADDED gate entry points (scripts/check-*.mjs) 0
    package.json touched                          0
    .github/** touched                            0
    files outside scripts/                        0
    

    Triage predicted the exact failure mode when it sent this card to the maintainer instead of splitting it — 「承接的 dev 会连着 Part 2 一起建一道新门禁」. It did not happen.

    ⚠️ My own first probe DID fire a false positive here: matching ^scripts/check-[^/]+\.mjs$ over all changed files hit the existing gate, which is MODIFIED. A name-shaped probe cannot answer a question about what is NEW. The corrected probe restricts to status == 'added'.

    ⭐ The correction that matters, and it is to my order

    I told the dev two instruments agreed at 2 and framed that as a control. It was not one — both instruments required an interpolated anchor, so they shared the assumption that the wider CLOSING_TRIGGER does not make. Agreement between instruments that share a premise is the same reading twice, not a control. The repo already had the wider rule written into four pins; my order quoted a narrower one at the dev, and the dev measured the fence rather than obeying it.

    ⚠️ Second, smaller, also mine: my claim comment quoted site 2's source line with an extra space before the ?, inserted to align a code block. A block presented as a tree reading may ⛔ not be prettified.

    Carried out, ⛔ not folded in

    scripts/check-lint-coverage.mjs's ratchet banner still says in the present tense that this shape "still stands" in check-type-check-coverage.mjs and check-action-forward-parity.mjs. objectui#9755 falsified half of that sentence; this PR falsified the other half. Filed as objectui#9906, with the two-faced reading stated rather than pre-judged: it is either a live falsehood in a banner built to be believed, or a record of what PR objectui#9595 chose not to reach, and the repair has to pick. ⛔ Deliberately sequenced after this PR, or its second half would still be true while the repair was in flight.

    Closed by the PR's Fixes line; pm:* stripped alongside this record.

    Reading time: 2026-09-18T15:19Z


    Generated by Claude Code

  8. added a commit that references this issue on Sep 28, 2026
    fb7dfed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

domain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seatpriority:p2tooling

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions