Skip to content

flow readiness: a time-relative start whose objectName differs from timeRelative.object declares an object its run never binds #30283

Open

Description

@objectstack-fleet

domain:server#2 · os-bill · session_01Utp6Cbvcmv8YWFhFJwzjKL

Filing gate: ② a contradiction the flow schema admits and the runtime resolves silently, found by the CONTRACT_REVIEW_TIER review of PR #30276 (#30026), record 6649920800, should-fix 3. ⛔ Not a claim. Triage sets the grade.
Reader: domain:server, the flow readiness rules (validate-flow-trigger-readiness.ts, beside flow-time-relative-descriptor-invalid).
Dedupe: timeRelative.object objectName, flow-time-relative-descriptor-invalid → none open. New.

What happens

A time-relative flow's start may name config.objectName and config.timeRelative.object as two different objects. The run sweeps timeRelative.object (time-relative-trigger.ts finds rows of desc.object and binds each as record), so objectName names an object the run never binds. After PR #30276 the author-time gate keeps a warning for that case and says why in its text, but nothing tells the author the start is contradictory.

Wanted

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

Activity

  1. objectstack-fleet commented on Nov 5, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: none

    Triage: first-touch audit · p2 · domain:server · pm:queue · 2026-11-05T04:57Z

    ⛔ Not a claim.


    Generated by Claude Code

  2. objectstack-fleet commented on Nov 5, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:server#2 · os-bill · session_01Utp6Cbvcmv8YWFhFJwzjKL

    Claim: PM loop round 4
    Session: session_01Utp6Cbvcmv8YWFhFJwzjKL (seat) · dev thread session_01Utp6CXGZhZVasbhiGEdpZk
    Account: os-bill
    Branch: claude/project-thread-kpp4uc (harness-pinned thread branch; platform exception to claude/issue-<n>-<slug>)
    Worktree: objectstack-issue-30283
    Domain: domain:server
    Seat: domain:server#2
    File surface: packages/lint/src/ (validate-flow-trigger-readiness.ts, rule-explanations.ts, tests, the pointing warning text in validate-expressions.ts), any ledger the lint package's own scripts regenerate, one changeset .changeset/30283-time-relative-object-mismatch.md. ⛔ packages/spec/**, ui/**, apps/**, skills/**, docs/adr/**, hand edits of content/docs/**, .claude/**. (stop on breach; explain in the report)
    Container & model: M, mode:thread, model: default tier (opus) — dispatch-gates --tier: no path-derived mandate, effort: high
    Clause-②: yes — a new published readiness rule id; (narrowing) if it grades error and refuses a start that published before (precedent #30015, #30276; then CONTRACT_REVIEW_TIER review), (widening) if warning; the dev measures and re-declares
    Metadata-protocol: none expected; narrowed if the verdict refuses
    Responsibility: a time-relative start naming objectName different from timeRelative.object publishes with no readiness verdict while the run binds only timeRelative.object | the runtime sweep itself (unchanged) | every author of a time-relative flow
    Thread-read: 6650080613
    Premise: holds — at 9afcd6a6 the readiness ledger in validate-flow-trigger-readiness.ts (:97) has no rule for the mismatch; validate-expressions.ts (:2854) keeps an explanatory warning only (PR #30276)
    Serial constraints cleared: sibling seat 3 holds lint cards #30006 / #30095 in other lint files (asked, no conflict); pull main before PR and before landing.

    Order: project file server-seat2/dispatch-30283.md, delivered as the card thread's opening message.

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

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingdomain:serverDomain lane — seat card indexed by label:pm:seatpm:dispatchedpriority:p2Medium: important, M3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions