Tracking: PET reliability, performance, architecture, and coverage audit implementation plan
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 25/100
- Tipo di issue
- Documentazione
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Attiva
- Stack tecnologico
- rust
- Ambito
- backend, documentation, performance, testing-qa
Direzione di ricerca
Start by checking the current state of linked issues #525, #529, #530, #532, #531, #535, #534, #533, #536, #539, #540, #537, and #538, then read each issue's scope and acceptance tests. Run the targeted tests before the workspace checks described in the shared verification contract; the tracking issue is done when every linked item is complete or explicitly deferred with a recorded reason.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Goal
Implement the September 21, 2026 PET performance, architecture, refactoring, and test-coverage audit in an evidence-driven order: fix demonstrated reliability failures first, make measurements reflect client behavior next, then simplify and bound concurrency. Do not start with a broad rewrite or an async-runtime migration.
This plan links 12 newly filed implementation issues, reuses #525 for the UTF-8 panic, and tracks #522 as an existing quality-workflow prerequisite.
Evidence and audit scope
The audit examined 4e523bad8bb9be8a84c01800a3e400a6a771cf8e. At filing, main is d586c60ec6b7191256fa3f47a2c866cc5739914e; the intervening change only removes redundant Conda vector drains and does not address these findings.
- Windows default-feature validation:
cargo test --workspace --offline --lockedpassed 647 tests, with 0 failures and 2 ignored documentation examples. Quality-tooling Python tests: 47 passed. - Bounded reproductions confirmed interpreter pipe backpressure, non-UTF-8 worker panic, EOF busy-looping, request-ID/framing defects, and refresh glob expansion blocking the dispatcher. Local timings are Windows debug diagnostics, not release budgets.
- Exact-revision performance artifacts and coverage artifacts support the measurement/coverage findings. Source-level architectural risks and optimization opportunities are explicitly distinguished from reproduced failures in each ticket.
Existing work: reuse, do not duplicate
#525 / PR #526: existing non-UTF-8 interpreter-output fix. Review/validate and integrate it before overlapping subprocess-runner changes.
#522 / PR #524: existing fork-safe quality-workflow fix. Complete it so fork contributions execute the substantive quality gates. Runtime fixes do not need to wait for comment-publishing changes; never weaken the gates or grant untrusted PRs write credentials as a workaround.
Ordered implementation plan
Order below is the recommended landing sequence, not a requirement to serialize independent investigation or test preparation. P1/P2/P3 are relative priorities within this audit, not estimates of effort. The dependency column distinguishes required foundations from coordination.
Phase 1 - Reliability boundaries
| Order | Priority | Individual issue | Prerequisite / coordination | Exit evidence |
|---|---|---|---|---|
| 1 | P1 | #525 - Handle non-UTF-8 interpreter output without panic (existing; PR #526) | Existing implementation; no competing ticket | Malformed startup output produces a defined result/error, not a panic or abandoned RPC |
| 2 | P1 | #529 - Exit cleanly on stdin EOF | None; can proceed alongside #525 | Normal disconnect exits promptly without CPU spin/error flooding; teardown is bounded |
| 3 | P1 | #530 - Drain subprocess pipes and standardize probe deadlines | Coordinate after #525 / #526 in the shared probe code | Healthy noisy interpreters finish; deadlines, bounded capture, and cleanup are tested on Windows/Unix |
| 4 | P2 | #532 - Preserve request IDs and parse bounded multi-header frames | #529 transport/test seams | String/large IDs round-trip; fragmented/extra-header/invalid/oversized frames have explicit outcomes |
Phase exit: reproduced process/transport failures are covered by deterministic regressions; normal request behavior, streaming, and locator priority remain intact.
Phase 2 - Trustworthy measurements, responsiveness, and coverage
| Order | Priority | Individual issue | Prerequisite / coordination | Exit evidence |
|---|---|---|---|---|
| 5 | P1 | #531 - Gate client-observed latency and define TTFE boundaries | Can start alongside Phase 1; coordinate quality jobs with #522 | Pre-discovery/queueing costs appear in gated metrics; schema transition and comparator tests preserve exact-base checks |
| 6 | P1 | #535 - Move glob expansion off dispatch and bound traversal | Measure before/alongside with #531 | A blocked expansion does not block a later lightweight RPC; coalescing and error semantics remain correct |
| 7 | P1 | #534 - Collect subprocess profiles and report production-focused coverage | #529; coordinate transport tests with #532 and fork CI with #522 | Exercised handlers/server loop/writers register coverage; production/diff and platform gaps are visible |
| 8 | P2 | #533 - Add same-process, truly concurrent, and scaling workloads | #531 and #529; reuse #530 probe fixtures/cleanup | Stable identity-based inventory plus client latency/resource measurements across increasing sizes and long-lived churn |
Phase exit: the roughly 400 ms client / 2 ms reported-duration reproduction is no longer invisible to the performance gate; black-box server testing contributes usable coverage; repeatable workloads establish a baseline for architectural changes.
Phase 3 - Coherent ownership, bounded work, and focused refactoring
| Order | Priority | Individual issue | Prerequisite / coordination | Exit evidence |
|---|---|---|---|---|
| 9 | P2 | #536 - Give find/resolve coherent configuration snapshots | #533 regression harness and #531 metrics; the small find-lock fix may land earlier if isolated | Barrier-driven tests prove old-or-new, never mixed, configuration and no global lock over discovery I/O |
| 10 | P2 | #539 - Bound scheduling and share failed in-flight probes | #530, #533, #536; integrate #535 traversal work | Worker/process/queue bounds hold; same-key failures are shared only with current waiters and later calls can retry |
| 11 | P2 | #540 - Keep output backpressure outside state locks | #529/#532 transport seams, #533, #536; coordinate queue policy with #539 | Slow consumers do not pin configuration/deduplication locks; buffering, generation filtering, and notification/reply ordering remain correct |
| 12 | P3 | #537 - Profile Poetry lookup and introduce an alias index only if justified | #533 and #536 | Before/after operation/allocation measurements justify the optimization, or the issue is explicitly deferred with evidence |
| 13 | P3 | #538 - Consolidate library module ownership and split orchestration responsibilities | #534, #536, #539, #540; guard with #531/#533 | Behavior-preserving components replace duplicate module instances and tangled responsibilities without coverage/latency regression |
Phase exit: ownership/resource limits are explicit and tested. Optimizations are supported by measurements. The locator framework and public behavior are preserved rather than replaced wholesale.
Parallel work and review boundaries
Transport shutdown/framing and subprocess-runner work can use separate PRs; coordinate the latter with #526. Metric/coverage test preparation can run alongside those fixes. Snapshot, scheduler, and writer changes should not be merged as one large refactor: establish ownership first, then independently validate scheduling and output behavior. Poetry profiling can run in parallel once the workload harness is ready.
Purely mechanical library-module reuse or the find read-guard fix may be isolated earlier; do not smuggle behavioral changes into those cleanups. Do not delay demonstrated reliability fixes for the optional Poetry optimization or final module cleanup.
Shared implementation and verification contract
Each ticket includes its own scope and acceptance tests. Implementations must preserve locator ordering, complete environment/manager information, platform path/symlink behavior, refresh coalescing, generation filtering, and scoped state synchronization. Use explicit errors, not success-shaped fallback data. Measure intentional metric/protocol changes and update directly related documentation.
Run targeted tests first, then relevant workspace/platform/feature jobs. Before committing Rust changes, run cargo fmt --all and cargo clippy --all -- -D warnings; CI's all-targets/all-features lint and the existing exact-base quality gates must also remain green. Concurrency tests should use deterministic barriers/channels rather than timing guesses. Test fixtures must bound and clean up their own subprocesses and files.
Milestones
- Phase 1 complete: #525, #529, #530, #532.
- Phase 2 complete: #531, #535, #534, #533; fork quality checks verified through #522.
- Phase 3 complete or explicitly evidence-deferred: #536, #539, #540, #537, #538.
Close this tracking issue only when each linked item is complete or explicitly deferred with a recorded reason. Check issue/PR state when starting work; links above describe filing-time status, not a substitute for current GitHub state.
- Lingua principale
- Rust
- Stelle
- 207
- Fork
- 45
- Merge medio
- 3g 6h
- PR unite (30g)
- 12
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di microsoft/python-environment-tools
-
enhancement
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
-
debt
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
microsoft/python-environment-tools#538 · 1 commento ·
-
enhancement
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
-
debt
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
-
enhancement
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
microsoft/python-environment-tools#533 · 2 commenti ·
Tutte le issue di microsoft/python-environment-tools
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
TheLarkInn/aipm#2413 ·
-
documentation
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 90/100
alexgorbatchev/simple-ptt#15 ·
-
tooling
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
-
todo:ticket
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
taikoxyz/taiko-mono#22168 · 1 commento ·