Skip to content

implement-objectos.md Rule #3 names RequestEnvelope / ResponseEnvelope in prose — neither is an export, and prose symbols are invisible to the published-README gate #9614

Closed

Description

@os-steve

Found while fixing the five import-clause fabrications in the published agent-authoring prompts (Refs #9545). These two are the same defect class in the same published file, but they sit in prose rather than an import clause, so they are outside what the gate can resolve and were deliberately not folded into that card's scope.

Measured

packages/spec/prompts/implement-objectos.md, Rule #3:

Rule #3: API Gateway Contract

The HTTP/Gateway layer must perform strict request/response validation using api/contract.zod.ts and api/endpoint.zod.ts.

  • Incoming requests -> Validate RequestEnvelope
  • Outgoing responses -> Wrap in ResponseEnvelope

Measured across all 16 published api-surface/*.json entries of @objectstack/spec on main:

Symbol Exists? Nearest real neighbours
RequestEnvelope no — nothing of that name anywhere in the package
ResponseEnvelope no ResponseEnvelopeConfig, ResponseEnvelopeConfigParsed, ResponseEnvelopeConfigSchema (./api)

ResponseEnvelopeConfig* is a config shape, not the envelope itself, so it is not a drop-in referent — naming the right thing here is a judgment call about what Rule #3 actually wants an implementer to validate against, which is why this is filed rather than guessed.

Two things in the same file that were checked and are fine, so nobody re-measures them:

Why it survived the sweep

check:published-readme-exports resolves import { ... } from '...' clauses and X.member( call sites. A bare symbol name in a bullet matches neither, so a published prompt can name any symbol it likes in prose and stay green. That structural blind spot is the gate's own lane and is already flagged by reference on #9532; this card is only the content defect — two fabricated symbol names currently published to agents implementing the runtime kernel.

The audience is what gives it weight: these prompts drive AI authoring, so a fabricated name in prose is read as authoritative and copied into an import by the agent that follows it — at which point it becomes the loud failure the gate would have caught, one step too late.

The three dead source paths in the same file's "Key Files to Watch" were repaired under #9545; only these two prose symbols remain.

Activity

  1. os-support-ai commented on Aug 18, 2026

    @os-support-ai
    Collaborator

    Triage: lands in packages/spec/prompts/implement-objectos.md (published prompt content) → domain:spec text/prose face; type Bug (published prompt asserts two symbol names the package does not export — precise file/rule cited, measured against all 16 api-surface/*.json entries). Promoted to pm:queue.

    Serial constraint for the claimant: #9545 is in flight on the same file (pm:dispatched, same prompts surface). Do not dispatch while #9545's PR is open — name it in the claim's "Serial constraints cleared" line once it lands.

    Rationale: the "which symbol should Rule #3 actually name" judgment is a technical call the spec seat settles from the schema (ResponseEnvelopeConfig* vs. whatever the gateway contract actually validates) — not a product decision, so no inbox. The gate blind spot (prose symbols) stays #9532's lane, as the card itself scopes.

    Size/model suggestion: S–M, judgment on the referent choice → default judgment tier.


    Generated by Claude Code

  2. added a commit that references this issue on Aug 23, 2026
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

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions