Azure / Azure/azure-functions-host
[Compute Separation][HT14] Track standard-product protection through M1
- Dominant language
- C#
- Stars
- 2k
- Forks
- 482
- Avg merge
- 2d 12h
- Merged PRs (30d)
- 38
Description
## Roadmap mapping
| Field | Value |
|---|---|
| Roadmap ID | `HT14` |
| Lane | Host continuous guard |
| BYOC milestone | M1 |
| Parent | #11965 |
| Depends on | `HT1` / #11966 |
| Applies to | Every M1 Host and WorkerProxy PR |
| Pull request | None; evidence tracker |
## Goal
Guarantee that compute separation M1 does not change the standard co-located Functions Host product. Standard WebHost service graph, dependency direction, publish output, startup, and worker-process lifecycle remain stable; compute is a separate static composition and executable, never a runtime flag.
Every M1 PR posts its evidence here. This issue owns no product behavior.
## Source material
- `Functions-NoPlaceholders@brettsam/ga_plan`: `docs/host/ga/roadmap.md`, row `HT14`, and `docs/host/ga/ga-plan.md`.
- `.github/prompts/update-deps-json.prompt.md` for deps baseline updates.
## Per-PR evidence checklist
Copy this checklist into a comment for each M1 PR. A not-applicable item requires a one-line reason.
```markdown
### HT14 evidence - / PR #
- [ ] `test/WebJobs.Script.Tests/DependencyTests.cs` passes and dependency direction is unchanged.
- [ ] `test/Functions.Rpc.Client.Tests/RpcClientAssemblyTests.cs` passes where Client is touched.
- [ ] `Verify_DepsJsonChanges` passes against `test/WebJobs.Script.Tests/Microsoft.Azure.WebJobs.Script.WebHost.deps.json`; any change is justified line by line.
- [ ] `tools/ExtensionsMetadataGenerator/test/ExtensionsMetadataGeneratorTests/ExistingRuntimeAssemblies.txt` is unchanged or justified.
- [ ] `test/WebJobs.Script.Tests/WebHost/WebHostServiceCollectionExtensionsTests.cs` passes; standard registration set/order is unchanged.
- [ ] Default dependency validator tests pass.
- [ ] Standard WebHost startup tests pass and standard startup still starts ScriptHost automatically without a worker-link precondition.
- [ ] Standard worker/process/channel tests pass; local process lifecycle is unchanged.
- [ ] `test/Functions.WorkerProxy.Tests` and the WorkerProxy Native AOT build pass where Proxy is touched.
- [ ] `test/Functions.Rpc.Client.Tests` passes where Client is touched.
- [ ] `WebJobs.Script.sln` and `Azure.Functions.Host.slnx` build clean with no new warnings.
- [ ] No runtime configuration key selects standard versus compute product.
- [ ] Compute publish excludes Server process implementation and WorkerProxy; standard publish excludes Client, compute product, and WorkerProxy where applicable.
- [ ] Compute-only routes are absent from standard Host where applicable.
- [ ] Aspire/test drivers remain harness-only and absent from shipping outputs where applicable.
```
## Guarded invariants
| Invariant | Primary evidence |
|---|---|
| Standard registration set/order unchanged | `WebHostServiceCollectionExtensionsTests.cs` |
| `Server -> Grpc -> Script`, `Client -> Grpc/Script`, no reverse or WorkerProxy edges | `DependencyTests.cs`, `RpcClientAssemblyTests.cs` |
| Standard publish/deps changes explicit and justified | deps baseline and runtime inventory |
| Standard ScriptHost starts automatically; deferral is compute-only | standard startup tests |
| Local worker lifecycle unchanged | `test/WebJobs.Script.Tests/Workers` |
| No runtime topology flag | review plus checklist |
| Compute routes/services absent from standard | HT9 route-absence test |
## Coverage record
Retrospective evidence starts with HT1/#11916, HT2/#11940, HP1/#11921, and HP2/#11949. HT3/#11964 and each subsequent required M1 PR add one completed checklist comment. Optional Aspire PRs supply harness-containment evidence but do not gate BYOC-M1.
## Dependencies
- Depends on HT1's assembly boundary.
- Blocks each M1 PR from merging without evidence, but never blocks work from starting.
## Explicit exclusions
No new analyzer/test framework/product behavior is owned here. If a missing guard is found, the feature issue that exposes it adds the test. This issue does not own performance, GA parity, or the stamp run.
## Close condition
Close when every required M1 child is closed or accepted, every required PR posted evidence, and a final standard regression run passes on `dev` after the last M1 merge. Post-M1 work opens a successor guard instead of reopening this issue.
Contributor guide
Assessment
This issue has not been assessed yet.