English | 简体中文 | Main roadmap
P2 contains 15 parent tasks, 94 implementation leaves, and 7 gate leaves. Every leaf below is ⏳ Planned. Existing Cargo parsing, process runners, runtime probes, and CLI commands are foundations; they are not evidence that these P2 contracts have passed. The P1 gate remains a hard prerequisite for P2 completion.
Each .01 leaf freezes a versioned scope manifest before implementation: named
APIs, signatures, features, platform combinations, supported and rejected cases,
and a fixed test denominator. It must preserve its parent's required surface;
choosing exact members cannot remove a named family from that parent. Expansion
creates a new version and new work items, not new hidden conditions at closure.
For a completed leaf, retain its exact manifest and evidence; do not reopen it
merely because a later profile grows. A parent passes only when all its leaves
pass. P2 passes only when all 15 parents and all 7 P2-GATE leaves pass, after
P1-GATE. Design may start early; dependencies must pass before closure.
All new paths and test targets below are planned deliverables, not assertions
that those files or commands already exist. test:<name> denotes a planned,
filterable test target, whose concrete bounded invocation must be registered in
its scope manifest. Evidence for every leaf is a machine-readable report keyed
by its ID and manifest hash, containing commit SHA, tools/versions, RID, command,
denominator, pass/fail/skip counts, time/resource limits, PID/start/parent,
cleanup, and failure reasons. Required cases cannot be skipped; unsupported
cases must produce the frozen diagnostic. Report archives need a stable CI URL
or provenance. Runtime rows require real generated programs, not host-library
simulation. Shared directories below identify review ownership; parallel workers
must reserve distinct files before editing them.
The P2 Web starter is a runnable minimal server using the declared std::net
surface; it makes no axum/reqwest claim. Rich Web profiles add template versions
in P4, avoiding a P2 → P4 → P2 dependency cycle. The interactive REPL is explicitly
CoreCLR/JIT-only. Visual Studio evidence is required on Windows; the shared LSP,
VS Code, CLI, and application platform gates cover Windows and Linux x64.
Parent hard dependency: P1-GATE.
| ID | Status | Deliverable / ownership | Depends on | Done when | Evidence |
|---|---|---|---|---|---|
| P2-01.01 | ⏳ Planned | Freeze core-v1 API/signature, trait, and case manifest; library/core/, conformance manifests. |
P1-GATE | All seven parent families have named members, positive/error/boundary cases, and a fixed denominator; unknown members are classified. | test:core-manifest; manifest validation report. |
| P2-01.02 | ⏳ Planned | Primitive operations and Option/Result; library/core/. |
P2-01.01 | Declared constructors, matching, combinators, and error propagation work; overflow, absent values, and wrong generic bounds follow the profile. | test:core-values; generated-program and diagnostic report. |
| P2-01.03 | ⏳ Planned | Formatting and display/debug adapters; library/core/fmt/. |
P2-01.01 | Named formatting members produce golden UTF-8 output; invalid specifiers, missing implementations, and output budgets diagnose. | test:core-format; format/output-limit report. |
| P2-01.04 | ⏳ Planned | Comparison and hashing contracts; library/core/cmp/, library/core/hash/. |
P2-01.02 | Equality/order/hash cases agree with their declared contracts, including floats and collisions; invalid trait implementations fail. | test:core-comparison-hash; contract report. |
| P2-01.05 | ⏳ Planned | Iterator foundations and adapters; library/core/iter/. |
P2-01.02 | Empty/single/multiple-element traversal and declared adapters preserve order and ownership; post-move and incompatible item types fail. | test:core-iterators; ownership and iteration report. |
| P2-01.06 | ⏳ Planned | Export inventory and compiled library consumers; tests/library/core/, conformance runner. |
P2-01.03, P2-01.04, P2-01.05 | Manifest signatures equal emitted exports; consumers pass CoreCLR/ILVerify/AOT on both x64 RIDs, including invalid consumer diagnostics. | test:core-consumers; API inventory and two-RID reports. |
Parent hard dependency: P2-01.
| ID | Status | Deliverable / ownership | Depends on | Done when | Evidence |
|---|---|---|---|---|---|
| P2-02.01 | ⏳ Planned | Freeze alloc-v1 members, growth/allocation limits, ownership/thread rules; library/alloc/, manifests. |
P2-01 | Box/Vec/String/Rc/Arc/collections each have exact members and fixed positive/failure/boundary cases; GC is not a Drop substitute. | test:alloc-manifest; allocation/ownership contract report. |
| P2-02.02 | ⏳ Planned | Box storage and ownership; library/alloc/boxed/, runtime storage adapter. |
P2-02.01 | Construction, move, dereference, and exactly-once Drop run; use-after-move, escaping borrow, and allocation failure follow the contract. | test:alloc-box; generated ownership/Drop report. |
| P2-02.03 | ⏳ Planned | Vec capacity, mutation, indexing, iteration; library/alloc/vec/. |
P2-02.02 | Growth/removal preserve elements and reverse cleanup rules; out-of-range, capacity overflow, and borrow-invalidating mutation reject or fail as specified. | test:alloc-vec; capacity, aliasing, and Drop report. |
| P2-02.04 | ⏳ Planned | String UTF-8 operations; library/alloc/string/. |
P2-02.03 | Declared conversions, growth, and slicing preserve UTF-8; invalid bytes/boundaries and allocation limits have stable outcomes. | test:alloc-string; UTF-8/budget report. |
| P2-02.05 | ⏳ Planned | Rc/Arc and declared weak references; library/alloc/rc/, library/alloc/sync/. |
P2-02.02 | Clone/release and final Drop are exact; weak upgrade after death and forbidden cross-thread Rc transfers fail, while declared Arc concurrency passes. |
test:alloc-shared-owners; lifetime/concurrency report. |
| P2-02.06 | ⏳ Planned | Frozen collection types and iterators; library/alloc/collections/. |
P2-02.03, P2-01.04 | Insert/replace/remove/iteration follow declared order and ownership; collisions, empty collections, and capacity failures preserve invariants. | test:alloc-collections; collection/Drop report. |
| P2-02.07 | ⏳ Planned | Cross-platform alloc consumers and resource accounting; tests/library/alloc/. |
P2-02.04, P2-02.05, P2-02.06 | Every manifest member runs through generated CoreCLR/AOT consumers on both x64 RIDs; ILVerify and allocation/cleanup budgets pass with zero skips. | test:alloc-consumers; inventory and two-RID resource reports. |
Parent hard dependency: P2-02.
| ID | Status | Deliverable / ownership | Depends on | Done when | Evidence |
|---|---|---|---|---|---|
| P2-03.01 | ⏳ Planned | Freeze std-v1 API, platform/error mapping, fixture and timeout manifest; library/std/. |
P2-02 | IO/fs/path/env/time/process/thread/sync/net each have selected members and fixed cases; platform-specific differences and limits are explicit. | test:std-manifest; platform contract report. |
| P2-03.02 | ⏳ Planned | Streams, files, and directory operations; library/std/io/, library/std/fs/. |
P2-03.01 | Read/write/flush/seek and create/list/remove work; partial IO, missing/access-denied paths, and cancellation preserve handles and data. | test:std-io-fs; file/stream cleanup report. |
| P2-03.03 | ⏳ Planned | Paths, environment, and time; library/std/path/, library/std/env/, library/std/time/. |
P2-03.01 | Declared encodings, joins, environment lookup, and clocks work; invalid path inputs, missing variables, and time overflow have documented outcomes. | test:std-path-env-time; Windows/Linux golden report. |
| P2-03.04 | ⏳ Planned | Child processes and cancellation; library/std/process/, bounded runner adapter. |
P2-03.01 | Exit/stdout/stderr and cancellation work with output/time limits; descendant cleanup and command failures retain complete ownership records. | test:std-process; normal/timeout/cancel/child-tree report. |
| P2-03.05 | ⏳ Planned | Threads and synchronization; library/std/thread/, library/std/sync/. |
P2-03.01, P2-02.05 | Spawn/join, declared locks/channels, and cross-thread ownership work; panic/poison/closed-channel and bounded contention cases terminate. | test:std-thread-sync; schedule-controlled concurrency report. |
| P2-03.06 | ⏳ Planned | TCP, UDP, and DNS; library/std/net/. |
P2-03.01 | Loopback connection, datagram, and controlled DNS fixtures pass; refusal, timeout, truncation, cancellation, and shutdown release sockets. | test:std-net; socket/DNS cleanup report. |
| P2-03.07 | ⏳ Planned | Unified IO/panic/error and Drop boundaries; runtime adapters, tests/library/std/. |
P2-03.02, P2-03.03, P2-03.04, P2-03.05, P2-03.06 | Failure injection across file/process/socket/thread ownership preserves exactly-once disposal and declared error types, including nested cleanup. | test:std-failure-cleanup; error-mapping/Drop report. |
| P2-03.08 | ⏳ Planned | Full std API inventory and platform execution; conformance runner, tests/library/std/. |
P2-03.07 | Frozen denominator passes Windows/Linux x64 CoreCLR, ILVerify, and AOT; platform fixture failure cannot be recorded as skipped success. | test:std-consumers; API and two-RID reports. |
Parent hard dependency: P1-03.
| ID | Status | Deliverable / ownership | Depends on | Done when | Evidence |
|---|---|---|---|---|---|
| P2-04.01 | ⏳ Planned | Freeze manifest/feature/cfg/lock subset and graph limits; compiler workspace models, conformance manifests. | P1-03 | Every accepted key and feature/cfg rule has a case; unsupported keys, cycles, and size/depth budgets have stable diagnostics. | test:cargo-contract; schema/case inventory report. |
| P2-04.02 | ⏳ Planned | Package/workspace manifest loader; src/RustSharp.Compiler/CargoWorkspace.cs. |
P2-04.01 | Packages, members, targets, and path dependencies resolve deterministically; duplicate identity, missing member, and malformed TOML fail with spans. | test:cargo-manifests; parser/workspace golden report. |
| P2-04.03 | ⏳ Planned | Feature graph and unification; compiler package resolution. | P2-04.02 | Declared default/optional/transitive features unify as frozen; unknown or cyclic feature inputs diagnose and graph budgets terminate. | test:cargo-features; resolver differential report. |
| P2-04.04 | ⏳ Planned | Target cfg evaluation; compiler target selection. |
P2-04.02 | Named platform/feature cfg predicates select exact items; unsupported predicates and invalid combinations are rejected rather than ignored. | test:cargo-cfg; target matrix report. |
| P2-04.05 | ⏳ Planned | Lock serialization and deterministic dependency order; compiler package resolution. | P2-04.03, P2-04.04 | Reordered inputs produce identical locks/order; --locked rejects missing/stale/incompatible locks and dependency cycles. |
test:cargo-lock; reproducibility and negative report. |
| P2-04.06 | ⏳ Planned | Multi-package source-to-assembly integration; tests/workspaces/. |
P2-04.05, P1-09 | Two- and multi-package fixtures compile/run with locked feature/cfg selection; missing/private/incompatible exports fail before execution. | test:cargo-workspaces; graph/build/run report. |
Parent hard dependency: P2-04.
| ID | Status | Deliverable / ownership | Depends on | Done when | Evidence |
|---|---|---|---|---|---|
| P2-05.01 | ⏳ Planned | Freeze feed/package/identity/hash/profile/RID/AOT schema; restore manifest and compiler restore boundary. | P2-04 | Exact supported metadata fields, source policy, and rejection cases are enumerated; package and download budgets are fixed. | test:restore-contract; schema/case report. |
| P2-05.02 | ⏳ Planned | Bounded feed retrieval and package integrity; compiler restore client. | P2-05.01 | Locked packages download with hash/signature policy enforcement; authentication, outage, corruption, and archive traversal fail with owned cleanup. | test:restore-download; bounded network/integrity report. |
| P2-05.03 | ⏳ Planned | Profile/RID/AOT dependency closure validation; compiler package compatibility. | P2-05.02 | Compatible closures are accepted; mismatched metadata, RID assets, and dynamic-code requirements are rejected before compilation. | test:restore-compatibility; closure rejection report. |
| P2-05.04 | ⏳ Planned | Content-addressed cache and atomic restore; compiler package cache. | P2-05.03 | Warm/offline restore reuses verified packages; interrupted/concurrent writers and poisoned cache entries never yield partially accepted data. | test:restore-cache; concurrency/corruption report. |
| P2-05.05 | ⏳ Planned | Reproducible restore plans and lock reconciliation; compiler restore planning. | P2-05.04 | Cold/warm/offline plans agree; stale or missing locked inputs fail without silently changing versions or manifests. | test:restore-locked; plan/hash comparison report. |
| P2-05.06 | ⏳ Planned | Controlled-feed end-to-end consumers; tests/workspaces/packages/. |
P2-05.05 | Fresh Windows/Linux x64 fixtures restore/build/run exact packages; server failure and cancellation produce bounded failure with no temporary leaks. | test:restore-consumers; two-platform provenance/cleanup report. |
Parent hard dependencies: P0-15, P1-09.
| ID | Status | Deliverable / ownership | Depends on | Done when | Evidence |
|---|---|---|---|---|---|
| P2-06.01 | ⏳ Planned | Accepted interop ADR and dotnet-interop-v1 syntax/API manifest; docs/adr/, manifests. |
P0-15, P1-09 | Import/export syntax, overload/generic mapping, ownership, nullability, exceptions, visibility, and exclusions have fixed cases before code changes. | test:interop-contract; ADR/schema review and denominator report. |
| P2-06.02 | ⏳ Planned | Import syntax, binding, and signature checking; syntax/semantics interop modules. | P2-06.01 | Supported assemblies/members bind deterministically; ambiguous overloads, inaccessible members, and invalid signatures diagnose with source spans. | test:interop-binding; positive/negative binding report. |
| P2-06.03 | ⏳ Planned | Ownership/exception/null boundary lowering; semantics, CLR LIR interop modules. | P2-06.02 | Declared references, aggregates, errors, and release contracts execute; escaping aliases, null violations, and unsupported callbacks fail predictably. | test:interop-boundaries; generated IL/runtime/Drop report. |
| P2-06.04 | ⏳ Planned | Ordinary .NET library metadata and C# consumers; codegen metadata, tests/interop/dotnet/. |
P2-06.03 | A separate C# consumer resolves public methods/types and executes them; private/static/signature mismatches are rejected and output is deterministic. | test:interop-dotnet-consumer; metadata and consumer report. |
| P2-06.05 | ⏳ Planned | AOT-safe NuGet invocation and reachability checks; compiler interop references. | P2-06.03, P2-05 | Rust# invokes pinned safe NuGet APIs; reflection/dynamic-code requirements produce stable diagnostics and warning suppression is unnecessary. | test:interop-nuget; reachability/diagnostic report. |
| P2-06.06 | ⏳ Planned | Two-direction platform interoperability; tests/interop/, conformance runner. |
P2-06.04, P2-06.05 | Both consumer directions pass CoreCLR/ILVerify/Native AOT on Windows/Linux x64 with matching output/errors and exact manifest signatures. | test:interop-platforms; two-RID public API/runtime report. |
Parent hard dependencies: P2-04, P2-05.
| ID | Status | Deliverable / ownership | Depends on | Done when | Evidence |
|---|---|---|---|---|---|
| P2-07.01 | ⏳ Planned | Freeze commands/options/exit codes/diagnostic formats and invocation budgets; CLI contract manifest. | P2-04, P2-05 | New/check/build/run/test/publish/restore have finite success/failure/cancel case sets; unknown flags and conflicting options diagnose. | test:cli-contract; help/contract snapshot report. |
| P2-07.02 | ⏳ Planned | new and restore command routing; src/RustSharp.Cli/. |
P2-07.01 | New projects and locked restores work; existing destination, invalid name, unavailable source, and cancellation leave no partial project/package. | test:cli-new-restore; command/filesystem golden report. |
| P2-07.03 | ⏳ Planned | check and build; CLI compiler dispatch. |
P2-07.01 | Source/workspace/profile options select the same compiler inputs; invalid source or references produce stable exits/spans without success artifacts. | test:cli-check-build; diagnostic/artifact report. |
| P2-07.04 | ⏳ Planned | run process contract; CLI execution. |
P2-07.03 | Arguments/stdin/stdout/stderr and exit propagation work; timeout, cancellation, output overflow, and descendant exit are bounded and cleaned. | test:cli-run; process ownership report. |
| P2-07.05 | ⏳ Planned | test discovery, filtering, and result protocol; CLI test driver. |
P2-07.03 | Fixed tests are discovered once with pass/fail accounting; empty/invalid filters, test crash, and timeout never masquerade as passing coverage. | test:cli-test; discovery/result denominator report. |
| P2-07.06 | ⏳ Planned | publish CoreCLR/AOT output workflow; CLI publisher. |
P2-07.03, P2-07.02 | Declared outputs publish/run; unsupported RIDs, conflicting output directories, compiler failure, and cancellation preserve prior committed artifacts. | test:cli-publish; native execution/atomic-output report. |
| P2-07.07 | ⏳ Planned | Installed tool and shell workflow parity; CLI packaging, tests/cli/. |
P2-07.02, P2-07.04, P2-07.05, P2-07.06 | Installed commands pass Windows/Linux quoting, working-directory, help, and diagnostic goldens; every invoked process has bounded cleanup evidence. | test:cli-installed; two-platform command matrix report. |
Parent hard dependencies: P1-02, P1-09.
| ID | Status | Deliverable / ownership | Depends on | Done when | Evidence |
|---|---|---|---|---|---|
| P2-08.01 | ⏳ Planned | Freeze formatting/doc/cache contracts and corpus; tool manifests, compiler cache model. | P1-02, P1-09 | Supported syntax, doc links, cache inputs, determinism fields, and failure/budget cases have a fixed denominator. | test:tooling-contract; schema/corpus report. |
| P2-08.02 | ⏳ Planned | Lossless formatter and fmt --check; formatter module, CLI. |
P2-08.01 | Comments and supported syntax survive idempotent formatting; malformed input diagnoses without destructive rewrites and check mode reports drift. | test:formatter; golden/idempotence/nonmutation report. |
| P2-08.03 | ⏳ Planned | Documentation model, renderer, and links; documentation module, CLI. | P2-08.01 | Public items/signatures/source links render; missing/ambiguous links and malformed comments diagnose, and markup is safely encoded. | test:documentation; API/link/output report. |
| P2-08.04 | ⏳ Planned | Complete cache keys and dependency invalidation; compiler incremental cache. | P2-08.01, P2-04 | Unchanged inputs hit cache; source, compiler, profile, reference, cfg/feature, and RID changes invalidate exactly the affected closure. | test:incremental-keys; hit/miss/invalidation report. |
| P2-08.05 | ⏳ Planned | Atomic cache storage and deterministic artifacts; compiler artifact/cache writer. | P2-08.04 | Clean/warm builds produce byte-identical PE/PDB/metadata; corruption, path remapping, concurrent writes, and interruption cannot reuse stale artifacts. | test:incremental-artifacts; hash/concurrency/failure report. |
| P2-08.06 | ⏳ Planned | Whole-workspace fmt/doc/build pipeline; tests/programs/. |
P2-08.02, P2-08.03, P2-08.05, P2-07 | Locked Windows/Linux workflows reproduce declared outputs and links; negative/budget cases fail with no partial committed results. | test:tooling-workspace; reproducibility/cleanup report. |
Parent hard dependencies: P1-03, P1-06, P2-07.
| ID | Status | Deliverable / ownership | Depends on | Done when | Evidence |
|---|---|---|---|---|---|
| P2-09.01 | ⏳ Planned | Freeze protocol capabilities, project/session limits, and debug scenarios; LSP manifest. | P1-03, P1-06, P2-07 | All parent-requested LSP methods and PDB scenarios have fixed cases, capability negotiation, and unsupported-request outcomes. | test:lsp-contract; protocol/scenario inventory report. |
| P2-09.02 | ⏳ Planned | Open/change/close, project graph, diagnostics, cancellation; shared language server. | P2-09.01 | Incremental edits publish version-correct diagnostics; stale responses, invalid ranges, cancellation, and project reload cannot corrupt state. | test:lsp-lifecycle; version/cancel/resource report. |
| P2-09.03 | ⏳ Planned | Hover/completion/definition/references/rename; shared semantic query service. | P2-09.02 | Multi-file symbols resolve and rename consistently; shadowing, inaccessible symbols, invalid positions, and rename conflicts return declared results. | test:lsp-navigation; protocol golden report. |
| P2-09.04 | ⏳ Planned | Formatting/code actions/semantic tokens/inlay hints; shared editor services. | P2-09.02, P2-08.02 | Declared edits/tokens/hints match source versions; malformed code, canceled requests, and stale edits are handled without destructive changes. | test:lsp-editing; edit/token golden report. |
| P2-09.05 | ⏳ Planned | VS Code extension packaging and project commands; editors/vscode/. |
P2-09.03, P2-09.04 | Isolated Windows/Linux extension hosts load projects and exercise declared features; server restart, missing toolchain, and uninstall clean up. | test:vscode-smoke; extension-host/provenance report. |
| P2-09.06 | ⏳ Planned | Portable PDB stepping, breakpoints, and source mapping; codegen PDB, debugger integration. | P2-09.02, P1-09 | Declared locals/calls/branches step to exact .rs locations; missing/mismatched sources produce diagnostics rather than incorrect navigation. |
test:pdb-debugging; debugger transcript and source-hash report. |
| P2-09.07 | ⏳ Planned | Project-scale editor resource/behavior gate; LSP test harness. | P2-09.05, P2-09.06 | Frozen edit/reload/cancel/session workloads pass on both x64 platforms under memory/time limits with no stale diagnostics or owned-server leaks. | test:lsp-platforms; performance/cancellation/cleanup report. |
Parent hard dependencies: P2-01, P2-02, P2-03, P2-04, P2-05, P2-06, P2-07, P2-08, P2-09.
| ID | Status | Deliverable / ownership | Depends on | Done when | Evidence |
|---|---|---|---|---|---|
| P2-10.01 | ⏳ Planned | Freeze SDK/package/profile bill of materials and fresh-user script; distribution manifests. | P2-01, P2-02, P2-03, P2-04, P2-05, P2-06, P2-07, P2-08, P2-09 | Exact versions, hashes, install prerequisites, RIDs, commands, and failure cases are pinned; no undocumented local state is required. | test:sdk-distribution-contract; bill-of-materials report. |
| P2-10.02 | ⏳ Planned | Package/install/uninstall artifacts; SDK distribution tooling. | P2-10.01 | Clean installation resolves the compiler and libraries; missing dependency, corrupt package, upgrade conflict, and uninstall have deterministic outcomes. | test:sdk-install; isolated install/cleanup report. |
| P2-10.03 | ⏳ Planned | File-server sample and complete user documentation; samples/file-server/, paired getting-started docs. |
P2-10.02 | Only documented inputs reproduce restore/build/test/run/debug; bad configuration and occupied ports return actionable diagnostics. | test:file-server-workflow; command/debug transcript. |
| P2-10.04 | ⏳ Planned | Native publish of the same sample on both x64 RIDs; distribution CI. | P2-10.03 | Clean native Windows/Linux runners publish and execute it without AOT warnings; output and failure behavior match CoreCLR. | test:sdk-native-sample; ILVerify and two-RID AOT reports. |
| P2-10.05 | ⏳ Planned | Publish versioned SDK artifacts and support inventory; release staging and docs. | P2-10.04 | Published hashes match tested artifacts and named API profiles; consumers can reproduce downloads and detect tampering/version mismatches. | test:sdk-published-artifacts; stable artifact/provenance links. |
Parent hard dependencies: P2-04, P2-05, P2-06, P2-07.
| ID | Status | Deliverable / ownership | Depends on | Done when | Evidence |
|---|---|---|---|---|---|
| P2-11.01 | ⏳ Planned | Freeze wrapper shape, properties, items, and targets in ADR; sdk/RustSharp.NET.Sdk/. |
P2-04, P2-05, P2-06, P2-07 | Cargo remains authoritative; reference/profile/RID/debug/determinism forwarding and conflicting property diagnostics have fixed cases. | test:msbuild-contract; accepted ADR/property matrix report. |
| P2-11.02 | ⏳ Planned | Restore/build targets and project references; SDK targets/tasks. | P2-11.01 | SDK projects resolve graph and invoke rsc once per intended target; cycles, missing references, and contradictory properties fail clearly. |
test:msbuild-build; evaluated-input/target-order report. |
| P2-11.03 | ⏳ Planned | Run/test/pack target adapters; SDK targets/tasks. | P2-11.02 | Commands propagate arguments, exits, test results, and package metadata; failing/canceled child operations cannot report success or leak. | test:msbuild-commands; target/result/cleanup report. |
| P2-11.04 | ⏳ Planned | Diagnostics, symbols, design-time and incremental settings; SDK target integration. | P2-11.02, P2-08 | Source diagnostics/PDBs retain exact paths/spans; stale design-time state and profile/RID changes invalidate the appropriate outputs. | test:msbuild-symbols; diagnostics/PDB/invalidation report. |
| P2-11.05 | ⏳ Planned | Direct-Cargo versus SDK input/output reconciliation; tests/sdk/. |
P2-11.03, P2-11.04 | Equivalent workflows produce equal normalized compiler inputs and deterministic artifacts; intentionally differing inputs are detected. | test:msbuild-parity; input/artifact hash report. |
| P2-11.06 | ⏳ Planned | Installed SDK and two-platform smoke suite; SDK distribution CI. | P2-11.05 | Fresh Windows/Linux consumers execute build/run/test/pack; absent/incompatible SDKs fail with documented recovery, and CoreCLR/AOT samples pass. | test:msbuild-installed; installed SDK/two-RID report. |
Parent hard dependencies: P2-07, P2-10, P2-11.
| ID | Status | Deliverable / ownership | Depends on | Done when | Evidence |
|---|---|---|---|---|---|
| P2-12.01 | ⏳ Planned | Freeze console/library/test/Web/Native-AOT template IDs, parameters, and matrix; templates/. |
P2-07, P2-10, P2-11 | All five kinds have exact files, profile/RID defaults, positive/invalid parameter cases, and a fixed execution denominator. | test:templates-contract; template manifest report. |
| P2-12.02 | ⏳ Planned | Console and library templates; templates/console/, templates/library/. |
P2-12.01 | Generated Cargo and SDK files build/run or load from a consumer without edits; invalid names and conflicting destinations do not overwrite files. | test:templates-console-library; generated-tree/consumer report. |
| P2-12.03 | ⏳ Planned | Test project and test-discovery template; templates/test/. |
P2-12.01 | Generated tests are discovered and pass; an intentional failure yields the correct nonzero exit and nonempty result denominator. | test:templates-test; discovery/pass/fail report. |
| P2-12.04 | ⏳ Planned | Minimal Web starter on the P2 std networking profile; templates/web/. |
P2-12.01, P2-03 | Generated server answers a bounded loopback request; malformed request, occupied port, size limit, and shutdown are covered, without claiming P4 APIs. | test:templates-web; request/error/cleanup report. |
| P2-12.05 | ⏳ Planned | Native AOT starter and RID properties; templates/native-aot/. |
P2-12.01 | Generated project publishes/runs on both x64 RIDs without edits or AOT warnings; unsupported RID/property combinations diagnose. | test:templates-native; two-RID publish/run report. |
| P2-12.06 | ⏳ Planned | Pack/install/list/uninstall and every-template fresh-user matrix; template package CI. | P2-12.02, P2-12.03, P2-12.04, P2-12.05 | Installed templates match inventory, generated files and documented next steps; each declared build/run/test/AOT path passes and cleanup is complete. | test:templates-installed; fixed template/platform matrix report. |
Parent hard dependencies: P1-09, P2-07, P2-09.
| ID | Status | Deliverable / ownership | Depends on | Done when | Evidence |
|---|---|---|---|---|---|
| P2-13.01 | ⏳ Planned | Freeze script/cell grammar, state/error/reset contract, and session limits; REPL manifest. | P1-09, P2-07, P2-09 | Script and interactive case sets are separate; interactive support explicitly targets CoreCLR/JIT and preserves production semantic checks. | test:repl-contract; scope/diagnostic/budget manifest report. |
| P2-13.02 | ⏳ Planned | .rs script compile/run using normal PE emission; CLI script driver. |
P2-13.01 | Script output/exit agrees with ordinary compilation; malformed/unsupported source and timeout fail with normal compiler diagnostics and cleanup. | test:repl-scripts; PE/ILVerify/runtime report. |
| P2-13.03 | ⏳ Planned | Stateful cells and reset; compiler session/REPL host. | P2-13.02 | Values and declarations persist under frozen rules; failed cells do not partially commit state, and redeclaration/move/borrow errors are diagnosed. | test:repl-cells; state/ownership/reset transcript. |
| P2-13.04 | ⏳ Planned | History, completion, and hover; REPL frontend/shared LSP adapter. | P2-13.03, P2-09 | History/navigation and semantic assistance match committed cell state; canceled or invalid queries never expose stale symbols. | test:repl-assistance; pseudo-terminal/LSP report. |
| P2-13.05 | ⏳ Planned | Cancellation, interrupt, EOF, and bounded session disposal; REPL process host. | P2-13.03 | Interrupted execution returns control according to contract; timeout/output/cell-count limits and EOF release every owned process and artifact. | test:repl-lifecycle; process/session cleanup report. |
| P2-13.06 | ⏳ Planned | Installed script and interactive Windows/Linux sessions; tests/repl/. |
P2-13.04, P2-13.05 | Pseudo-terminal sessions pass the fixed state/history/help/error cases on both platforms with matching production results and zero skips. | test:repl-platforms; installed tool/PTY report. |
Parent hard dependencies: P2-09, P2-11, P2-12, P2-15.
| ID | Status | Deliverable / ownership | Depends on | Done when | Evidence |
|---|---|---|---|---|---|
| P2-14.01 | ⏳ Planned | Freeze VS versions/components/project/test-adapter and smoke matrix; editors/visual-studio/. |
P2-09, P2-11, P2-12, P2-15 | Exact supported VS configuration and all parent capabilities have fixed cases; unsupported versions/profiles are diagnostic cases. | test:vs-contract; capability/install matrix report. |
| P2-14.02 | ⏳ Planned | VSIX packaging, isolated install, project open/close; VS extension project system. | P2-14.01 | A template-generated project loads in an experimental instance; missing SDK, malformed project, extension uninstall, and instance cleanup are bounded. | test:vs-project; install/project/cleanup report. |
| P2-14.03 | ⏳ Planned | Shared LSP diagnostics, completion, navigation, formatting; VS LSP client. | P2-14.02 | VS results agree with shared protocol fixtures; edits, cancellation, reload, and server crash produce no stale diagnostics or orphan servers. | test:vs-language; editor/protocol comparison report. |
| P2-14.04 | ⏳ Planned | Native restore/build commands and declared test adapters; VS SDK/test integration. | P2-14.02 | VS build/test invokes the frozen SDK contract, finds the expected tests, and propagates failures; invalid profile or canceled build never reports success. | test:vs-build-test; build/test discovery report. |
| P2-14.05 | ⏳ Planned | Managed debugging from generated PDBs; VS debug launch integration. | P2-14.03, P2-09.06 | Breakpoints and steps reach exact .rs lines; missing source/PDB and failed launch diagnose and terminate owned debug targets. |
test:vs-debug; debugger/source/cleanup transcript. |
| P2-14.06 | ⏳ Planned | Reproducible isolated VS smoke harness; eng/, tests/ide/. |
P2-14.04, P2-14.05 | Frozen Windows VS suite passes install→open→edit→restore/build→test→debug→uninstall with explicit deadlines and no owned remnants. | test:vs-smoke; stable native Windows CI evidence. |
Parent hard dependencies: P2-05, P2-06, P2-09.
| ID | Status | Deliverable / ownership | Depends on | Done when | Evidence |
|---|---|---|---|---|---|
| P2-15.01 | ⏳ Planned | Freeze dotnet-ecosystem-v1 API/package/feature/RID/adapter matrix; ecosystem manifests. |
P2-05, P2-06, P2-09 | BCL, NuGet, ordinary consumers, analyzers/generators, test frameworks, and AOT each have named admitted/rejected entries and fixed denominators. | test:ecosystem-contract; versioned matrix/schema report. |
| P2-15.02 | ⏳ Planned | BCL and pinned NuGet adapters; ecosystem adapters, tests/ecosystem/. |
P2-15.01 | Listed calls and package closures execute with documented ownership/errors; unsupported overloads or dynamic dependencies diagnose before publication. | test:ecosystem-bcl-nuget; API/package/runtime report. |
| P2-15.03 | ⏳ Planned | Ordinary .NET consumer compatibility fixtures; ecosystem consumer projects. | P2-15.01, P2-06.04 | Declared consumers compile and call Rust# libraries with exact metadata; inaccessible or incompatible signatures fail and deterministic output is checked. | test:ecosystem-consumers; independent compiler/runtime report. |
| P2-15.04 | ⏳ Planned | Analyzer/source-generator adapter boundary; SDK integration and ecosystem policy. | P2-15.01, P2-11.01 | Every matrix entry either runs via its declared adapter or gives its specific unsupported diagnostic; accidental C#-source assumptions and unbounded execution are rejected. | test:ecosystem-generators; adapter/diagnostic/cleanup report. |
| P2-15.05 | ⏳ Planned | Test framework/adapter contracts; SDK test integration, ecosystem fixtures. | P2-15.01, P2-07.05 | Named frameworks discover fixed cases and report pass/fail correctly through CLI/SDK; unsupported framework and empty discovery fail explicitly. | test:ecosystem-test-frameworks; discovery/result report. |
| P2-15.06 | ⏳ Planned | Matrix reachability, warning, and execution audit; conformance runner, ecosystem CI. | P2-15.02, P2-15.03, P2-15.04, P2-15.05 | Every admitted entry passes required Windows/Linux CoreCLR/AOT paths and ILVerify; rejected entries match diagnostics, with no skipped or unaccounted cells. | test:ecosystem-platforms; complete matrix/AOT report. |
These are additional integration leaves, not substitutes for any parent leaf.
P2-GATE denotes the aggregate of the seven leaves below and all 15 parents.
| ID | Status | Deliverable / ownership | Depends on | Done when | Evidence |
|---|---|---|---|---|---|
| P2-GATE.01 | ⏳ Planned | Freeze P2 exit manifest and required leaf/report mapping; conformance manifests. | P1-GATE, P2-01.01, P2-02.01, P2-03.01, P2-04.01, P2-05.01, P2-06.01, P2-07.01, P2-08.01, P2-09.01, P2-10.01, P2-11.01, P2-12.01, P2-13.01, P2-14.01, P2-15.01 | Every required API/CLI/template/editor/platform cell maps to a fixed test and report; missing, duplicate, unexpected, or skipped cells reject the aggregate. | test:p2-exit-manifest; fixed denominator and negative aggregator report. |
| P2-GATE.02 | ⏳ Planned | Library, package, interop, and ecosystem platform matrix; native Windows/Linux CI. | P2-GATE.01, P2-01, P2-02, P2-03, P2-05, P2-06, P2-15 | Declared generated programs pass CoreCLR and ILVerify, then execute actual x64 Native AOT artifacts on both native platforms with zero warnings/failures/skips. | test:p2-platform-matrix; native artifact identity and paired reports. |
| P2-GATE.03 | ⏳ Planned | Fresh-user template→restore→build→test→run→publish workflow; isolated installation CI. | P2-GATE.01, P2-07, P2-10, P2-11, P2-12 | Each declared starter and the same representative application succeed from documented inputs on both platforms; missing/invalid inputs fail as frozen. | test:p2-fresh-user; clean installation/command/cleanup report. |
| P2-GATE.04 | ⏳ Planned | CLI/tooling/REPL/LSP/VS Code integration matrix; tooling CI. | P2-GATE.01, P2-04, P2-07, P2-08, P2-09, P2-13 | Exact command/editor/session matrix passes on Windows/Linux; diagnostics, incremental invalidation, cancel, and resource limits have no unexplained differences. | test:p2-toolchain-matrix; platform and process-resource reports. |
| P2-GATE.05 | ⏳ Planned | Windows Visual Studio fresh-user debug/test workflow; native Windows IDE CI. | P2-GATE.01, P2-14 | Published templates open, edit, build, test, and debug in the declared experimental VS instance; missing requirements fail clearly and uninstall cleans ownership. | test:p2-vs-user; bounded VS transcript and stable CI link. |
| P2-GATE.06 | ⏳ Planned | Release reproducibility and fault/cleanup reconciliation; distribution and conformance CI. | P2-GATE.02, P2-GATE.03, P2-GATE.04, P2-GATE.05 | Clean/warm artifacts and lock hashes agree for the same inputs; all fixed timeout/cancel/corruption/failure cases pass, with no owned orphan processes or run directories. | test:p2-reproducibility-cleanup; hashes, PID ledger, cleanup report. |
| P2-GATE.07 | ⏳ Planned | Final SHA and bilingual release evidence index; roadmap/docs and CI aggregation. | P2-GATE.06 | All 15 parents and 7 gate leaves have complete fixed-denominator evidence for one remote SHA; paired docs match exact versions/counts/claims and every required CI run is green. | test:p2-final-evidence; signed/provenance-linked report index and remote SHA reconciliation. |