Repository navigation
feat(tools): slice 1 — lean ingestion + SpecIR - #14
Merged
Merged
Conversation
…ecks The reflection member whitelists (HostMemberWhitelist, SchemaMemberWhitelist), the document wall, and the fatal handling of typed annotation/validation members and unknown extensions are removed. Semantic-loss checks survive as explicit typed-member checks: path-level parameters, unknown HTTP methods, parameter location/style/content, multi-media bodies and responses, allOf (via shape classification), multi-value type, unrecognized raw keywords, and the declared x-websocket/x-effect-stream semantics. The unused SpecOperation.RawContentHash field is dropped; stateless policies become static per the analyzer wall.
ISpecIngestion/SpecIngestion compose reader, walls, projection, the raw $ref-sibling scan, and a dangling-reference sweep into one pass returning the immutable SpecDocument. The unconsumed raw-pointer lookup leaves ProjectionState per the consumer-pull rule; the seam is DI-registered in ToolApp.
…ndmark smoke The tripwire pins the one raw keyword the adapter depends on; the guards keep Microsoft.OpenApi inside the ingestion slice; the smoke asserts representative landmarks (surfaces, SSE/wildcard/WebSocket flags, marked/structural unions, the plugin tuple, special-number and unrestricted sites, both error styles, envelope shapes, repeat determinism) against the full pin — no counts.
…retired Research log session 15 records the correction: the three design specs and the walking-skeleton design carry vision/reference banners (sealed surface = ADRs + AGENTS.md), the slice map and the superseded Slice 1 plan retire, ROADMAP carries the six-milestone deliverable-first list (M1 = two-operation walking skeleton with a manual real-server demo), the deviation protocol's level 2 narrows to canonical documents, AGENTS.md gains the vision framing and blast-radius-scaled assurance, and the consumed execution handover is deleted.
The Windows-only ACL strategy threw PlatformNotSupportedException on the Linux/macOS legs; a file occupying the log directory's path fails initialization identically on every OS.
Blind-Striker
added a commit
that referenced
this pull request
Aug 15, 2026
Concrete unknown-carrier converters lacked HandleNull, so deserializing a null token bypassed Read and returned null for a non-nullable carrier (review blocker #14); neither converter validated a nested union's fixed outer tag, so a contradicted discriminator rode into the carrier and replayed on serialization (#13, folded). Carriers now emit HandleNull with an explicit null-token rejection, and both the carrier and base converters validate the fixed marker's presence, kind, and exact value while keeping unknown-inner-marker tolerance and raw replay. All eight carriers regenerate; regressions deserialize through the raw type info so the wrapper's null coalesce cannot mask a bypass.
This was referenced Aug 25, 2026
This was referenced Aug 25, 2026
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.
Summary
Slice 1 closes lean after the generator-complexity checkpoint (research doc 13; research log session 15 records the full decision chain).
Microsoft.OpenApireader → semantic-risk fail-closed projection → immutableSpecDocumentbehind theISpecIngestionseam. Reader gate (version, diagnostics-as-errors, crash translation),$ref-sibling raw scan, dangling-reference sweep.prefixItemstripwire, unrecognized-raw-keyword refusal, Microsoft.OpenApi boundary guards).Honest note:
generateremains a fail-loud stub until M1's compiler arc, while the complete ToolApp hosting composition and global CLI options are live.Deviations
Gate
Build 0W/0E (all TFMs), 168/168 tests,
dotnet formatclean, Slopwatch 0 issues, three-OS CI on this PR.Closes #2