Phase 9 wiring: name the Hub project internet_control

The Hub routes by the project name in its human-owned routing.md, which
already names this project `internet_control` (the placeholder row from the
Hub brief). The frozen contract requires the /capabilities name to match that
row, so /capabilities now reports `internet_control` as well.

Found while wiring the live Hub (approved confirmation 60b235f3): the Hub
routed the screen-time question to `internet_control` and returned
`no_client` against a project registered as `internet_use_control`. Aligning
the name, rather than editing the Hub repository or its routing file, makes
the end-to-end round-trip work.

Live proof after the rename and the Hub registration:

  POST http://192.168.20.13:8788/ask
  {"text":"how long have the kids been on screen today?","asker":"sam","source":"console"}
  200 {"status":"ok","answer":"The kids have had 1h 22m of screen time today.",
       "route":{"kind":"project","project":"internet_control"}}

Repository, module and service names are unchanged; only the Hub-facing
project string changed.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
2026-10-13 19:33:54 +11:00
parent 3cf353d933
commit 8c42daf4d9
4 changed files with 16 additions and 10 deletions

View File

@@ -265,7 +265,7 @@ dashboard session and the admin API. With no token set they answer `503`.
| Method | Path | Notes |
|---|---|---|
| `GET` | `/capabilities` | `{"project":"internet_use_control","topics":[…],"people":[…]}`. The Hub reads it to route a question. |
| `GET` | `/capabilities` | `{"project":"internet_control","topics":[…],"people":[…]}`. The Hub reads it to route a question; the name matches the Hub's `routing.md` row. |
| `POST` | `/ask` | Read-only. Body is the contract's `AskRequest`; the reply is always `200` with an `answer` or `answer:null` plus a `reason`. |
| `POST` | `/notify` | Accepts the contract's `{"from","level","message","person"}` and delivers it to Sam through Apprise. |
@@ -523,7 +523,9 @@ deploy/verify-phase9.sh Hub + alerts proof
payload contract above is what they implement.
- No Alerts screen in the dashboard yet. The alert history is in `alerts` and is
readable with `control alerts`; the screen is a later UI change.
- The Hub is not wired to this service yet. `/ask` is proven directly with the
exact Hub request shape (`make verify-phase9`); registering the project with
the running Hub (its `HUB_PROJECTS` and a project token) and restarting the
`hub` container is a host change pending approval.
- The Hub is wired to this service: the running Hub on `.13:8788` routes
screen-time questions here and returns the answer. Registration is host
configuration, not code: the project is in the Hub's `HUB_PROJECTS` and
`HUB_PROJECT_INTERNET_CONTROL_TOKEN`, and the Hub's human-owned `routing.md`
row already names the project `internet_control` (which is why
`/capabilities` uses that name).