molecule-core/workspace-server
Molecule AI Core-BE 4530b67336
Some checks failed
Block internal-flavored paths / Block forbidden paths (pull_request) Successful in 4s
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 10s
sop-checklist / all-items-acked (pull_request) [soft-fail tier:low] acked: 0/7 — missing: comprehensive-testing, local-postgres-e2e, staging-smoke, +4 — body-unfilled: 2
qa-review / approved (pull_request) Failing after 10s
Harness Replays / detect-changes (pull_request) Successful in 12s
security-review / approved (pull_request) Failing after 10s
sop-checklist-gate / gate (pull_request) Successful in 10s
CI / Detect changes (pull_request) Successful in 15s
E2E API Smoke Test / detect-changes (pull_request) Successful in 17s
sop-tier-check / tier-check (pull_request) Successful in 11s
E2E Staging Canvas (Playwright) / detect-changes (pull_request) Successful in 17s
gate-check-v3 / gate-check (pull_request) Successful in 17s
Harness Replays / Harness Replays (pull_request) Successful in 4s
Handlers Postgres Integration / detect-changes (pull_request) Successful in 19s
Runtime PR-Built Compatibility / detect-changes (pull_request) Successful in 18s
CI / Shellcheck (E2E scripts) (pull_request) Successful in 3s
CI / Canvas (Next.js) (pull_request) Successful in 4s
CI / Python Lint & Test (pull_request) Successful in 4s
E2E Staging Canvas (Playwright) / Canvas tabs E2E (pull_request) Successful in 4s
Runtime PR-Built Compatibility / PR-built wheel + import smoke (pull_request) Successful in 3s
CI / Canvas Deploy Reminder (pull_request) Has been skipped
lint-required-no-paths / lint-required-no-paths (pull_request) Successful in 1m4s
E2E API Smoke Test / E2E API Smoke Test (pull_request) Failing after 2m10s
Handlers Postgres Integration / Handlers Postgres Integration (pull_request) Failing after 2m13s
CI / Platform (Go) (pull_request) Failing after 4m6s
CI / all-required (pull_request) Failing after 1s
fix(handlers): raw TCP mock server with proper request-body drain
Abandon httptest+Hijack — it has two fundamental problems for this use case:

1. Buffered-writer loss: httptest's Hijack() discards the buffered writer,
   losing any bytes written via w.WriteHeader/w.Write that weren't already
   flushed to the raw conn. The HTTP client never receives response headers,
   blocking on ResponseHeaderTimeout=180s (the 2m8s hang).

2. Request-read deadlock: Go's httptest server keeps a read goroutine waiting
   for the request body after the handler returns. Calling Hijack() while that
   goroutine is still waiting causes a deadlock with the client's request-body
   writer.

Fix: use raw TCP with net.Listener directly. The server:
  1. Accepts one connection.
  2. Reads HTTP request headers (blank line terminates).
  3. Drains Content-Length bytes from the connection (prevents broken-pipe on
     client request-body writer when we close).
  4. Writes raw HTTP response directly to the raw conn (no buffered writer).
  5. Brief sleep so client reads headers+body before FIN fires.
  6. Close() sends FIN → client Read() returns io.EOF.

Also add allowLoopbackForTest() to each test so the SSRF guard permits
127.0.0.1 mock server URLs (same pattern as a2a_proxy_test.go).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-12 13:19:19 +00:00
..
cmd docs(runbook): add admin-auth.md covering test-token route lockdown 2026-05-10 02:20:30 +00:00
internal fix(handlers): raw TCP mock server with proper request-body drain 2026-05-12 13:19:19 +00:00
migrations feat(plugins): plugin drift detector + queue + admin apply endpoint (#123) 2026-05-10 00:39:50 +00:00
pkg/provisionhook feat(#1957): wire gh-identity plugin into workspace-server 2026-04-24 15:01:41 +00:00
.air.toml feat(local-dev): air-based hot-reload for workspace-server 2026-05-08 08:10:50 -07:00
.ci-force
.gitignore feat(local-dev): containerize platform + canvas stack via docker-compose (closes #126) 2026-05-08 10:53:39 -07:00
.golangci.yaml chore(workspace-server): add golangci.yaml disabling errcheck 2026-04-24 07:16:54 +00:00
Dockerfile ci(docker): pin base image digests in all Dockerfiles 2026-05-09 23:56:39 +00:00
Dockerfile.dev ci(docker): pin base image digests in all Dockerfiles 2026-05-09 23:56:39 +00:00
Dockerfile.tenant fix(dockerfile-tenant): chown /org-templates to canvas user so !external resolver can mkdir cache 2026-05-09 19:40:52 -07:00
entrypoint-tenant.sh fix(memory-plugin): gate sidecar spawn on cutover-active 2026-05-05 12:39:03 -07:00
go.mod fix(internal#214): refresh go.sum for the go.moleculesai.app/plugin/gh-identity vanity path 2026-05-09 23:55:20 -07:00
go.sum [core-lead-agent] fix(core#228): cascade fixes for PluginResolver — make main compile 2026-05-10 09:46:35 +00:00