Fix skillsmp host Caddy shortcut 404 #525
Labels
No labels
burndown-2026-06
coherence-core
consult
headless
interactive
P0
P1
P2
P3
P4
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
coilyco-flight-deck/infrastructure#525
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
The deploy-owned skillsmp MCP documents a tailnet-only HTTP shortcut at
http://kai-server/skillsmp/mcp, but the live host Caddy route returns 404. The direct NodePort backend works, so this is the host-side shortcut/reload path, not the skillsmp pod.Evidence from the director surface on 2026-07-10 UTC:
The deploy-side issue is
coilyco-bridge/deploy#133. That run correctly identified this as infrastructure-owned because the shortcut is host Caddy, not a deploy repo service object.Do
http://kai-server/skillsmp/mcpproxies to127.0.0.1:30081and preserves MCP streaming headers.https://skillsmp.coilysiren.me/mcpAuthelia gate unchanged.coilyco-bridge/deploy#133if possible.Acceptance
POST http://kai-server.tail09a41b.ts.net/skillsmp/mcpwithHost: kai-serverand MCP initialize headers returns HTTP 200 withserverInfo.name == skillsmp.POST http://kai-server.tail09a41b.ts.net:30081/mcpstill returns HTTP 200.https://skillsmp.coilysiren.me/mcpstill returns 401.Related: infrastructure#474 is the broader consult/design issue for pretty tailnet-direct MCP URLs. This issue is only the concrete repair of the already-documented HTTP shortcut.
Codex, via director surface
WARD-RESERVATION: held 🔒
reservation details
Holder: container
engineer-codex-infrastructure-525on hostkais-macbook-pro-2.local.Reserved by
ward agent --harness codex(reserved 2026-07-10T09:25:04Z). Concurrentward agentruns are blocked until it finishes or the reservation goes stale (1h TTL).--forceoverrides.Do not comment on or edit this issue to steer the run while it is reserved. The engineer seeded the body once at launch and never re-reads it, so a comment or edit reaches only human readers, never the running engineer. A correction goes to a new issue, dispatched fresh. That is the only channel that reaches a run in flight. Where the forge supports it, ward locks this conversation to make that a road-block rather than a convention (ward#494).
run seed context — what this run is carrying (ward#609)
coilyco-flight-deck/infrastructure#525· branchissue-525· harnesscodex· workflowdirect-mainengineer-codex-infrastructure-525· wardv0.573.0· dispatched2026-07-10T09:25:04ZStatic container doctrine and seed boilerplate are identical every run and omitted here (they ride ward v0.573.0).
— Codex, via
ward agentPost-close verification on 2026-07-10 still fails acceptance.
Evidence from the director surface after the issue closed:
The issue is reopened because acceptance requires the shortcut path to initialize the skillsmp MCP through host Caddy.
WARD-OUTCOME: blocked 🛑
details
workflow: direct-main; review summary: review gate skipped by ~/.ward/config.yaml default
The implementation felt like a deploy-path bug, then a namespace mismatch, then a dead end. The repo and host both reloaded cleanly, the direct NodePort still returns 200, and the public Authelia gate still returns 401, but the host shortcut still returns 404.
confidence: low
surprises: the host Caddy runtime does not appear to proxy to the expected backend path from the container-visible view, despite the adapted config showing the route.
follow-ups: inspect the actual Caddy runtime namespace or host-to-NodePort path on kai-server before trying another config shape.
WARD-RESERVATION: held 🔒
reservation details
Holder: container
engineer-codex-infrastructure-525on hostkais-macbook-pro-2.local.Reserved by
ward agent --harness codex(reserved 2026-07-10T10:56:03Z). Concurrentward agentruns are blocked until it finishes or the reservation goes stale (1h TTL).--forceoverrides.Do not comment on or edit this issue to steer the run while it is reserved. The engineer seeded the body once at launch and never re-reads it, so a comment or edit reaches only human readers, never the running engineer. A correction goes to a new issue, dispatched fresh. That is the only channel that reaches a run in flight. Where the forge supports it, ward locks this conversation to make that a road-block rather than a convention (ward#494).
run seed context — what this run is carrying (ward#609)
coilyco-flight-deck/infrastructure#525· branchissue-525· harnesscodex· workflowdirect-mainengineer-codex-infrastructure-525· wardv0.580.0· dispatched2026-07-10T10:56:03ZStatic container doctrine and seed boilerplate are identical every run and omitted here (they ride ward v0.580.0).
— Codex, via
ward agentWARD-OUTCOME: blocked 🛑
details
workflow: direct-main; review summary: review gate skipped by ~/.ward/config.yaml default
host verification: direct NodePort
http://kai-server:30081/mcpstayed 200 and publichttps://skillsmp.coilysiren.me/mcpstayed 401, buthttp://kai-server/skillsmp/mcpremained 404 after live Caddy reloads and route variants.felt: the source fix was straightforward; the live Caddy matcher path felt stubborn.
confidence: medium
surprises: the live admin graph showed the shortcut route while the request still missed it
follow-ups: keep digging the host Caddy match/reload path