spec: record StatusNamed's tri-state, decided during implementation
The §3 table said the zero value was "false". It is "unstated": StatusNamed became a *bool during the final review wave, for the reason Hibernate is one — it is converged, and a plain bool would let a record omitting the field silently opt a route out of the status page that an operator opted in with `carlos add -status-named`. Caught by the whole-branch review as spec/type drift; matters because plan 3's backfill will be written against this table.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
1 file changed,
+11
−1
docs/superpowers/specs/2026-08-10-route-records-design.md+11 −1
diff --git a/docs/superpowers/specs/2026-08-10-route-records-design.md b/docs/superpowers/specs/2026-08-10-route-records-design.md| index b28d6b6e9..85cc6bdee 100644 |
| --- a/docs/superpowers/specs/2026-08-10-route-records-design.md |
| +++ b/docs/superpowers/specs/2026-08-10-route-records-design.md |
| @@ -102,7 +102,7 @@ this change parses and materializes a byte-identical route. |
| | `Unit` | `unit` | no owning unit | `console.service` | |
| | `Hibernate` | `hibernate` | `true` | long-running units that must not sleep | |
| | `Environment` | `environment` | the app's default bundle | the second member-facing axis of `carlos route` | |
| -| `StatusNamed` | `status_named` | false | `carlos add -status-named` | |
| +| `StatusNamed` (`*bool`) | `status_named` | unstated — mints false, never converges | `carlos add -status-named` | |
| ### 3.1 Field notes |
| @@ -113,6 +113,16 @@ the first pass after deploy. `nil` must mean `true`. This is the same |
| tri-state honesty `runRoute` already buys with `fs.Visit`, for the same |
| reason: absent and false are different facts. |
| +**`StatusNamed` is `*bool` for the same reason** (added during implementation, |
| +2026-08-10). It is converged like `Channel` and `Environment`, and a plain |
| +bool cannot be: a record omitting the field would read as `false` and |
| +silently opt a route out of the status page that an operator opted in with |
| +`carlos add -status-named`. So `nil` means "this record does not speak to the |
| +status page" — it mints `false`, matching every record already in a |
| +production bucket, and it never converges. A backfill record that wants a |
| +route named on the status page must say `status_named: true` explicitly; |
| +omitting it leaves the row's opt-in box-local and undescribed. |
| + |
| **`Socket` and `DBPath` stay derived, never declared.** `DefaultSocket` and |
| `DefaultDBPath` exist precisely so a hand-added route and a provisioned one |
| land on identical path shapes, and the `filepath.Join` note in their doc |