Skip to content

Scenario runner: the seed cannot load a reference cycle (department ↔ employee) in every mid-tier card, and a failed build author turn leaves no trace #30982

Open

Description

@objectstack-fleet

epic:#3600#1 · hotlong · session_01Q4EjjPXwX1YfHyKJUh4agu

Filing-gate category: ① defect with a measured reproduction. Found by the 8-card live run, 2026-11-06 (main d8b22954, scratch mode, driver claude-code-cli 2.1.318 · oauth_token · API-billed: no, maintainer go-ahead verbatim 「跑」). Routing, verbatim: 「能交给车队开发的你不要自己开发」. Epic: objectstack-ai/cloud#3600.

Defect 1 (blocker for every mid-tier card): the seed cannot load a reference cycle

Every mid-tier card has department.manager → employee and employee.department → department. The runner inserts rows object by object, so whichever object loads first refuses every row, and the rest cascade:

Card Seed loaded First refusals
requisition_to_receipt 6 / 637 demopurchase_department "Manager: no demopurchase_employee record has id "e13""; demopurchase_employee "Department: no … id "dep_sales""
asset_lifecycle 4 / 559 same pair (dep_eng / e01)
leave_balances 3 / 617 same pair (dep_sales / e05)

The Run halves of these cards are therefore all "not measured". travel_expense cannot be read at all (Defect 2).

Ask:

  1. Load the seed in two passes. First insert every row with each lookup that closes a cycle left null; then update those lookups. Find the cycles from the card's seed references (a lookup to an object loaded later in topological order), not from a hand list.
  2. A build that makes both sides of a cycle required cannot be seeded. The build prompt's data contract (prompts.ts dataContract) must say so ("at least one side of a reference cycle must be optional"), and the runner reports such a build as a Build finding naming the cycle.
  3. Pin it with a test from requisition_to_receipt's seed.

Defect 2: a build author turn that fails leaves no trace

travel_expense: the run record's build.author is null and the recording has no travel_expense/scratch/build/author/- turn. The build then scored 0/42 and every seed row answered OBJECT_NOT_FOUND. The objects on disk (trip, expense_claim, expense_line, travel_advance) were written later by the iterate turn, from the iterate prompt alone. It was the first card of a lane started in parallel with another lane, so a CLI start-up or usage-limit failure is the likely cause, but the record cannot say.

Ask: record a failed or missing author turn with its exit code, resultSubtype and the CLI's stderr tail. Mark the Build half "not measured: author turn failed" instead of scoring an empty project, and do not run the iterate turn on a build whose author turn failed.

Verification

Re-run requisition_to_receipt, asset_lifecycle, leave_balances and travel_expense in scratch mode after the fix. The seed must load fully before any Run half is read. The epic seat holds the recordings and run records.

Reader: the domain:devx lane seat, from pm:queue. p1, because it blocks every mid-tier Run measurement.

Activity

  1. added
    priority:p1High: required for production / M2
    pm:queueReady for the PM dispatch loop
    domain:devxDomain lane — seat card indexed by label:pm:seat
    area:devpathThe road — create, dev, verify, publish/install, connect an agent, iterate
    on Nov 6, 2026
  2. objectstack-fleet commented on Nov 6, 2026

    @objectstack-fleet
    ContributorAuthor

    epic:#3600#1 · hotlong · session_01Q4EjjPXwX1YfHyKJUh4agu

    Defect 3 (found after filing): the build author turn is killed at 15 minutes on every mid-tier card

    Measured from the recordings of the 8-card run:

    Card Build author turn Tool calls before the kill
    requisition_to_receipt no-result(exit 143) 61
    asset_lifecycle no-result(exit 143) 77
    leave_balances no-result(exit 143) 69
    order_to_cash no-result(exit 143) 91
    travel_expense, service_desk no turn recorded (Defect 2) —

    The four control-size builds finished in 17–21 turns. Exit 143 is SIGTERM from the runner's own author timeout (ClaudeCodeDriver.author, authorTimeoutMs ?? 15 * 60_000, driver.ts). So every 7–8-object build was cut off mid-way. That explains the Build misses: order_to_cash lacks every app navigation entry, the receivables report and all five agent actions; requisition_to_receipt lacks navigation and the dashboard. These are not AI-quality findings until a build runs to completion.

    Correction to Defect 2: service_desk (the third card of its lane) also has no build author turn, so a parallel start is not the explanation. Its scaffold is at 15:24:01 and the iterate turn wrote files at 15:25. Capturing the CLI's exit code and stderr (Defect 2's ask) is what will tell.

    Ask (add to this card):

    1. Make the author and iterate timeouts a runner option (--author-timeout) with a default sized for the starter tier (Scenario cards carry a tier (control | starter | delivery); control cards are internal checks and are never exported #30970), e.g. 60 minutes. Record the elapsed time on every author turn.
    2. A killed author turn makes the Build half not measured: author timed out after N min, never a degraded score. Do not run the seed, Run or iterate on it.
    3. The scorecard shows the author turn's elapsed time and resultSubtype.
  3. objectstack-fleet commented on Nov 6, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: none

    Triage: audit · p1 kept · domain:devx · 2026-11-06T16:00Z

    ⛔ Not a claim.

    • The scenario runner cannot seed a reference cycle (department ↔ employee), which every mid-tier card has, so their Run halves are all unmeasured. A failed build author turn leaves no trace, and (Defect 3, in the comment above) the author turn is killed at 15 minutes.
    • p1, domain:devx, area:devpath and pm:queue kept. It blocks the measurement of every mid-tier card.
    • Defect 3 is in scope for the claiming seat. If its fix differs in kind from Defects 1–2, it may split into its own card.

    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

No one assigned

    Labels

    area:devpathThe road — create, dev, verify, publish/install, connect an agent, iteratedomain:devxDomain lane — seat card indexed by label:pm:seatpm:queueReady for the PM dispatch looppriority: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