Repository navigation
[GEN-E6] curated interface documentation reaches its implementing members; 26 moved rows return narrowed (PR 2b) - #455
Merged
Conversation
…ting members, and partly declared rows return narrowed A public implementing property with a curated interface owner and no row of its own now emits `<inheritdoc cref="Owner.Member"/>`, resolved through the bound relationships (carrier and union membership, base chains, explicit bridges), never names. A direct row wins over an inherited owner, and two different curated owners for one property refuse generation by name. This reaches 105 public members: the durable envelopes' Seq and Version, the MCP timeouts and Codemode, and the inbox and compaction Created times. Earlier rows whose qualification was only partly declared return narrowed to their declared half, each with its own sources, worded so the sentence is true on its own and implies nothing about the dropped half. A guard keeps every curated hoisted member that carries the "ordinary optional property" remark optional in every variant, until the plan carries requiredness (#453).
Blind-Striker
force-pushed
the
docs/gen-e6-pr2b
branch
from
October 17, 2026 16:00
28c7892 to
ca1f787
Compare
14 of 39 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Curated interface documentation now reaches the public members that implement it, and 26 of the 33 rows #445 moved to the upstream draft return narrowed to what upstream declares.
Closes: GEN-E6 PR 2b (plan amendments 13–17). PR 2a is #445. It was developed in parallel with GEN-E3 PR 3 (in review), with disjoint write sets; whichever lands second rebases.
What changes
/// <inheritdoc cref="Owner.Member" />.ImplementedBy,ImplementedHoistedInterfaceNames, union membership and base chains, and explicit bridges'PropertyName. Never by name.IDurableEnvelope.Seqand.Versionon 45 records each, the threeIMcpTimeoutmembers ×2,IMcp.Codemode×2,ISessionInboxInfoTime.Created×4 andISessionMessageCompactionTime.Created×3.sources.protocol-and-generation.md, covering the inheritdoc reach and the conflict refusal. The CHANGELOG gets a new entry under [Unreleased], a delta from 0.9.0-preview.12. The published preview.12 section is untouched: this PR was rebased past the cut (docs: cut the changelog for 0.9.0-preview.12 #454), and the diff against master adds only that entry.The 33 moved rows, revisited (amendment 16)
The narrowing rule: a row keeps only the half its excerpts state. The narrowed sentence must be true on its own and must not imply the dropped half (for example, "last match wins" must not read as the full permission semantics). On extensible enums, value lists say "the pinned values are …", so they don't read as exhaustive.
Returned narrowed: 26 rows. Old (before #445) → new, with sources at pin
042d0832:ExperimentalSessionStatsRequest.Frompackages/protocol/src/groups/session.ts:204packages/protocol/src/groups/session.ts:216ExperimentalSessionStatsRequest.Topackages/protocol/src/groups/session.ts:205packages/protocol/src/groups/session.ts:216SessionCreateRequestpackages/protocol/src/groups/session.ts:239SessionCreateRequest.Idpackages/schema/src/session-id.ts:5packages/protocol/src/groups/session.ts:223SessionCreateRequest.Locationpackages/protocol/src/groups/session.ts:239SessionCreateRequest.Modelpackages/protocol/src/groups/session.ts:227packages/schema/src/model.ts:19packages/schema/src/model.ts:21packages/schema/src/model.ts:22SessionCreateRequest.ParentIdpackages/protocol/src/groups/session.ts:239SessionCreateRequest.Permissionspackages/schema/src/session.ts:56packages/protocol/src/groups/session.ts:230SessionExecutionFailedpackages/schema/src/session-event.ts:247packages/schema/src/session-event.ts:249SessionExecutionInterruptedpackages/schema/src/session-event.ts:254packages/schema/src/session-event.ts:256SessionMessageAssistantpackages/schema/src/session-message.ts:215packages/schema/src/session-message.ts:218packages/schema/src/session-message.ts:195SessionMessageAssistant.Contentpackages/schema/src/session-message.ts:218packages/schema/src/session-message.ts:195SessionMessageAssistant.Costpackages/schema/src/session-message.ts:227packages/schema/src/money.ts:7SessionMessageAssistant.Finishpackages/schema/src/session-message.ts:224packages/schema/src/llm.ts:5SessionMessageAssistant.Retrypackages/schema/src/session-message.ts:230packages/schema/src/session-message.ts:207packages/schema/src/session-message.ts:208packages/schema/src/session-message.ts:209SessionMessageAssistant.Tokenspackages/schema/src/session-message.ts:228packages/schema/src/token-usage.ts:6packages/schema/src/token-usage.ts:10SessionPromptRequestpackages/protocol/src/groups/session.ts:405packages/protocol/src/groups/session.ts:413SessionPromptRequest.Deliverypackages/protocol/src/groups/session.ts:402packages/schema/src/session-inbox.ts:11SessionPromptRequest.Filespackages/schema/src/prompt-input.ts:31packages/schema/src/prompt-input.ts:10SessionPromptRequest.Idpackages/protocol/src/groups/session.ts:399packages/schema/src/session-message.ts:23SessionPromptRequest.Resumepackages/protocol/src/groups/session.ts:413SessionPromptRequest.Skillspackages/schema/src/prompt-input.ts:33packages/schema/src/prompt-input.ts:25SessionTextDeltaData.Deltapackages/schema/src/session-event.ts:403packages/schema/src/session-event.ts:410SessionTextDeltaData.Ordinalpackages/schema/src/session-event.ts:405packages/schema/src/session-event.ts:409packages/schema/src/schema.ts:4SessionTextEndedData.Statepackages/schema/src/session-event.ts:423packages/schema/src/session-message.ts:39SessionTextEndedData.Textpackages/schema/src/session-event.ts:403packages/schema/src/session-event.ts:422New owner rows: 8:
IDurableEnvelope.Seq,IDurableEnvelope.Version,IMcp.Codemode,IMcpTimeout.Catalog,IMcpTimeout.Execution,IMcpTimeout.Startup,ISessionInboxInfoTime.Created,ISessionMessageCompactionTime.CreatedStill upstream-only: 7:
PtyCreateRequest.Args,PtyCreateRequest.Command,SessionCreateRequest.Agent,SessionExecutionStarted,SessionExecutionSucceeded,SessionMessageAssistant.Error,SessionMessageAssistant.RawFinish(each with its reason in the internal upstream draft).Review
Both reviews were done by two families: the coordinator's Claude review and a fresh cross-family review (Sol).
src/line is a///line.SessionCreateRequest.Permissions, scoped to "when at least one rule matches";.Files' wording.SessionCreateRequest.Id, whose declared prefix isses, notses_;.Tokens;.Retry;SessionTextDeltaData.Ordinal;SessionCreateRequest.Model; and the StatsFrom/To.HoistedMemberPlancarries no requiredness. It is correct today, sinceIMcp.Codemodeis the only member and it is optional. A guard ships here: a pinned-plan test that fails if any remarked member is required in any variant. Its permanent red-proof row flips Codemode's source to required, and an always-empty mutant turned that row red. The real fix belongs in the binding model, tracked in Hoisted-member optional remark is unconditional; HoistedMemberPlan carries no requiredness #453.Tests
GeneratedDocumentationTests.Budget (against the merge-base)
tools/curation.jsonrows and generated output are data.Local check
At this head, on dev-01, after a root Release build, on a quiet host: slopwatch 0 issues; the Release build with 0 warnings; both format passes;
verify-clonespassing;--help;generate --verifycurrent; the whole Tools.Tests project (guards included) at 2070/0. Bun 1.4.3, off the 1.4.2 pin. CI is the full gate.Provenance: Generator lane / opencode dispatch harness (openai/gpt-6.1-sol-1m), Sol guide pilot task 3. Coordinated, reviewed and finished in Claude Code. The full narrowing ledger and implementer reports are held internally.