refactor: Migrate persistent-dependencies and task-dependencies to Rust + insta (#12012)
## Summary
- Converts all 10 `persistent-dependencies/` and 5 `task-dependencies/`
prysk tests to pure Rust
- Prysk test count drops from 145 to 130
- Adds shared `run_turbo()` and `turbo_output_filters()` helpers to
`common/mod.rs`
## Test mapping
### persistent-dependencies (10 tests → 15 Rust tests)
| Old .t file | Rust test(s) | Pattern |
|---|---|---|
| 1-topological through 9-cross-workspace-nested (8 files) |
`test_1_topological` through `test_9_cross_workspace_nested` | Error
snapshot on stderr |
| 6-topological-unimplemented | `test_6_topological_unimplemented` |
Success stdout snapshot with time filter |
| 10-too-many | 6 tests:
`test_10_too_many_concurrency_{1,2,3}_{flag,env}` | Concurrency errors
via `--concurrency` flag and `TURBO_CONCURRENCY` env var |
### task-dependencies (5 tests → 14 Rust tests)
| Old .t file | Rust test(s) | Pattern |
|---|---|---|
| complex | 6 tests: graph snapshots for build1/test/test--only, error
assertions for build2/build3/build4 | Mix of snapshot and
`assert!(contains)` |
| topological | `test_topological_run` + `test_topological_graph` |
Stdout snapshot + graph snapshot |
| root-workspace | `test_root_workspace` | Stdout snapshot |
| overwriting | `test_overwriting` | Presence/absence assertions via
`assert!` |
| workspace-tasks | 4 tests: build1/build2/special graph snapshots +
build3 error assertion | Mix |
All turbo-produced hashes are pinned exactly in snapshots. Only the
timing line (`Time: ...`) is filtered. No redactions on hashes, error
messages, or graph structure.
## How to verify
```bash
cargo nextest run --test persistent_dependencies --test task_dependencies -p turbo
```