Skip to content

[finding] SKILL_MAP census residue: objectstack-api advertises api/rest-server.zod.ts its SKILL.md never mentions, and objectstack-platform's index omits stack.zod.ts, the shape its body spends the most words on #15264

Description

@os-justin

Residue of the census run for #14462. That card carries the census across all nine SKILL_MAP entries and applies one uniform ruling; the family PR acted on the four rows its members adjudicated (objectstack-ai, objectstack-automation, objectstack-formula, objectstack-i18n). These two rows came out of the same sweep with the same shape and no card has adjudicated them, so the PR recorded them and edited nothing. Filed unassigned.

Measured at origin/main 9c1bcda3

Direction 1 — advertised, never taught

package pointer evidence
objectstack-api api/rest-server.zod.ts zero mentions in skills/objectstack-api/SKILL.md of the file, of RestApiConfig / CrudEndpointsConfig / MetadataEndpointsConfig / BatchEndpointsConfig / RouteGenerationConfig / RestServerConfig, or of the words "rest server". Swept over the skill's whole authored markdown, not the SKILL.md alone.

Every other core entry in that list is reachable from the body by at least the schema's own exported names.

Direction 2 — taught, never advertised

package schema evidence
objectstack-platform stack.zod.ts the SKILL.md's subject is defineStack, and it names ObjectStackDefinitionSchema, ObjectStackDefinition, ObjectStackDefinitionInput and ObjectStack in its own prose. The file is in no package's core list and in no index's closure.

Same shape as the ai/solution-blueprint.zod.ts half of #14462: the body names the schema, the catalog has no pointer to it.

One row deliberately NOT filed here

kernel/plugin-capability.zod.ts in the objectstack-platform list scored as advertised-not-taught on a mechanical sweep, and a hand read overturns it: the SKILL.md teaches requires: and capability resolution at length. It routes readers to kernel/platform-capabilities.ts for the token list rather than to this file's PluginCapabilityManifestSchema, so the pointer is thin rather than wrong. Recorded so the next census does not re-raise it.

Why this is a separate card

The uniform ruling on #14462 is "narrow the map to what the body teaches", and applying it here is defensible — but the four adjudicated rows each came with a measured consumer census or an explicit ADR retirement, and these two have only the sweep. Deleting a published pointer, or adding one, on a governed customer surface is worth its own decision rather than a rider on a PR whose reviewer is checking four other things.

Refs: #14462 · #14466 · #14562 · #14565

Dedupe: one targeted search_issues over this repo (repo-scoped REST is 403 for this seat), validated in-session by a control query that returned its four known hits. Nothing open covers either row.

Activity

  1. claude commented on Sep 4, 2026

    @claude
    Contributor

    Triage — skills seat (session session_019RfFHiRCSs3JXLK4cwcfox, os-steve), 2026-09-04T12:18Z (the lane self-triages its own findings). Graded priority:p3, domain:skills, documentation, state pm:queue. Applied and read back after this comment.

    Scope as queued (S, governed skills/**, plus the SKILL_MAP source if the row lives there): apply the #14462 ruling's uniform shape to the two residue rows this card measured — objectstack-api's advertised api/rest-server.zod.ts (never taught: either teach it in the SKILL.md's own words from the schema's exported names, or drop the pointer — whichever the #14462 ruling's rule for the four adjudicated rows prescribes; ⛔ read that ruling first and quote the rule) and objectstack-platform's untaught-but-advertised inverse (stack.zod.ts taught, not advertised — add the pointer). Both re-measured at dispatch; the census scanner green after. Draft PR, both approvers, human merge.


    Generated by Claude Code

  2. claude commented on Sep 4, 2026

    @claude
    Contributor

    Decision card filed: #15361 (skills lane batch 10) — the two rows this card measured are presented for a ruling (item 1: drop the untaught api/rest-server.zod.ts pointer per the #14462 uniform rule, rec A; item 2: add the taught stack.zod.ts pointer, rec A), because deleting or adding a published pointer on a governed customer surface is its own decision, as this card says. pm:queue → pm:blocked.
    Blocked-by: #15361

    On the ruling: one flight edits SKILL_MAP and regenerates the affected _index.md files (generator guards green), governed ⇒ draft, both approvers, human merge; the cross-lane declaration (the generator lives in the spec stream) is posted here.


    Generated by Claude Code

  3. claude commented on Sep 4, 2026

    @claude
    Contributor

    Claim: PM loop round 5 (same flight as #15361 — one PR closes both cards)
    Session: session_019RfFHiRCSs3JXLK4cwcfox
    Branch: claude/issue-15361-skill-map-api-platform-pointers
    Worktree: objectstack-issue-15361
    Domain: domain:skills
    File surface: packages/spec/scripts/build-skill-references.ts (two SKILL_MAP lines) + the regenerated skills/objectstack-api/references/_index.md and skills/objectstack-platform/references/_index.md.
    Container & model: S, mode:subagent, model: opus (tier reading on the #15361 claim)
    Clause-②: no
    Serial constraints cleared: as read on #15361 — PR #15268 MERGED 08:12Z is the generator's last edit; no open PR touches the generator, the two skill directories or any _index.md.

    Cross-lane declaration (spec stream). The generator packages/spec/scripts/build-skill-references.ts belongs to the domain:spec stream; under the maintainer's ruling on #15361 (1 A · 2 A, director record 5541756503, batch #36) the domain:skills seat executes the two-line SKILL_MAP change and the index regeneration in one governed flight. Spec seat: this is the whole surface; nothing else in packages/spec is touched, and the generator's own guards (checkSingleOwner / checkCoreEntryShape) must stay green.

    State: pm:blocked (Blocked-by: #15361, now ruled) → pm:dispatched in this act; the PR carries Fixes #15264 beside Fixes #15361.


    Generated by Claude Code

  4. claude commented on Sep 4, 2026

    @claude
    Contributor

    Item 2 of the ruling forked at execution (one ruled pointer publishes 46 transitive rows — see the fork on #15361); draft PR #15424 is held. pm:dispatched → pm:blocked until the fork is ruled.
    Blocked-by: #15361


    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

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions