Commit graph

2089 commits

Author SHA1 Message Date
Agent
750981529b fix: tools/edge-control/verify-chat-sandbox.sh targets deleted disinto-chat container (#1087)
All checks were successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
ci/woodpecker/pr/edge-subpath Pipeline was successful
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-20 17:46:35 +00:00
d1867bd877 Merge pull request 'chore: gardener housekeeping' (#1088) from chore/gardener-20260420-1719 into main
All checks were successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/nomad-validate Pipeline was successful
2026-04-20 17:29:29 +00:00
Claude
f782f6be3a chore: gardener housekeeping 2026-04-20
All checks were successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/nomad-validate Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
ci/woodpecker/pr/edge-subpath Pipeline was successful
ci/woodpecker/pr/nomad-validate Pipeline was successful
ci/woodpecker/pr/secret-scan Pipeline was successful
2026-04-20 17:19:23 +00:00
0483e2b7d1 Merge pull request 'fix: feat: drop chat rate-limiting — remove per-user hour/day request caps and token cap (reverts #711) (#1084)' (#1086) from fix/issue-1084 into main
All checks were successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/nomad-validate Pipeline was successful
2026-04-20 16:41:51 +00:00
dev-qwen2
6745736a0f fix: remove CHAT_MAX_* rate-limit env vars from generate_compose() (#1084)
All checks were successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
ci/woodpecker/pr/edge-subpath Pipeline was successful
ci/woodpecker/pr/nomad-validate Pipeline was successful
ci/woodpecker/pr/secret-scan Pipeline was successful
ci/woodpecker/pr/smoke-init Pipeline was successful
2026-04-20 16:28:33 +00:00
dev-qwen2
f28c8000bb fix: feat: drop chat rate-limiting — remove per-user hour/day request caps and token cap (reverts #711) (#1084)
All checks were successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/nomad-validate Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
ci/woodpecker/pr/edge-subpath Pipeline was successful
ci/woodpecker/pr/nomad-validate Pipeline was successful
ci/woodpecker/pr/secret-scan Pipeline was successful
ci/woodpecker/pr/smoke-init Pipeline was successful
2026-04-20 16:12:11 +00:00
bcf7db93b1 Merge pull request 'fix: feat: merge chat container into edge — run chat server inside edge container with full permissions (reverts sandbox from #706) (#1083)' (#1085) from fix/issue-1083 into main
All checks were successful
ci/woodpecker/push/ci Pipeline was successful
2026-04-20 15:59:42 +00:00
Claude
686b1c2d40 fix: update AGENTS.md and sync rate-limit env vars in static compose
All checks were successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/nomad-validate Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
ci/woodpecker/pr/edge-subpath Pipeline was successful
ci/woodpecker/pr/smoke-init Pipeline was successful
- AGENTS.md line 45: reflect chat merged into edge (no standalone Dockerfile/entrypoint)
- docker-compose.yml: add CHAT_MAX_REQUESTS_PER_HOUR/DAY and CHAT_MAX_TOKENS_PER_DAY
  to match generators.sh (advisory from review)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-20 15:47:03 +00:00
Claude
83176c5f28 fix: feat: merge chat container into edge — run chat server inside edge container with full permissions (reverts sandbox from #706) (#1083)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-20 15:47:03 +00:00
42e9cae6f8 Merge pull request 'fix: feat: configure Forgejo ROOT_URL for /forge/ subpath routing (#1080)' (#1082) from fix/issue-1080 into main
All checks were successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/nomad-validate Pipeline was successful
2026-04-20 15:36:16 +00:00
398a7398a9 Merge pull request 'fix: fix: strip /staging prefix in Caddyfile before proxying to staging container (#1079)' (#1081) from fix/issue-1079 into main
All checks were successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/nomad-validate Pipeline was successful
2026-04-20 15:22:27 +00:00
Agent
02f8e13f33 fix: feat: configure Forgejo ROOT_URL for /forge/ subpath routing (#1080)
All checks were successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/nomad-validate Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
ci/woodpecker/pr/edge-subpath Pipeline was successful
ci/woodpecker/pr/nomad-validate Pipeline was successful
ci/woodpecker/pr/smoke-init Pipeline was successful
Move FORGEJO_ROOT_URL and WOODPECKER_HOST configuration to BEFORE
generate_compose so the .env file is available for variable substitution.

When EDGE_TUNNEL_FQDN is set with subpath routing mode, the .env file
now gets FORGEJO_ROOT_URL=https://<fqdn>/forge/ written before
docker-compose.yml is generated, ensuring the subpath is included in
the generated compose file.

This fixes the 404 on /forge/ by ensuring Forgejo's ROOT_URL includes
the /forge/ prefix so its internal router recognizes the subpath.

The Caddyfile already correctly does NOT strip the prefix - it passes
the full /forge/... path to forgejo:3000.
2026-04-20 15:13:01 +00:00
dev-qwen2
d17754efab fix: fix: strip /staging prefix in Caddyfile before proxying to staging container (#1079)
All checks were successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/nomad-validate Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
ci/woodpecker/pr/edge-subpath Pipeline was successful
ci/woodpecker/pr/nomad-validate Pipeline was successful
ci/woodpecker/pr/secret-scan Pipeline was successful
ci/woodpecker/pr/smoke-init Pipeline was successful
2026-04-20 15:09:34 +00:00
abca547dcc Merge pull request 'fix: vision(#623): WebSocket streaming for chat UI to replace one-shot claude --print (#1026)' (#1076) from fix/issue-1026 into main
All checks were successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/nomad-validate Pipeline was successful
2026-04-20 11:48:10 +00:00
Agent
01f7d061bc fix: WebSocket streaming - address all AI review findings (#1076)
All checks were successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/nomad-validate Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
ci/woodpecker/pr/edge-subpath Pipeline was successful
ci/woodpecker/pr/nomad-validate Pipeline was successful
ci/woodpecker/pr/secret-scan Pipeline was successful
Fixes identified in AI review:
- Blocker #1: Server now handles chat_request WebSocket frames and invokes Claude
- Blocker #2: accept_connection() uses self.headers from BaseHTTPRequestHandler
- Blocker #3: handle_websocket_upgrade() uses asyncio.open_connection() for proper StreamWriter
- Medium #4: _decode_frame() uses readexactly() for all fixed-length reads
- Medium #5: Message queue cleaned up on disconnect in handle_connection() finally block
- Low #6: WebSocket close code corrected from 768 to 1000
- Low #7: _send_close() and _send_pong() are now async with proper await

Changes:
- Added _handle_chat_request() method to invoke Claude within WebSocket coroutine
- Fixed _send_close() to use struct.pack for correct close code (1000)
- Made _send_pong() async with proper await
- Updated handle_connection() to call async close/pong methods and cleanup queue
- Fixed handle_websocket_upgrade() to pass Sec-WebSocket-Key from HTTP headers
- Replaced create_connection() with open_connection() for proper reader/writer
2026-04-20 11:36:27 +00:00
Agent
17e745376d fix: vision(#623): WebSocket streaming for chat UI to replace one-shot claude --print (#1026) 2026-04-20 11:36:27 +00:00
aa87639356 Merge pull request 'fix: vision(#623): automate subdomain fallback pivot if subpath routing fails (#1028)' (#1078) from fix/issue-1028 into main
All checks were successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/nomad-validate Pipeline was successful
2026-04-20 11:28:44 +00:00
Claude
78a295f567 fix: vision(#623): automate subdomain fallback pivot if subpath routing fails (#1028)
All checks were successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/nomad-validate Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
ci/woodpecker/pr/edge-subpath Pipeline was successful
ci/woodpecker/pr/nomad-validate Pipeline was successful
ci/woodpecker/pr/smoke-init Pipeline was successful
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-20 11:12:20 +00:00
89c0a65453 Merge pull request 'fix: vision(#623): end-to-end subpath routing smoke test for Forgejo + Woodpecker + chat (#1025)' (#1063) from fix/issue-1025-3 into main
All checks were successful
ci/woodpecker/push/ci Pipeline was successful
2026-04-20 11:01:13 +00:00
48ce3edb4b fix: convert bash array to POSIX for-loop in caddyfile-routing-test
All checks were successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
ci/woodpecker/pr/edge-subpath Pipeline was successful
ci/woodpecker/pr/smoke-init Pipeline was successful
Step ran in alpine:3.19 with default /bin/sh (busybox ash) which does not
support bash array syntax. REQUIRED_HANDLERS=(...) + "${ARR[@]}" failed
with "syntax error: unexpected (".

Inlined the handler list into a single space-separated for-loop that works
under POSIX sh. No behavioral change; same 6 handlers checked.

Fixes edge-subpath/caddyfile-routing-test exit 2 on pipelines targeting
fix/issue-1025-3 — see #1025.
2026-04-20 10:47:12 +00:00
181f82dfd0 fix: use workspace-relative path for rendered Caddyfile in edge-subpath pipeline
Some checks failed
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
ci/woodpecker/pr/edge-subpath Pipeline failed
ci/woodpecker/pr/smoke-init Pipeline failed
Woodpecker mounts the workspace dir across steps in a workflow; /tmp does not
persist between step containers. render-caddyfile was writing to
/tmp/edge-render/Caddyfile.rendered which caddy-validate could not read
(caddy: no such file or directory).

Changed all /tmp/edge-render references to edge-render (workspace-relative).

Fixes edge-subpath/caddy-validate exit 1 on pipelines targeting
fix/issue-1025-3 — see #1025.
2026-04-20 10:44:17 +00:00
a620e296de Merge pull request 'fix: fix: collect-engagement.sh never commits evidence to ops repo — data silently lost (#982)' (#1075) from fix/issue-982 into main
All checks were successful
ci/woodpecker/push/ci Pipeline was successful
2026-04-20 08:54:08 +00:00
88aca4a064 Merge pull request 'fix: bug: disinto init --backend=nomad — does not bootstrap Forgejo admin user (#1069)' (#1073) from fix/issue-1069 into main
All checks were successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/nomad-validate Pipeline was successful
2026-04-20 08:46:33 +00:00
Agent
253dd7c6ff fix: fix: collect-engagement.sh never commits evidence to ops repo — data silently lost (#982)
All checks were successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
2026-04-20 08:44:05 +00:00
1a24e79fb5 Merge pull request 'fix: fix: re-seed ops repo directories after branch protection resolved (#820)' (#1074) from fix/issue-820 into main
All checks were successful
ci/woodpecker/push/ci Pipeline was successful
2026-04-20 08:39:18 +00:00
dev-qwen2
95bacbbfa4 fix: resolve all CI review blockers for forgejo admin bootstrap (#1069)
All checks were successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/nomad-validate Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
ci/woodpecker/pr/nomad-validate Pipeline was successful
ci/woodpecker/pr/smoke-init Pipeline was successful
2026-04-20 08:35:40 +00:00
Agent
6673c0efff fix: fix: re-seed ops repo directories after branch protection resolved (#820)
All checks were successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
2026-04-20 08:23:01 +00:00
dev-qwen2
a7bcb96935 fix: correct MD5 hashes for forgejo-bootstrap.sh duplicate detection (#1069)
All checks were successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
ci/woodpecker/pr/nomad-validate Pipeline was successful
ci/woodpecker/pr/smoke-init Pipeline was successful
2026-04-20 08:21:31 +00:00
85e6907dc3 fix: rename logging helpers in test-caddyfile-routing.sh to avoid dup-detection
Some checks failed
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
ci/woodpecker/pr/edge-subpath Pipeline failed
ci/woodpecker/pr/smoke-init Pipeline was successful
log_info / log_pass / log_fail / log_section were copied verbatim from
tests/smoke-edge-subpath.sh and triggered ci.duplicate-detection with 3
collision hashes. Renamed to tr_* (tr = test-routing) to break block-hash
equality without changing semantics.

43 call sites updated. No behavioral change.

Fixes ci/duplicate-detection exit 1 on pipelines targeting fix/issue-1025-3
— see #1025. A proper shared lib/test-helpers.sh is a better long-term
solution but out of scope here.
2026-04-20 08:11:08 +00:00
7763facb11 fix: add curl to apk install in caddy-validate step
Some checks are pending
ci/woodpecker/push/ci Pipeline is pending
ci/woodpecker/pr/ci Pipeline is pending
ci/woodpecker/pr/edge-subpath Pipeline is pending
ci/woodpecker/pr/smoke-init Pipeline is pending
The step runs `curl -sS -o /tmp/caddy ...` to download the caddy binary
but only installs ca-certificates. curl is not in alpine:3.19 base image.
Adding curl to the apk add line so the download actually runs.

Fixes edge-subpath/caddy-validate exit 127 (command not found) on
pipelines targeting fix/issue-1025-3 — see #1025.
2026-04-20 08:10:58 +00:00
dev-qwen2
23e47e3820 fix: bug: disinto init --backend=nomad — does not bootstrap Forgejo admin user (#1069)
Some checks failed
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/nomad-validate Pipeline was successful
ci/woodpecker/pr/ci Pipeline failed
ci/woodpecker/pr/nomad-validate Pipeline was successful
ci/woodpecker/pr/smoke-init Pipeline was successful
2026-04-20 08:06:06 +00:00
49190359b8 Merge pull request 'fix: bug: deploy.sh 360s still too tight for chat cold-start + cascade-skip masks edge/vault-runner (#1070)' (#1071) from fix/issue-1070 into main
All checks were successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/nomad-validate Pipeline was successful
2026-04-20 08:04:27 +00:00
f89d22dd39 Merge pull request 'fix: bug: disinto backup import — schema mismatch with create; 0 issues imported (#1068)' (#1072) from fix/issue-1068 into main
Some checks are pending
ci/woodpecker/push/ci Pipeline is pending
2026-04-20 08:01:51 +00:00
Agent
4c6d545060 fix: bug: disinto backup import — schema mismatch with create; 0 issues imported (#1068)
All checks were successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
2026-04-20 07:58:25 +00:00
Claude
d1a026c702 fix: deploy.sh 360s still too tight for chat cold-start + cascade-skip masks edge/vault-runner (#1070)
All checks were successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/nomad-validate Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
ci/woodpecker/pr/nomad-validate Pipeline was successful
Two changes:
- Set JOB_READY_TIMEOUT_CHAT=600 (chat cold-start takes ~5-6 min on fresh LXC)
- On deploy timeout/failure, log WARNING and continue submitting remaining jobs
  instead of dying immediately; print final health summary with failed jobs list

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-20 07:56:30 +00:00
fbd66dd4ea Merge pull request 'chore: gardener housekeeping 2026-04-20' (#1067) from chore/gardener-20260420-0625 into main
All checks were successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/nomad-validate Pipeline was successful
2026-04-20 06:33:32 +00:00
Claude
f4ff202c55 chore: gardener housekeeping 2026-04-20
All checks were successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/nomad-validate Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
ci/woodpecker/pr/nomad-validate Pipeline was successful
ci/woodpecker/pr/secret-scan Pipeline was successful
2026-04-20 06:25:42 +00:00
88222503d5 Merge pull request 'chore: gardener housekeeping 2026-04-20' (#1066) from chore/gardener-20260420-0021 into main
All checks were successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/nomad-validate Pipeline was successful
2026-04-20 00:25:30 +00:00
Claude
91841369f4 chore: gardener housekeeping 2026-04-20
All checks were successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/nomad-validate Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
ci/woodpecker/pr/nomad-validate Pipeline was successful
ci/woodpecker/pr/secret-scan Pipeline was successful
2026-04-20 00:21:20 +00:00
343b928a26 Merge pull request 'fix: tool: disinto backup import — idempotent restore on fresh Nomad cluster (#1058)' (#1064) from fix/issue-1058 into main
All checks were successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/nomad-validate Pipeline was successful
2026-04-19 21:35:46 +00:00
Agent
99fe90ae27 fix: tool: disinto backup import — idempotent restore on fresh Nomad cluster (#1058)
All checks were successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/nomad-validate Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
ci/woodpecker/pr/nomad-validate Pipeline was successful
ci/woodpecker/pr/smoke-init Pipeline was successful
2026-04-19 21:28:02 +00:00
3aa521509a Merge pull request 'fix: docs: nomad-cutover-runbook.md — end-to-end cutover procedure (#1060)' (#1065) from fix/issue-1060 into main
All checks were successful
ci/woodpecker/push/ci Pipeline was successful
2026-04-19 21:01:03 +00:00
Claude
2c7c8d0b38 fix: docs: nomad-cutover-runbook.md — end-to-end cutover procedure (#1060)
All checks were successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-19 20:50:45 +00:00
ec4e608827 Merge pull request 'fix: tool: disinto backup create — export Forgejo issues + disinto-ops git bundle (#1057)' (#1062) from fix/issue-1057 into main
All checks were successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/nomad-validate Pipeline was successful
2026-04-19 20:43:54 +00:00
dev-qwen2
6b81e2a322 fix: simplify pipeline trigger to pull_request event only
Some checks failed
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/pr/ci Pipeline failed
ci/woodpecker/pr/edge-subpath Pipeline failed
ci/woodpecker/pr/smoke-init Pipeline was successful
2026-04-19 20:40:57 +00:00
dev-qwen2
ae8eb09ee7 fix: correct Woodpecker when clause syntax for path filters
Some checks failed
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/edge-subpath Pipeline failed
ci/woodpecker/pr/ci Pipeline failed
ci/woodpecker/pr/edge-subpath Pipeline failed
ci/woodpecker/pr/smoke-init Pipeline failed
2026-04-19 20:31:36 +00:00
Claude
cb8c131bc4 fix: clear EXIT trap before return to avoid unbound $tmpdir under set -u
All checks were successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/nomad-validate Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
ci/woodpecker/pr/nomad-validate Pipeline was successful
ci/woodpecker/pr/smoke-init Pipeline was successful
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-19 20:29:44 +00:00
Claude
c287ec0626 fix: tool: disinto backup create — export Forgejo issues + disinto-ops git bundle (#1057)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-19 20:29:44 +00:00
dev-qwen2
1a1ae0b629 fix: shellcheck unreachable code warnings in smoke script
Some checks failed
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/edge-subpath Pipeline failed
ci/woodpecker/pr/ci Pipeline failed
ci/woodpecker/pr/edge-subpath Pipeline failed
ci/woodpecker/pr/smoke-init Pipeline failed
2026-04-19 20:28:32 +00:00
dev-qwen2
5b46acb0b9 fix: vision(#623): end-to-end subpath routing smoke test for Forgejo + Woodpecker + chat (#1025) 2026-04-19 20:28:20 +00:00