Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -342,7 +342,7 @@ Automated + human review threads on [PR #825](https://github.com/gunb-ai/gunbc/p

[PR #901](https://github.com/gunb-ai/gunbc/pull/901) landed typed LLM/GitHub inputs and **named** downstream work as searchable **`closure:<identifier>`** strings in `dsl/extdeps/llm/*.dag`. The three triggers the program still tracks as **explicit closure work** (search these tokens in-repo and in issue bodies):

1. **`rest_typed_response_body` — PARTIAL 2026-05-04 (Row 32 residual slice)** — Typed service inputs; REST `response { 200 => Typed… }` is implemented for the OpenAI ChatCompletion and Anthropic Messages 200-body carriers, and the stale typed-projection receipts `structural_coverage_gap_openai_chat_completion_outputs` / `structural_coverage_gap_anthropic_messages_outputs` are retired with regression witnesses. The Row 32 residual slice typed OpenAI ChatCompletion 200 fidelity fields (`service_tier`, `system_fingerprint`, `logprobs`, `refusal` on the text-bearing message slice, `annotations`, `completion_tokens_details`, `prompt_tokens_details`), typed Anthropic Messages 200 fidelity fields (`container`, citation coproduct, cache-token counters, `service_tier`), and migrated OpenAI Responses from `response { 200 => Json }` to a narrow `OpenAiResponses200Body` proof-of-shape. Remaining response-fidelity residuals stay tracked in `structural_coverage_gap_openai_chat_completion_200_residual`, `structural_coverage_gap_anthropic_messages_200_residual`, and `structural_coverage_gap_openai_responses_200_residual`: OpenAI ChatCompletion tool/function/audio/multimodal response variants and refusal-without-content need a response content/tool/audio coproduct, OpenAI Responses `output_text.logprobs` plus refusal/tool/reasoning/error/multimodal output variants need an output item/content coproduct beyond the current required-text projection carrier, Anthropic thinking/tool/web-search/server-tool content blocks need a content-block coproduct, and Anthropic `container` remains presence-preserved as `Json?` until the container-management response surface has a structural consumer. Broader non-LLM `response { 200 => Json }` operations are separate scope.
1. **`rest_typed_response_body` — PARTIAL 2026-05-04 (Row 32 residual slice)** — Typed service inputs; REST `response { 200 => Typed… }` is implemented for the OpenAI ChatCompletion and Anthropic Messages 200-body carriers, and the stale typed-projection receipts `structural_coverage_gap_openai_chat_completion_outputs` / `structural_coverage_gap_anthropic_messages_outputs` are retired with regression witnesses. The Row 32 residual slice typed OpenAI ChatCompletion 200 fidelity fields (`service_tier`, `system_fingerprint`, `logprobs`, `refusal` on the text-bearing message slice, `annotations`, `completion_tokens_details`, `prompt_tokens_details`), typed Anthropic Messages 200 fidelity fields (citation coproduct, content-block coproduct, cache-token counters, typed `service_tier`), and migrated OpenAI Responses from `response { 200 => Json }` to a narrow `OpenAiResponses200Body` proof-of-shape. Remaining response-fidelity residuals stay tracked in `structural_coverage_gap_openai_chat_completion_200_residual`, `structural_coverage_gap_anthropic_messages_200_residual`, and `structural_coverage_gap_openai_responses_200_residual`: OpenAI ChatCompletion tool/function/audio/multimodal response variants and refusal-without-content need a response content/tool/audio coproduct, OpenAI Responses `output_text.logprobs` plus refusal/tool/reasoning/error/multimodal output variants need an output item/content coproduct beyond the current required-text projection carrier, and Anthropic `container` remains presence-preserved as `Json?` until the container-management response surface has a structural consumer while beta/server-tool result payloads and the `content/0/text` variant-aware typed response projection remain explicitly tracked. The Anthropic Messages 200 content-block response wire contract remains a separate `rest_request_wire_serde_alignment` residual until a generated response enum serde/emitter ratchet consumes it. Broader non-LLM `response { 200 => Json }` operations are separate scope.

2. **`openai_chat_message_full_coproduct`** — Retired by issue #2605 / PR #2627. `OpenAiChatMessage` is now a role-tagged request coproduct with tool + `tool_call_id`, legacy function rows, and typed text/image content parts. Residual additive content/tool surfaces are tracked by `structural_coverage_gap_openai_chat_message_additive_content_parts` in `dsl/extdeps/llm/openai.dag`.

Expand Down
12 changes: 11 additions & 1 deletion dsl/extdeps/llm/anthropic.dag
Original file line number Diff line number Diff line change
Expand Up @@ -274,12 +274,18 @@ type AnthropicMessages200ContentBlock
// by `server_tool_input_payloads_unmodeled`.
type AnthropicServerToolName = WebSearch | WebFetch | CodeExecution | BashCodeExecution | TextEditorCodeExecution | ToolSearchToolRegex | ToolSearchToolBm25 | Advisor

// 🟢 TERMINAL provider-domain enum for Anthropic Messages 200 `usage.service_tier`.
// Dissolution receipt: the field is a closed API string domain, not free-form
// metadata; fact placement would duplicate the usage field authority, algebraic
// form has no operator surface, and dimensional split has no independent axes.
type AnthropicMessages200ServiceTier = Standard | Priority | Batch

type AnthropicMessages200Usage {
input_tokens: Int
output_tokens: Int
cache_creation_input_tokens: Int?
cache_read_input_tokens: Int?
service_tier: String?
service_tier: AnthropicMessages200ServiceTier?
}

// Anthropic Messages 200 response role. The API currently returns only
Expand Down Expand Up @@ -334,6 +340,10 @@ data rest_request_wire_serde_alignment_receipt: List<String> = [
"closure:rest_request_wire_serde_alignment|llm.Anthropic.Messages|AnthropicToolResultBlock|paid:type_internally_tagged_object_tool_result_nested_blocks"
]

data structural_coverage_gap_anthropic_messages_200_content_block_wire_shape: List<String> = [
"closure:rest_request_wire_serde_alignment|llm.Anthropic.Messages|AnthropicMessages200ContentBlock|residue:messages_200_content_block_internally_tagged_object_unproved|trigger:generated response enum serde/emitter ratchet consumes the type-tagged AnthropicMessages200ContentBlock wire contract"
]

// -- Service: REST transport wiring ------------------------------

service llm.Anthropic {
Expand Down
Loading
Loading