Skip to content

feat(tools): slice 1 — lean ingestion + SpecIR - #14

Merged
Blind-Striker merged 19 commits into
masterfrom
feature/slice-01-ingestion-specir
Aug 11, 2026
Merged

Blind-Striker merged 19 commits into
masterfrom
feature/slice-01-ingestion-specir

Conversation

@Blind-Striker

@Blind-Striker Blind-Striker commented Aug 11, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Slice 1 closes lean after the generator-complexity checkpoint (research doc 13; research log session 15 records the full decision chain).

  • Ingestion pipeline: pinned Microsoft.OpenApi reader → semantic-risk fail-closed projection → immutable SpecDocument behind the ISpecIngestion seam. Reader gate (version, diagnostics-as-errors, crash translation), $ref-sibling raw scan, dangling-reference sweep.
  • Absorption evidence: the complete pin projects clean — 188 operations (61 modern / 127 legacy), 1,501 schema-graph nodes, landmark smoke green, repeat-deterministic.
  • Assurance policy change: DOM surveillance machinery removed (reflection member whitelists, DOM inventory, SpecIR snapshot, unconsumed raw hashes, per-keyword red tests); semantic-loss checks folded into projectors as explicit typed-member checks. Git diffs of committed output + tests are the primary drift radar; targeted guards remain at known lossy seams (prefixItems tripwire, unrecognized-raw-keyword refusal, Microsoft.OpenApi boundary guards).
  • Docs regime: design specs demoted to vision/reference (sealed surface = ADRs + AGENTS.md), slice map retired, ROADMAP now carries the six-milestone deliverable-first list (M1 = two-operation walking skeleton with a manual real-server demo), deviation protocol level 2 narrowed, consumed handover deleted.

Honest note: generate remains a fail-loud stub until M1's compiler arc, while the complete ToolApp hosting composition and global CLI options are live.

Deviations

  • Maintainer-driven course correction (level 3 by weight): the sealed-spec regime is replaced by the vision/reference + milestone model; keep/drop list approved item by item — research log session 15 (Q63–Q65).
  • The branch history includes the pre-correction surveillance implementation and its removal; squash-merge recommended.

Gate

Build 0W/0E (all TFMs), 168/168 tests, dotnet format clean, Slopwatch 0 issues, three-OS CI on this PR.

Closes #2

…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
Blind-Striker merged commit 15b850c into master Aug 11, 2026
3 checks passed
@Blind-Striker
Blind-Striker deleted the feature/slice-01-ingestion-specir branch August 11, 2026 17:40
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.
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.

Slice 1: Ingestion + SpecIR

1 participant