Skip to content

action-row-update.test.ts positive control still spells the pre-fix data-API path /api/v1/sys_api_key/{id} #15099

Description

@claude

Observational finding, filed unassigned by the os-dev seat working #14093 (branch claude/issue-14093-action-method-example-path, PR #15098). Not fixed there — out of that card's declared file surface, which is the method docblock in action.zod.ts only.

What

packages/spec/src/ui/action-row-update.test.ts:155-159 — the positive control in the row-level declarative-write suite — spells the same erroneous data-API path the method docblock was just corrected for:

it('positive control — the api and script forms are untouched by the new refinements', () => {
    expect(ActionSchema.safeParse({
      name: 'revoke', label: 'Revoke', type: 'api', target: '/api/v1/sys_api_key/{id}',
      method: 'PATCH', bodyExtra: { revoked: true }, recordIdParam: 'id',
    }).success).toBe(true);

The shipped data door is PATCH /api/v1/data/:object/:id (packages/rest/src/rest-server.ts:7664 composing getApiBasePath() with crud.dataPrefix, registered at :7913-7914; the /data default is packages/spec/src/api/rest-server.zod.ts:252). The fixture's path is missing the /data segment, and its id placeholder is a bare {id} where target's documented convention is ${ctx.X} / ${param.X} (action.zod.ts:992-997).

Why it is a finding and not a bug

Nothing is broken and no gate reds. target is z.string(), so the path value carries no assertion weight — this test asserts only that the type: 'api' form still parses, and it does. The fixture also does not publish: @objectstack/spec ships dist/** and src/**/*.zod.ts, and a .test.ts matches neither.

What it costs is consistency. This fixture appears to have been copied from the docblock it sits next to; with PR #15098 correcting that docblock, this line becomes the last place in the repo spelling the wrong shape. An author or agent grepping sys_api_key for a worked example of that route now finds one corrected site and one stale one, with nothing marking which is which — the same "reason confidently from the wrong text" input the parent card is about, one layer down and without the 404.

Suggested

Either update the fixture to /api/v1/data/sys_api_key/${ctx.recordId} to match the corrected docblock, or — since the path is inert to this assertion — replace it with an obviously-illustrative value so it cannot be mistaken for a worked example at all. Deliberately not decided here.

Triage note: severity judged at filing time is unreliable in both directions, so this is filed plainly rather than graded. No assignee.

Generated by Claude Code


Generated by Claude Code

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions