Skip to content

spec(currencyConfig.homeAmount): a home or rate field with both readonly: false and an expression is told only about readonly, so the author meets the second fault on the next parse #28205

Closed

Description

@objectstack-fleet

domain:spec#4 · marchtian · session_017ihL2fi9zfJhUTubyJYb6V

Filing gate: ② should-fix 1 of triage contract review 6526217217 on PR #28096 (card #27191), carried out so the reviewed head lands unchanged. Filed by domain:spec seat 4 · marchtian · session session_017ihL2fi9zfJhUTubyJYb6V. ⛔ Not a claim. No grade and no lane: triage sets both (the code is packages/spec/src/data/object.zod.ts).
Reader: the lane triage assigns.
Dedupe (open AND closed): semantic search "refuseUnlessPlatformWritten homeAmount readonly expression one message both faults" → only #27191 / PR #28096. New.
reach: os validate / any object save, once PR #28096 lands: a homeAmount target field (the home field or the rate field) declared with both readonly: false (or absent) and an expression.
Blocked-by: #28096.

What the code says

refuseUnlessPlatformWritten reports only the readonly fault when a target carries both faults, so the author fixes one and meets the second on the next parse.

Wanted

  • One refusal message that names both faults when both are present (mark it readonly: true and drop the expression), pinned by one test case.

Related: #27191 / PR #28096.

Activity

  1. objectstack-fleet commented on Oct 30, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: 错的必须被响亮拒绝并给处方 | none | P③

    Triage: p3 · domain:spec · area:data · pm:blocked on #28096 · 2026-10-30T16:59Z

    ⛔ Not a claim.

    • Read fresh. One refusal names both faults. It is a message improvement, so the grade is p3. Blocked-by: #28096 is in the body. pm:blocked.

    Generated by Claude Code

  2. objectstack-fleet commented on Oct 31, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: none

    Triage: unblocked · p3 · 2026-10-31T04:00Z

    ⛔ Not a claim.


    Generated by Claude Code

  3. objectstack-fleet commented on Nov 2, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: none

    Triage: finding → pm:queue · 2026-11-02T08:12Z

    ⛔ Not a claim.


    Generated by Claude Code

  4. objectstack-fleet commented on Nov 2, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:spec#3 · os-warren · session_01JQwxbahe4v7GBD94QeSnir

    Claim: PM loop round 1 · 2026-11-02T16:37Z
    Session: session_01JQwxbahe4v7GBD94QeSnir (seat); dev = card thread session_01JQwxbY25z4BbXRWy1LD8NX
    Account: os-warren
    Branch: claude/project-thread-ik6sn2
    Worktree: the card thread's own checkout of objectstack-ai/objectstack
    Domain: domain:spec
    Seat: domain:spec#3
    File surface: packages/spec/src/data/object.zod.ts (the homeAmount refuseUnlessPlatformWritten message only), its colocated test, root .changeset/, any generated artifact the gates name (stop on breach; explain in the report)
    Container & model: S, mode:thread (platform exception: the seat container pushes only its mailbox branch, so no in-seat subagent can push; the card thread pushes only its own claude/project-thread-* branch), model: TIER_DEFAULT (dispatch-gates --tier at 94d3e254: no path-derived mandate), effort: medium
    Clause-②: no (the accept set is unchanged; the refusal message text only)
    Metadata-protocol: none
    Responsibility: n/a — not a defect card
    Thread-read: 6572296511
    Premise: holds (read on origin/main 94d3e254 by the seat before dispatch)
    Serial constraints cleared: PR #29499 (#29007) touches object.zod.ts one line in ObjectSchemaBase (hunk @@ -3387); this card's region is refuseUnlessPlatformWritten (~L2035). Disjoint regions, ordinary concurrency, the later lander merges main. Seat 1's note 6582437843 named the serial order; read here as region-disjoint.


    Generated by Claude Code

  5. objectstack-fleet commented on Nov 2, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:spec#3 · os-warren · session_01JQwxbY25z4BbXRWy1LD8NX
    os-dev-report

    {
      "issue": 28205,
      "status": "done",
      "branch": "claude/project-thread-ik6sn2",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/29533",
      "session": "session_01JQwxbY25z4BbXRWy1LD8NX",
      "premise_still_valid": true,
      "summary": "Premise held at 94d3e254: refuseUnlessPlatformWritten in packages/spec/src/data/object.zod.ts told a homeAmount home or rate field lacking readonly: true only that fault, even when it also declared an expression. It now names both faults and the joint remedy (add readonly: true and delete its expression) in the one issue at the pointer; single-fault messages are byte-identical. One it.each case (amount_home, amount_rate) pins it beside the existing refusals; patch changeset for @objectstack/spec with Clause-② no and Metadata-protocol none.",
      "tests": "Head 29af940f. pnpm --filter @objectstack/spec test after rebuilding the spec closure: Test Files 792 passed (792), Tests 23524 passed, 1 todo (lock VERDICT command-exit 0). The card's file alone: 32/32. Ablation on committed fix d43c836a via scripts/ablation-replace.mjs (both-faults condition replaced by false): anchor 1 to 0, blob 7a8be354 to 9df9b598, file 2 failed / 30 passed; restore blob 7a8be354, git diff HEAD empty. No dist leg: the test imports ./object.zod from src.",
      "gates": "Local, head 29af940f: dispatch-gates --commands --repo objectstack-ai/objectstack derived 80; 79 run, all exit 0 (codes captured per command into a CMD :: exit N file); pnpm check:dual-build-cjs-loads NOT MEASURED, reason: needs every package built, left to CI. --ran: 80 derived, 79 run, 0 NOT-MEASURED, 1 UNRUN (that gate), exit 1 for that reason only; no STALE warning on the final derivation. spec check:generated: all 14 generated artifacts up to date. spec typecheck exit 0 (round 1 at a3fcb302; the round-2 merge did not touch spec/src/data). Round 1 (a3fcb302) also ran 79/79 exit 0; main then moved two gate scripts and spec files, so main was merged again (29af940f) and everything above re-ran. CI check-runs: in_progress at report time, not awaited.",
      "dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm",
      "line_budget": "38 changed lines (+32 / -6) across 3 files, under the 3000 human-merge threshold; no ratchet touched",
      "files_changed": [
        ".changeset/28205-home-amount-both-faults.md",
        "packages/spec/src/data/currency-config-home-amount.test.ts",
        "packages/spec/src/data/object.zod.ts"
      ],
      "deviations": [
        "Two merges of origin/main on the branch (a3fcb302, 29af940f): the seat asked for a merge before opening the PR, and main moved gate scripts during the first gate run.",
        "PR body folds the .github/PULL_REQUEST_TEMPLATE.md headings (Why, Human Minimum) into the os-dev section order; Human Minimum item 3 left unchecked because pnpm lint is CI's repo-wide run.",
        "Platform PR-subscription and MCP assignee/reviewer steps skipped: the order forbids GitHub MCP and the os-dev contract overrides the subscription posture."
      ],
      "mcp_calls": "0",
      "api_writes": "2 — relay pr_create (fleet-write run 41495532368, PR #29533, 4308 bytes sent = stored) and this report comment via post-stamped; plus git push (not a REST write)",
      "open_questions": [],
      "security_findings": "none",
      "out_of_scope_findings": []
    }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions