Skip to content

managedBy 'synced': the stripped-apiMethods warning and the lint sentence tell the author to open a verb through userActions, which a synced object refuses (after #32061) #32134

Open

Description

@objectstack-fleet

domain:spec#3 · os-support-ai · session_01WGufzh7cM8EmUX4T2CBNHX

Filing gate: ① a measured gap with file:line, owed by landed work. The contract review of PR #32118 (card #32061, record 6762969887, nit ④ "follow-up card") found two remedy sentences that become false once #32118 lands. ⛔ Not a claim.

Blocked-by: #32061

Gap (at PR #32118 head 41ae3536)

On a managedBy: 'synced' object, #32118 refuses at parse a userActions entry that opens create, import, edit or delete. This is ADR-0153 D4's named exception to ADR-0103 D1. Two messages that fire on such an object still prescribe exactly that:

  • packages/objectql/src/registry.ts reconcileManagedApiMethods (~L1993–2000) strips generic write verbs from enable.apiMethods and warns: "Declare userActions to open a verb the object legitimately takes from a user context."
  • packages/spec/src/data/managed-api-affordance.ts describeManagedApiMethodConflicts (~L143–153), read by the lint rule object/managed-api-method-unaffordable, says "(needs userActions …)".

For a synced author both sentences point at a key the parse refuses. The fix the platform intends is to drop the write verbs from apiMethods, and to write through a declared action (ADR-0153 D5).

Ask

Branch both sentences on the bucket. On synced, say that the bucket cannot be opened, name the verbs to remove from enable.apiMethods, and point at a declared action for writes (D5). Every other bucket keeps today's sentence. Pin each message on a synced fixture and on a control from another bucket.

Business reason

An author or AI agent following the warning edits userActions, the build refuses it, and they are left with two contradicting messages and no path forward.

Reader

Triage routes it. The two files sit in packages/objectql and packages/spec, and the change is message text only (Clause-②: no, Metadata-protocol: none expected).

Dedupe: searched open and closed issues for describeManagedApiMethodConflicts and for reconcileManagedApiMethods synced. There are no hits beyond #32061 and #32118. New.

Activity

  1. objectstack-fleet commented on Nov 10, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: none

    Triage: lands in domain:spec · p3 · pm:blocked · 2026-11-10T11:00Z

    ⛔ Not a claim.


    Generated by Claude Code

  2. added
    bugSomething isn't working
    domain:specDomain lane — seat card indexed by label:pm:seat
    pm:blockedBlocked by another issue/PR — body carries Blocked-by: #N
    on Nov 10, 2026
  3. objectstack-fleet commented on Nov 10, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: none

    Triage: unblocked → pm:queue · domain:spec · p3 · 2026-11-10T11:54Z

    ⛔ Not a claim.


    Generated by Claude Code

  4. added
    pm:queueReady for the PM dispatch loop
    pm:on-holdDecision made, deliberately deferred — no dispatch, no nag; restart condition in the hold comment
    and removed
    pm:blockedBlocked by another issue/PR — body carries Blocked-by: #N
    pm:queueReady for the PM dispatch loop
    on Nov 10, 2026
  5. objectstack-fleet commented on Nov 14, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · hotlong · session_01Q4EjjMnyLqJdzuktEmRPXH

    Path: none

    Triage: restart · pm:on-hold → pm:queue · 2026-11-14T22:20Z

    ⛔ Not a claim.

    Ruling (maintainer, triage seat session, 2026-11-14T22:20Z): 「外部数据同步,可以继续了」. This lifts the hold of 2026-11-11T12:23Z (「31763 比如这个,我现在不着急开发」).

    Its Blocked-by: #32061 is closed. Spec wording, p3 unchanged.

  6. added
    pm:queueReady for the PM dispatch loop
    and removed
    pm:on-holdDecision made, deliberately deferred — no dispatch, no nag; restart condition in the hold comment
    on Nov 14, 2026
  7. objectstack-fleet commented on Nov 14, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:spec#1 · os-project-manager · session_01FEkQ5mswnWm181XgYcCUag

    Claim: PM loop round 1 · 2026-11-14T22:46Z
    Session: session_01FEkQ5mswnWm181XgYcCUag (seat); card thread session_01FEkQ5p6qE7Nt8wpjSGLqiC is the dev
    Account: os-project-manager
    Branch: claude/project-thread-88rfao (the card thread's designated branch; the platform lets a thread push only that branch, so not claude/issue-32134-*)
    Worktree: objectstack-issue-32134
    Domain: domain:spec
    Seat: domain:spec#1
    File surface: packages/objectql/src/registry.ts (the reconcileManagedApiMethods warning text only), packages/spec/src/data/managed-api-affordance.ts (describeManagedApiMethodConflicts text only), their test files (existing or one new beside each), root .changeset/, a regenerated reference only if the lint message renders there (stop on breach; explain in the report)
    Container & model: S, mode:thread, model: default tier, effort: medium
    Clause-②: no
    Metadata-protocol: none
    Responsibility: n/a — message text owed by PR #32118 (record 6762969887 nit ④)
    Thread-read: 6885096771
    Premise: holds at origin/main f068cde8: registry.ts ~:2018 still says "Declare userActions to open a verb" and managed-api-affordance.ts ~:149 still says "(needs userActions …)", while a synced object refuses such a userActions entry at parse (PR #32118). Restarted by triage 6885096771 (「外部数据同步,可以继续了」); taken under 「开放 p3卡认领」 (Leehom, 2026-11-14; Ruling-ref). Order: /mnt/project-files/pm-orders/spec/order-32134.md (project share).
    Serial constraints cleared: Blocked-by: #32061 closed; no in-flight card touches these two files.

  8. added
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    and removed
    pm:queueReady for the PM dispatch loop
    on Nov 14, 2026
  9. objectstack-fleet commented on Nov 14, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:spec#1 · os-project-manager · session_01FEkQ5mswnWm181XgYcCUag

    Seat: surface amendment on the claim (6885403175) · 2026-11-14T22:47Z

    ⛔ Not a new claim. Answers the dev's two premise readings on origin/main f068cde8.

    • Reading 1 holds: object/managed-api-method-unaffordable builds its own message and hint in packages/lint/src/validate-managed-api-methods.ts (~:110-114) and no longer reads the spec sentence; os explain's paragraph (packages/lint/src/rule-explanations.ts ~:5515) says the same. That is the text a synced author sees.
    • Ruling: the surface adds packages/lint/src/validate-managed-api-methods.ts (message and hint branch on the write-locked bucket, test via MANAGED_BY_WRITE_LOCKED_BUCKETS), its test file, the explain paragraph in rule-explanations.ts, and an @objectstack/lint patch changeset. Every other bucket keeps today's text byte for byte; pin a synced case and a control.
    • The spec helper stays untouched: describeManagedApiMethodConflicts has no production caller, so a new parameter on a published export would widen surface nobody reads. ⛔ No signature change. Report it in out_of_scope_findings (retire or align a zero-caller export); the seat carries it.
    • Unchanged: Clause-②: no / Metadata-protocol: none; the registry.ts warning as ordered; @objectstack/spec changeset only if a spec file still moves (it should not now).
  10. objectstack-fleet commented on Nov 14, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:spec#1 · os-project-manager · session_01FEkQ5p6qE7Nt8wpjSGLqiC
    os-dev-report
    {
    "issue": 32134,
    "status": "done",
    "branch": "claude/project-thread-88rfao",
    "pr": "#33517",
    "session": "session_01FEkQ5p6qE7Nt8wpjSGLqiC",
    "premise_still_valid": true,
    "summary": "On a write-locked bucket (MANAGED_BY_WRITE_LOCKED_BUCKETS, today synced), objectql reconcileManagedApiMethods' warning and the lint rule object/managed-api-method-unaffordable (message and fix line) no longer prescribe userActions; they name the verbs to remove from enable.apiMethods and point writes at a declared action (ADR-0153 D4/D5). os explain gains one paragraph. Every other bucket keeps today's text byte for byte. Premise partly moved: the lint rule no longer reads spec describeManagedApiMethodConflicts (it builds its own text), so the seat amended the surface to the lint rule (claim amendment 6885418970) and ruled the spec helper out of scope; no packages/spec file changed, so the changesets are objectql patch + lint patch.",
    "tests": "head f127667. objectql src/registry.test.ts: new synced exact-line pin + engine-owned control exact-line pin; lint src/validate-managed-api-methods.test.ts: synced verdict and fix-line exact pins (existing platform verdict / better-auth fix-line exact pins are the controls), explain facts +ADR-0153 D4/D5. Package suites under lock: lint 210 files / 8973 tests passed, objectql 595 files / 13013 tests passed (exit 0); typecheck both exit 0 (no new debt signature). Ablation via scripts/ablation-replace.mjs, subjects imported from src/ (no dist in path): registry remedy branch forced false -> 1 failed | 106 passed, restored blob eb3b6f1d1036 == HEAD; lint writeLocked forced false -> 2 failed | 13 passed, restored blob 682b98ae055e == HEAD; git diff HEAD empty after each. Control leg: base f068cde registry.ts with the new test file, -t reconcileManagedApiMethods -> only the synced pin fails (1 failed | 17 passed), so the control pins main's current line.",
    "gates": "dispatch-gates --commands --repo objectstack-ai/objectstack: 73 families; 72 exit 0; pnpm check:dual-build-cjs-loads exit 3 PREREQUISITE NOT MET (needs every package dist) = NOT MEASURED, CI runs it. --ran: 73 derived famil(ies) accounted for, 72 run, 1 NOT-MEASURED. eslint --no-inline-config on the 5 changed files exit 0. --tier: no path-derived mandate, 121 changed lines, no governed surface. CI check-runs on PR #33517: in_progress at report time (not awaited, per os-dev.md). Record: /mnt/project-files/pm-orders/spec/32134-gates-ran.txt.",
    "dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm",
    "mcp_calls": "0 — card, comments and claim read through anonymous public REST",
    "api_writes": "2 relay writes — pr_create (fleet-write fw-20261114T232234Z-ff71fc, PR #33517, labels domain:spec, no assignees) and this os-dev-report comment (post-stamped on #32134); plus 1 git push",
    "open_questions": [],
    "security_findings": "none",
    "out_of_scope_findings": [
    "class: c (borderline: a remedy sentence, not authorable metadata) · reach: none today, no production caller · packages/spec/src/data/managed-api-affordance.ts describeManagedApiMethodConflicts (L142-150) still says '(needs userActions …)' and cannot branch on the bucket since ManagedApiMethodConflict carries no managedBy; its only caller is its own test (the lint rule stopped reading it, see lint CHANGELOG). Seat ruled it out of this PR and will card it. Dedupe words: describeManagedApiMethodConflicts, needs userActions, synced, managed-api-affordance",
    "carrier: domain:spec#1 seat (per its 2026-11-14 surface ruling) · noted, not filed"
    ]
    }


    Generated by Claude Code

  11. objectstack-fleet commented on Nov 14, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:spec#1 · os-project-manager · session_01FEkQ5mswnWm181XgYcCUag

    ACCEPT → PR #33517 comment 6886175829 (ready + auto-merge, 2026-11-14T23:53Z).

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

Metadata

Metadata

Labels

bugSomething isn't workingdomain:specDomain lane — seat card indexed by label:pm:seatpm:dispatchedDispatched to a dev agent by /pm-dispatchpriority:p3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions