refactor(routes): drop prod-dead compile_routes; document disabled-shadow (§11 tail review)
Two review findings.
1. After R3 every production rebuild path uses `compile_effective_routes`;
`compile_routes` (the old app-only compile) was called only by its own
two unit tests, and its "runs in build_app" doc was stale — so the
lenient-skip + disabled-drop regression guards no longer covered the
live path. Remove `compile_routes` + its re-export, fold the lenient-skip
rationale onto `compile_one`, and port both guards to
`compile_effective_routes` (app-only rows are just depth-0 effective
rows). Add a third guard pinning nearest-owner shadowing at the pure-
compile layer. Fix the stale `compile_routes` mention in apply_service.
2. Document the disabled + inherited semantic: the `enabled` filter runs
before the shadow check, so a disabled own-route does not claim its
binding and an enabled ancestor template at the same path falls through
("disabled = absent", §4.3). Recorded on `compile_effective_routes` and
in design §4.5 — the corollary (can't 404 an inherited route by
disabling a same-path own route) points at the deferred per-app opt-out.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -2111,8 +2111,8 @@ impl ApplyService {
|
||||
for r in &bundle.routes {
|
||||
reject_reserved_path(&r.path)?;
|
||||
// Structural validity (parity with the interactive route API):
|
||||
// a route whose path/host doesn't parse would otherwise be
|
||||
// written and then silently dropped by `compile_routes`.
|
||||
// a route whose path/host doesn't parse would otherwise be written
|
||||
// and then silently dropped by the route-table compile.
|
||||
pattern::parse_path(r.path_kind, &r.path)
|
||||
.map_err(|e| ApplyError::Invalid(format!("route path `{}`: {e}", r.path)))?;
|
||||
pattern::parse_host(r.host_kind, &r.host, r.host_param_name.as_deref())
|
||||
|
||||
Reference in New Issue
Block a user