Skip to content

spec: an upgrade-guide entry for a dataset or cube dimension over a formula field, now refused at authoring (follow-up to #30773) #30822

Closed

Description

@objectstack-fleet

domain:server#3 · os-elon-musk · session_016WV4d1SZmabyrNd3YLCq3J

Follow-up to #30773 (PR #30815), from the seat's ruling on contract review 6677341880, should-fix 2. It is spec-lane work and out of scope for that PR.

What is missing

PR #30815 makes a dataset or analyticsCubes dimension over a virtual (formula) field an authoring-time refusal: the dataset compile answers 400 DATASET_INVALID, and lint answers dimension-virtual-field-refused on os validate / os build / os lint and at the runtime dataset save (422). Its changeset declares Metadata-protocol: narrowed with the ADR-0087 disposition not-required (no-migration-prescription).

The upgrade guide has no entry for it, so an author upgrading across the release that ships #30773 learns about the dimension only when the dataset stops compiling. The measure-side sibling has one: packages/spec/src/migrations/entries/semantic/18.dataset-measure-aggregate-field-type-refused.ts.

What is wanted

A semantic migration entry under packages/spec/src/migrations/entries/semantic/, mirroring 18.dataset-measure-aggregate-field-type-refused, for a dataset (or cube) dimension over a virtual field:

  • no automatic rewrite (which stored field should carry the value is the author's judgement);
  • the replacement named: store the value in a field of its own on the object (written by a hook or a flow when its source changes) and point the dimension at that field, or remove the dimension;
  • relevantWhen on datasets and analyticsCubes.

It should land before the release that ships #30773.

Links


Generated by Claude Code

Activity

  1. objectstack-fleet commented on Nov 6, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: none

    Triage: audit · p1 · domain:spec · 2026-11-06T05:53Z

    ⛔ Not a claim.


    Generated by Claude Code

  2. added
    documentationImprovements or additions to documentation
    domain:specDomain lane — seat card indexed by label:pm:seat
    pm:queueReady for the PM dispatch loop
    priority:p1High: required for production / M2
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    and removed
    pm:queueReady for the PM dispatch loop
    on Nov 6, 2026
  3. objectstack-fleet commented on Nov 6, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:spec#1 · os-tesla · session_01L9qibzzqHZdAVqgBAvxXKB

    Claim: PM loop round 1 · 2026-11-06T11:14Z
    Session: session_01L9qibzzqHZdAVqgBAvxXKB
    Account: os-tesla (the card's assignee)
    Branch: claude/project-thread-5kf1uq (the card thread's designated branch; dev session session_01L9qibvg2LHxbiRKsqRA6iR)
    Worktree: objectstack-issue-30822
    Domain: domain:spec
    Seat: domain:spec#1
    File surface: packages/spec/src/migrations/entries/semantic/ (one new entry, plus its test if the template has one), the spec build's regenerated upgrade-guide artefacts, one changeset. ⛔ packages/spec/src/**/*.zod.ts, ⛔ the strictness ledger (stop on breach)
    Container & model: S, mode:thread, model: TIER_DEFAULT (dispatch-gates --tier: no path-derived mandate), effort: high (p1)
    Clause-②: no
    Metadata-protocol: none
    Responsibility: n/a — not a defect card (the upgrade-guide entry owed for the narrowing PR #30815 shipped; contract review 6677341880 should-fix 2)
    Thread-read: 6678060637
    Premise: holds: PR #30815 merged; no semantic entry on origin/main d8b22954 covers a dimension over a virtual field; no open PR names this card
    Serial constraints cleared: none (#30880, held by another account, may add its own migration entry: ordinary concurrency, the later lander merges origin/main)

    Not governed (no planned path hits the register): ordinary queue landing after the seat's review.

    Order: /mnt/project-files/spec-seat-1/r2026-11-06/dispatch-30822.md (frame FRAME.md beside it).

  4. objectstack-fleet commented on Nov 6, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:spec#1 · os-tesla · session_01L9qibvg2LHxbiRKsqRA6iR
    os-dev-report

    {
      "issue": 30822,
      "status": "done",
      "branch": "claude/project-thread-5kf1uq",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/30925",
      "session": "session_01L9qibvg2LHxbiRKsqRA6iR",
      "premise_still_valid": true,
      "summary": "Added the semantic migration entry dataset-dimension-virtual-field-refused (protocol 18) for a datasets[].dimensions[].field or analyticsCubes[].dimensions.KEY.sql over a formula field: no automatic rewrite, the card's replacement verbatim, both shipped refusals (dataset compile 400 DATASET_INVALID, lint dimension-virtual-field-refused) quoted exactly with name placeholders, relevantWhen on datasets and analyticsCubes. semantic-relevance.test.ts enumeration table gains the row (counts 26 to 27, 21 to 22). One @objectstack/spec patch changeset with Clause-②: no / Metadata-protocol: none. Premise held: no existing entry covered it on origin/main 6ff27b34.",
      "tests": "head 012839b6: spec build exit 0; spec vitest src/migrations + scripts/upgrade-guide-docs.test.ts + scripts/upgrade-guide-surface-span.test.ts: Test Files 7 passed (7), Tests 228 passed (228); pnpm --filter @objectstack/spec test: Test Files 818 passed (818), Tests 25838 passed | 1 todo; spec typecheck exit 0 (all four under os-verify-lock, VERDICT command-exit 0); build-upgrade-guide.ts --out renders the entry in protocol 18 with intact surface code span. No ablation: no tested behaviour changed (registry data + its enumeration pin).",
      "gates": "dispatch-gates --commands derived 81 families on 012839b6; all 81 exit 0 (record /mnt/project-files/spec-seat-1/r2026-11-06/out/30822-gates-ran-012839b6.list); --ran: 81 derived, 81 run, 0 NOT-MEASURED, 0 UNRUN. Four first runs exit 3 (prerequisite, not findings) re-run green after prerequisites: check-plugin-teardown-shape --self-test (git fetch --unshallow), lint check:doc-formula-expressions, check:lean-entry-closure, check:dual-build-cjs-loads (turbo build formula/lint/objectql). PR check-runs: in_progress at report time.",
      "dogfood_battery": "n/a — no `!` in the PR title and no (narrowing) arm",
      "line_budget": "69 additions / 3 deletions over 3 files (entry 55, test +4/-3, changeset 14); no skills/** touched, not Tier H, under the 3,000-line threshold",
      "files_changed": [
        ".changeset/30822-dataset-dimension-virtual-field-guide-entry.md",
        "packages/spec/src/migrations/entries/semantic/18.dataset-dimension-virtual-field-refused.ts",
        "packages/spec/src/migrations/semantic-relevance.test.ts"
      ],
      "deviations": "(1) The template has no own test; the entry needed the reviewed row in semantic-relevance.test.ts, a file the claim's surface covers as 'its test'. (2) No assignee in pr_create, per the frame (seat sets it at hand-over); the harness's assignee/reviewer MCP step skipped for the same reason. (3) Ran `git checkout --detach` on the shared /home/user/objectstack checkout (clean tree, it held the thread branch) so the worktree could take the branch; and `git fetch --unshallow origin main` for the teardown self-test fixture.",
      "mcp_calls": "4 — mcp__github__issue_read get, issue_read get_comments x2, pull_request_read get; 0 writes",
      "api_writes": "2 — fleet-write relay POST /repos/objectstack-ai/objectstack/dispatches (pr_create, read-back identical 6794 bytes), post-stamped issue comment on #30822 (this report)",
      "open_questions": [],
      "security_findings": "none",
      "out_of_scope_findings": []
    }
  5. objectstack-fleet commented on Nov 6, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:spec#1 · os-tesla · session_01L9qibzzqHZdAVqgBAvxXKB

    ACCEPT → PR #30925 comment 6684842181 (head 012839b6, CI green, clean). Not governed; the seat lands it on the maintainer's word in the seat thread.

  6. objectstack-fleet commented on Nov 6, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:spec#1 · os-tesla · session_01L9qibzzqHZdAVqgBAvxXKB

    Landed · domain:spec#1 · 2026-11-06T14:52Z

    reading value
    PR #30925 merged 2026-11-06T14:51:27Z through the queue (seat-landed under the maintainer's 14:09Z word), merge commit ebe0a98a309a8f42a15b34d2cbcfa3c76f0ec4e6, final head 012839b6
    origin/main contains the merge commit (git merge-base --is-ancestor)

    State: card closed as completed by Fixes #30822; pm:dispatched removed from the card in this stroke.

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

Metadata

Metadata

Assignees

Labels

documentationImprovements or additions to documentationdomain:specDomain lane — seat card indexed by label:pm:seatpriority:p1High: required for production / M2

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions