feat(draft): selector-shaped dataSource inference + curated exclusions sidecar - #116
Merged
Conversation
…lusions sidecar blueprint draft answered 73 of the document's readable families with the same skip line for months: dataSource inference is not implemented. Now it is, and it targets the shape a practitioner actually uses rather than the shape the API paths suggest: one data source per family, looked up by exactly one of its selectors. The list operation is the resolver -- selectors narrow it to exactly one element, with zero and several matches both refused, because a lookup must be predictable, never a guess -- and where the family offers a direct by-identifier read, the matched element only supplies the identifier and the direct read does the fetching, so state always maps from one response shape. The IR grows the binding for it: a list operation beside the read, the collection accessor and element type, the selector table, and the element-to-identifier handoff. Validation enforces the contract's shape, the bindings check resolves every new name against the real SDK -- the list chain, the collection accessor, each selector's element field, the identifier handoff -- and the read template renders the whole contract with both pilots' existing data sources held byte-identical. Which families must not be drafted is curation, not inference: the document does not say which of its readable surfaces are telemetry, and a heuristic would guess silently. A draft-exclusions.json sidecar beside the snapshots names each exclusion with a required reason, and the run repeats it as a named skip. Inferred selectors are the identifier plus every name-shaped string field on the element -- the fields an object is actually known by. Against the pinned ThousandEyes document the first run drafts 16 selector-shaped data sources, test and monitor and alert among them, and names its refusals: composed schemas and collection-less lists remain for hand-authoring. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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.
Closes the systemic gap behind "we only have 2 data sources":
blueprint draftskipped 73 readable families per run with "dataSource inference is not implemented". Now implemented — targeting the m365-provider-shaped pattern chosen for it, not the raw path shapes:DataSourceBindinggainslist/collectionField/elementType/selectors/elementIdField; validation enforces the contract;bindings checkresolves every new name against the real SDK; the read template renders exactly-one enforcement, list-and-match, both refusals, and the id handoff. Both pilots' existing data sources hold byte-identical (drift checks green).draft-exclusions.jsonsidecar beside the snapshots carries each exclusion with a required reason, echoed as a named skip per run.First run against the pinned document: 16 selector-shaped drafts (
test,monitor,alert, …) and named refusals for the rest (composed schemas, collection-less lists — hand-authoring material).Unit-pinned: resolver view + full template render, exclusions load/match, validation rules. All suites green; docs drift test green.
🤖 Generated with Claude Code