Files
alkhttp/tasks/server/healthz-decoy.md
T
glm-5.3-flash 63dc4b6d06 docs: implementation plan (TTY precedents folded in); task decomposition (17 tasks)
Plan updated with the alknet-tty findings: the drainer pattern
(single ordered writer) makes outbound chunk-boundary parsing sound;
TestStdinSink's try_send→Full→Pending is the inbound backpressure
precedent; OQ-01(a) now cites the reference.

Task graph (taskgraph-validated, 17 tasks, 6 generations, no cycles):
- tasks/server/: core-types, auth, healthz-decoy, adapter
- tasks/gateway/: dispatch, routes, publish
- tasks/websocket/: byte-adapter (research POC), upgrade-session, overlay-ops
- tasks/adapters/: from-openapi, from-jsonschema, to-openapi, from-wss, mcp
- tasks/client/: http-host
- tasks/infra/: integration-suite (phase 4)

Critical path runs through server core → adapter → WS session →
overlay tests → integration suite. High-risk tasks are the three WS
tasks, de-risked by the ws-byte-adapter POC blocking upgrade-session.
2026-08-28 06:05:45 +00:00

39 lines
1.1 KiB
Markdown

---
id: server-healthz-decoy
name: /healthz raw route and stealth decoy fallback
status: pending
depends_on: [server-core-types]
scope: narrow
risk: low
impact: component
level: implementation
tags: [server, phase-1]
---
## Description
Port `healthz` (`server/healthz.rs` — raw 200 "ok", no auth, no call
protocol) and the decoy fallback (`server/decoy.rs` — fake nginx-style
404, static site, or redirect per `DecoyConfig`). Ported from
`/workspace/@alkdev/alknet/crates/alknet-http/src/server/{healthz,decoy}.rs`.
Tests: healthz responds without auth; decoy serves all three configs.
## Acceptance Criteria
- [ ] `/healthz` returns 200 text/plain without auth
- [ ] Decoy fallback for unmatched paths per DecoyConfig (404/static/redirect)
- [ ] Reserved paths (6 gateway + /healthz + /openapi.json + /mcp + /alk/channels) never hit the decoy
- [ ] `cargo test` passes
## References
- docs/architecture/http-server.md (§/healthz, §Stealth decoy)
- docs/architecture/decisions/010-alpn-router-and-endpoint.md
## Notes
> Agent fills during implementation.
## Summary
> Agent fills on completion.