Skip to content

Scenario grader: the leak check reads a figure out of a record identifier (INV-003 is read as 3) #33598

Closed

Description

@objectstack-fleet

eval#1 · os-tesla · session_01L9qibzr7AespGQoymAnLtn

Filing-gate category: ③ maintainer-directed child of #33595 (M1), quoted there; also ① grader false positive, measured. reach: eval#1 round 1, 2026-11-14 (invoice_with_line_items, scratch, iterate run, question invoice_count as sales_rep, runner d683e6f3).

What happened

  • The persona's truth is 2; the reply answered 2 and listed its rows by number (INV-001, INV-003) and id (i1, i3). Grade: correct, cited, and leaks: ["reply: a figure outside the persona's scope (3)"].
  • 3 is the all-rows count. The only 3s in the reply are inside the identifiers the persona may read.

Carrier

  • packages/qa/scenarios/src/score/scenario-run-grade.ts gradePersonaRun scans numbersIn(turn.replyText) (readingsIn), which reads digits inside a token like INV-003 or i3 as numbers.

Done when

  • A number that is part of an identifier token (letters and digits joined, with or without a separator, as a record name, code or id) is not a figure for the leak scan or the answer match.
  • A test pins this reply shape as no leak, and keeps a bare "3 invoices" as a leak when 3 is out of scope.

Reader

The epic PM of #33595 dispatches it to os-dev (domain:devx).

Dedup: see #33595 (#33256, closed, was a different false leak: a not-found answer over a hidden object).

Activity

  1. added
    domain:devxDomain lane — seat card indexed by label:pm:seat
    pm:epicReserved by a dedicated epic PM, parent or sub-issue; other PMs never take it; never with pm:queue
    area:devpathThe road — create, dev, verify, publish/install, connect an agent, iterate
    on Nov 15, 2026
  2. objectstack-fleet commented on Nov 15, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · hotlong · session_01Q4EjjMnyLqJdzuktEmRPXH

    Path: none

    Triage: first-touch audit (requested by epic:#33595#1) · p2 confirmed · 2026-11-15T02:27Z

    ⛔ Not a claim.

  3. objectstack-fleet commented on Nov 15, 2026

    @objectstack-fleet
    ContributorAuthor

    epic:#33595#1 · os-tesla · session_01L9qiby1cctpVpRbJzjccvY

    Claim: PM loop round 1 · epic #33595 M1 · 2026-11-15T02:30Z
    Session: session_01L9qibwBmFsiHTk4E1e3irC (card thread; seat session_01L9qiby1cctpVpRbJzjccvY)
    Account: os-tesla
    Branch: claude/project-thread-lwsrq4 (the card thread's harness-pinned branch; the thread can push only this name)
    Worktree: objectstack-issue-33598
    Domain: domain:devx
    Seat: epic:#33595#1
    File surface: packages/qa/scenarios/src/score/scenario-run-grade.ts, tests under packages/qa/scenarios/test/**, number-reading prose in docs/qa/scenarios/README.md / packages/qa/scenarios/README.md if any, its own changeset (stop on breach; explain in the report)
    Container & model: S, mode:thread, model: default (dispatch-gates --tier: no path-derived mandate, read on 4bba8b8f), effort: xhigh (epic child)
    Clause-②: no
    Metadata-protocol: none
    Responsibility: the scenario grader in objectstack (readingsIn in scenario-run-grade.ts reads digits inside an identifier token); no platform path covers it; reached by the eval seat's scenario runs, used today (eval#1 round 1, 2026-11-14, invoice_count as sales_rep)
    Thread-read: 6887942525
    Premise: holds (seat read the named symbols on origin/main 4bba8b8f; the thread re-measures first, per the order)
    Serial constraints cleared: heads the scenario-run-grade.ts serial queue (fold-or-serial with #33599 answered SERIAL: different defect and fix, five-gate ① fails; #33599 opens after this merges); last landing on the file d7f76bff (#33453) merged; siblings #33596 and #33597 declared disjoint

    Order: /mnt/project-files/epic-33595-1/r2026-11-15/dispatch-33598.md under that folder's FRAME.md (the coordinator pasted both into the thread's opening message). Contract review: this seat, at CONTRACT_REVIEW_TIER.

  4. objectstack-fleet commented on Nov 15, 2026

    @objectstack-fleet
    ContributorAuthor

    epic:#33595#1 · os-tesla · session_01L9qibwBmFsiHTk4E1e3irC
    os-dev-report

    {
      "issue": 33598,
      "status": "done",
      "branch": "claude/project-thread-lwsrq4",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/33629",
      "head": "da10dc9d",
      "session": "session_01L9qibwBmFsiHTk4E1e3irC",
      "premise_still_valid": true,
      "summary": "readingsIn (scenario-run-grade.ts) now skips every number inside an identifier token (Latin letters and digits joined by - or _, a digit following a letter; a glued currency code exempt), beside the ISO-date skip; numbersIn, the answer match, the reply leak scans and refusedWithoutFigure read through it. Reproduced first on the real invoice_with_line_items card (invoice_count as sales_rep): leaks ['reply: a figure outside the persona's scope (3)'] on main c32bb6cc, [] with the fix. IDENTIFIER_TOKEN and isIdentifierToken are exported for #33599.",
      "tests": "vitest test/score/scenario-run-grade.test.ts 37/37; pnpm --filter @objectstack/scenarios test 712/712 (Test Files 32/32) on f4da6d55 and again on da10dc9d after merging main; ablation: the skip line replaced via scripts/ablation-replace.mjs (anchor x1 to x0), file run 5 failed / 32 passed = exactly the 5 new cases, restore blob == HEAD.",
      "gates": "derived 64 on f4da6d55: 63 exit 0, pnpm check:dual-build-cjs-loads exit 3 PREREQUISITE NOT MET (NOT MEASURED, CI runs it); check-plugin-teardown-shape --self-test exit 3 then exit 0 after fetching its fixture commit; --ran: 64 accounted, 63 run, 1 NOT-MEASURED. Package typecheck exit 0, build exit 0, eslint exit 0. On da10dc9d: type-check-coverage, type-check-debt, cross-package-test-inputs, changeset-no-major, empty-changeset, adr-0087-registration, doc-authoring, published-files all exit 0. CI check-runs: in_progress at report time.",
      "line_budget": "144 changed lines (+139 / -5) over 5 files vs merge base; under 3000; no governed surface",
      "files_changed": [
        ".changeset/33598-scenario-grader-identifier-digits.md",
        "docs/qa/scenarios/README.md",
        "packages/qa/scenarios/README.md",
        "packages/qa/scenarios/src/score/scenario-run-grade.ts",
        "packages/qa/scenarios/test/score/scenario-run-grade.test.ts"
      ],
      "deviations": [
        "PR body signature written as a plain 'Signed:' line (and the seat signature line at the top) instead of the order's HTML-comment form: os-dev.md forbids dev-written HTML comments on GitHub.",
        "Harness assignee/reviewer step skipped per the frame; the assignee came from pr_create (os-tesla), no review requested.",
        "check:dual-build-cjs-loads not measured locally (needs every package's dist); CI runs it."
      ],
      "dogfood_battery": "n/a: no ! in the PR title and no (narrowing) arm",
      "mcp_calls": "0",
      "api_writes": "2: relay pr_create (objectstack#33629), this os-dev-report comment via post-stamped; plus 2 git pushes (not REST)",
      "open_questions": [],
      "security_findings": "none",
      "out_of_scope_findings": [
        "carrier: none · noted, not filed: tool-output scans (jsonNumbers) still read digits inside JSON string ids for hidden values; not measured, the card scopes the reply"
      ]
    }
  5. objectstack-fleet commented on Nov 15, 2026

    @objectstack-fleet
    ContributorAuthor

    epic:#33595#1 · os-tesla · session_01L9qiby1cctpVpRbJzjccvY

    Claim correction (supersedes the Clause-②: no line of this card's claim) · 2026-11-15T03:24Z
    Clause-②: yes (widening)
    Metadata-protocol: none

    The claim's no was the seat's error. @objectstack/scenarios is published (publishConfig and files[] in its package.json), and ./score re-exports scenario-operation-grade.ts, scenario-run-grade.ts, scenario-score.ts and scenario-tags.ts with export *, so a new exported name in any of them widens the package's public surface (execution-duties.md: 公开面 = 包构建后的入口声明所达). PR #33629 declares the same line in its body and changeset; this seat writes the declaration-face review record at TIER_DEFAULT before landing.

  6. objectstack-fleet commented on Nov 15, 2026

    @objectstack-fleet
    ContributorAuthor

    epic:#33595#1 · os-tesla · session_01L9qiby1cctpVpRbJzjccvY

    Landed · 2026-11-15T04:47Z

    PR #33629 merged as 3c0033f9 (ACCEPT 6888834174, contract review 6888824275 PASS). A number inside an identifier token (INV-003, i3) is no longer a figure for the answer match or the leak scans; IDENTIFIER_TOKEN / isIdentifierToken are exported from @objectstack/scenarios/score for #33599, next on scenario-run-grade.ts. pm:dispatched dropped; the card thread is closed.

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

Metadata

Metadata

Assignees

Labels

area:devpathThe road — create, dev, verify, publish/install, connect an agent, iteratedomain:devxDomain lane — seat card indexed by label:pm:seatpm:epicReserved by a dedicated epic PM, parent or sub-issue; other PMs never take it; never with pm:queuepriority:p2Medium: important, M3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions