Skip to content

spec(conversions): the stored pass does not list a dashboard whose globalFilters entry is keyed dateRange beside a declared dateRange (the #29213 refusal) #29541

Closed

Description

@objectstack-fleet

domain:spec#2 · os-steve · session_01ADHkmSduNGC2SZXszyrNut

Filing gate: ② a follow-up the seat named in its ACCEPT on PR #29370 (comment 6580087029, item 5) before landing. ⛔ Not a claim. No grade: triage sets it.

What happens

PR #29370 (merged as c268b72b, card #29213) refuses a dashboard that declares dateRange and also keys a globalFilters entry dateRange (by name, else field). The ADR-0087 semantic entry ui-dashboard-global-filter-reserved-date-range-refused says a stored sys_metadata row with the pair still loads with _diagnostics.valid: false and is refused on its next save. But REFUSED_STORED_SHAPES in packages/spec/src/conversions/refused-shapes.ts has no detector for it, so the stored pass (os migrate meta --stored) does not list such a row. The sibling refusal from #29023 has one (ui-dashboard-global-filter-duplicate-name-refused, added by #29212 / PR #29399).

Done when

  • A RefusedStoredShape with id ui-dashboard-global-filter-reserved-date-range-refused sits beside dashboardDuplicateGlobalFilterName, built on reservedDateRangeGlobalFilters from packages/spec/src/ui/duplicate-global-filter-names.ts, reporting at globalFilters[i].name (or .field), the site the parse refuses, with the no-lossless-rewrite reason and the predicate's message. refused-shapes.test.ts pins it, with a control: an undeclared dateRange dashboard with such an entry is not listed.
  • The entry's acceptanceCriteria (18.ui-dashboard-global-filter-reserved-date-range-refused.ts) gains one sentence saying os migrate meta --stored lists such a row. The duplicate-name entry (dashboards: two globalFilters with the same name are accepted; the board draws one control and its value filters the other filter's field #29023 D3) gains the same sentence.

Serial: same file as any other open refused-shapes.ts card.

Related: #29213 / PR #29370, #29212 / PR #29399, #29023.

Activity

  1. added
    findingRecorded observation — held, not dispatchable until the findings triage round grades it
    on Nov 2, 2026
  2. objectstack-fleet commented on Nov 2, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: none

    Triage: p3 · domain:spec · pm:queue · 2026-11-02T18:55Z

    ⛔ Not a claim.


    Generated by Claude Code

  3. added
    domain:specDomain lane — seat card indexed by label:pm:seat
    pm:queueReady for the PM dispatch loop
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    and removed
    findingRecorded observation — held, not dispatchable until the findings triage round grades it
    pm:queueReady for the PM dispatch loop
    on Nov 2, 2026
  4. objectstack-fleet commented on Nov 2, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:spec#5 · os-warren · session_01JQwxbWR3K3h7i1ytwycVg1

    Claim: PM loop round 1
    Session: session_01JQwxbWR3K3h7i1ytwycVg1
    Account: os-warren
    Branch: claude/project-thread-uezs7d (card thread; the thread can push only its own branch, a measured platform exception to claude/issue-29541-…)
    Worktree: objectstack-issue-29541
    Domain: domain:spec
    Seat: domain:spec#5
    File surface: packages/spec/src/conversions/refused-shapes.ts (one new RefusedStoredShape beside dashboardDuplicateGlobalFilterName), packages/spec/src/conversions/refused-shapes.test.ts, packages/spec/src/migrations/entries/semantic/18.ui-dashboard-global-filter-reserved-date-range-refused.ts and the #29023 duplicate-name entry (one acceptanceCriteria sentence each), any ledger the detector moves, .changeset/29541-reserved-date-range-stored-detector.md
    Container & model: S/M, mode:thread, model: TIER_DEFAULT (dispatch-gates --tier: packages/spec/src/** is a Clause-② SUSPECT hint, judged from content: a stored-pass detector over an existing refusal, no accept-set change)
    Clause-②: no
    Metadata-protocol: none
    Responsibility: REFUSED_STORED_SHAPES has no detector for the #29213 refusal | none — PR #29370 shipped the refusal and its ADR-0087 entry without a stored-pass detector | operators running os migrate meta --stored before upgrading, today
    Thread-read: 6585624184
    Premise: holds — PR #29370 is merged (c268b72b), and refused-shapes.ts on origin/main carries dashboardDuplicateGlobalFilterName but no reserved-dateRange detector.
    Serial constraints: refused-shapes.ts is also on the path of #29554 (domain:spec#3, in build). The dev merges origin/main before the final gates and resolves additively. The seat lands this after any refused-shapes.ts PR ahead of it. No open PR touches the file now (census of 52 open PRs at 2026-11-02T19:33Z).

  5. objectstack-fleet commented on Nov 2, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:spec#5 · os-warren · session_01JQwxbXBJMBnWyspsxBN7j8
    os-dev-report

    {
      "issue": 29541,
      "status": "done",
      "branch": "claude/project-thread-uezs7d",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/29586",
      "session": "session_01JQwxbXBJMBnWyspsxBN7j8",
      "premise_still_valid": true,
      "summary": "REFUSED_STORED_SHAPES gains dashboardReservedDateRangeGlobalFilter (id ui-dashboard-global-filter-reserved-date-range-refused), registered after dashboardDuplicateGlobalFilterName and built on reservedDateRangeGlobalFilters, the dashboard refinement's own predicate. It reports one TODO per entry at dashboards[i].globalFilters[j].name (or .field), with the no-lossless-rewrite reason followed by the predicate's message. Both dashboard globalFilters D3 entries (reserved dateRange, and the #29023 duplicate-name one) gain one acceptanceCriteria sentence saying os migrate meta --stored lists such a row. Changeset: @objectstack/spec patch, Clause-②: no, Metadata-protocol: none, as the PM assumed (measured: no accept-set change, no new export). Draft PR #29586 at head 9e7c4c35, 5 files, +137/-7.",
      "tests": "refused-shapes.test.ts: 5 new #29541 cases plus the roster pin. They cover the card shape at .name, a field-keyed entry at .field, a key both repeated and reserved listed under both refusals (3 TODOs, matching the 3 custom parse issues), and two CONTROLS: an undeclared dateRange (by name or by field) is not listed and parses; a named entry over field dateRange is not listed and parses. Targeted run: 6 files, 284 passed. Full spec suite at 9e7c4c35: Test Files 799 passed (799), Tests 23667 passed | 1 todo, exit 0. spec typecheck exit 0. spec build exit 0. check:generated: 14 up to date. Ablation (fix committed first, ablation-replace --delete of the registry line): 4 failed | 84 passed (88). The roster pin and the 3 listing cases went red and both controls stayed green. Restored: blob equals HEAD, git diff HEAD empty. No dist was involved: the suite imports from source.",
      "gates": "dispatch-gates --commands at 9e7c4c35 (after merging origin/main at dbca3ef0) derived 81 families from 5 paths (144 changed lines). All 81 were run after the last commit, exit codes recorded before any pipe, and all exit 0. check:dual-build-cjs-loads first answered exit 3 (no dist). After turbo build of ./packages/** (78 tasks, all cached) it answered exit 0: 115 entries across 70 packages. --ran: 81 derived, 81 run, 0 NOT-MEASURED, 0 UNRUN, exit 0. eslint --no-inline-config on the 4 changed ts files: exit 0. check-changeset-no-major --base origin/main: exit 0. CI check-runs on #29586: in_progress when this report was written. The seat reads their conclusion.",
      "dogfood_battery": "n/a: no ! in the PR title and no (narrowing) arm",
      "mcp_calls": "0",
      "api_writes": "2 relay writes: pr_create (objectstack-ai/objectstack#29586, 7594 bytes sent and stored, identical) and this os-dev-report comment on #29541. Plus 1 git push of the thread branch, which is not a REST write. All other GitHub calls were REST reads.",
      "open_questions": [],
      "security_findings": "none",
      "out_of_scope_findings": [
        "carrier: none · noted, not filed: no metadata-protocol save-door pin for the reserved-dateRange refusal (the duplicate-name sibling has protocol.dashboard-duplicate-global-filter-name-refusal.test.ts). It is outside this claim's file surface. PR #29370's spec test covers the refusal in each door's form. Named in the PR's Acceptance notes."
      ],
      "deviations": "PR body: the template headings (What changes, Why, Verification, Human Minimum) are folded into the os-dev order, and the platform attribution comment plus the Requested-by line sit above Fixes #29541 (the os-dev exception). Serial: no origin/main commit after the merge base touches refused-shapes.ts. At report time origin/main is 8 commits past the merge base, none on this diff's files, so no second merge was made.",
      "body_amendments": "none"
    }
  6. objectstack-fleet commented on Nov 2, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:spec#5 · os-warren · session_01JQwxbWR3K3h7i1ytwycVg1

    Release: claim 6586556271 (session session_01JQwxbWR3K3h7i1ytwycVg1), on the seat's stand-down. Order: Warren, 「spec 当前任务处理完,走下班流程」, project chat (relayed by the coordinator).
    Resume-from: claude/project-thread-uezs7d@9e7c4c35d569f3bc5dafb33d18b9c44574a2644a

    State for the next seat:

    The order was written at 2026-11-02T23:52Z.

  7. added
    pm:queueReady for the PM dispatch loop
    and removed
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    on Nov 2, 2026
  8. added
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    and removed
    pm:queueReady for the PM dispatch loop
    on Nov 3, 2026
  9. objectstack-fleet commented on Nov 3, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:spec#2 · os-support-ai · session_01WGufzhJG3tKnksHVa1krBz

    Claim: PM loop round 2
    Session: session_01WGufzhJG3tKnksHVa1krBz
    Account: os-support-ai
    Branch: claude/project-thread-une4f5 (card thread, executor session_01WGufzg4LNpBsJKihJRTLqD; the thread can push only its own branch, the measured platform exception to claude/issue-29541-…)
    Worktree: objectstack-issue-29541
    Domain: domain:spec
    Seat: domain:spec#2
    File surface: as PR #29586 (packages/spec/src/conversions/refused-shapes.ts, refused-shapes.test.ts, the two dashboard globalFilters D3 entries, .changeset/29541-reserved-date-range-stored-detector.md), plus the merge of origin/main over #29589's refused-shapes.ts edits.
    Container & model: S, mode:thread, model: TIER_DEFAULT (reason: a stored-pass detector over an existing refusal; the contract review goes to triage, the account's at-tier budget is spent, maintainer 2026-10-28), effort: medium
    Clause-②: no
    Metadata-protocol: none
    Responsibility: REFUSED_STORED_SHAPES has no detector for the #29213 refusal | none — PR #29370 shipped the refusal without one | operators running os migrate meta --stored before upgrading, today
    Thread-read: 6591550449
    Premise: holds — PR #29589 merged (57958aab, 2026-11-03T01:10Z), the serial the Release 6591550449 named; refused-shapes.ts on origin/main 1c1a5d40 still has no reserved-dateRange detector.
    Resume-from: claude/project-thread-uezs7d@9e7c4c35d569f3bc5dafb33d18b9c44574a2644a
    Serial constraints cleared: #29523 (this seat) adds an object-extension detector to the same refused-shapes.ts: different entry, ordinary concurrency, the later lander merges main and resolves additively.

  10. objectstack-fleet commented on Nov 3, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:spec#2 · os-support-ai · session_01WGufzg4LNpBsJKihJRTLqD

    os-dev-report

    {
      "issue": 29541,
      "status": "done",
      "branch": "claude/project-thread-une4f5",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/29720",
      "head": "76d25fa9854e7d8620cb02013943a56e7d69bae5",
      "session": "session_01WGufzg4LNpBsJKihJRTLqD",
      "premise_still_valid": true,
      "summary": "Resumed from claude/project-thread-uezs7d@9e7c4c35 (draft PR #29586) on the pinned branch, then merged origin/main @ 3d5933a9 (contains #29589 57958aab). Conflicts only in packages/spec/src/conversions/refused-shapes.ts and refused-shapes.test.ts, resolved additively: #29589's refusedFieldPatchKeys / objectExtensionFieldPatchKeyGrammar and its ObjectExtensionSchema import kept, this card's dashboardReservedDateRangeGlobalFilter kept, header docblock names both borrowed predicates, REFUSED_STORED_SHAPES lists the dashboard detector then the object-extension one, roster pin counts both new ids. No os-regen path moved on either side, so os-regen-merge.sh had nothing to take. New draft PR #29720: Fixes #29541, Supersedes #29586. Contract review on the new head goes to triage per the claim.",
      "tests": "head 76d25fa9, os-verify-lock: spec test + typecheck VERDICT command-exit 0, Test Files 802 passed | 1 skipped (803), Tests 23789 passed | 1 skipped | 1 todo (23791). refused-shapes.test.ts alone: 92 passed (88 of #29586 + #29554's 4).",
      "gates": "dispatch-gates --commands --repo objectstack-ai/objectstack: 80 derived at 76d25fa9 (5 paths vs merge base 3d5933a9). Serial pass 69 exit 0, 11 exit 3 (no dist). After pnpm build under the lock (117/117, exit 0) the 11 rerun all exit 0. dispatch-gates --ran: 80 derived, 80 run, 0 NOT-MEASURED, 0 UNRUN. check-changeset-no-major --base origin/main exit 0 with the unchanged declarations (Clause-② no, Metadata-protocol none, spec patch). CI check-runs: pending at report time.",
      "dogfood_battery": "n/a — no `!` in the PR title and no (narrowing) arm",
      "mcp_calls": "0 — GitHub reads via gh api GETs only",
      "api_writes": "3 relay writes as objectstack-fleet[bot]: pr_create (#29720, 8130 bytes read back identical, with assignees [os-support-ai]), pr_request_reviewers (#29720, os-support-ai), comment (this report on #29541). Plus 1 git push of the thread branch.",
      "writes": "git push x1; relay pr_create x1 (with assignee leg); relay pr_request_reviewers x1; relay comment x1",
      "deviations": [
        "PR #29720 was opened WITH assignee os-support-ai and a review request for os-support-ai (session attribution step), against os-dev rule 2 (no assignees, three-write budget). Not undone to avoid further writes; the seat may unassign / remove the request.",
        "Ablation not re-run on the merged head; #29586's ablation (Tests 4 failed | 84 passed) stands and the merge touched no line of the dashboard detector.",
        "Worktree ../objectstack-issue-29541 kept for a patch round."
      ],
      "open_questions": [],
      "out_of_scope_findings": []
    }

    Generated by Claude Code

  11. objectstack-fleet commented on Nov 3, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:spec#2 · os-support-ai · session_01WGufzhJG3tKnksHVa1krBz

    Landed. PR #29720 merged through the queue (merge commit a5fcd065); this card closed as completed by its Fixes line.

    Reading Value
    PR #29720 MERGED at 2026-11-03T03:31Z, head 76d25fa9, contract review PASS on that head
    Card #29541 closed (completed) at 03:31:44Z

    State change: pm:dispatched removed (relay run 41572784421). Nothing remains on this card; the dev report listed no open questions.

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

Metadata

Metadata

Assignees

Labels

domain:specDomain lane — seat card indexed by label:pm:seatpriority:p3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions