Source-side COUNT decode fixes are complete locally, but production closure still requires operator key handoff or deploy/smoke evidence. Add 2026-06-16 recheck notes and set workstream status to blocked.
4.8 KiB
id, type, title, domain, repo, status, owner, created, updated, state_hub_workstream_id
| id | type | title | domain | repo | status | owner | created | updated | state_hub_workstream_id |
|---|---|---|---|---|---|---|---|---|---|
| ADHOC-2026-06-15 | workplan | Ad hoc Inter-Hub production fixes | custodian | inter-hub | blocked | codex | 2026-06-15 | 2026-06-16 | 9e7a50b4-da7f-4df9-9154-7b89a071f520 |
Ad hoc Inter-Hub production fixes
Fix COUNT decode failures in v2 bootstrap endpoints
id: ADHOC-2026-06-15-T01
status: blocked
priority: high
state_hub_task_id: "cceee9f1-56af-44bc-898d-21c4508df07c"
Production Ops Hub bootstrap exposed a PostgreSQL/Haskell type mismatch in
the v2 API helpers. COUNT(*) returns bigint, while the helper code decoded
the result as Int, causing UnexpectedColumnTypeStatementError in widget
type validation and API request log rate-limit checks.
Fix the count queries so widget creation and authenticated hub-registry reads work through the documented v2 bootstrap API.
Source fix on 2026-06-15:
Application/Helper/TypeRegistry.hsnow casts registry validationCOUNT(*)queries toint.Application/Helper/ApiRateLimit.hsnow casts API request logCOUNT(*)queries toint.- Commit
5101eb5 Fix API count decodingwas pushed toorigin/main.
Blocked before live completion:
- The Gitea deploy workflow did not update production during the session.
- Production still reports image
gitea.coulomb.social/coulomb/inter-hub:5c13de1. - Local
nix develop ... scripts/compile-checkis blocked by local devenv setup, and the localnix build .#dockerremained in dependency compilation after more than 20 minutes. The build was stopped cleanly.
Deploy trigger attempt on 2026-06-15:
- Confirmed current
maincontains the COUNT decode fix and is at commitf8fde35. - Confirmed the deploy workflow is the normal path and is pinned to
runs-on: [self-hosted, haskelseed]. - Confirmed image tag
gitea.coulomb.social/coulomb/inter-hub:f8fde35returnsmanifest unknown. - Gitea Actions API inspection/dispatch was attempted using the locally
configured
teatoken, but the public HTTPS API returned401 Unauthorizedfor Actions endpoints; the raw configured HTTP endpoint was not reachable from this session. - Pushed empty commit
68c66b9(chore: trigger inter-hub deploy) because the previous contract/docs commit was ignored by the deploy workflow'spaths-ignorerules. - Polled the registry for
gitea.coulomb.social/coulomb/inter-hub:68c66b9for about five minutes after push; it continued to returnmanifest unknown.
Current wait reason: the source fix is pushed, but image publication/deploy now
requires authenticated Gitea Actions workflow dispatch or inspection of the
self-hosted haskelseed runner path. The normal workflow needs haskelseed as
build runner; an equivalent operator-controlled build host with Nix, registry
push credentials, and Railiance deploy credentials could substitute.
Recheck on 2026-06-16:
- The local source fix is still present:
Application/Helper/TypeRegistry.hscasts registry validation counts withCOUNT(*)::int, andApplication/Helper/ApiRateLimit.hscasts API request log counts withCOUNT(*)::int. - A source-wide
COUNTsearch found the targeted v2 bootstrap helpers fixed. Other raw aggregate counts remain in non-bootstrap dashboard/marketplace/API surfaces and are outside this ad hoc task's acceptance path unless they are separately reproduced as decode failures. - Live public
GET https://hub.coulomb.social/api/v2/hubsreturns200and listsops-hub, confirming the public API and ops-hub route surface are present. - Live unauthenticated
GET /api/v2/widgetsandGET /api/v2/hub-registryreturn401, confirming the protected routes exist and authentication is enforced before the code path that previously failed. - Unauthenticated registry manifest checks for tags
68c66b9and5101eb5now return401, not the earlier unauthenticatedmanifest unknown; this session cannot prove image publication from the public registry endpoint. - The previously documented local temp key
/tmp/ops-hub-runtime-key-gb5nxg92is absent. No approved runtime key or operator key is available in this session, so the protected widget-create and hub-registry smoke checks could not be run without a secret handoff.
Current blocked reason: source-side work appears complete, but production closure still requires one of:
- an attended operator/runtime key handoff so Codex can run the protected smoke without printing the key;
- operator-provided non-secret evidence that production is running an image
containing commit
5101eb5or an equivalent COUNT decode fix; or - operator-run smoke evidence showing authenticated
POST /api/v2/widgetsand authenticatedGET /api/v2/hub-registrysucceed against production.
Until one of those exists, this ad hoc workplan should remain blocked, not
done.