You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
Repository navigation
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
deps(app-shell): raise @object-ui/app-shell's @objectstack/spec floor from ^18.0.0-next.2 to ^18.0.0-next.3, the first release that declares and serves the package row's source the Packages page now requires #12943
Filing gate ③, a task the maintainer directed. The maintainer said, verbatim, in domain:ui seat 1's session session_0188TsgPV8kQXfuRuKmkj2ks: 「下限提到 next.3」. That answers the seat's round-report question, Q2 of objectui#12790's dev report, carried in the ACCEPT on PR #12939 (6246795614). ⛔ Not a claim.
Reader who acts:domain:ui seat 1. It claims and dispatches this card in the same act.
Measured
At objectui main32b492b6, packages/app-shell/package.json declares "@objectstack/spec": "^18.0.0-next.2".
So the declared floor admits a spec, and a paired runtime, that the page refuses on every row.
check:spec-floors stays green because it judges symbol presence only, and InstalledPackageAtEitherStage exists in next.2. Its own header documents that boundary.
objectui main's lockfile already resolves 18.0.0-next.3 (objectui#12873), so resolution does not move.
pnpm-lock.yaml's importer specifier is regenerated with pnpm, never by hand, and its resolution stays 18.0.0-next.3.
check:spec-floors, check:installed-pin-claims and check:lockfile-integrity are green.
One changeset for @object-ui/app-shell says the floor and why.
⛔ No other package's floor moves: no other published artifact reads a next.3-only key.
Dedupe: a REST enumeration of this repository's issues (state=all, since=2026-10-01; 837 issues; controls objectui#12790, #12873 and #12626 found), grepped for (spec|objectstack)…(floor|range), floor…next.3 and ^18.0.0-next.3. 7 hits came back, all closed and none a floor raise for app-shell. The nearest are objectui#12030, which moved the dependencies to the next prereleases, and objectui#12873, which moved the lockfile to next.3 with no floor.
Claim: PM loop round 4 · maintainer direct dispatch (provenance: the maintainer, in session session_0188TsgPV8kQXfuRuKmkj2ks, verbatim 「下限提到 next.3」)
Session: session_0188TsgPV8kQXfuRuKmkj2ks
Account: sunhaolin (the seat's linked user as GET /user answers it; the card's assignee)
Branch: claude/issue-12943-app-shell-spec-floor
Worktree: objectui-issue-12943
Domain: domain:ui
Seat: domain:ui#1
File surface:
packages/app-shell/package.json (the @objectstack/spec range only);
pnpm-lock.yaml (the app-shell importer's specifier, regenerated by pnpm);
one .changeset/12943-app-shell-spec-floor.md.
Stop on breach; explain in the report.
Container & model: S, mode:subagent, model: sonnet (floor tier: mechanical, judged by check:spec-floors / check:installed-pin-claims / check:lockfile-integrity)
Clause-②: no
Clause-② reason: the dependency range narrows to what the published code already needs; no export, prop, key or schema moves.
Responsibility: n/a — not a defect card
Thread-read: none
Serial constraints cleared: read at objectui main32b492b6.
os-dev-report
{
"issue": 12943,
"status": "done",
"branch": "claude/issue-12943-app-shell-spec-floor",
"pr": "#12945",
"session": "session_0188TsgPV8kQXfuRuKmkj2ks",
"premise_still_valid": true,
"summary": "Raised @object-ui/app-shell's @objectstack/spec floor from ^18.0.0-next.2 to ^18.0.0-next.3: one manifest line, the importer specifier regenerated by pnpm (the lockfile diff is that single line, no resolution moved), and one patch changeset stating the floor and why. Every gate the brief names is green EXCEPT check:spec-floors, which is red for a PRE-EXISTING, unrelated reason that falsifies one sub-claim of the card ("no other published artifact reads a next.3-only key"): @object-ui/plugin-detail's published dist references SelectOptionKind, first exported by spec next.3, under a ^18.0.0-next.1 floor, added by objectui#12922 with no manifest change. The ruling (no other floor moves) and the claim's file surface forbid fixing it here, so I left it; the card's core premise (the Packages page needs the served source that next.3 first declares) reproduces on the published tarballs and holds. Commit trailers follow AGENTS.md's model-free pair, not the harness reminder's model-named Co-Authored-By.",
"tests": "No source or test file changes (manifest range + lockfile specifier + changeset only), so no unit suite is owed locally and no behaviour is pinned that this diff changes: ablation not applicable; unit tests are CI's. Typecheck evidence: pnpm exec turbo run build --filter=./packages/* --concurrency=2 under os-verify-lock.sh, VERDICT command-exit 0, 39 of 39 tasks successful (app-shell's build is tsc plus check-dist-completeness) with NODE_OPTIONS=--max-old-space-size=4096. pnpm install --frozen-lockfile on the final head 7a08006: exit 0 (committed lockfile consistent with the manifests). Reproduction of the card's claim on the published tarballs (npm pack, isolated dirs): next.2 has no source member in the api-assembled either-stage row schema and no InstalledPackageSourceSchema; next.3 has source on each union arm and exports the schema; InstalledPackageAtEitherStage is in both, which is why the symbol-presence gate cannot see this change.",
"gates": "Local, hand-derived from the root package.json and workflows (objectui has no dispatch-gates.mjs, so no --ran reconciliation exists; the list is the brief's plus manifest/lockfile-reading neighbours). Exit codes captured before any pipe. On the final head 7a08006: check:installed-pin-claims 0 (re-run after the changeset existed; the first run predated it); check:lockfile-integrity 0 (VERDICT clean); check:lockfile-dedupe 0 (VERDICT deduped); check:changeset-claims 0 (1 changeset read; an earlier run before the commit read none and measured nothing); node scripts/check-changeset-presence.mjs 0; pnpm changeset:check 0; check:phantom-deps 0; check:control-bytes 0; check:new-line-citations 0; check-governed-queue-guard --test on the three paths: NOT GOVERNED. check:spec-floors: exit 1 (after the build; the first run before any build was a no-artifact NOT MEASURED), single finding floor-too-low on @object-ui/plugin-detail, app-shell not named. Control: with app-shell's manifest restored to its base value via git checkout of the pinned base sha, the same single finding (exit 1), then restored with git checkout HEAD and proven by blob hash plus empty git diff HEAD. Probe: raising only plugin-detail to ^18.0.0-next.3 in a throwaway mutation gives exit 0 (same packages and symbol pairs judged), restored and proven the same way; nothing committed. A mistyped script path (check-nul-bytes.mjs, an objectstack script) exited 1 with MODULE_NOT_FOUND: not a gate result, replaced by check:control-bytes. CI check-runs on 7a08006, one read right after opening: 37 listed (matches total_count), 15 success, 3 skipped, 19 in_progress, 0 failed; NOT MEASURED beyond that, convergence is the PM's. Note: Spec Range Floors is a nightly alarm (schedule, workflow_dispatch, push on its own files), not a pull-request job, so it will not appear in this PR's check-runs; its nightly on main at c4dd707 concluded failure on 2026-10-18 (cause taken from the control run, not from the CI log, which I could not read).",
"mcp_calls": "0 (no MCP tools used)",
"api_writes": "2 REST-proxy writes through the fleet-write relay (repository_dispatch to objectstack-ai/objectstack, executed as objectstack-fleet[bot]): (1) pr_create = POST /repos/objectstack-ai/objectui/pulls (draft) + POST /repos//issues/12945/assignees [sunhaolin], read-back 4996 bytes sent and stored identical; (2) comment = POST /repos//issues/12943/comments (this report). No label writes (the two labels on the PR, dependencies and package: app-shell, came from the repo's path labeler). Also 2 git pushes (the empty-branch probe, then 7a08006), not REST. Reads only otherwise: gh api GETs of the issue, comments, workflow runs, commits and PR.",
"open_questions": [
{
"question": "check:spec-floors cannot go green from this PR: the card's Done-when asks for green, but the only finding is plugin-detail's floor (SelectOptionKind, first exported by spec next.3, under ^18.0.0-next.1), and the ruling says no other floor moves. How should plugin-detail's floor be raised?",
"options": [
"A. A separate card raises @object-ui/plugin-detail to ^18.0.0-next.3 with its own changeset (measured: this one change turns the gate green).",
"B. Fold it into PR 12945 (needs the PM or maintainer to lift the 'no other floor moves' ruling for it; widens the claimed file surface).",
"C. Leave it; the gate then fails inside pnpm changeset:publish and cancels the next release."
],
"recommendation": "A. Business need is real, not speculative: objectui#12922's stage-terminal reading is live code and the nightly on main is already red, with the publish path gated on the same check. Long-term and anti-AI-error axes agree: floors track reality (ruled on objectui#5793), the range is the claim, and tightening it beats any tolerant fallback. Startup-focus axis: one mechanical line, no new gate. B contradicts an explicit ruling for no gain in speed; C ships a known false floor. Not conflicting axes, so no trade-off for the maintainer."
}
],
"out_of_scope_findings": [
"class: a+b · reach: exception: release (a false published range is baked in at publish) and the publish path itself, where pnpm changeset:publish runs check:spec-floors first and cancels the release · evidence: after a ./packages/* build, pnpm check:spec-floors exits 1 with one floor-too-low finding on @object-ui/plugin-detail (packages/plugin-detail/dist/synth/buildDefaultPageSchema.d.ts references SelectOptionKind from @objectstack/spec/data; floor ^18.0.0-next.1; first exported by next.3, absent from next.2 tarball); control with app-shell's base manifest gives the identical finding; probe raising only plugin-detail to ^18.0.0-next.3 gives exit 0; introduced by objectui#12922 (commit 8392f74, no package.json touched); nightly Spec Range Floors on main at c4dd707 concluded failure on 2026-10-18 after green on 2026-10-17 · Seam: spec:SelectOptionKind (@objectstack/spec/data, first in 18.0.0-next.3) -> runtime:packages/plugin-detail/src/synth/buildDefaultPageSchema.ts (type import), contract text is the gate's own header: a package's declared @objectstack/spec floor must carry every symbol its published artifact references · dedupe words: plugin-detail floor SelectOptionKind spec-range-floors floor-too-low next.3 · carrier: none, noted not filed; the seat files it",
"carrier: none, noted not filed · The card text says no other published artifact reads a next.3-only key; that sentence is false as of origin/main 32b492b (see above). The finding is the correction; nothing else to file."
]
}
ACCEPT → PR #12945 comment 6247450805 · review at TIER_DEFAULT (no contract face, Clause-②: no) · head 7a08006 · domain:ui seat 1 · session_0188TsgPV8kQXfuRuKmkj2ks · 2026-10-18T08:06Z
This card's last Done-when line ("no other published artifact reads a next.3-only key") was false. Its correction, plugin-detail's floor, is objectui#12946, which carries the check:spec-floors exit-0 line. The PR goes to ready and auto-merge through objectui's merge queue; the landing note follows on MERGED.
PR #12945 merged through objectui's merge queue as 641dad4b35. Its one parent is fb501bc8, the merge of PR #12944, which landed while this PR was queued. The merge is an ancestor of origin/main.
probe
parent fb501bc
merge 641dad4
changed lines, merge vs PR diff (merge-base 32b492b → reviewed head 7a08006)
—
identical (3 files, +11 / −2)
@objectstack/spec in packages/app-shell/package.json
^18.0.0-next.2
^18.0.0-next.3
a model name in the merge commit's message
—
0
State change:
Fixes #12943 closed this card completed, and this act removes pm:dispatched.
@object-ui/app-shell now declares the first spec release that serves the package row's source its Packages page requires. That is the maintainer's 「下限提到 next.3」.
Activity
objectstack-fleet commentedon Oct 18, 2026
Claim: PM loop round 4 · maintainer direct dispatch (provenance: the maintainer, in session
session_0188TsgPV8kQXfuRuKmkj2ks, verbatim 「下限提到 next.3」)Session:
session_0188TsgPV8kQXfuRuKmkj2ksAccount:
sunhaolin(the seat's linked user asGET /useranswers it; the card's assignee)Branch:
claude/issue-12943-app-shell-spec-floorWorktree:
objectui-issue-12943Domain:
domain:uiSeat:
domain:ui#1File surface:
packages/app-shell/package.json(the@objectstack/specrange only);pnpm-lock.yaml(the app-shell importer's specifier, regenerated by pnpm);.changeset/12943-app-shell-spec-floor.md.Stop on breach; explain in the report.
Container & model:
S,mode:subagent,model: sonnet(floor tier: mechanical, judged bycheck:spec-floors/check:installed-pin-claims/check:lockfile-integrity)Clause-②: no
Clause-② reason: the dependency range narrows to what the published code already needs; no export, prop, key or schema moves.
Responsibility: n/a — not a defect card
Thread-read: none
Serial constraints cleared: read at objectui
main32b492b6.packages/app-shell/package.jsonorpnpm-lock.yaml. The open PRs are seat 3's fix(plugin-form,fields): line-item grids read boolean options and file text in the session language (objectui#12924) #12937 and three bot PRs, and the objectui#12941 dev (packages/core) has no PR yet.next) touchespnpm-lock.yaml. Whichever lands second regenerates the lockfile with pnpm.Generated by Claude Code
objectstack-fleet commentedon Oct 18, 2026
os-dev-report
{
"issue": 12943,
"status": "done",
"branch": "claude/issue-12943-app-shell-spec-floor",
"pr": "#12945",
"session": "session_0188TsgPV8kQXfuRuKmkj2ks",
"premise_still_valid": true,
"summary": "Raised @object-ui/app-shell's @objectstack/spec floor from ^18.0.0-next.2 to ^18.0.0-next.3: one manifest line, the importer specifier regenerated by pnpm (the lockfile diff is that single line, no resolution moved), and one patch changeset stating the floor and why. Every gate the brief names is green EXCEPT check:spec-floors, which is red for a PRE-EXISTING, unrelated reason that falsifies one sub-claim of the card ("no other published artifact reads a next.3-only key"): @object-ui/plugin-detail's published dist references SelectOptionKind, first exported by spec next.3, under a ^18.0.0-next.1 floor, added by objectui#12922 with no manifest change. The ruling (no other floor moves) and the claim's file surface forbid fixing it here, so I left it; the card's core premise (the Packages page needs the served source that next.3 first declares) reproduces on the published tarballs and holds. Commit trailers follow AGENTS.md's model-free pair, not the harness reminder's model-named Co-Authored-By.",
"tests": "No source or test file changes (manifest range + lockfile specifier + changeset only), so no unit suite is owed locally and no behaviour is pinned that this diff changes: ablation not applicable; unit tests are CI's. Typecheck evidence: pnpm exec turbo run build --filter=./packages/* --concurrency=2 under os-verify-lock.sh, VERDICT command-exit 0, 39 of 39 tasks successful (app-shell's build is tsc plus check-dist-completeness) with NODE_OPTIONS=--max-old-space-size=4096. pnpm install --frozen-lockfile on the final head 7a08006: exit 0 (committed lockfile consistent with the manifests). Reproduction of the card's claim on the published tarballs (npm pack, isolated dirs): next.2 has no source member in the api-assembled either-stage row schema and no InstalledPackageSourceSchema; next.3 has source on each union arm and exports the schema; InstalledPackageAtEitherStage is in both, which is why the symbol-presence gate cannot see this change.",
"gates": "Local, hand-derived from the root package.json and workflows (objectui has no dispatch-gates.mjs, so no --ran reconciliation exists; the list is the brief's plus manifest/lockfile-reading neighbours). Exit codes captured before any pipe. On the final head 7a08006: check:installed-pin-claims 0 (re-run after the changeset existed; the first run predated it); check:lockfile-integrity 0 (VERDICT clean); check:lockfile-dedupe 0 (VERDICT deduped); check:changeset-claims 0 (1 changeset read; an earlier run before the commit read none and measured nothing); node scripts/check-changeset-presence.mjs 0; pnpm changeset:check 0; check:phantom-deps 0; check:control-bytes 0; check:new-line-citations 0; check-governed-queue-guard --test on the three paths: NOT GOVERNED. check:spec-floors: exit 1 (after the build; the first run before any build was a no-artifact NOT MEASURED), single finding floor-too-low on @object-ui/plugin-detail, app-shell not named. Control: with app-shell's manifest restored to its base value via git checkout of the pinned base sha, the same single finding (exit 1), then restored with git checkout HEAD and proven by blob hash plus empty git diff HEAD. Probe: raising only plugin-detail to ^18.0.0-next.3 in a throwaway mutation gives exit 0 (same packages and symbol pairs judged), restored and proven the same way; nothing committed. A mistyped script path (check-nul-bytes.mjs, an objectstack script) exited 1 with MODULE_NOT_FOUND: not a gate result, replaced by check:control-bytes. CI check-runs on 7a08006, one read right after opening: 37 listed (matches total_count), 15 success, 3 skipped, 19 in_progress, 0 failed; NOT MEASURED beyond that, convergence is the PM's. Note: Spec Range Floors is a nightly alarm (schedule, workflow_dispatch, push on its own files), not a pull-request job, so it will not appear in this PR's check-runs; its nightly on main at c4dd707 concluded failure on 2026-10-18 (cause taken from the control run, not from the CI log, which I could not read).",
"mcp_calls": "0 (no MCP tools used)",
"api_writes": "2 REST-proxy writes through the fleet-write relay (repository_dispatch to objectstack-ai/objectstack, executed as objectstack-fleet[bot]): (1) pr_create = POST /repos/objectstack-ai/objectui/pulls (draft) + POST /repos//issues/12945/assignees [sunhaolin], read-back 4996 bytes sent and stored identical; (2) comment = POST /repos//issues/12943/comments (this report). No label writes (the two labels on the PR, dependencies and package: app-shell, came from the repo's path labeler). Also 2 git pushes (the empty-branch probe, then 7a08006), not REST. Reads only otherwise: gh api GETs of the issue, comments, workflow runs, commits and PR.",
"open_questions": [
{
"question": "check:spec-floors cannot go green from this PR: the card's Done-when asks for green, but the only finding is plugin-detail's floor (SelectOptionKind, first exported by spec next.3, under ^18.0.0-next.1), and the ruling says no other floor moves. How should plugin-detail's floor be raised?",
"options": [
"A. A separate card raises @object-ui/plugin-detail to ^18.0.0-next.3 with its own changeset (measured: this one change turns the gate green).",
"B. Fold it into PR 12945 (needs the PM or maintainer to lift the 'no other floor moves' ruling for it; widens the claimed file surface).",
"C. Leave it; the gate then fails inside pnpm changeset:publish and cancels the next release."
],
"recommendation": "A. Business need is real, not speculative: objectui#12922's stage-terminal reading is live code and the nightly on main is already red, with the publish path gated on the same check. Long-term and anti-AI-error axes agree: floors track reality (ruled on objectui#5793), the range is the claim, and tightening it beats any tolerant fallback. Startup-focus axis: one mechanical line, no new gate. B contradicts an explicit ruling for no gain in speed; C ships a known false floor. Not conflicting axes, so no trade-off for the maintainer."
}
],
"out_of_scope_findings": [
"class: a+b · reach: exception: release (a false published range is baked in at publish) and the publish path itself, where pnpm changeset:publish runs check:spec-floors first and cancels the release · evidence: after a ./packages/* build, pnpm check:spec-floors exits 1 with one floor-too-low finding on @object-ui/plugin-detail (packages/plugin-detail/dist/synth/buildDefaultPageSchema.d.ts references SelectOptionKind from @objectstack/spec/data; floor ^18.0.0-next.1; first exported by next.3, absent from next.2 tarball); control with app-shell's base manifest gives the identical finding; probe raising only plugin-detail to ^18.0.0-next.3 gives exit 0; introduced by objectui#12922 (commit 8392f74, no package.json touched); nightly Spec Range Floors on main at c4dd707 concluded failure on 2026-10-18 after green on 2026-10-17 · Seam: spec:SelectOptionKind (@objectstack/spec/data, first in 18.0.0-next.3) -> runtime:packages/plugin-detail/src/synth/buildDefaultPageSchema.ts (type import), contract text is the gate's own header: a package's declared @objectstack/spec floor must carry every symbol its published artifact references · dedupe words: plugin-detail floor SelectOptionKind spec-range-floors floor-too-low next.3 · carrier: none, noted not filed; the seat files it",
"carrier: none, noted not filed · The card text says no other published artifact reads a next.3-only key; that sentence is false as of origin/main 32b492b (see above). The finding is the correction; nothing else to file."
]
}
Generated by Claude Code
objectstack-fleet commentedon Oct 18, 2026
ACCEPT → PR #12945 comment
6247450805· review atTIER_DEFAULT(no contract face,Clause-②: no) · head7a08006·domain:uiseat 1 ·session_0188TsgPV8kQXfuRuKmkj2ks· 2026-10-18T08:06ZThis card's last Done-when line ("no other published artifact reads a
next.3-only key") was false. Its correction, plugin-detail's floor, is objectui#12946, which carries thecheck:spec-floorsexit-0 line. The PR goes to ready and auto-merge through objectui's merge queue; the landing note follows on MERGED.Generated by Claude Code
objectstack-fleet commentedon Oct 18, 2026
Landed ·
domain:uiseat 1 ·session_0188TsgPV8kQXfuRuKmkj2ks· 2026-10-18T08:22ZPR #12945 merged through objectui's merge queue as
641dad4b35. Its one parent isfb501bc8, the merge of PR #12944, which landed while this PR was queued. The merge is an ancestor oforigin/main.fb501bc641dad432b492b→ reviewed head7a08006)@objectstack/specinpackages/app-shell/package.json^18.0.0-next.2^18.0.0-next.3State change:
Fixes #12943closed this cardcompleted, and this act removespm:dispatched.@object-ui/app-shellnow declares the first spec release that serves the package row'ssourceits Packages page requires. That is the maintainer's 「下限提到 next.3」.check:spec-floorsgreen" line is carried by objectui#12946 (PR deps(plugin-detail): raise the @objectstack/spec floor to ^18.0.0-next.3, the first release that exports SelectOptionKind (objectui#12946) #12948, plugin-detail's floor), which also names app-shell's raise in the pending18.0.0-next.3changeset.Records:
6247136162;6247257897;6247450805(TIER_DEFAULT, no contract face).Generated by Claude Code
deps(app-shell): raise the @objectstack/spec floor to ^18.0.0-next.3 …