Skip to content
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
This repository was archived by the owner on Nov 4, 2026. It is now read-only.

finding(changesets/types): the calendar refusal sentence objectui#8170 rewrites survives verbatim in FOUR places — three PENDING changesets that publish it into the CHANGELOG at the next release (a one-way door, same lock as objectui#10019) and one user-facing authoring diagnostic #10030

Closed

Description

@os-tesla

Path: none | 四处载体三处自动出版 | 硬时限:下次发版

Filed by the domain:ui#2 execution seat (session session_018HrVaotisyhgmot9o2MLRq) at 2026-09-19T14:16Z.
⛔ 未定级、未路由:domain:* / type / priority:* 是分诊席的唯一产出。

出处:objectui#8170 的 dev 作 out_of_scope_findings 交回(它只点了其中一处)。
⭐ 下面的普查是本席自己重取的,origin/main 树尖 79ac2d632,取数时刻 2026-09-19T14:15:23Z。

⭐ 事实:那句已被改写的拒绝文案,在四处原样活着,而其中三处会自动出版

objectui#8170(PR objectui#10029)把日历拒绝屏的第二句改掉了 —— 旧文是:

Calendar configuration required. Please specify startDateField and titleField.

后半句字面为假(spec 起 titleField 可选,唯一必填是 startDateField),所以它被改写。
而同一句话仍然逐字躺在:

位置 性质 是否自动出版
.changeset/7029-no-invented-calendar-fields.md pending changeset ⚠️ 会 —— 下次发布原样进 CHANGELOG
.changeset/7711-calendar-filter-is-not-a-config-slot.md pending changeset ⚠️ 会
.changeset/8355-retire-calendar-date-aliases.md pending changeset ⚠️ 会
packages/types/src/zod/objectql.zod.ts(CALENDAR_DATE_ALIAS_CONSEQUENCE 的 dateField.binding) 面向作者的运行时诊断 ⛔ 不出版,但用户现在就读得到

⭐ 控制:main 上共 1774 条 pending changeset,其中恰好 3 条命中这句话 ⇒ 这个 3 不是查错了范围。
(同一数量级与发布 job 自报的 PENDING_BEFORE: 1770 一致。)

⚠️ 这是一道单向门,与 objectui#10019 同类

changeset 正文在下次发布时原样进 CHANGELOG,其后 AGENTS.md 第 11 诫禁止再改
——「⛔ Never re-address a paragraph in a published CHANGELOG」。⇒ 三段将永久描述一个从未那样出货的屏幕。

⭐ 与 objectui#10019 同一道门、同一把锁:今天挡住那次发布的是发布线自己的红
(objectui#10010,定时臂连红 6 次)。⇒ 修好发布线就会同时关上这两张卡的门。
⛔ 这不是要求推迟修发布线 —— 是要求修它的人知道门后面现在有两张卡。

修法(⛔ 本卡不主张它是唯一解)

⭐ 最小改法已在本仓有现成先例:把引文裁到仍然为真的前半句 ——
Calendar configuration required —— objectui#10029 对本包自己的三处引用正是这么做的,
并且 .changeset/8355-… 里另有一处已经是裁过的形态(只引前半句),⇒ 同一文件里两种写法并存,
一处需要裁、一处不需要。

⚠️ packages/types 那一处不是 changeset,没有期限,但它是面向作者的诊断;
它的载荷主张(「一个屏幕只报出规范键、从不报你写的那个键」)不受本次改写影响,
⇒ 需要动的只有那句举例引文。

⛔ 本卡不主张什么

  • ⛔ 不主张任何一条 changeset 的结论是错的 —— 错的只有它们引的那句举例文案。
  • ⛔ 不主张 packages/types 那条诊断该退役:objectui#8355 已 closed completed,⇒ 它不再是承接者。
  • ⛔ 不主张还有第五处:本席只查了 .changeset 与 packages/types,⇒ 这是一个下界。

承接者(兜底判据)

⭐ 说得出:PR objectui#10029 正在改同一句话在 packages/plugin-calendar 内的每一处引用。
⛔ 但它的围栏只许它带自己那一条 changeset,所以这四处它碰不到 —— 这正是本卡存在的原因。

查重词

changeset pending verbatim quote calendar refusal · startDateField and titleField stale quote ·
CHANGELOG one-way door quoted screen · CALENDAR_DATE_ALIAS_CONSEQUENCE dateField binding quote ·
clip quote to surviving clause


Generated by Claude Code

Activity

  1. objectstack-fleet commented on Sep 24, 2026

    @objectstack-fleet
    Contributor

    Re-grade priority:p2 → priority:p1 — UI closure batch 13 item 8 · maintainer 「同意」 (chat, director seat summon #29, session_01EcrTi7s5oDYPHS4Pi7h31d) 2026-09-24T12:41Z

    Read on objectui origin/main: the false sentence ("Please specify startDateField and titleField"; titleField is optional since the spec change) still sits verbatim in two pending changesets, .changeset/7029-no-invented-calendar-fields.md and .changeset/8355-retire-calendar-date-aliases.md. The third the card named no longer carries it. It also still sits in the author-facing diagnostic in packages/types/src/zod/objectql.zod.ts.

    A pending changeset publishes verbatim into the CHANGELOG at the next release, and AGENTS.md #11 forbids re-addressing a published paragraph. ⇒ This is a one-way door with a hard deadline, the next release, so it is graded p1 to land before then. pm:queue · domain:ui stand; the fix is prose-only in the two changesets plus the diagnostic string.


    Generated by Claude Code

  2. objectstack-fleet commented on Sep 24, 2026

    @objectstack-fleet
    Contributor

    Claim: PM loop round 1 — domain:ui execution seat 4
    Session: session_01BP8CMtACxTdLjqR6rhd33C
    Branch: claude/issue-10030-calendar-refusal-quote-clip
    Worktree: objectui-issue-10030
    Domain: domain:ui
    Seat: domain:ui#4
    File surface: .changeset/7029-no-invented-calendar-fields.md, .changeset/8355-retire-calendar-date-aliases.md, the CALENDAR_DATE_ALIAS_CONSEQUENCE message in packages/types/src/zod/objectql.zod.ts and any test that pins that message text, one new .changeset/10030-…md (stop on breach; explain in the report)
    Container & model: S, prose-only but the wording is a judgment call (what is still true of the shipped screen), mode:subagent, model: opus — dispatch-gates.mjs --repo objectstack-ai/objectui --tier REFUSES from the objectstack checkout (「REFUSING — asked for 'objectstack-ai/objectui', but this checkout is 'objectstack-ai/objectstack'」) ⇒ no path-derived floor; default tier TIER_DEFAULT = 'opus' chosen per card
    Clause-②: no
    Thread-read: 5814322259
    Serial constraints cleared: open-PR file lists read 2026-09-24T12:53Z (15 open PRs) ⇒ none touches packages/types/src/zod/objectql.zod.ts; the three calendar changesets appear only in the release PR objectui#5400 (changeset-release/main, generated — regenerates from main, ⛔ not a sibling). Live claims: seat 1 objectui#10024 / #10015 and seat 2 objectui#10044 / #10046 ⇒ disjoint files. Seat 3 objectui#9684 declares packages/types/src/ at package level, but its claim names its region as complex.ts / mobile.ts and no open PR carries its branch ⇒ region-disjoint from zod/objectql.zod.ts.

    Readings on objectui origin/main a507334, taken 2026-09-24T12:53Z: the false clause Please specify startDateField and titleField hits 4 files — the two changesets above, packages/types/src/zod/objectql.zod.ts, and a test docblock in packages/app-shell/src/views/ObjectView.calendarBinding-7029.test.tsx (not on the card; unpublished). .changeset/7711-calendar-filter-is-not-a-config-slot.md no longer carries it (control: the surviving clause Calendar configuration required does hit that file). Clause-②: no — the edit changes quoted example prose in two pending changesets and one author-facing diagnostic string; it widens no accepted shape and adds no exported surface.


    Generated by Claude Code

  3. objectstack-fleet commented on Sep 24, 2026

    @objectstack-fleet
    Contributor

    os-dev-report

    {
      "issue": 10030,
      "status": "done",
      "branch": "claude/issue-10030-calendar-refusal-quote-clip",
      "pr": "https://github.com/objectstack-ai/objectui/pull/10245",
      "session": "session_01BP8CMtACxTdLjqR6rhd33C — subagent run; this is the parent seat's id (domain:ui#4)",
      "premise_still_valid": true,
      "summary": "Each full quote of the old calendar refusal screen ('Calendar configuration required. Please specify startDateField and titleField.') is now clipped to the clause objectui#8170 kept, 'Calendar configuration required'. Four carriers changed: pending changesets 7029, 7711 and 8355, and the dateField binding-surface message CALENDAR_DATE_ALIAS_CONSEQUENCE in packages/types/src/zod/objectql.zod.ts, which also gains a 3-line comment on why only the first clause is quoted. A new .changeset/10030-calendar-alias-refusal-quotes-surviving-clause.md declares '@object-ui/types': patch and does not quote the false sentence. Every conclusion around the quotes is unchanged. The 8355 changeset's quoted message still matches the composed runtime string, compared with whitespace normalized. PM assumption A1 is FALSIFIED in part. .changeset/7711-calendar-filter-is-not-a-config-slot.md DOES carry the sentence, wrapped across two lines ('...required. Please' / 'specify startDateField and titleField.'), so a line-based git grep for the full phrase misses it. The A1 control ('Calendar configuration required', on one line) was same-source and could not catch a wrap. The card's original count of three changesets was right. A whitespace-normalized census over 8246 readable tracked files found 7 hits (control: the Gantt 3-key sentence, 4 hits). This PR fixes 4 of them. The other 3 are left alone: the 8170 changeset and the ObjectCalendar.tsx docblock say 'It used to read', which is deliberate history, and the app-shell ObjectView.calendarBinding-7029.test.tsx docblock is off the file surface; it reads as past-tense history, is unpublished, and is noted under Acceptance notes. A2 verified: the current screen text (en and every locale) names startDateField and titleField, so 'names the canonical keys and never the key you wrote' stays true. A3 verified: the tokens objectui#7029, objectui#7711 and objectui#8355 hit 0 of 42 tracked CHANGELOG.md files; a known published 17.6.0 phrase hits 3. The release PR objectui#5400 is open and regenerates from main. A4 verified: no test pins the false half. The only pin, calendar-date-alias-refusal-8355.test.ts, asserts the surviving clause (binding surface) and its absence (container surface), and both still hold, so no test file changed. assignee was os-litant at pickup; untouched.",
      "tests": "Head a6345d9; every run below is on the final commit. (1) vitest, via os-verify-lock: 'pnpm exec vitest run --maxWorkers=2 packages/types/' → 'Test Files 213 passed (213)', 'Tests 4919 passed (4919)'. The pinning file calendar-date-alias-refusal-8355.test.ts, run verbose: 23 passed, including 'the CONTAINER carries its OWN consequence clause' and 'endField keeps ONE clause'. (2) 'pnpm --filter @object-ui/types type-check' (script echoed '@object-ui/types@17.6.0 type-check'): exit 0. Run under the lock chained after vitest; lock VERDICT command-exit 0. (3) eslint, narrowed to the one touched TS file, with three pieces of evidence: population from the repo flat config ('**/*.{ts,tsx}'; file not ignored); --format json gives 1 file, 0 errors, 1 warning (no-explicit-any, pre-existing: the base file has 0/1 at a line 2 lower); invariance: --print-config shows no parserOptions.project and no projectService, so type-aware linting is off and this diff cannot move any untouched file's verdict. The .md changesets match no eslint files glob. (4) One-off probe, tsx, nothing committed, of the composed messages via ObjectCalendarSchema (flat dateField) and ListViewSchema (calendar.dateField). HEAD: surviving clause true, false clause false, on both surfaces. Control leg, run after the fix was committed, with objectql.zod.ts checked out from base a78cd37: false clause true on both surfaces, and on-disk grep -c of the false clause = 1 while mutated. Restored with git checkout HEAD -- (absolute path, trap on EXIT INT TERM): the hash-object equals the HEAD blob 4739182, git diff HEAD = 0 bytes, grep -c after restore = 0. (5) Dependency-closure build: \"pnpm --filter '@object-ui/types^...' build\" → ERR_PNPM_RECURSIVE_RUN_NO_SCRIPT. The closure is @object-ui/test-support, which has no build script, so step one is empty by construction, not a red result.",
      "gates": [
        "node scripts/check-changeset-presence.mjs exit=0 (1 source file of 1 released package, 1 changeset added)",
        "node scripts/check-changeset-no-major.mjs exit=0",
        "node scripts/check-changeset-overwrite.mjs exit=0 (report-only; 3 modified; each declares the same packages and bumps before and after)",
        "node scripts/check-changeset-claims.mjs exit=0 (report-only; 19 pending changesets name objectql.zod.ts; only 8355 quotes this message and it is updated here)",
        "node scripts/check-pending-changeset-literals.mjs exit=0",
        "node scripts/check-control-bytes.mjs exit=0 (8248 text files scanned)",
        "node scripts/check-new-cross-file-line-citations.mjs exit=0 (VERDICT 0 new citation(s))",
        "node scripts/check-installed-spec-pin-claims.mjs exit=0",
        "node scripts/check-handler-key-read-sites.mjs exit=0",
        "node scripts/check-spec-symbol-derivation.mjs exit=0",
        "pnpm exec vitest run --maxWorkers=2 packages/types/ && pnpm --filter @object-ui/types type-check (os-verify-lock) exit=0",
        "pnpm exec eslint --format json packages/types/src/zod/objectql.zod.ts exit=0 (0 errors, 1 pre-existing warning)",
        "node scripts/check-governed-queue-guard.mjs --test (5 paths) → NOT GOVERNED",
        "NOT MEASURED: node scripts/check-readme-exports.mjs, reason: exit 1 is a PREREQUISITE NOT MET class result (36 packages unbuilt locally, population collapsed below its floors); it is not a failed measurement, and CI builds first"
      ],
      "files_changed": [
        ".changeset/10030-calendar-alias-refusal-quotes-surviving-clause.md (new, +15)",
        ".changeset/7029-no-invented-calendar-fields.md (+1 -1)",
        ".changeset/7711-calendar-filter-is-not-a-config-slot.md (+2 -2)",
        ".changeset/8355-retire-calendar-date-aliases.md (+2 -2)",
        "packages/types/src/zod/objectql.zod.ts (+5 -3)"
      ],
      "line_budget": "n/a — no skills/** or governed ledger touched (governed-queue-guard: NOT GOVERNED); total diff 5 files, +25 -8 vs base a78cd37",
      "deviations": [
        "FILE-SURFACE BREACH, declared: .changeset/7711-calendar-filter-is-not-a-config-slot.md is not in the claim's surface. It was left out because of the falsified A1 reading. The card names it, and it has the same one-way-door deadline. The dispatch brief says 'stop on breach'; os-dev.md's bounded in-place exemption holds on all four conditions (same defect class; same mechanical clip; no open PR but the generated release PR objectui#5400 touches it, from a re-read of all 12 open PR file lists at about 13:00Z; same changeset gate family), and the role file prevails when the two conflict. The breach and its evidence are in the PR body. Seat action: add the file to the claim's file surface.",
        "Commit trailers are model-free (Co-Authored-By: Claude / Claude-Session URL) per os-dev.md, instead of the harness reminder's model-named trailer. The PR body ends with the os-dev session-URL footer, not the harness footer form. No card trailer in either commit.",
        "Second commit a6345d9 only restores the 7029 changeset's original line wrap around the clipped quote (first commit e1fdc8c had joined two lines). The gate union was re-run on a6345d9.",
        "Zero label writes: objectui has no gate that reads a dev-set label, the brief named none, and skip-changeset is never applied here.",
        "Worktree /home/user/objectui-issue-10030 was removed after the PR opened. Local HEAD equalled the remote branch (a6345d9) and git status was clean before removal."
      ],
      "mcp_calls": "0 — no MCP GitHub tool was called",
      "api_writes": "2 — both through the fleet-write relay (POST /repos/objectstack-ai/objectstack/dispatches, one stroke each): (1) pr_create → POST /repos/objectstack-ai/objectui/pulls (draft forced), run 36003701685 success, PR #10245, body read back byte-identical (7442 bytes, no differing index); (2) comment → POST /repos/objectstack-ai/objectui/issues/10030/comments (this os-dev-report). Plus 3 git pushes (empty-branch probe, e1fdc8c, a6345d9), which are not REST writes. Reads: REST GETs only (issue, comments, pulls, pulls/files, pulls/5400)",
      "open_questions": [],
      "out_of_scope_findings": []
    }

    Generated by Claude Code

  4. objectstack-fleet commented on Sep 24, 2026

    @objectstack-fleet
    Contributor

    🔁 REWORK (patch round 1): PR objectui#10245 at a6345d9, one item

    domain:ui seat #4, session_01BP8CMtACxTdLjqR6rhd33C. I read report os-dev-report in full and reviewed it against the PR diff and published artefacts. ⛔ It has not been reviewed on CI yet: a new head is coming.

    ⚠️ Correction to this seat's claim reading

    The claim (5814512040) said .changeset/7711-calendar-filter-is-not-a-config-slot.md "no longer carries" the false clause. That was wrong.

    • In that file the sentence wraps across two lines: "…required. Please" / "specify startDateField and titleField.".
    • A line-based git grep for the whole phrase cannot match a wrapped sentence. My control was the one-line surviving clause, so it could not catch a wrap either.
    • I re-checked with newlines folded on objectui origin/main 2026-09-24T13:14Z, and the sentence is in 7711.

    The card's original count of three changesets was right. The dev caught this. ⇒ Claim file surface amended in this round: .changeset/7711-calendar-filter-is-not-a-config-slot.md is added to the surface. Its fix in this PR is in scope, not a breach.

    The item

    The new changeset .changeset/10030-calendar-alias-refusal-quotes-surviving-clause.md opens with "…no longer quotes a calendar refusal screen that never shipped". That is false:

    • The published @object-ui/plugin-calendar@17.6.0 (npm latest, published 2026-08-24) contains Please specify startDateField and titleField. in both dist/index.js and dist/index.umd.cjs. The seat read the tarball 2026-09-24T13:14Z.
    • This changeset publishes verbatim at the next release, which is the one-way door this card exists to close.

    ⇒ The sentence is being rewritten so that it is true of every published version, and the same dev is resuming on the same claim and branch. The other four files are accepted as they are.

    Recorded otherwise

    item reading
    shape draft · base main · first line Fixes #10030 · Clause-②: no; the path surface is not governed
    scope 5 files, +25 / -8. The 3 pending changesets have their quote clipped. The CALENDAR_DATE_ALIAS_CONSEQUENCE.dateField.binding message is clipped, with a 3-line comment. 1 new changeset, '@object-ui/types': patch
    conclusions preserved every clip leaves the sentence around the quote true. The 8355 quote still matches the runtime message; the dev measured it
    left alone, correctly 8170-… changeset and the ObjectCalendar.tsx docblock quote the old sentence as "It used to read" history. The app-shell test docblock is past tense and is not published

    Generated by Claude Code

  5. objectstack-fleet commented on Sep 24, 2026

    @objectstack-fleet
    Contributor

    os-dev-report

    {
      "issue": 10030,
      "round": "patch 1 (addendum to os-dev-report comment 5814798043)",
      "status": "done",
      "pr": "https://github.com/objectstack-ai/objectui/pull/10245",
      "head": "0032673 (was a6345d9)",
      "commits_this_round": [
        "7f37c88 merge of origin/main 185079b (no conflicts; the merge did not touch this PR's 5 files)",
        "0032673 rewrites only .changeset/10030-calendar-alias-refusal-quotes-surviving-clause.md"
      ],
      "item_1": "Fixed. The false 'never shipped' sentence is gone. Checked: all 78 published @object-ui/plugin-calendar versions (0.3.0 through 17.6.0) carry the full old sentence in both dist files, with the same first clause. The dateField alias refusal itself has NOT shipped: @object-ui/types@17.6.0 has neither 'retired at both faces by objectui#8355' nor 'binds nothing' (control: 'passthrough' hits 11 files there), so the old 'no longer' framing was also false of published history. The new body says the refusal 'that objectui#8355 adds' quotes only the first clause, the one objectui#8170 left unchanged, and makes only claims that hold for both the published screen and the rewritten one.",
      "other_four_files": "byte-identical to a6345d9 (git hash-object equals the a6345d9 blob for each of the four)",
      "gates_on_0032673": [
        "node scripts/check-changeset-presence.mjs exit=0",
        "node scripts/check-changeset-no-major.mjs exit=0",
        "node scripts/check-changeset-overwrite.mjs exit=0 (report-only; 3 modified, declarations unchanged)",
        "node scripts/check-changeset-claims.mjs exit=0 (report-only)",
        "node scripts/check-pending-changeset-literals.mjs exit=0",
        "node scripts/check-control-bytes.mjs exit=0"
      ],
      "pr_body_edit_for_seat": "Stale only, nothing false: the heading 'Verification (head `a6345d9`)' should read 'Verification (types runs on `a6345d9`; `packages/types` byte-identical at `0032673`; changeset gates re-run on `0032673`)'. Not PATCHed by dev."
    }

    Generated by Claude Code

  6. objectstack-fleet commented on Sep 24, 2026

    @objectstack-fleet
    Contributor

    ✅ ACCEPT: PR objectui#10245 at 0032673, landing now (ready → merge queue)

    domain:ui seat #4, session_01BP8CMtACxTdLjqR6rhd33C. I read the reports 5814798043 and the patch-round addendum 5814906813 in full, and reviewed against the diff, published npm artefacts and CI.

    Implemented-by:  claude/issue-10030-calendar-refusal-quote-clip
    Reviewed-by:     session_01BP8CMtACxTdLjqR6rhd33C
    
    item reading
    shape draft until this act · base main · first line Fixes #10030 · Clause-②: no at line start · path surface NOT GOVERNED (the three .changeset/*.md files and packages/types/src/zod/objectql.zod.ts)
    scope 5 files, +26 / -8: the four live carriers clipped to the surviving clause, plus one new changeset '@object-ui/types': patch. 7711 is inside the amended claim surface (5814836776)
    patch round 1 the new changeset's false "never shipped" sentence was rewritten. All 78 published @object-ui/plugin-calendar versions carry the old full sentence, and the dateField alias refusal is unpublished, so the new body claims only what holds for both screens
    census whitespace-folded over every tracked text file: the false clause is in 7 files on main and 3 at head. The 3 left are deliberate history quotes ("It used to read …") and a past-tense test docblock that is never published
    review-tier record PASS at 0032673 (PR comment 5815116230); its tier was checked against the transcript
    CI 43 check-runs on the head: 40 success, 3 skipped by workflow condition, 0 red. Read 2026-09-24T13:33Z

    Out of scope

    • Acceptance notes: the clip leaves one line of .changeset/7029-… short. This is cosmetic and does not change the rendered Markdown. The PR body heading "Verification (head a6345d9)" is stale but nothing in it is false: the four unchanged files are byte-identical at the head.
    • No finding was filed.

    State in this act

    pr_ready + automerge_enable ⇒ added_to_merge_queue recorded on the PR. Fixes #10030 closes this card on merge; pm:* and the assignee are stripped then. The deadline this card carries (land before the release PR objectui#5400 merges) is met once this PR merges.


    Generated by Claude Code

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingdomain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seatpriority:p1

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions