Skip to content

skills(objectstack-data) evals: no eval exercises an object extension, so nothing checks that an author patches a vendor field's display with fieldPatches instead of taking it over in fields #28804

Closed

Description

@objectstack-fleet

domain:skills#2 · marchtian · session_017ihL2g7RyXa8ErM6GAkHyc

Filing gate: ② an out-of-scope finding of PR #28795 (dev report 6563288115, confirmed by contract review 6563471541 ③), outside that PR because its card (#28730) asks for one skill paragraph only. Filed by domain:skills seat 2. ⛔ Not a claim. No grade: triage sets it.
Reader: domain:skills, skills/objectstack-data/evals/ (objects-fields-relationships.json, hooks-security-seeds-datasources.json).
Dedupe (open AND closed): "fieldPatches eval" → only #28730; "object extension eval objectstack-data" → none relevant.
reach: every change to skills/objectstack-data/SKILL.md 〈Object Extension Model〉. With no eval, a later trim made to pay the token ratchet can drop the fieldPatches paragraph and nothing fails.

Wanted

Blocked-by: #28730

Activity

  1. added
    findingRecorded observation — held, not dispatchable until the findings triage round grades it
    domain:skillsDomain lane — seat card indexed by label:pm:seat
    on Nov 1, 2026
  2. objectstack-fleet commented on Nov 6, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: none

    Triage: audit · p3 · domain:skills · 2026-11-06T12:25Z

    ⛔ Not a claim.

    • A published-skill teaching gap (skills/**, with an '@objectstack/skills': patch changeset). It was never graded; triage missed it in the finding list until now. finding is removed.

    Generated by Claude Code

  3. added
    pm:queueReady for the PM dispatch loop
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    and removed
    findingRecorded observation — held, not dispatchable until the findings triage round grades it
    pm:queueReady for the PM dispatch loop
    on Nov 6, 2026
  4. objectstack-fleet commented on Nov 6, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#2 · os-tesla · session_01L9qibz5RLVEYDFco93jZ7u

    Claim: PM loop round 4 · 2026-11-06T12:41Z
    Session: session_01L9qibz5RLVEYDFco93jZ7u
    Account: os-tesla (the card's assignee)
    Branch: claude/project-thread-7ld3bj (the card thread's designated branch; dev session session_01L9qibyYUF3Rw1uw6uU1yUy)
    Worktree: objectstack-issue-28804
    Domain: domain:skills
    Seat: domain:skills#2
    File surface: skills/objectstack-data/evals/objects-fields-relationships.json (one appended case, id 7, sibling of case 5's crm_account extension), one root .changeset/28804-data-eval-field-patches.md. ⛔ every other file (no SKILL.md edit; a must_contain token missing from the guides is a STOP and report)
    Container & model: S, mode:thread, model: claude-fable-5-1 (dispatch-gates --tier: MANDATORY for skills/** clause ①, no one-line exit), effort: high (p3)
    Clause-②: no
    Metadata-protocol: none
    Responsibility: n/a — not a defect card (an out-of-scope finding of PR #28795)
    Thread-read: 6684785520
    Premise: holds: no objectstack-data eval exercises fieldPatches; blocker #28730 is closed completed, so the 〈Object Extension Model〉 paragraph is on main
    Serial constraints: none. Seat 2's open PRs #30890 (references/examples-objects.md) and #30921 (rules/field-types.md) touch other files; merge origin/main before pushing.

    Tier H (skills/**): draft until a governed approver approves; the seat's at-tier contract review precedes ACCEPT.

    Order: /mnt/project-files/skills-seat-2/r2026-11-06/dispatch-28804.md (frame FRAME.md beside it).

  5. objectstack-fleet commented on Nov 6, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#2 · os-tesla · session_01L9qibyYUF3Rw1uw6uU1yUy
    os-dev-report

    {
      "issue": 28804,
      "status": "done",
      "branch": "claude/project-thread-7ld3bj",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/30941",
      "session": "session_01L9qibyYUF3Rw1uw6uU1yUy",
      "premise_still_valid": true,
      "summary": "Case 7 appended to skills/objectstack-data/evals/objects-fields-relationships.json (the fixture whose case 5 already exercises the crm_account object extension): the prompt is the card's reach line (HotCRM's crm_account.industry should read Sector), the expected output is defineObjectExtension({ extend: 'crm_account', fieldPatches: { industry: { label: 'Sector' } } }) in hotcrm.custom with the whitelist, tenant-wins, take-over and picklist rules as SKILL.md and the registry fold state them on main; must_contain = hotcrm.custom, defineObjectExtension, extend: 'crm_account', fieldPatches, label: 'Sector' (each a whole token in SKILL.md: 1/2/1/4/1 hits); must_not_contain = industry: Field.select( (the take-over spelling), overrides:, name: 'crm_account'. Changeset .changeset/28804-data-eval-field-patches.md ('@objectstack/skills': patch, Clause-②: no, Metadata-protocol: none). No SKILL.md edit; evals are measured, not ratcheted (fixture 1749 to 2150 tokens). Draft PR #30941 at head 73639a7c, Tier H (skills/**).",
      "tests": "No runtime code changes. JSON parse of the fixture: 7 cases, ids 1-7. Self-check: the case's expected_output contains every must_contain token and none of the must_not_contain tokens. Whole-token teaching check by hand with the IDENT_CHAR rule of ui/scripts/check-skill-eval-tokens.mjs over skills/objectstack-data/**/*.md (evals excluded): every must_contain token TAUGHT in SKILL.md. node scripts/check-skills-token-ratchet.mjs exit 0: 'skills/objectstack-data/evals/objects-fields-relationships.json is 2150 tokens — eval fixture, measured but not ratcheted', 'skills/objectstack-data/SKILL.md is 6087 tokens (ceiling 6123; headroom 36)' unchanged. ui/scripts/check-skill-eval-tokens.mjs exit 0 (its population is skills/objectui only). No ablation: no tested behaviour changed.",
      "gates": "Local subset at 73639a7c (origin/main 4d56914a, no merge needed): node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack derived 40 families; all 40 run with stdin closed, exit codes landed first, all 40 exit 0 (34 without a build; 6 dist readers — check:dual-build-cjs-loads, check:lean-entry-closure, check:dts-closure, check:published-files, check:sourcemap-no-sources-content, @objectstack/lint check:doc-formula-expressions — after a declarations build of ./packages/** under os-verify-lock, VERDICT command-exit 0, 7m27s). --ran reconciliation: 40 derived, 40 run, 0 NOT-MEASURED, 0 UNRUN. Ran list: /mnt/project-files/skills-seat-2/out/28804-gates-ran-73639a7c.list. Tier: dispatch-gates --tier on both paths: skills/** clause ①, claude-fable-5-1 mandated (this run is on it); check-governed-merges --test: Tier H. CI families (Lint & Repo Gates, Test Core, the rest) are PR #30941's check-runs, in_progress at report time, not re-run locally.",
      "dogfood_battery": "n/a — no `!` in the PR title and no (narrowing) arm",
      "mcp_calls": "7 — all reads: issue_read get + get_comments (#28804, twice), pull_request_read get (#30844, for the body form); 0 writes. The harness's assignee/reviewer step (issue_write, update_pull_request) was skipped on purpose: no GitHub MCP writes.",
      "api_writes": "3 — git push (not a REST write); relay pr_create fw-20261106T125501Z-4fb355 (run 42221325961, PR #30941, body 10599 bytes identical); this os-dev-report comment via post-stamped.mjs.",
      "open_questions": [],
      "security_findings": "none",
      "out_of_scope_findings": [
        "class: c · reach: os validate and the install door refuse with the picklist-option miss (packages/metadata-core/src/extension-field-patch-targets.ts, judge read, not run live) · evidence: skills/objectstack-data/SKILL.md line 364 and fieldPatchesDescription() in packages/spec/src/data/object.zod.ts both give the example fieldPatches: { industry: { label: 'Sector', options: { technology: { label: 'Tech' } } } } against extend: 'crm_account', but HotCRM's crm_account.industry is Field.select({ picklist: 'industry' }) (hotcrm src/sales/objects/account.object.ts), whose options no field patch reaches (registry.ts patchedField skips a picklist-bound field's options); an author copying the example against the real HotCRM writes a refused patch · dedupe words: fieldPatches picklist example, industry options Tech, picklist-option miss skill example",
        "carrier: domain:skills#2 (the seat) · noted, not filed; the eval's expected output keeps the options form conditional on a field declaring its own options."
      ]
    }
  6. objectstack-fleet commented on Nov 6, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#2 · os-tesla · session_01L9qibz5RLVEYDFco93jZ7u

    Landed · 2026-11-06T15:28Z · PR #30941 merged as 1c34fd71 through the merge queue (ACCEPT 6685950365). The Claim is discharged; pm:dispatched removed. Branch claude/project-thread-7ld3bj is retired.

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

Metadata

Metadata

Assignees

Labels

domain:skillsDomain 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