# Bounded .NET refresh lab

Requires Python 3.10+, standard library only. Run in this folder:

```bash
python inspect_baseline.py fixtures/baseline.json
python inspect_project.py
python run_checks.py --inventory
python run_checks.py --template fixtures/regression_failed.json submission.json --as-of 2026-09-12
python run_checks.py --check fixtures/regression_failed.json submission.json
```

Between the last two commands, supply the decision, all typed causes, pointers, rationale, minimal repair and review trigger. STRUCTURE_PASS_SEMANTICS_UNREVIEWED checks shape and binding only. Existing output files are not overwritten.

baseline and sdk_pin_old are worked cases; regression_failed is guided; transfer_existing is independent. policy.json supplies all rules; contracts.json supplies expectations and snapshot sources; resources contains full tables, mappings, references and assessments. Produce your own transfer decision. Preserve proposed candidates and newly constructed synthetic receipts in separately named files.

Python actually executes only the bounded resolver and comparisons. The global.json input is already resolved; only disable and latestPatch for stable versions are implemented. inspect_project reads four explicit declarations, not evaluated MSBuild. Build, test and diagnostic fixture data are synthetic, not C# execution.

The dotnet folder contains a complete console project with assertions. With exact SDK 10.0.401 and required targeting packs, run there: dotnet restore --configfile NuGet.Config, then dotnet build --no-restore and dotnet run --no-build --no-restore. dotnet test does not replace this console harness. The project uses a framework reference and does not install the imaginary exercise package. Publisher execution is UNVERIFIED: CoreCLR startup failed and no build ran. Record your actual output with C# source hashes and context in a separate ledger; do not disguise it as a synthetic receipt. Rollback covers a disposable snapshot, not database effects.

The example date is 2026-09-12; review is due 2026-10-18. For current claims preserve the actual date and expired states. No human owner or real-service approval is supplied.
