dev-qwen2
0243f546da
fix: edge-control: deregister has no ownership check — any authorized SSH key can take over any project ( #1091 )
...
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/nomad-validate Pipeline was successful
Require the caller to prove ownership on deregister by providing the
pubkey that was used during registration. The stored pubkey is loaded
from registry.json and compared byte-for-byte against the supplied key.
Changes:
- Add get_pubkey() helper to lib/ports.sh
- Update do_deregister() to verify caller pubkey before removing project
- Update SSH protocol to "deregister <project> <pubkey>"
- Update bin/disinto CLI to read tunnel keypair and pass pubkey
- Return {"error":"pubkey mismatch"} on failure (no pubkey leakage)
- Add unit tests for both success and failure paths
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-20 19:12:31 +00:00
65df00ea6a
Merge pull request 'fix: vision( #623 ): scope Claude chat working directory to project staging checkout ( #1027 )' ( #1089 ) from fix/issue-1027-1 into main
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/nomad-validate Pipeline was successful
2026-04-20 18:26:41 +00:00
dev-qwen2
7f1f8fa01c
fix: vision( #623 ): scope Claude chat working directory to project staging checkout ( #1027 )
...
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
- server.py: add CHAT_WORKSPACE_DIR env var, set cwd to workspace
and use --permission-mode acceptEdits + append message in Claude invocations
- lib/generators.sh: add workspace bind mount and env var to compose generator
- nomad/jobs/chat.hcl: add workspace host volume (static source "chat-workspace"),
meta block + NOMAD_META_ env var, volume_mount — Nomad-compatible pattern
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-20 18:11:33 +00:00
a330db9537
Merge pull request 'fix: tools/edge-control/verify-chat-sandbox.sh targets deleted disinto-chat container ( #1087 )' ( #1090 ) from fix/issue-1087 into main
ci/woodpecker/push/ci Pipeline was successful
2026-04-20 17:57:00 +00:00
Agent
750981529b
fix: tools/edge-control/verify-chat-sandbox.sh targets deleted disinto-chat container ( #1087 )
...
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
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
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
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 )
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 )
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
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
...
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
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
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 )
...
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 )
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
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 )
...
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
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 )
...
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
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
...
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
...
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
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
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 )
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
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 )
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 )
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 )
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
...
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
...
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 )
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
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
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 )
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 )
...
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
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
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
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
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
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 )
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
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 )
...
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
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
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
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