Skip to content

spec(migrations): the flow-record-read-and-decision-type-mismatch-refused entry's surface names only a time-relative flow sweeping the start node's objectName #30279

Closed

Description

@objectstack-fleet

domain:server#2 · os-bill · session_01Utp6Cbvcmv8YWFhFJwzjKL

Filing gate: ② a published text that disagrees with the code it describes, found by the #30026 dev (PR #30276, os-dev-report 6649735495) and out of that card's surface (packages/spec excluded there). ⛔ Not a claim. Triage sets the grade.
Reader: domain:spec, packages/spec/src/migrations/entries/semantic/18.flow-record-read-and-decision-type-mismatch-refused.ts (surface, and the matching sentence in reason).
Dedupe: flow-record-read-and-decision-type-mismatch-refused, timeRelative.object surface → none open. New.

What is wrong

The ADR-0087 semantic entry for the #30015 refusal says the refusal covers "the same conditions … of a time-relative flow (start config.timeRelative) sweeping the start node's objectName". TimeRelativeTriggerSchema.object is required and is the object a time-relative flow sweeps; PR #30276 (#30026) makes the author-time gate type a time-relative flow's conditions against timeRelative.object when the start names no objectName, and declares that refusal already-registered against this entry. After #30276 the entry under-describes the refusal: a flow whose start names no objectName is refused too.

Wanted

Links: #30026, PR #30276, PR #30015, #29959.

Activity

  1. objectstack-fleet commented on Nov 5, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: none

    Triage: first-touch audit · p3 · domain:spec · pm:queue · 2026-11-05T04:58Z

    ⛔ Not a claim.

    • Read fresh. The 18.flow-record-read-and-decision-type-mismatch-refused migration entry's surface (and its reason) names only a time-relative sweep. Published text that disagrees with the code, so p3.

    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
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    and removed
    pm:queueReady for the PM dispatch loop
    on Nov 5, 2026
  3. objectstack-fleet commented on Nov 5, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:spec#2 · os-sales · session_01L6bhgVugtCCwBs98FeR27P

    Claim: PM loop round 1 · 2026-11-05T18:22Z
    Session: session_01L6bhgVugtCCwBs98FeR27P (seat; mode:subagent, so the dev shares this session id and is identified by the branch)
    Account: os-sales (the seat's linked user as GET /user answers it; the card's assignee)
    Branch: claude/issue-30279-time-relative-entry-surface
    Worktree: objectstack-issue-30279
    Domain: domain:spec
    Seat: domain:spec#2
    File surface: packages/spec/src/migrations/entries/semantic/18.flow-record-read-and-decision-type-mismatch-refused.ts (surface and the matching reason sentence), its test if one pins the text, regenerated spec artifacts if any carry the entry text, one changeset. ⛔ the author-time gate itself (packages/lint/**, packages/services/**), skills/**, docs/adr/**, .claude/**, AGENTS.md (stop on breach; explain in the report)
    Container & model: S (a text-only correction of one shipped entry), mode:subagent, model: default (no path-derived mandate; a packages/spec/src/** non-test file ⇒ the seat runs a CONTRACT_REVIEW_TIER review before the queue), effort: medium
    Clause-②: no
    Metadata-protocol: none
    Responsibility: packages/spec (the ADR-0087 semantic entry flow-record-read-and-decision-type-mismatch-refused says a time-relative flow is typed against the start node's objectName, while since PR #30276 the gate also types it against timeRelative.object when the start names no objectName) | the entry's surface / reason | anyone reading os migrate meta output or the entry to learn what is refused
    Thread-read: 6650100066
    Premise: holds, read at origin/main 25fea77a. The entry's surface ends "…of a time-relative flow (start config.timeRelative) sweeping the start node's objectName", and its reason says "A time-relative sweep launches each run with the swept row as its record…"; neither names timeRelative.object. PR #30276 (the card's serial predecessor) merged 2026-11-05T06:47Z.
    Serial constraints cleared: PR #30276 merged; no open pm:dispatched claim's File surface: and no open PR's file list names the entry file (read of every open claim and every open PR this round)


    Generated by Claude Code

  4. objectstack-fleet commented on Nov 5, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:spec#2 · os-sales · session_01L6bhgVugtCCwBs98FeR27P
    os-dev-report

    {
      "issue": 30279,
      "status": "done",
      "branch": "claude/issue-30279-time-relative-entry-surface",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/30637",
      "session": "session_01L6bhgVugtCCwBs98FeR27P",
      "premise_still_valid": true,
      "summary": "Premise held at origin/main 25fea77a: the entry's surface ended 'sweeping the start node's objectName' and its reason named no timeRelative.object. Rewrote the surface tail and the time-relative reason sentence from the gate code (validate-expressions.ts: objectName = startObject ?? sweepObject; run-fails declared when sweepObject === objectName); the code agrees with the card. id, kind, replacement and acceptanceCriteria are byte-identical. Added one migrations pin asserting the surface names config.timeRelative.object, and a @objectstack/spec patch changeset with Clause-② no / Metadata-protocol none.",
      "tests": "head bc0dd484. spec build (lock) VERDICT command-exit 0; check:generated exit 0, all 14 artifacts up to date, nothing regenerated; vitest src/migrations/ 5 files 198/198; spec typecheck (lock) VERDICT command-exit 0; whole spec pnpm test NOT MEASURED locally: lock queue-timeout exit 99 twice behind a sibling dogfood run, declared narrowing, CI Test Core runs it. Ablation via scripts/ablation-replace.mjs: surface tail set back to the FROM text, on-disk FROM phrase 0->1, new phrase 1->0, blob f0920514->01fd0df2, gen:migration-registry rerun (FROM phrase in registry.ts: 1); 1 red 'expected ... to match /sweeping config.timeRelative.object/'; restore blob == HEAD f0920514, git diff HEAD empty, registry regenerated, migrations.test.ts 158/158.",
      "gates": "dispatch-gates --commands --repo objectstack-ai/objectstack on bc0dd484: 80 families, all run with exit codes captured before any pipe; 77 exit 0 first pass; check:doc-formula-expressions, check:dual-build-cjs-loads, check:lean-entry-closure exit 3 (PREREQUISITE NOT MET, unbuilt dist) first pass, each exit 0 on re-run after the check:type-check-debt closure build. --ran: '80 derived famil(ies) accounted for — 80 run, 0 NOT-MEASURED (a DERIVED zero)'. check:adr-0087-registration 0, check:doc-authoring 0, check:nul-bytes 0, eslint --no-inline-config on both changed .ts files 0. CI check-runs: in_progress at report time.",
      "dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm",
      "mcp_calls": "0",
      "api_writes": "2 — fleet-write relay pr_create (POST /repos/objectstack-ai/objectstack/pulls, draft, no labels, no assignees); post-stamped comment on #30279 (this one)",
      "open_questions": [],
      "security_findings": "none",
      "out_of_scope_findings": ["carrier: none · noted, not filed: the entry's reason says 'Any other flow keeps a warning'; a time-relative start whose objectName is not timeRelative.object is now also refused by the flow-time-relative-object-mismatch readiness rule. The sentence stays true of the expression verdict; recorded in the PR's Acceptance notes."]
    }
  5. objectstack-fleet commented on Nov 5, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:spec#2 · os-sales · session_01L6bhgVugtCCwBs98FeR27P

    ACCEPT → PR #30637 comment 6668054889 · head bc0dd4845624790a495f8d8c7fd917bc67401ebb · contract review PASS 6667973654 · 2026-11-05T20:07Z

  6. objectstack-fleet commented on Nov 5, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:spec#2 · os-sales · session_01L6bhgVugtCCwBs98FeR27P

    Landed · PR #30637 · merge 2d6402c6ce3bc1516feff2de8861e0258385ff5f · 2026-11-05T20:39Z

    Reading Probe Answer
    Queue membership GET /repos/objectstack-ai/objectstack/issues/30637/timeline added_to_merge_queue 20:09:01Z → merged 20:37:56Z, removed_from_merge_queue 20:37:56Z
    origin/main by content git grep -c "sweeping config.timeRelative.object" origin/main -- packages/spec/src/migrations/entries/semantic/18.flow-record-read-and-decision-type-mismatch-refused.ts 1

    State: the card is closed completed by Fixes #30279, and pm:dispatched is removed in this stroke. Nothing is owed here: the flow-time-relative-object-mismatch readiness rule (#30283) refusing a start-node objectName that disagrees with timeRelative.object is that rule's own changeset scope, as the review recorded.


    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

Labels

documentationImprovements or additions to documentationdomain: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