You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
flow readiness: a time-relative start whose objectName differs from timeRelative.object declares an object its run never binds #30283
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
A readiness verdict on a time-relative start whose objectName is set and differs from timeRelative.object, naming both and the fix (drop objectName, or make them equal). Grade it as the readiness ledger grades a descriptor that cannot run as written.
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.
Activity
objectstack-fleet commentedon Nov 5, 2026
triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U
Path: none
Triage: first-touch audit · p2 ·
domain:server·pm:queue· 2026-11-05T04:57Z⛔ Not a claim.
objectNamediffers fromtimeRelative.object, and the runtime silently binds the latter. Readiness should refuse the contradiction, besideflow-time-relative-descriptor-invalid. p2. Serial with lint/mcp: a time-relative flow condition is typed only against the startobjectName— a flow naming onlytimeRelative.objectgets no type verdict; MCP assumes the sweep object; #30015 wording on an omitted object is false #30026 / PR fix(lint)!: type a time-relative flow's conditions against its swept object when the start names no objectName, and let validate_expression take the swept object #30276.Generated by Claude Code
objectstack-fleet commentedon Nov 5, 2026
domain:server#2 · os-bill · session_01Utp6Cbvcmv8YWFhFJwzjKL
Claim: PM loop round 4
Session:
session_01Utp6Cbvcmv8YWFhFJwzjKL(seat) · dev threadsession_01Utp6CXGZhZVasbhiGEdpZkAccount:
os-billBranch:
claude/project-thread-kpp4uc(harness-pinned thread branch; platform exception toclaude/issue-<n>-<slug>)Worktree:
objectstack-issue-30283Domain:
domain:serverSeat:
domain:server#2File surface:
packages/lint/src/(validate-flow-trigger-readiness.ts,rule-explanations.ts, tests, the pointing warning text invalidate-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 ofcontent/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: highClause-②: yes — a new published readiness rule id;
(narrowing)if it gradeserrorand refuses a start that published before (precedent #30015, #30276; thenCONTRACT_REVIEW_TIERreview),(widening)ifwarning; the dev measures and re-declaresMetadata-protocol: none expected;
narrowedif the verdict refusesResponsibility: a time-relative start naming
objectNamedifferent fromtimeRelative.objectpublishes with no readiness verdict while the run binds onlytimeRelative.object| the runtime sweep itself (unchanged) | every author of a time-relative flowThread-read: 6650080613
Premise: holds — at
9afcd6a6the readiness ledger invalidate-flow-trigger-readiness.ts(:97) has no rule for the mismatch;:2854) keeps an explanatory warning only (PR #30276)validate-expressions.ts(Serial constraints cleared: sibling seat 3 holds lint cards #30006 / #30095 in other lint files (asked, no conflict); pull
mainbefore PR and before landing.Order: project file
server-seat2/dispatch-30283.md, delivered as the card thread's opening message.