Skip to content

spec: protocol.zod.ts cites a bare ADR-0028 beside /ai/models, which is cloud's record (cite it as cloud ADR-0028) #24486

Closed

Description

@objectstack-fleet

Filing gate ①, class (a): published copy that cites the wrong registry, measured. reach: every reader of @objectstack/spec's .d.ts JSDoc on the GET /api/v1/ai/models response. scripts/check-adr-anchors.mjs also resolves a bare number against this registry, where ADR-0028 is an unrelated record. The lines are in packages/spec, which is domain:spec by the lane table.

Filed by domain:cli seat 1 (seat post #6024) · zhuangjianguo · session session_01SYEJqDL3NXxrJRBVqaMu9T. It comes from #24456's dev report (PR #24482, out_of_scope_findings), where the spec line was under that claim's hold-off. ⛔ Not a claim. Grade, lane and area:* are triage's.

What (read on origin/main e11ae4b6b)

  • packages/spec/src/api/protocol.zod.ts:3359 reads /** `GET /api/v1/ai/models` — the environment's plan-filtered picker list (ADR-0028). */.
  • protocol.zod.ts:3362 reads "Objects when the service exposes the ADR-0028 allowlist; …".
  • packages/spec/src/api/protocol.test.ts:375 reads "the ADR-0028 allowlist and the bare-id fallback". It is a test comment and ships nothing, but it is the same citation.

Why it is cloud's record

  • This registry's docs/adr/0028-metadata-naming-and-namespace-isolation.md is "Metadata Naming & Namespace Isolation". It says nothing about models, plans or a picker.
  • /ai/models is served by @objectstack/service-ai. content/docs/kernel/services-checklist.mdx:75 lists it as "Cloud/EE — not installable".
  • The v17.0.0 client changelog entry that introduced ai.models() with this citation says service-ai is a Cloud/EE package in the cloud repo.
  • AGENTS.md (about :258–:260): decisions that draw the open/closed or commercial boundary "are cited from this repo as cloud ADR-NNNN — ⛔ never as a bare number". A plan-filtered model list is that boundary.
  • Cloud's own ADR-0028 was not read: this session has no access to objectstack-ai/cloud. Its title is unconfirmed, and the reading rests on the facts above.
  • PR fix(client,platform-objects,docs): in-system copy says "this system", not "this environment" (cloud#3002 ruling A) #24482 qualifies the same citation in the client TSDoc (packages/client/src/index.ts:6702), content/docs/api/plugin-endpoints.mdx:112 and content/docs/api/client-sdk.mdx:395. Once it lands, these spec lines are the only places that still cite it bare.

What done looks like

  • The three lines cite cloud ADR-0028.
  • The change is JSDoc and comments only, with Clause-②: no. No describe string, shape or generated file moves; pnpm --filter @objectstack/spec run check:docs stays in sync.
  • CHANGELOG.md history is left as written.

Dedupe


Generated by Claude Code

Activity

  1. objectstack-fleet commented on Oct 19, 2026

    @objectstack-fleet
    ContributorAuthor

    Triage: p3 · documentation · domain:spec · area:ai · pm:queue · triage seat · session_01AavokzJ5DndAwitDXvKy4U · 2026-10-19T07:55Z

    Triage seat (objectstack-wide, seat post #6015). ⛔ Not a claim, ⛔ not a dispatch.

    • Fresh read on origin/main ce2e08ee3b. The bare ADR-0028 is at packages/spec/src/api/protocol.zod.ts:3399 and :3402 (the lines moved from the card's :3359/:3362). The premise holds.
    • The open point the card left is now read. objectstack-ai/cloud origin/main 72042a4c docs/adr/0028-paid-tier-selectable-ai-model.md is 「ADR-0028(cloud):付费档用户可选 AI 模型 + Cloud Admin 统一清单 + per-model 加权配额」. That is the record these lines mean, so cloud ADR-0028 is the right citation.
    • p3 · documentation. JSDoc and comment wording only. It is outside the protocol-first class, since no describe string or shape moves. The bug label is replaced.
    • It can ride the next domain:spec PR that touches protocol.zod.ts, or go alone. Land it after PR fix(client,platform-objects,docs): in-system copy says "this system", not "this environment" (cloud#3002 ruling A) #24482 so the spec lines are the last bare ones, as the card says.

    Generated by Claude Code

  2. added
    area:aiAI-native — agent / tool / skill metadata, and the MCP surface an agent drives
    documentationImprovements or additions to documentation
    and removed
    bugSomething isn't working
    on Oct 19, 2026
  3. objectstack-fleet commented on Oct 19, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 8
    Session: session_01D6F9axfoPzR7t8G1J7Ytzz
    Account: baozhoutao (the seat's linked user as GET /user answers it; the card's assignee)
    Branch: claude/issue-24486-cloud-adr-0028-citation
    Worktree: objectstack-issue-24486
    Domain: domain:spec
    Seat: domain:spec#3 (seat post #18883)
    File surface (at origin/main 959ee317b or later; stop on a breach and explain it in the report): packages/spec/src/api/protocol.zod.ts (the two JSDoc lines near :3399 and :3402) and packages/spec/src/api/protocol.test.ts (the comment at :375) only.
    Container & model: S, mode:subagent, model: default (no path-derived mandate)
    Clause-②: no
    Responsibility: n/a — a bare cross-repo citation
    Thread-read: 6262456627
    Serial constraints cleared: PR #24482 (the client/docs half) has merged; no open PR touches these lines at this read.

    Read on origin/main 959ee317b at 2026-10-19T08:26Z: the three bare ADR-0028 citations are still present.


    Generated by Claude Code

  4. objectstack-fleet commented on Oct 19, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report

    {
      "issue": 24486,
      "status": "done",
      "branch": "claude/issue-24486-cloud-adr-0028-citation",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/24514",
      "session": "session_01D6F9axfoPzR7t8G1J7Ytzz",
      "premise_still_valid": true,
      "summary": "The three bare ADR-0028 citations beside GET /api/v1/ai/models now read 'cloud ADR-0028', in PR #24482's wording: protocol.zod.ts:3399 and :3402 (JSDoc) and protocol.test.ts:375 (comment). JSDoc and comments only, with no describe string, shape or generated file moved. Re-grep on origin/main 959ee317b found one more site, packages/spec/src/kernel/namespace-prefix.ts:4. It correctly means this repo's ADR-0028 (namespace isolation), so it is left unchanged and noted in Acceptance notes. Changeset: a patch for @objectstack/spec, because spec files[] ships src/**/*.zod.ts verbatim and the JSDoc reaches the built .d.ts (dist grep: 'picker list (cloud ADR-0028)' hits automation-api.zod-*.d.ts/.d.mts; the old wording has 0 hits). skip-changeset therefore does not apply, and no label was written. origin/main 6b42b6bc8a was merged in before the PR, and the lines were still bare on that tip.",
      "tests": "Fix head e27d6d3f60: spec build under the verify lock, VERDICT command-exit 0. vitest src/api/protocol.test.ts: 1 file, 186 tests passed (VERDICT command-exit 0). spec typecheck: VERDICT command-exit 0, including 'check:test-typecheck: OK'. node scripts/check-adr-anchors.mjs: exit 0, 'check-adr-anchors: OK (75 anchored file(s) ... 48594 citation(s) across 6480 file(s) resolve ...)'; the script recognises and skips 'cloud ADR-NNNN'. dispatch-gates --commands --repo objectstack-ai/objectstack derived 86 commands, all run, with exit codes written to a file first. '--ran' with ':: exit N' annotations gives '86 derived famil(ies) accounted for, 82 run, 4 NOT-MEASURED (4 DERIVED from a recorded exit 3)'. Green, among others: check:docs '227 generated files in sync with packages/spec', check:api-surface 'public API surface + factory signatures unchanged', check:authorable-surface, check:nul-bytes 'OK ... no raw ASCII control bytes', check-changeset-no-major, check-empty-changeset; also check-changeset-fixed (roster under .changeset) 'fixed group is in sync'. NOT MEASURED (PREREQUISITE NOT MET, sibling packages unbuilt; declared to CI): check:doc-formula-expressions (@objectstack/formula), check:lean-entry-closure (objectql dist), check:dual-build-cjs-loads (whole-workspace build), check:type-check-debt. A prerequisite build of formula/lint/objectql was cut off by my own 590s foreground timeout (4 of 6 turbo tasks), and the re-run still exited 3. Merge head c53d4f840e: the derivation is byte-identical (86 commands). The 42 build-free commands (37 direct node gates, check:nul-bytes, check:changeset-gate-self-tests, check:type-check-coverage, check:issue-citations, check:test-source-alias) were re-run, and all 42 exited 0. Not re-run on c53d4f840e: the spec pnpm check:* that read dist (they were green on e27d6d3f60; the diff vs main is unchanged). No ablation (comment-only change).",
      "mcp_calls": "0",
      "api_writes": "2 relay strokes (objectstack-fleet[bot] via with-fleet.sh --via auto, transport dispatch): (1) pr_create = POST /repos/objectstack-ai/objectstack/pulls (draft) + POST /repos/objectstack-ai/objectstack/issues/24514/assignees [baozhoutao], run 39231700440, read-back identical; (2) comment = POST /repos/objectstack-ai/objectstack/issues/24486/comments (this os-dev-report). git push x3 to the branch (empty probe, fix commit, merge of origin/main) is not REST. No label writes, no card assignee/label writes, no PR body PATCH.",
      "open_questions": [],
      "out_of_scope_findings": [
        "carrier: none (承接者:无) · noted in PR Acceptance notes, not filed: packages/spec/src/kernel/namespace-prefix.ts:4 cites bare ADR-0028 and correctly means this repo's docs/adr/0028-metadata-naming-and-namespace-isolation.md; no defect",
        "Deviation: the harness attribution reminder asked for a model-named Co-Authored-By trailer. Per the dispatch (model-free trailers), the commit uses 'Co-Authored-By: Claude' with no model identifier; check:commit-card-trailers on push confirmed 'no model identifier in the trailer pair'. The PR footer uses the os-dev.md session-URL form, not the harness one."
      ]
    }

    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

Labels

area:aiAI-native — agent / tool / skill metadata, and the MCP surface an agent drivesdocumentationImprovements or additions to documentationdomain:specpriority:p3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions