Skip to content

Latest commit

 

History

History
266 lines (213 loc) · 38.3 KB

File metadata and controls

266 lines (213 loc) · 38.3 KB

P2 granular delivery contract

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.

P2-01 — Rust-named core library

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.

P2-02 — Managed-hybrid alloc library

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.

P2-03 — Files, processes, threads, and networking

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.

P2-04 — Cargo package graph

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.

P2-05 — Controlled NuGet restore

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.

P2-06 — Explicit .NET interop and library output

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.

P2-07 — Stable command-line workflows

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.

P2-08 — Format, docs, and reproducible incremental builds

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.

P2-09 — Shared LSP, VS Code, and debugging

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.

P2-10 — First documented SDK/package/profile distribution

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.

P2-11 — Optional MSBuild SDK bridge

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.

P2-12 — Versioned project templates

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.

P2-13 — Production-emitter scripts and REPL

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.

P2-14 — Visual Studio integration

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.

P2-15 — .NET ecosystem compatibility matrix

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.

P2-GATE — Finite phase exit

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.