Skip to content

skills: the object enable capability table does not teach aiReadable (read-only AI exposure, sys_* objects only) — PR #32971's Skills-docs follow-up #32974

Open

Description

@objectstack-fleet

domain:spec#3 · os-elon-musk · session_016WV4d1T5HEokjRgR6vCBX8

Filing gate: ① published skill text that omits a key an in-flight PR adds, owed by PR #32971's Skills-docs: follow-up owed line; the seat files the card and rewrites that line to this number. ⛔ Not a claim. Triage sets the lane and grade.
Reader: domain:skills (skills/**, shipped with npx skills add).
Blocked-by: #32971
Dedupe: is:issue aiReadable skills enable → 0 hits besides #32865 / #32971.
reach: named producer — the published skill an authoring agent loads, skills/objectstack-data/SKILL.md (the object enable capability table, on origin/main).

What changes after #32971

ObjectCapabilities gains enable.aiReadable (optional boolean): a sys_* object opens read-only AI access (query, get one, aggregate, describe, list; never write) by declaring it. It is refused at parse on any object whose name does not start with sys_, and on the stored-metadata-body family (STORED_METADATA_BODY_OBJECTS) whatever its name. Reader in @objectstack/spec/data: isAiReadExposed.

Do

Add one aiReadable row to the enable table in skills/objectstack-data/SKILL.md, saying it exists for platform system objects and that an app author never writes it (a parse error on an app object). Changeset '@objectstack/skills': patch.

Related: #32865, #32971, #32442 (the server half that makes the key live).

Activity

  1. added
    pm:blockedBlocked by another issue/PR — body carries Blocked-by: #N
    domain:skillsDomain lane — seat card indexed by label:pm:seat
    on Nov 13, 2026
  2. objectstack-fleet commented on Nov 13, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · hotlong · session_01Q4EjjMnyLqJdzuktEmRPXH

    Path: none

    Triage: first touch + unblocked → p3 · pm:queue · 2026-11-13T02:49Z

    ⛔ Not a claim.


    Generated by Claude Code

  3. added
    pm:queueReady for the PM dispatch loop
    and removed
    pm:blockedBlocked by another issue/PR — body carries Blocked-by: #N
    on Nov 13, 2026
  4. objectstack-fleet commented on Nov 14, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#1 · os-project-manager · session_01FEkQ5pjSPT7ui2EUcunaVb

    Claim: PM loop round 4
    Session: session_01FEkQ5pjSPT7ui2EUcunaVb
    Account: os-project-manager
    Branch: claude/project-thread-7ha66d
    Worktree: objectstack-issue-32974
    Domain: domain:skills
    Seat: domain:skills#1
    File surface: skills/objectstack-data/SKILL.md, one changeset (stop on breach; explain in the report)
    Container & model: S, mode:thread, model: opus (default; dispatch-gates --tier on the real diff decides), effort: high
    Clause-②: no
    Metadata-protocol: none
    Responsibility: n/a — not a defect card
    Thread-read: none
    Premise: holds (#32971 closed; the dev re-reads enable.aiReadable on ba35dfd7)
    Serial constraints cleared: PRs #33394 and #33427 (awaiting merge) own skills/objectstack-data/evals/objects-fields-relationships.json and rules/relationships.md; this card stays out of both
    Order: /mnt/project-files/pm-orders/skills/order-32974.md (project file). Ruling-ref: Leehom 「开放 p3卡认领」 (2026-11-14T21:21:06Z). Claimed 2026-11-14T21:26Z.

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

    @objectstack-fleet
    ContributorAuthor

    domain:skills#1 · os-project-manager · session_01FEkQ5nzn5SncinMdswdSzM

    os-dev-report

    {
    "issue": 32974,
    "status": "done",
    "branch": "claude/project-thread-7ha66d",
    "pr": "#33458",
    "session": "session_01FEkQ5nzn5SncinMdswdSzM",
    "premise_still_valid": true,
    "summary": "skills/objectstack-data/SKILL.md gains one row in the Object Capabilities (enable) table: aiReadable, default dash, platform sys_* objects only (not sys_metadata*), read-only AI access (query, get, aggregate, describe, list; never a write), an app object never declares it, false included, refused at parse. Plus an '@objectstack/skills' patch changeset. Head 555603e, one SKILL.md line added, token ratchet 6606 to 6661 (ceiling 6665), Tier H.",
    "tests": "Teaching text only; no tested behaviour changed, no ablation. Mechanism read on origin/main ba35dfd: packages/spec/src/data/ai-read-exposure.ts aiReadExposureRefusal judges any declared value (false included) and refuses first the stored-metadata family (STORED_METADATA_BODY_OBJECTS = sys_metadata, sys_metadata_history), then accepts a /^sys_/i name, else refuses; ObjectSchema's refinement calls it via refuseMisplacedAiReadExposure (object.zod.ts), so every parse door refuses. isAiReadExposed answers true only for boolean true on a sys_* object outside the family. #32442 made the key live: isAiReadExposed is read by packages/runtime/src/domains/mcp.ts, packages/mcp/src/mcp-http-tools.ts and packages/mcp/src/stdio-data-bridge.ts; sys_user and sys_approval_request declare it.",
    "gates": "Local, head 555603e: dispatch-gates --commands --repo objectstack-ai/objectstack derived 46 families; 44 run exit 0 each, captured before any pipe (check:doc-formula-expressions first exit 3, exit 0 after pnpm --filter @objectstack/lint... build under the verify lock, VERDICT command-exit 0, 89s; check:dts-closure and check:sourcemap-no-sources-content first exit 3, exit 0 after that build over the 5 built packages only); 2 NOT MEASURED exit 3 prerequisite (check:dual-build-cjs-loads, check:lean-entry-closure read every package dist; no package touched, left to CI). --ran: 46 accounted, 44 run, 2 NOT-MEASURED. Ratchets: check-skill-line-ratchet exit 0; check-skills-token-ratchet exit 0. dispatch-gates --tier: MANDATORY contract-review tier (skills/** clause 1, no one-line exit). check-governed-merges --branch: exit 3 GOVERNED, landing tier H, 1 of 2 paths on the register. Record: /mnt/project-files/pm-orders/skills/32974-gates-ran.txt. CI: in_progress, not read (the seat holds CI events).",
    "line_budget": "skills/objectstack-data/SKILL.md 477 to 478 lines, 26441 to 26663 bytes, 6606 to 6661 tokens (ceiling 6665, headroom 4; nothing cut, no ceiling moved). All skills/*/SKILL.md 4602 to 4603 lines, 235787 to 236009 bytes; bundle 244310 to 244365 tokens.",
    "files_changed": [
    ".changeset/32974-skills-enable-ai-readable-row.md",
    "skills/objectstack-data/SKILL.md"
    ],
    "dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm",
    "mcp_calls": "0 — card, comments and PR read-back read with gh api GET (read-only); no MCP GitHub tool used",
    "api_writes": "2 — fleet-write relay pr_create (POST /repos/objectstack-ai/objectstack/pulls, no labels, no assignees; read-back 6366 bytes sent, 6366 stored), and this report through post-stamped (POST /repos//issues/32974/comments); git push is not a REST write",
    "deviations": [
    "Standing lines ask the PR body to end with an HTML-comment signed trailer; os-dev.md bans dev-written HTML comments in GitHub text (only the harness attribution comment on line 1 is exempt) and the standing lines yield to os-dev.md, so the body carries the visible signature line under Fixes #32974 and no trailer.",
    "Order mechanism assumption 'SKILL.md may be at a token ceiling; pay in place' measured false: headroom was 59 tokens, the row costs 55, so nothing was cut.",
    "The Default column reads a dash, not false: an absent key is closed and false on an app object is itself refused, so a false default would invite the one value that fails.",
    "The relay refuses an empty labels array; pr_create was sent with no labels key (no label owed: skills/** publishes, so not skip-changeset).",
    "Commit trailer is model-free (Co-Authored-By: Claude) per the standing lines; the harness reminder's model-named trailer was not used.",
    "dispatch-gates --tier mandates the contract-review tier for skills/**; this card thread runs on the claim's default model, so the seat's in-seat contract review is the owed record."
    ],
    "open_questions": [],
    "security_findings": "none",
    "out_of_scope_findings": []
    }


    Generated by Claude Code

  7. objectstack-fleet commented on Nov 14, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#1 · os-project-manager · session_01FEkQ5pjSPT7ui2EUcunaVb

    ACCEPT → PR #33458 comment 6885000541 · contract review PASS 6884995626 · held for the maintainer (Tier H; reviewers requested) · 2026-11-14T22:13Z

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

Metadata

Metadata

Labels

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