Design member inspection projection boundaries - #4545
Conversation
Separate target and producer planning from presentation, centralize Metadata declaration admission across API projections, and define an ordered migration and verification contract for the paused type/member stack. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 877c41d4-8130-4747-be53-7f86c1825f59
Model capability-request provenance and host grants, preserve section-specific discovery probes, make declaration admission dependency-aware, and add atomic migration, degraded-signature, cache, platform, and address-resolution gates. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 877c41d4-8130-4747-be53-7f86c1825f59
|
Round 1 review reconciliation for replacement head
|
|
Round 1 is complete for PR 4545.
Fix description: Accepted all findings and replaced the draft capability, discovery, admission, address-resolution, render-manifest, representability, migration, cache, platform, and failure-verification gaps with explicit typed boundaries and stable gates in |
Remove discovery capability escalation from the compatibility contract, order address resolution, close migration ownership and architecture gates, and verify equivalent hostile-input ceilings. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 877c41d4-8130-4747-be53-7f86c1825f59
…jection-boundaries
|
Round 2 review reconciliation for replacement head
The head moved in response to the round, so Round 2 is converging rather than review-clean and remains pending current-head CI/mergeability. |
|
Round 2 is complete for PR 4545.
Fix description: Accepted all seven findings. The replacement design makes host preflight the sole capability grant, removes source acquisition and empty-success from discovery compatibility, orders all positional and qualified address combinations, adds hostile-ceiling parity and architecture-closure gates, and assigns realized discovery migration to |
Order address and catalog resolution, type discovery outcomes, close prerequisite capabilities, define equivalent safety work, and move ownership gates to their semantic cutovers. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 877c41d4-8130-4747-be53-7f86c1825f59
…jection-boundaries
|
Round 3 review reconciliation for replacement head
The head moved in response to the round, so Round 3 is converging rather than review-clean and remains pending current-head CI/mergeability. |
|
Round 3 is complete for PR 4545.
Fix description: Accepted all ten findings as seven owner-level corrections. The design now requires PDB authority for cached symbols, resolves member targets before catalog selection, types discovery applicability/empty/unknown/failure outcomes, closes capabilities over prerequisites, defines equivalent safety work, moves closure gates to slices 4/6/7, and prohibits CSharp raw-flag reconstruction. Fix commit |
|
Round 4 review reconciliation at unchanged head
Round 4 is converging but not review-clean. The reviewed head remains unchanged; accepted findings require a replacement candidate in Round 5. |
|
Round 4 is complete for PR 4545.
Fix description: No files were changed while the Round 4 head lock was held. Five accepted findings were reconciled: inventory filters need typed set resolution and selector-kind-driven three-catalog selection; bounded local-PDB reads must remain distinct from acquisition/source capabilities; execution-mode policy must close over prerequisites; and safety gates must move to their first activating slice. These fixes will form the Round 5 replacement candidate. |
…jection-boundaries
Model set-valued member inventory selection, local PDB read authority, transitive producer policy, and cutover-time safety gates. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 877c41d4-8130-4747-be53-7f86c1825f59
|
Round 5 replacement candidate is frozen at This candidate implements all accepted Round 4 findings:
The documentation focused gate passed after the second base integration. The head is locked pending exact-head CI/mergeability and Round 5 fixed-head review. |
|
Round 5 review reconciliation for frozen head 12b865a Reviewers: GPT-5.6 Sol and Claude Opus 5. Both reviewed exact effective base 3caa958 through the frozen head. All six findings were reproduced against the clean head and are accepted.
The findings are converging and expose coherent missing plan dimensions rather than a new architectural direction. This head moved in response to Round 4 and will move again for these fixes, so Round 5 is complete but not review-clean. Round 6 will be the final round in the currently authorized block. |
…jection-boundaries
Model inspection surfaces, per-filter outcomes, structural schema alternatives, and preflighted conditional producer paths. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 877c41d4-8130-4747-be53-7f86c1825f59
|
Round 6 replacement candidate is frozen at c509659, containing effective base 799fc8f. This candidate addresses every accepted Round 5 finding:
The documentation focused gate passed after the second base integration. The head is locked pending exact-head CI/mergeability and Round 6 fixed-head review. Round 6 is the final round in the current authorized block. |
|
Round 6 review reconciliation for frozen head c509659 Reviewers: GPT-5.6 Sol and Claude Opus 5. Both reviewed exact effective base 799fc8f through the frozen head. All five findings were reproduced and are accepted.
Convergence analysis after six rounds: the remaining defects are not harness-only findings or reviewers expanding the threat model. Three are architectural omissions caused by an incomplete census of realized catalogs/routing and an under-specified cross-catalog identity contract. Two are missing product-level evidence gates. The proposed remedy is one focused design pass that completes the surface/catalog/router census, assigns canonical target-shape policy to semantic section identities, derives semantic-fact parity from the shared fact declaration, and adds a dedicated fallback-payload gate. Round 6 is complete but not review-clean. No Round 7 fix or review will begin without explicit authorization for another block. |
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 877c41d4-8130-4747-be53-7f86c1825f59
|
Round 7 candidate frozen at Effective base: Focused gate: This head resolves all five accepted Round 6 findings: it enumerates the four realized catalogs and route states, makes target demand a canonical semantic-section property across catalogs, moves commandless structural classification ahead of router acquisition, derives shared-fact parity from typed projection requests, and adds the |
|
Round 7 review reconciliation for frozen head Reviewers: GPT-5.6 Sol and Claude Opus 5. All three findings were reproduced and are accepted.
Round 7 is complete but not review-clean. Round 8 will fix these three design gaps. |
…jection-boundaries
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 877c41d4-8130-4747-be53-7f86c1825f59
|
Round 8 candidate frozen at Effective base: Focused gate: This head resolves all three accepted Round 7 findings: commandless static schema now composes package/library/type/member catalog owners as syntax-proven results or labeled alternatives; static no-target verification is split into |
|
Round 8 review reconciliation for frozen head Reviewers: GPT-5.6 Sol and Claude Opus 5. Two unique findings were reproduced and are accepted; both reviewers independently found the first.
Round 8 is complete but not review-clean. Round 9 will fix these two design gaps. |
…jection-boundaries
|
Round 17 formal review dispatched for exact locked head Reviewers: GPT-5.6 Sol and Claude Opus 5. Both reviewers received the same whole-head brief and isolated read-only worktrees. Current-head |
|
Round 17 reconciliation for exact head Reviewers: GPT-5.6 Sol and Claude Opus 5. Accepted findings:
Claude Opus 5 otherwise confirmed the raw version-marker rule, return/failure shapes, named migration surfaces, project references, and cross-document anchors. No findings were dismissed. Exact-head Round 17 ran 22:16–22:28 PDT (0:12). Review feedback is actionable and converging, but this head is not review-clean because all four accepted findings require documentation changes. Round 18 is the final round in the currently authorized 13–18 block and will form a new two-integration candidate. |
…jection-boundaries
…jection-boundaries
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 877c41d4-8130-4747-be53-7f86c1825f59
|
Round 18 candidate is frozen at exact head Effective base: This replacement resolves all four accepted Round 17 findings:
Windows Metadata remains unsupported project-wide. The root guard exists only to reject it before semantic work; no projected reader, compatibility adapter, correspondence model, or WinMD semantic support is introduced. Focused documentation gate passed: |
|
Round 18 formal adversarial review is starting for exact head Eligibility is complete: exact-head Reviewers: GPT-5.6 Sol and Claude Opus 5, each in an isolated fixed-head worktree. Both reviewers receive the complete head and the same design brief. CLEAN is an explicitly acceptable result. Round 18 is the final round in the currently authorized 13-18 block; if either reviewer returns a fix-requiring finding, no Round 19 review will begin without the required architectural checkpoint and explicit authorization. |
|
Round 18 reconciliation for exact head Reviewers: GPT-5.6 Sol and Claude Opus 5.
The finding was reproduced on the exact head in an isolated worktree. A scratch The path is concrete: Accepted remedy for the next candidate:
No findings were dismissed. Exact-head |
…jection-boundaries
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 877c41d4-8130-4747-be53-7f86c1825f59
|
Round 19 candidate formed and frozen.
The replacement makes predecessor-cache invalidation a repository-wide persistent derived-result cache rule. Dynamic authorization and liveness are always rechecked; stable admission may be skipped only for exact content written under the complete gate-contract version. The slice-5 format cutover now bumps |
|
Round 19 review reconciliation for exact head
Independent exact-head reproduction invoked the real Disposition: accepted. The replacement design will require the cache key digest, format admission, SourceLink assembly probe, derived catalog, and publication to share one acquisition-owned immutable assembly snapshot. Bracketed mutable-path hashes will be explicitly insufficient, and |
…jection-boundaries
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 877c41d4-8130-4747-be53-7f86c1825f59
|
Round 19 completed and Round 20 candidate formed. Round 19 (
Round 20 frozen candidate:
The replacement makes persistent-cache identity complete across every contributing artifact. The library effective path now retains assembly bytes once, classifies before PDB/cache work, replaces the predecessor |
|
Round 20 fixed-head adversarial review dispatched.
Both reviewers are reviewing the whole head. Round 20 specifically asks them to attack the repository-wide multi-artifact cache contract, pre-cache Windows Metadata admission, typed local-symbol evidence completeness, every transitive retained-content consumer, deterministic W→S→W gates, and finite Browser/Wasm budgets. Reporting CLEAN is explicitly acceptable. |
|
Round 20 review reconciliation for exact head
Round 20 therefore requires a Round 21 replacement candidate; no finding expands WinMD support. |
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 877c41d4-8130-4747-be53-7f86c1825f59
|
Round 20 completed and Round 21 candidate formed. Round 20 (
Round 21 frozen candidate:
The replacement adds owner-issued |
|
Round 21 fixed-head adversarial review dispatched.
Both reviewers are reviewing the whole head. Round 21 specifically attacks owner-issued route provenance, declaration-derived route/PDB key closure, the 64 MiB operation-owned PDB retention budget across every provider, pre-allocation and failure semantics, and deterministic cross-process/Browser evidence. Reporting CLEAN is explicitly acceptable. |
|
Round 21 review reconciliation for exact head
The design allowed lookup under probe-time Disposition: accepted. Round 22 will freeze one owner-bound local-symbol evidence identity across lookup, every PDB-dependent cold producer, and publication. Separately authorized or concurrent symbol warming does not re-key that catalog. If the operation observes an evidence-generation change, it declines publication; the next invocation probes the new evidence and recomputes. The PDB W→S→W and digest/key gates will assert that no catalog is written under evidence the producer did not consume. |
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 877c41d4-8130-4747-be53-7f86c1825f59
|
Round 22 candidate is frozen at The review-driven fix binds route, retained assembly, format admission, and probe-time local-symbol evidence into one immutable effective-catalog subject used by lookup, all cold producers, and publication. Publication cannot substitute post-production evidence; an observed evidence-generation change declines the write and a later invocation recomputes. Focused documentation validation passed before and after the second base integration, which was a no-op. |
|
Round 22 fixed-head adversarial review dispatched.
This round reviews the whole proposal. Its confirmation focus is the frozen effective-catalog subject: lookup, cold producers, and publication must use the same route, assembly, format-admission, and probe-time local-symbol evidence; no post-production evidence may re-key the result. |
|
Round 22 review reconciliation for exact head
Ready to merge |
Summary
Defines the proposed architecture that must be accepted before implementation review resumes on #3877/#3880. The model has two typed pipelines joined by typed results: one determines what work the request asks for and is authorized to perform; the other determines which metadata declarations are valid and what they mean.
The core rule is that selection, authorization, metadata validity, and presentation are separate concerns with separate owners. Section names do not grant capability, cached content does not grant authority, presentation cannot start producers, and C# does not reinterpret raw metadata semantics.
Inspection planning
Schema, discovery, and rendering remain distinct. Static schema performs no target or producer work. Discovery runs only declared probe-eligible producers and returns
Applicable,ValidEmpty,Unknown, orFailed; denied or unavailable work cannot become empty success. Rendering executes only the selected, pre-authorized producer closure.Shared Metadata declaration model
Each top-level operation owns a
MetadataOperationContext. Acquisition supplies immutable assembly bytes and an opaque image generation; liveMetadataDeclarationSessioninstances provide bounded access without exposing raw readers or mutable budgets to higher layers.Full extraction, summary extraction, and focused queries use the same six-stage declaration path:
This preserves cheap filtering before expensive signature and
MethodImplwork without allowing malformed addressed declarations to disappear behind filtering.Metadata owns shared typed facts such as accessibility, signature status, accessor aggregates, explicit implementations, and slot relationships. Full, summary, and focused projections derive from the same accepted identities and failures. CSharp owns spelling only and returns
Representable,FallbackRequired,Degraded, orUnavailablerather than reconstructing semantics from raw flags or display text.Properties and events use a bounded, lossless
MethodSemanticscensus instead of SRM convenienceGetAccessors()projection. The census preserves physical rows, duplicates,raise,Other, unknown or combined flags, and malformed associations until Metadata validates one complete accessor aggregate.Content, cache, and lifetime model
The successor library effective-catalog subject freezes route evidence, retained assembly bytes and digest, supported-format admission, and probe-time local-symbol evidence including retained PDB identity and provenance. Lookup, every cold producer, and publication consume that exact subject. No component may reopen the path or re-key the result from later evidence. If symbol evidence changes during the operation, publication is declined and a later invocation recomputes.
Portable PDB retention is capped at 64 MiB across all providers. Over-limit content produces a visible typed failure; it cannot become “no PDB” or silently fall through to another provider.
Format and platform boundary
A bounded classifier runs before constructing an assembly
MetadataReaderand distinguishes supported ECMA-335, no metadata, malformed metadata root, and unsupported Windows Metadata.WinMD is outside the project scope. The plan adds no projected WinMD reader, compatibility adapter, correspondence model, or incidental semantic support.
Product paths remain SRM-only, Roslyn-free, NativeAOT-friendly, and compatible with single-threaded Browser/Wasm. The proposal does not replace Markout, create a universal metadata object graph, or move C# spelling into Metadata.
Migration
The implementation is ordered into independently mergeable slices:
MethodSemanticshandling.Each slice has named
MIPorMDPgates. Compatibility adapters may bridge slices, but mixed old/new authority is rejected rather than silently interpreted.Evidence
cdbfcc49ef34a16eebea1ff3b97b9d8f2c730c3epassedci-requiredand is mergeable.Non-action boundary
This PR changes documentation only. It accepts the direction and ownership boundaries but explicitly marks the target behavior unverified until the named migration gates land. Current product code does not yet enforce the complete model, and implementation review for #3877/#3880 remains paused pending commit-level disposition against the accepted design.