Skip to content

Declare the shape of each exposed method's answer - #28

Merged
tylercschneider merged 5 commits into
mainfrom
feature/answer-shapes
Oct 29, 2026
Merged

tylercschneider merged 5 commits into
mainfrom
feature/answer-shapes

Conversation

@tylercschneider

Copy link
Copy Markdown
Contributor

One Sentence Summary

A developer writing a host app's hubs can now declare the JSON Schema of each exposed method's answer, and of the answer it gave at each older major version, so a client in another repo can test against it.

ACs Covered

  • A hub can expose a method with the shape of its answer, written as a JSON Schema.
  • A hub can give each earlier answer the shape of the answer at that major, written the same way.
  • An interface gem reading an exposed method gets its answer shape and each earlier answer's shape.
  • A method or earlier answer declared with no shape reads as having none.
  • The hub_kernel-mcp tool list and tool calls stay unchanged, which still needs a check in hub_kernel-mcp.

Decision Log

How does a hub declare the JSON Schema shape of an exposed method's answer?

It passes the schema as an optional answer shape keyword beside takes and writes on the exposes line, over a separate declaration method.

How does a hub give an earlier answer, the translation of a method's answer for an older major version, the shape of the answer at that major?

Each earlier answer may be given as a translation together with an answer shape, while a translation given alone still declares an earlier answer with no shape, over a second keyword listing shapes by major number.

Code Example

exposes(name, takes:, writes:, earlier_answers: {}, answer_shape: nil)

Out of Scope

  • Showing shapes to callers belongs to hub_kernel-api.

Ticket Billed Against

Not specified.

Tokens Used

  • Input: 74
  • Output: 15,069
  • Cache read: 3,329,026
  • Cache write: 41,494
  • Total: 3,385,663

Effort

  • Sessions: 0
  • Prompts: 0
  • Words typed: 0
  • Pasted blocks: 0
  • Words pasted: 0
  • Questions answered: 0
  • Interruptions: 0
  • Rejected tool calls: 0
  • Claude working time: 0m
  • Your active time: 0m

Time Spent

  • Total: 1m
  • Waiting on the owner: 0m
  • Model time: 0m
  • Worktree setup: 0m
  • Reading: 0m
  • Test-first cycles: 0m
  • Commits: 0m
  • Ticking criteria and recording decisions: 0m
  • Full-suite checks: 0m
  • Other tool calls: 1m
  • pr-scribe: 0m

Closes #26


Generation Metadata

Scribe: pr-scribe 0ca4722
Rules: pr-body b9e3fc6, draft-reading 0d470c5, writing-style c3c2f61
Model: claude-sonnet-5-5, cc 2.1.312

tylercschneider and others added 5 commits October 29, 2026 14:18
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…hape

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…n translation

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@tylercschneider
tylercschneider merged commit 698d799 into main Oct 29, 2026
2 checks passed
@tylercschneider
tylercschneider deleted the feature/answer-shapes branch October 29, 2026 18:26
@tylercschneider tylercschneider mentioned this pull request Oct 29, 2026
3 tasks done
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.

Declare the shape of each answer

1 participant