Skip to content

feat(capabilities): fulfill §3.5 author-by-derivation in PR-1 + PR-3#682

Merged
seanhanca merged 1 commit into
mainfrom
feat/cap-authoring-by-derivation
Jul 20, 2026
Merged

feat(capabilities): fulfill §3.5 author-by-derivation in PR-1 + PR-3#682
seanhanca merged 1 commit into
mainfrom
feat/cap-authoring-by-derivation

Conversation

@seanhanca

Copy link
Copy Markdown
Contributor

Closes two gaps between the merged PR-1 (#680) / PR-3 (#681) and the §3.5 author-by-derivation design — the goal being that providers never hand-type a field that has a standard (that's where descriptors go wrong).

PR-1 (descriptor.ts)

  • output_kind is now OPTIONAL — GENERATED from modality, overridable. Adds inferOutputKind(modality) + resolveOutputKind(cap). A provider needn't type it. (semantic_key derive-not-trust / V1 was already shipped.)

PR-3 (discovery-sync.ts)

  • planDiscoverySync now returns the full §3.5 V2 verdict — NEW / ADD-CAPACITY / SYNONYM:
    • existing key, name omitted or matchingADD-CAPACITY = a permissionless Plane-1 offering, no registry rewrite (the capacity lives in discovery, consumed by select_provider).
    • existing key, explicit different nameSYNONYM, skipped + points at the owner.
    • This fixes the prior bug where offering an existing cap with the name omitted was wrongly rejected as a synonym.
  • descriptorToEntry + synthesizeUsage use resolveOutputKind (infer when omitted).

Safety

  • Additive + golden-neutral; no change to any hot path. 14 descriptor + 14 discovery-sync tests green (+ golden).

Plan (LIVE-RUNNER-CAP-ADOPTION-PROPOSAL.html) PR-1/PR-3 rows updated to mark §3.5 fulfilled; the remaining §3.5 pieces (V3 modality-vocabulary, V4 consistency, V5 economics, the cap init generator + /api/capabilities/standard) are PR-7 + PR-8.

🤖 Generated with Claude Code

Closes two gaps between the merged PR-1/PR-3 and the "authoring by derivation"
design (plan §3.5): providers must not hand-type fields that have a standard.

PR-1 (descriptor.ts):
- output_kind is now OPTIONAL — GENERATED from modality, overridable. Add
  inferOutputKind(modality) + resolveOutputKind(cap). A provider needn't type it.
  (semantic_key derive-not-trust / V1 was already shipped.)

PR-3 (discovery-sync.ts):
- planDiscoverySync now returns the full §3.5 V2 verdict — NEW / ADD-CAPACITY /
  SYNONYM. An existing identity offered with the name omitted OR matching is
  ADD-CAPACITY (a Plane-1 offering: no registry rewrite), not a rejected synonym;
  only an EXPLICIT different name is a synonym. Fixes the case where omitting the
  name on an existing cap was wrongly rejected.
- descriptorToEntry + synthesizeUsage use resolveOutputKind (infer when omitted).

Additive + golden-neutral. 14 descriptor + 14 discovery-sync tests green.
Plan PR-1/PR-3 rows updated to mark §3.5 fulfilled.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@vercel

vercel Bot commented Jul 19, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
storyboard Ready Ready Preview, Comment Jul 20, 2026 12:01am
storyboard-a3 Ready Ready Preview, Comment Jul 20, 2026 12:01am
storyboard-creative-stage Ready Ready Preview, Comment Jul 20, 2026 12:01am

Request Review

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant