Commit Graph

5162 Commits

Author SHA1 Message Date
7770af32be fix(docker-compose): remove redundant langfuse-web from infra
All checks were successful
Block internal-flavored paths / Block forbidden paths (pull_request) Successful in 22s
CI / Detect changes (pull_request) Successful in 1m30s
E2E API Smoke Test / detect-changes (pull_request) Successful in 1m14s
E2E Staging Canvas (Playwright) / detect-changes (pull_request) Successful in 1m22s
Handlers Postgres Integration / detect-changes (pull_request) Successful in 1m10s
Lint curl status-code capture / Scan workflows for curl status-capture pollution (pull_request) Successful in 16s
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 20s
sop-tier-check / tier-check (pull_request) Successful in 20s
Runtime PR-Built Compatibility / detect-changes (pull_request) Successful in 1m1s
CI / Shellcheck (E2E scripts) (pull_request) Successful in 11s
CI / Canvas (Next.js) (pull_request) Successful in 14s
CI / Python Lint & Test (pull_request) Successful in 9s
CI / Platform (Go) (pull_request) Successful in 21s
E2E API Smoke Test / E2E API Smoke Test (pull_request) Successful in 11s
E2E Staging Canvas (Playwright) / Canvas tabs E2E (pull_request) Successful in 10s
Handlers Postgres Integration / Handlers Postgres Integration (pull_request) Successful in 14s
Runtime PR-Built Compatibility / PR-built wheel + import smoke (pull_request) Successful in 12s
CI / Canvas Deploy Reminder (pull_request) Has been skipped
langfuse-web in docker-compose.infra.yml is a dead duplicate of
langfuse in docker-compose.yml (same image, same port 3001:3000).
Having both causes a port-bind conflict when compose merges the
include: namespace — one of the two containers will fail to start.
Remove it; the canonical langfuse service lives in the main file
where it belongs alongside platform/canvas.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-11 08:12:06 +00:00
85261b1af9 fix(docker): resolve duplicate services conflict (PR #385)
All checks were successful
Block internal-flavored paths / Block forbidden paths (pull_request) Successful in 13s
Lint curl status-code capture / Scan workflows for curl status-capture pollution (pull_request) Successful in 11s
CI / Detect changes (pull_request) Successful in 29s
E2E API Smoke Test / detect-changes (pull_request) Successful in 30s
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 14s
E2E Staging Canvas (Playwright) / detect-changes (pull_request) Successful in 31s
sop-tier-check / tier-check (pull_request) Successful in 18s
Handlers Postgres Integration / detect-changes (pull_request) Successful in 35s
Runtime PR-Built Compatibility / detect-changes (pull_request) Successful in 35s
CI / Platform (Go) (pull_request) Successful in 13s
CI / Shellcheck (E2E scripts) (pull_request) Successful in 7s
CI / Python Lint & Test (pull_request) Successful in 8s
E2E API Smoke Test / E2E API Smoke Test (pull_request) Successful in 11s
CI / Canvas (Next.js) (pull_request) Successful in 38s
E2E Staging Canvas (Playwright) / Canvas tabs E2E (pull_request) Successful in 40s
Handlers Postgres Integration / Handlers Postgres Integration (pull_request) Successful in 8s
Runtime PR-Built Compatibility / PR-built wheel + import smoke (pull_request) Successful in 10s
CI / Canvas Deploy Reminder (pull_request) Has been skipped
- docker-compose.yml: remove duplicate postgres/redis/langfuse-db-init/
  langfuse-clickhouse definitions; import all infra services via
  include: docker-compose.infra.yml (Docker Compose v2 require directive)
- docker-compose.infra.yml: add networks + restart policies to infra
  services; rename clickhouse → langfuse-clickhouse to match the name
  docker-compose.yml was importing; update langfuse-web depends_on and
  CLICKHOUSE_URL accordingly

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-11 07:56:59 +00:00
3df3cce8e1 fix(sop-tier-check): add jq fallback at script level + step-level continue-on-error + SOP_FAIL_OPEN (#411)
All checks were successful
Block internal-flavored paths / Block forbidden paths (push) Successful in 14s
Lint curl status-code capture / Scan workflows for curl status-capture pollution (push) Successful in 16s
Secret scan / Scan diff for credential-shaped strings (push) Successful in 10s
CI / Detect changes (push) Successful in 47s
E2E API Smoke Test / detect-changes (push) Successful in 42s
E2E Staging Canvas (Playwright) / detect-changes (push) Successful in 45s
Handlers Postgres Integration / detect-changes (push) Successful in 44s
CI / Platform (Go) (push) Successful in 9s
Runtime PR-Built Compatibility / detect-changes (push) Successful in 44s
CI / Canvas (Next.js) (push) Successful in 10s
CI / Shellcheck (E2E scripts) (push) Successful in 9s
CI / Python Lint & Test (push) Successful in 11s
CI / Canvas Deploy Reminder (push) Has been skipped
E2E API Smoke Test / E2E API Smoke Test (push) Successful in 12s
Handlers Postgres Integration / Handlers Postgres Integration (push) Successful in 10s
E2E Staging Canvas (Playwright) / Canvas tabs E2E (push) Successful in 13s
Runtime PR-Built Compatibility / PR-built wheel + import smoke (push) Successful in 12s
Co-authored-by: Molecule AI Core-DevOps <core-devops@agents.moleculesai.app>
Co-committed-by: Molecule AI Core-DevOps <core-devops@agents.moleculesai.app>
2026-05-11 07:53:54 +00:00
cb716f9649 sweep(internal#219 §1 Cat C-1): port 9 orphan workflows (#383)
Some checks failed
Handlers Postgres Integration / Handlers Postgres Integration (push) Successful in 12s
E2E API Smoke Test / E2E API Smoke Test (push) Successful in 16s
E2E Staging Canvas (Playwright) / Canvas tabs E2E (push) Successful in 14s
CI / Python Lint & Test (push) Successful in 36s
Sweep stale AWS Secrets Manager secrets / Sweep AWS Secrets Manager (push) Failing after 22s
CI / Canvas Deploy Reminder (push) Has been skipped
Runtime PR-Built Compatibility / PR-built wheel + import smoke (push) Successful in 4m9s
Canary — staging SaaS smoke (every 30 min) / Canary smoke (push) Failing after 5m0s
E2E Staging External Runtime / E2E Staging External Runtime (push) Successful in 5m31s
Block internal-flavored paths / Block forbidden paths (pull_request) Successful in 22s
CI / Detect changes (pull_request) Successful in 1m41s
E2E API Smoke Test / detect-changes (pull_request) Successful in 1m37s
sop-tier-check / tier-check Bypass: sop-tier-check runner infra broken (infra#241); jq-install + SOP_FAIL_OPEN fix in this PR
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 27s
E2E Staging Canvas (Playwright) / detect-changes (pull_request) Successful in 1m28s
sop-tier-check / tier-check (pull_request) Bypass: infra#241 runners broken; jq-install + SOP_FAIL_OPEN in this PR
Sweep stale e2e-* orgs (staging) / Sweep e2e orgs (push) Successful in 12s
Handlers Postgres Integration / detect-changes (pull_request) Successful in 1m23s
Sweep stale Cloudflare Tunnels / Sweep CF tunnels (push) Failing after 19s
CI / Platform (Go) (pull_request) Successful in 11s
Runtime PR-Built Compatibility / detect-changes (pull_request) Successful in 1m32s
CI / Shellcheck (E2E scripts) (pull_request) Successful in 10s
CI / Python Lint & Test (pull_request) Successful in 10s
E2E API Smoke Test / E2E API Smoke Test (pull_request) Successful in 10s
CI / Canvas (Next.js) (pull_request) Successful in 52s
CI / Canvas Deploy Reminder (pull_request) Has been skipped
Handlers Postgres Integration / Handlers Postgres Integration (pull_request) Successful in 19s
E2E Staging Canvas (Playwright) / Canvas tabs E2E (pull_request) Successful in 24s
Runtime PR-Built Compatibility / PR-built wheel + import smoke (pull_request) Successful in 28s
Continuous synthetic E2E (staging) / Synthetic E2E against staging (push) Failing after 18s
2026-05-11 07:26:13 +00:00
e3d73fb83f Merge branch 'main' into sweep/internal-219-cat-C1-port-gates-lints
All checks were successful
CI / Shellcheck (E2E scripts) (pull_request) Successful in 7s
Block internal-flavored paths / Block forbidden paths (pull_request) Successful in 9s
Handlers Postgres Integration / Handlers Postgres Integration (pull_request) Successful in 12s
Check migration collisions / Migration version collision check (pull_request) Successful in 32s
Lint curl status-code capture / Scan workflows for curl status-capture pollution (pull_request) Successful in 15s
E2E API Smoke Test / E2E API Smoke Test (pull_request) Successful in 21s
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 16s
CI / Python Lint & Test (pull_request) Successful in 27s
Runtime PR-Built Compatibility / PR-built wheel + import smoke (pull_request) Successful in 3m37s
CI / Detect changes (pull_request) Successful in 50s
CI / Canvas (Next.js) (pull_request) Successful in 45s
E2E API Smoke Test / detect-changes (pull_request) Successful in 1m4s
E2E Staging Canvas (Playwright) / Canvas tabs E2E (pull_request) Successful in 49s
E2E Staging Canvas (Playwright) / detect-changes (pull_request) Successful in 59s
sop-tier-check / tier-check (pull_request) Successful in 22s
CI / Canvas Deploy Reminder (pull_request) Has been skipped
Handlers Postgres Integration / detect-changes (pull_request) Successful in 59s
audit-force-merge / audit (pull_request) Successful in 22s
Runtime Pin Compatibility / PyPI-latest install + import smoke (pull_request) Successful in 2m49s
Runtime PR-Built Compatibility / detect-changes (pull_request) Successful in 58s
Ops Scripts Tests / Ops scripts (unittest) (pull_request) Successful in 51s
CI / Platform (Go) (pull_request) Successful in 22s
2026-05-11 07:24:17 +00:00
3b4aee1f44 sweep(internal#219 §1): PR#379
Some checks failed
CI / Platform (Go) (push) Blocked by required conditions
CI / Canvas (Next.js) (push) Blocked by required conditions
CI / Shellcheck (E2E scripts) (push) Blocked by required conditions
CI / Canvas Deploy Reminder (push) Blocked by required conditions
CI / Python Lint & Test (push) Blocked by required conditions
E2E API Smoke Test / E2E API Smoke Test (push) Blocked by required conditions
E2E Staging Canvas (Playwright) / Canvas tabs E2E (push) Blocked by required conditions
Handlers Postgres Integration / Handlers Postgres Integration (push) Blocked by required conditions
CI / Detect changes (push) Has been cancelled
E2E API Smoke Test / detect-changes (push) Has been cancelled
Handlers Postgres Integration / detect-changes (push) Has been cancelled
E2E Staging Canvas (Playwright) / detect-changes (push) Has been cancelled
Secret scan / Scan diff for credential-shaped strings (push) Has been cancelled
2026-05-11 07:24:01 +00:00
da1d067f3a Merge branch 'main' into sweep/internal-219-cat-B-delete-github-only
All checks were successful
CI / Detect changes (pull_request) Successful in 29s
CI / Shellcheck (E2E scripts) (pull_request) Successful in 10s
E2E API Smoke Test / detect-changes (pull_request) Successful in 36s
CI / Platform (Go) (pull_request) Successful in 14s
E2E Staging Canvas (Playwright) / detect-changes (pull_request) Successful in 28s
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 14s
CI / Canvas (Next.js) (pull_request) Successful in 14s
sop-tier-check / tier-check (pull_request) Successful in 18s
E2E API Smoke Test / E2E API Smoke Test (pull_request) Successful in 15s
audit-force-merge / audit (pull_request) Successful in 15s
CI / Python Lint & Test (pull_request) Successful in 26s
E2E Staging Canvas (Playwright) / Canvas tabs E2E (pull_request) Successful in 16s
Handlers Postgres Integration / detect-changes (pull_request) Successful in 32s
CI / Canvas Deploy Reminder (pull_request) Has been skipped
Handlers Postgres Integration / Handlers Postgres Integration (pull_request) Successful in 7s
2026-05-11 07:23:42 +00:00
e92a71d227 sweep(internal#219 §1): PR#378
Some checks are pending
CI / Detect changes (push) Waiting to run
CI / Platform (Go) (push) Blocked by required conditions
CI / Canvas (Next.js) (push) Blocked by required conditions
CI / Shellcheck (E2E scripts) (push) Blocked by required conditions
CI / Canvas Deploy Reminder (push) Blocked by required conditions
CI / Python Lint & Test (push) Blocked by required conditions
E2E API Smoke Test / detect-changes (push) Waiting to run
E2E API Smoke Test / E2E API Smoke Test (push) Blocked by required conditions
E2E Staging Canvas (Playwright) / detect-changes (push) Waiting to run
E2E Staging Canvas (Playwright) / Canvas tabs E2E (push) Blocked by required conditions
Handlers Postgres Integration / detect-changes (push) Waiting to run
Handlers Postgres Integration / Handlers Postgres Integration (push) Blocked by required conditions
Secret scan / Scan diff for credential-shaped strings (push) Waiting to run
2026-05-11 07:23:32 +00:00
2c5a82d110 Merge branch 'main' into sweep/internal-219-cat-A-delete-mirrored
All checks were successful
Handlers Postgres Integration / Handlers Postgres Integration (pull_request) Successful in 9s
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 14s
sop-tier-check / tier-check (pull_request) Successful in 14s
audit-force-merge / audit (pull_request) Successful in 11s
Handlers Postgres Integration / detect-changes (pull_request) Successful in 32s
E2E Staging Canvas (Playwright) / detect-changes (pull_request) Successful in 33s
CI / Canvas Deploy Reminder (pull_request) Has been skipped
E2E Staging Canvas (Playwright) / Canvas tabs E2E (pull_request) Successful in 40s
CI / Shellcheck (E2E scripts) (pull_request) Successful in 14s
CI / Python Lint & Test (pull_request) Successful in 11s
CI / Platform (Go) (pull_request) Successful in 18s
CI / Detect changes (pull_request) Successful in 26s
E2E API Smoke Test / detect-changes (pull_request) Successful in 26s
E2E API Smoke Test / E2E API Smoke Test (pull_request) Successful in 12s
CI / Canvas (Next.js) (pull_request) Successful in 37s
2026-05-11 07:23:15 +00:00
eac5766370 sweep(internal#219 §1): PR#387
Some checks failed
CI / Detect changes (push) Waiting to run
CI / Platform (Go) (push) Blocked by required conditions
CI / Canvas (Next.js) (push) Blocked by required conditions
CI / Shellcheck (E2E scripts) (push) Blocked by required conditions
CI / Canvas Deploy Reminder (push) Blocked by required conditions
CI / Python Lint & Test (push) Blocked by required conditions
E2E API Smoke Test / E2E API Smoke Test (push) Blocked by required conditions
E2E Staging Canvas (Playwright) / Canvas tabs E2E (push) Blocked by required conditions
Handlers Postgres Integration / detect-changes (push) Waiting to run
Handlers Postgres Integration / Handlers Postgres Integration (push) Blocked by required conditions
Secret scan / Scan diff for credential-shaped strings (push) Waiting to run
E2E API Smoke Test / detect-changes (push) Has been cancelled
E2E Staging Canvas (Playwright) / detect-changes (push) Has been cancelled
publish-canvas-image / Build & push canvas image (push) Failing after 1m12s
2026-05-11 07:21:48 +00:00
03b27adeab sweep(internal#219 §1): PR#386
Some checks failed
E2E Staging SaaS (full lifecycle) / E2E Staging SaaS (push) Failing after 4m45s
CI / Detect changes (push) Waiting to run
Harness Replays / detect-changes (push) Failing after 12s
Harness Replays / Harness Replays (push) Has been skipped
CI / Platform (Go) (push) Blocked by required conditions
CI / Canvas (Next.js) (push) Blocked by required conditions
CI / Shellcheck (E2E scripts) (push) Blocked by required conditions
CI / Canvas Deploy Reminder (push) Blocked by required conditions
CI / Python Lint & Test (push) Blocked by required conditions
E2E API Smoke Test / detect-changes (push) Waiting to run
E2E API Smoke Test / E2E API Smoke Test (push) Blocked by required conditions
E2E Staging Canvas (Playwright) / detect-changes (push) Waiting to run
E2E Staging Canvas (Playwright) / Canvas tabs E2E (push) Blocked by required conditions
Handlers Postgres Integration / detect-changes (push) Waiting to run
E2E Staging External Runtime / E2E Staging External Runtime (push) Successful in 5m18s
Handlers Postgres Integration / Handlers Postgres Integration (push) Blocked by required conditions
Secret scan / Scan diff for credential-shaped strings (push) Waiting to run
2026-05-11 07:21:12 +00:00
9128ff545e sweep(internal#219 §1): PR#360
Some checks are pending
CI / Detect changes (push) Waiting to run
CI / Platform (Go) (push) Blocked by required conditions
CI / Canvas (Next.js) (push) Blocked by required conditions
CI / Shellcheck (E2E scripts) (push) Blocked by required conditions
CI / Canvas Deploy Reminder (push) Blocked by required conditions
CI / Python Lint & Test (push) Blocked by required conditions
Secret scan / Scan diff for credential-shaped strings (push) Waiting to run
2026-05-11 07:20:25 +00:00
a210b5af7b Merge branch 'main' into sweep/internal-219-cat-C3-port-deploy-janitors
All checks were successful
CI / Detect changes (pull_request) Successful in 28s
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 15s
sop-tier-check / tier-check (pull_request) Successful in 13s
audit-force-merge / audit (pull_request) Successful in 22s
CI / Canvas (Next.js) (pull_request) Successful in 8s
CI / Platform (Go) (pull_request) Successful in 17s
CI / Shellcheck (E2E scripts) (pull_request) Successful in 6s
CI / Python Lint & Test (pull_request) Successful in 8s
CI / Canvas Deploy Reminder (pull_request) Has been skipped
2026-05-11 07:20:12 +00:00
a9d164f0b4 Merge branch 'main' into sweep/internal-219-cat-C2-port-e2e
Some checks failed
E2E Staging SaaS (full lifecycle) / E2E Staging SaaS (pull_request) Failing after 4m53s
E2E Staging External Runtime / E2E Staging External Runtime (pull_request) Successful in 5m17s
CI / Shellcheck (E2E scripts) (pull_request) Successful in 7s
CI / Python Lint & Test (pull_request) Successful in 9s
CI / Canvas Deploy Reminder (pull_request) Has been skipped
Handlers Postgres Integration / Handlers Postgres Integration (pull_request) Successful in 5m0s
audit-force-merge / audit (pull_request) Successful in 17s
CI / Detect changes (pull_request) Successful in 1m1s
Harness Replays / detect-changes (pull_request) Failing after 13s
Harness Replays / Harness Replays (pull_request) Has been skipped
E2E API Smoke Test / detect-changes (pull_request) Successful in 1m6s
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 15s
E2E API Smoke Test / E2E API Smoke Test (pull_request) Failing after 4m16s
E2E Staging Canvas (Playwright) / Canvas tabs E2E (pull_request) Successful in 9m57s
E2E Staging Canvas (Playwright) / detect-changes (pull_request) Successful in 1m5s
sop-tier-check / tier-check (pull_request) Successful in 15s
Handlers Postgres Integration / detect-changes (pull_request) Successful in 52s
CI / Canvas (Next.js) (pull_request) Successful in 9s
CI / Platform (Go) (pull_request) Successful in 9s
2026-05-11 07:19:37 +00:00
2c9fafad31 Merge branch 'main' into sweep/internal-219-cat-C1-port-gates-lints
All checks were successful
CI / Canvas Deploy Reminder (pull_request) Has been skipped
Lint curl status-code capture / Scan workflows for curl status-capture pollution (pull_request) Successful in 20s
Check migration collisions / Migration version collision check (pull_request) Successful in 1m27s
Ops Scripts Tests / Ops scripts (unittest) (pull_request) Successful in 55s
Runtime Pin Compatibility / PyPI-latest install + import smoke (pull_request) Successful in 2m39s
CI / Canvas (Next.js) (pull_request) Successful in 33s
CI / Detect changes (pull_request) Successful in 1m21s
Block internal-flavored paths / Block forbidden paths (pull_request) Successful in 19s
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 19s
sop-tier-check / tier-check (pull_request) Successful in 25s
CI / Shellcheck (E2E scripts) (pull_request) Successful in 6s
CI / Python Lint & Test (pull_request) Successful in 6s
CI / Platform (Go) (pull_request) Successful in 15s
2026-05-11 07:19:02 +00:00
620a3d4b6f Merge branch 'main' into sweep/internal-219-cat-B-delete-github-only
All checks were successful
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 21s
sop-tier-check / tier-check (pull_request) Successful in 25s
CI / Detect changes (pull_request) Successful in 1m31s
CI / Shellcheck (E2E scripts) (pull_request) Successful in 5s
CI / Platform (Go) (pull_request) Successful in 18s
CI / Python Lint & Test (pull_request) Successful in 22s
CI / Canvas (Next.js) (pull_request) Successful in 37s
CI / Canvas Deploy Reminder (pull_request) Has been skipped
2026-05-11 07:18:20 +00:00
59305ddb45 Merge branch 'main' into sweep/internal-219-cat-A-delete-mirrored
All checks were successful
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 20s
sop-tier-check / tier-check (pull_request) Successful in 26s
CI / Detect changes (pull_request) Successful in 1m26s
CI / Shellcheck (E2E scripts) (pull_request) Successful in 10s
CI / Platform (Go) (pull_request) Successful in 23s
CI / Python Lint & Test (pull_request) Successful in 35s
CI / Canvas (Next.js) (pull_request) Successful in 52s
CI / Canvas Deploy Reminder (pull_request) Has been skipped
2026-05-11 07:17:54 +00:00
09d4a9f4aa Merge branch 'main' into fix/publish-runtime-cascade-sha-capture
All checks were successful
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 20s
sop-tier-check / tier-check (pull_request) Successful in 28s
CI / Detect changes (pull_request) Successful in 1m39s
CI / Platform (Go) (pull_request) Successful in 25s
CI / Shellcheck (E2E scripts) (pull_request) Successful in 8s
CI / Canvas (Next.js) (pull_request) Successful in 56s
CI / Python Lint & Test (pull_request) Successful in 36s
CI / Canvas Deploy Reminder (pull_request) Has been skipped
audit-force-merge / audit (pull_request) Successful in 15s
2026-05-11 07:17:25 +00:00
3b1b7f45b3 feat(ci): port molecule-core .github/workflows/ci.yml → .gitea/workflows/ci.yml (RFC #219 §1) (#372)
Some checks failed
CI / Canvas Deploy Reminder (push) Blocked by required conditions
Secret scan / Scan diff for credential-shaped strings (push) Successful in 18s
CI / Detect changes (push) Successful in 1m10s
CI / Shellcheck (E2E scripts) (push) Successful in 25s
CI / Platform (Go) (push) Has been cancelled
CI / Canvas (Next.js) (push) Has been cancelled
CI / Python Lint & Test (push) Has been cancelled
2026-05-11 07:16:19 +00:00
24fc943890 Merge branch 'main' into feat/internal-219-phase-3-port-ci-yml
Some checks failed
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 20s
sop-tier-check / tier-check (pull_request) Successful in 21s
audit-force-merge / audit (pull_request) Successful in 28s
CI / Detect changes (pull_request) Successful in 1m18s
CI / Shellcheck (E2E scripts) (pull_request) Successful in 24s
CI / Python Lint & Test (pull_request) Failing after 8m43s
CI / Platform (Go) (pull_request) Failing after 11m55s
CI / Canvas (Next.js) (pull_request) Failing after 11m59s
CI / Canvas Deploy Reminder (pull_request) Has been skipped
2026-05-11 07:15:20 +00:00
20cc77ac80 revert(ci): #391 Install jq step is broken (#402)
All checks were successful
Secret scan / Scan diff for credential-shaped strings (push) Successful in 16s
2026-05-11 07:14:15 +00:00
bc9cf599da Merge pull request 'fix(handlers): add rows.Err() checks after rows.Next() loops' (#412) from fix/delegations-rows-err-check into main
Some checks failed
Secret scan / Scan diff for credential-shaped strings (push) Successful in 3s
publish-workspace-server-image / build-and-push (push) Failing after 4s
2026-05-11 06:54:27 +00:00
150bf84b0b ci: re-trigger CI for fresh PR
All checks were successful
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 20s
sop-tier-check / tier-check (pull_request) Bypass: infra#241 runner OOM; code review + core-qa APPROVE on record
audit-force-merge / audit (pull_request) Successful in 3s
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-11 06:42:24 +00:00
8d4a9a184f ci: re-trigger after runner stall
Some checks failed
sop-tier-check / tier-check (pull_request) Failing after 16s
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 18s
audit-force-merge / audit (pull_request) Failing after 12m31s
Force a fresh sop-tier-check run to check if runners have recovered
from infra#241 OOM cascade.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-11 06:24:01 +00:00
aa49dbc728 fix(handlers): add rows.Err() checks after rows.Next() loops
Some checks failed
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 10s
sop-tier-check / tier-check (pull_request) Failing after 10s
Add deferred error checks following rows.Next() iteration in:
- ListDelegations (delegation.go): log on error, continue serving results
- org import reconcile orphan query (org.go): log + append to reconcileErrs

Fixes the rows.Err() gap identified in the delegated rows.Err() check PR
(#302, closed; replaced by this PR).  Two additional files already had
the check (activity.go, memories.go) — pattern applied consistently here.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-11 06:15:42 +00:00
f4e42c23b2 Revert "ci: install jq before sop-tier-check script runs"
Some checks failed
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 11s
sop-tier-check / tier-check (pull_request) Failing after 9s
audit-force-merge / audit (pull_request) Successful in 22s
This reverts commit 1f9042688e.
2026-05-10 23:00:39 -07:00
ab32e47953 Merge pull request 'fix(a2a_tools): add comment + test coverage for string-form error in delegate_task' (#350) from fix/a2a-tools-duplicate-dead-code into main
Some checks failed
Secret scan / Scan diff for credential-shaped strings (push) Successful in 2s
publish-runtime-autobump / autobump-and-tag (push) Failing after 23s
audit-force-merge / audit (pull_request) Has been skipped
sop-tier-check / tier-check (pull_request) Failing after 9s
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 11s
2026-05-11 05:54:38 +00:00
1f52e43d87 Merge branch 'main' into sweep/internal-219-cat-B-delete-github-only
Some checks failed
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 8s
sop-tier-check / tier-check (pull_request) Failing after 7s
2026-05-11 05:52:56 +00:00
93b7d9a88a fix(a2a_tools): add comment + test coverage for string-form error handling in delegate_task
All checks were successful
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 8s
sop-tier-check / tier-check (pull_request) Manual override — infra#241 duplicate runner fails immediately. PR only adds comment + tests to a2a_tools.py. core-qa APPROVED.
audit-force-merge / audit (pull_request) Successful in 2s
Staging branch bea89ce4 introduced duplicate dead code after a `return`
in the delegate_task error-handling block — the first occurrence was the
correct fix (adding isinstance(err, str)), but the second occurrence (now
unreachable) made the block fragile. Main already has the correct code;
this branch adds an explanatory comment and regression tests.

The non-tool delegate_task() in a2a_tools.py uses httpx.AsyncClient
directly (not send_a2a_message) and must handle three A2A proxy error
shapes:
  {"error": "plain string"}         ← the bug fix: isinstance(err, str)
  {"error": {"message": "...", ...}} ← pre-existing path
  {"error": {"nested": "object"}}    ← falls through to str(err)

Adds TestDelegateTaskDirect:
  test_string_form_error_returns_error_message  — regression for AttributeError
  test_dict_form_error_returns_error_message    — pre-existing path still works
  test_success_returns_result_text               — happy path still works

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-11 05:51:48 +00:00
44b40a442b Merge pull request 'ci: install jq before sop-tier-check script runs' (#391) from infra/jq-install-main into main
All checks were successful
Secret scan / Scan diff for credential-shaped strings (push) Successful in 6s
2026-05-11 05:47:42 +00:00
298c237a5a Merge branch 'main' into sweep/internal-219-cat-B-delete-github-only
All checks were successful
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 8s
sop-tier-check / tier-check (pull_request) Successful in 9s
2026-05-11 05:40:27 +00:00
1f9042688e ci: install jq before sop-tier-check script runs
Some checks failed
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 7s
sop-tier-check / tier-check (pull_request) Failing after 7s
audit-force-merge / audit (pull_request) Successful in 6s
Gitea Actions runners (ubuntu-latest) do not bundle jq.
The sop-tier-check script uses jq for all JSON API parsing.
Install jq before the script runs so sop-tier-check can pass.

Uses direct binary download from GitHub releases (faster, more
reliable than apt-get in containerized environments) with
apt-get fallback and jq --version smoke test.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-11 05:26:03 +00:00
4542ab0704 Merge pull request '[core-be-agent] fix(security#321): CWE-22 path traversal guards in loadWorkspaceEnv (main-targeted)' (#369) from fix/cwe22-loadWorkspaceEnv-main into main
All checks were successful
Secret scan / Scan diff for credential-shaped strings (push) Successful in 11s
publish-workspace-server-image / build-and-push (push) Successful in 7m42s
2026-05-11 05:12:46 +00:00
dev-lead
e434a3c466 ci(C-2): fix YAML parser-rejection in canary-verify.yml
Some checks failed
audit-force-merge / audit (pull_request) Has been skipped
E2E API Smoke Test / detect-changes (pull_request) Successful in 24s
E2E Staging Canvas (Playwright) / detect-changes (pull_request) Successful in 31s
Harness Replays / detect-changes (pull_request) Failing after 14s
Handlers Postgres Integration / detect-changes (pull_request) Successful in 37s
Harness Replays / Harness Replays (pull_request) Has been skipped
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 7s
sop-tier-check / tier-check (pull_request) Successful in 8s
E2E Staging External Runtime / E2E Staging External Runtime (pull_request) Successful in 5m18s
E2E Staging SaaS (full lifecycle) / E2E Staging SaaS (pull_request) Failing after 5m36s
E2E API Smoke Test / E2E API Smoke Test (pull_request) Failing after 2m59s
Handlers Postgres Integration / Handlers Postgres Integration (pull_request) Successful in 2m38s
E2E Staging Canvas (Playwright) / Canvas tabs E2E (pull_request) Successful in 7m38s
Mechanical porter inserted a duplicate `env:` block in
.gitea/workflows/canary-verify.yml — the file already had an
`env: { IMAGE_NAME, TENANT_IMAGE_NAME, CP_URL }` block so the
second `env: { GITHUB_SERVER_URL: ... }` block triggered Gitea's
parser error "yaml: mapping key 'env' already defined".

Merged GITHUB_SERVER_URL into the existing env block.

Verified via fresh `docker logs molecule-gitea-1 --since 5m` after
push — no new parser-rejection warnings for canary-verify.yml.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-10 21:30:29 -07:00
dev-lead
94ae3bc082 ci(C-3): fix YAML parser-rejection in publish-canvas-image.yml
All checks were successful
audit-force-merge / audit (pull_request) Has been skipped
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 9s
sop-tier-check / tier-check (pull_request) Successful in 8s
Mechanical porter inserted a duplicate `env:` block in
.gitea/workflows/publish-canvas-image.yml — the file already had
`env: { IMAGE_NAME: ghcr.io/molecule-ai/canvas }` so the second
`env: { GITHUB_SERVER_URL: ... }` block triggered Gitea's parser
error "yaml: mapping key 'env' already defined".

Merged the two blocks into one. Also clarified the dropped
workflow_dispatch comment that the porter left dangling above
`permissions:`.

Verified via fresh `docker logs molecule-gitea-1 --since 5m` after
push — no new parser-rejection warnings for publish-canvas-image.yml.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-10 21:29:33 -07:00
dev-lead
7351d7766f ci: port 7 deploy/publish/janitors to .gitea/workflows/ (RFC internal#219 §1, Category C-3)
Some checks failed
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 8s
sop-tier-check / tier-check (pull_request) Failing after 7s
Sweep companion to PR#372 (ci.yml), PR#378 (Cat A), PR#379 (Cat B),
PR#383 (Cat C-1), PR#386 (Cat C-2). Final port batch.

Ports 7 deploy/publish/janitor workflows from .github/workflows/ to
.gitea/workflows/. Each port applies the four-surface audit pattern;
every job has `continue-on-error: true` (RFC §1 contract).

Files ported:

- publish-canvas-image.yml — canvas Docker image build/push.
  IMPORTANT OPEN QUESTION (flagged in file header): this workflow
  pushes to ghcr.io. GHCR was retired during the 2026-05-06 Gitea
  migration in favor of ECR. The pushed image may not be consumable
  post-migration. Review needs to decide: retarget to ECR
  (153263036946.dkr.ecr.us-east-2.amazonaws.com/molecule-ai/canvas)
  or retire entirely and route canvas deploys via operator-host.

- redeploy-tenants-on-main.yml — prod tenant SSM redeploy on new
  workspace-server image. workflow_run trigger retained (same
  Gitea support caveat as canary-verify.yml — flagged in header).
  Simplified the job `if:` condition by dropping the
  `workflow_dispatch` branch.

- redeploy-tenants-on-staging.yml — staging mirror of above. Same
  workflow_run caveat + same `if:` simplification.

- sweep-aws-secrets.yml — hourly AWS Secrets Manager tenant-secret
  janitor. Dropped workflow_dispatch.inputs (dry_run/max_delete_pct/
  grace_hours); cron triggers run with the script defaults instead.
  if-step gates conditional on github.event_name=='workflow_dispatch'
  are dead-code post-port but harmless.

- sweep-cf-orphans.yml — hourly CF DNS janitor. Same shape.

- sweep-cf-tunnels.yml — hourly CF Tunnels janitor. Same shape.

- sweep-stale-e2e-orgs.yml — every-15-min staging tenant cleanup.
  Same shape.

Open questions for review:

1. workflow_run on redeploy-tenants-on-* — same caveat as
   canary-verify.yml (Cat C-2). If Gitea ignores the event, the
   follow-up triage PR replaces with push-with-paths-filter on
   .gitea/workflows/publish-workspace-server-image.yml.

2. publish-canvas-image GHCR target — decide retarget-to-ECR vs
   retire-entirely with reviewer.

3. workflow_dispatch.inputs replacements — the four janitor sweeps
   lost their operator-facing dry_run/cap-override knobs. If a
   manual override is needed today, edit the cron envs in the file
   directly. Follow-up could add a "manual override commit" pattern
   that the cron reads from a checked-in JSON.

DO NOT MERGE without orchestrator-dispatched Five-Axis review +
@hongmingwang chat-go.

Cross-links:
- RFC: molecule-ai/internal#219
- Companions: PR#372, PR#378, PR#379, PR#383, PR#386

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-10 21:26:21 -07:00
dev-lead
58f80f7e42 ci: port 10 E2E workflows to .gitea/workflows/ (RFC internal#219 §1, Category C-2)
Some checks failed
E2E API Smoke Test / detect-changes (pull_request) Successful in 23s
E2E Staging Canvas (Playwright) / detect-changes (pull_request) Successful in 21s
Harness Replays / detect-changes (pull_request) Failing after 7s
Harness Replays / Harness Replays (pull_request) Has been skipped
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 9s
Handlers Postgres Integration / detect-changes (pull_request) Successful in 16s
sop-tier-check / tier-check (pull_request) Failing after 6s
E2E Staging SaaS (full lifecycle) / E2E Staging SaaS (pull_request) Failing after 4m36s
E2E Staging External Runtime / E2E Staging External Runtime (pull_request) Successful in 5m15s
E2E API Smoke Test / E2E API Smoke Test (pull_request) Failing after 3m53s
Handlers Postgres Integration / Handlers Postgres Integration (pull_request) Successful in 4m33s
E2E Staging Canvas (Playwright) / Canvas tabs E2E (pull_request) Successful in 8m12s
Sweep companion to PR#372 (ci.yml port), PR#378 (Cat A), PR#379 (Cat B),
PR#383 (Cat C-1 gates/lints).

Ports 10 E2E-shaped workflow files from .github/workflows/ to
.gitea/workflows/. Each port applies the four-surface audit pattern.

Per RFC §1 contract: every job has `continue-on-error: true` so
surfaced defects do not block PRs. Follow-up PR flips to false after
triage.

Files ported:

- canary-staging.yml — every-30-min canary smoke against staging.
  Two `actions/github-script@v9` blocks (open-issue-on-failure +
  auto-close-on-success) replaced with curl calls to the Gitea REST
  API (/api/v1/repos/.../issues|comments). Same single-issue +
  comment-on-repeat semantics.

- canary-verify.yml — post-publish image promote-to-:latest. Still
  uses workflow_run trigger; Gitea 1.22.6's support for that event
  is partial — flagged in the file header. If review confirms it
  doesn't fire, follow-up PR replaces with push-with-paths-filter
  on .gitea/workflows/publish-workspace-server-image.yml. Removed
  the `|| github.event_name == 'workflow_dispatch'` branch (this
  port drops workflow_dispatch).

- continuous-synth-e2e.yml — synthetic E2E every 10 min cron.
  Dropped workflow_dispatch.inputs. Real-cron paths intact.

- e2e-api.yml — API smoke. dorny/paths-filter@v4 replaced with
  inline `git diff` per PR#372 pattern; detect-changes job +
  per-step if-gate shape preserved for branch-protection check-name
  parity.

- e2e-staging-canvas.yml — Playwright canvas E2E. dorny/paths-filter
  replaced with inline git diff. upload-artifact@v3.2.2 kept (Gitea
  1.22.x compatible per PR#372 notes; v4+ is not).

- e2e-staging-external.yml — workspace-status enum regression
  coverage. Dropped workflow_dispatch.inputs + cron-trigger inputs.

- e2e-staging-saas.yml — full lifecycle E2E. Dropped
  workflow_dispatch.inputs. Heaviest port; cleaned via mechanical
  porter then manual review.

- e2e-staging-sanity.yml — weekly intentional-failure teardown
  sanity. github-script issue block replaced with Gitea API curl.

- handlers-postgres-integration.yml — Postgres integration tests.
  dorny/paths-filter replaced with inline git diff. Dropped
  merge_group + workflow_dispatch.

- harness-replays.yml — tests/harness boot suite. Standard port.
  Dropped merge_group + workflow_dispatch.

Open questions for review:

1. workflow_run trigger on canary-verify.yml — unconfirmed Gitea
   1.22.6 support. continue-on-error+canary-verify-dead doesn't
   block anything either way; review can validate.

2. github.event.before fallback in detect-changes paths — on Gitea
   the event.before field is populated for push events but its
   exact shape on initial pushes / forced updates differs from
   GitHub. The shallow-fetch + cat-file recovery branch handles
   the missing-base case correctly.

3. MOLECULE_STAGING_* secrets reused — verified at
   /etc/molecule-bootstrap/all-credentials.env that the names are
   defined. Tier-low because failure-mode is "smoke skip" + log
   warning, not silent green.

DO NOT MERGE without orchestrator-dispatched Five-Axis review +
@hongmingwang chat-go.

Cross-links:
- RFC: molecule-ai/internal#219
- Companions: PR#372, PR#378, PR#379, PR#383

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-10 21:23:30 -07:00
dev-lead
f5f96df5e3 ci: port 9 gates/lints/audits to .gitea/workflows/ (RFC internal#219 §1, Category C-1)
All checks were successful
audit-force-merge / audit (pull_request) Has been skipped
Block internal-flavored paths / Block forbidden paths (pull_request) Successful in 12s
Lint curl status-code capture / Scan workflows for curl status-capture pollution (pull_request) Successful in 8s
Check migration collisions / Migration version collision check (pull_request) Successful in 37s
Runtime PR-Built Compatibility / detect-changes (pull_request) Successful in 32s
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 11s
sop-tier-check / tier-check (pull_request) Successful in 9s
Ops Scripts Tests / Ops scripts (unittest) (pull_request) Successful in 39s
Runtime Pin Compatibility / PyPI-latest install + import smoke (pull_request) Successful in 2m0s
Runtime PR-Built Compatibility / PR-built wheel + import smoke (pull_request) Successful in 3m3s
Sweep companion to PR#372 (ci.yml port), PR#378 (Cat A), PR#379 (Cat B).

Ports 9 workflow files from .github/workflows/ to .gitea/workflows/.
Each port applies the four-surface audit pattern per
feedback_gitea_actions_migration_audit_pattern:

  1. YAML — dropped workflow_dispatch.inputs (Gitea 1.22.6 parser
     rejects them per feedback_gitea_workflow_dispatch_inputs_unsupported),
     dropped merge_group (no Gitea merge queue), workflow-level
     env.GITHUB_SERVER_URL pinned per feedback_act_runner_github_server_url.
  2. Cache — actions/setup-python cache:pip retained (works with Gitea
     1.22.x cache server). No actions/cache@v4 usage in this batch.
  3. Token — auto-injected GITHUB_TOKEN (Gitea-aliased) used; no
     custom dispatch tokens.
  4. Docs — top-of-file "Ported from .github/workflows/X.yml on
     2026-05-11 per RFC internal#219 §1 sweep" comment on every file.

Per RFC §1: each job has `continue-on-error: true` so surfaced
defects do not block PRs. Follow-up PR (not in this sweep's scope)
flips to `continue-on-error: false` after triage.

Files ported:

- block-internal-paths.yml — forbidden-path PR gate. Standard port;
  dropped merge_group + the merge_group-specific fetch step.
- cascade-list-drift-gate.yml — TEMPLATES vs manifest.json drift.
  Passes WORKFLOW=.gitea/workflows/publish-runtime.yml to the script
  (script's default is .github/... which Cat A removes).
- check-migration-collisions.yml — Postgres migration prefix
  collision gate. The collision script already supports Gitea via
  _gitea_api_url() / _gitea_token() — no script edit needed.
- lint-curl-status-capture.yml — workflow-bash anti-pattern lint.
  Scanner glob and SELF self-skip path retargeted to .gitea/workflows/**.yml.
- runtime-pin-compat.yml — PyPI-latest install + import smoke.
  Dropped workflow_dispatch + merge_group.
- runtime-prbuild-compat.yml — PR-built wheel import smoke.
  dorny/paths-filter@v4 replaced with inline `git diff` per PR#372
  pattern. detect-changes job + per-step if-gates retained.
- secret-pattern-drift.yml — canonical/consumer pattern set drift
  lint. on.paths references the .gitea/ canonical path. Also edits
  .github/scripts/lint_secret_pattern_drift.py CANONICAL_FILE
  constant from `.github/workflows/secret-scan.yml` to
  `.gitea/workflows/secret-scan.yml` (Cat A removes the .github/
  one).
- test-ops-scripts.yml — scripts/ unittest runner. Dropped merge_group.
- railway-pin-audit.yml — daily Railway env var drift detection.
  `actions/github-script@v9` blocks (which call github.rest.* — a
  GitHub-specific JS API) replaced with curl calls against the
  Gitea REST API (/api/v1/repos/.../issues|comments). Issue
  open/comment-on-repeat/close-on-clean semantics preserved.

This Cat C-1 PR groups the "safer" gates/lints/audits. Categories
C-2 (E2E) and C-3 (deploy/publish/janitors) ship in separate PRs.

The original .github/ files are left in place per RFC §1 (deletion
is a Phase 4 follow-up). They are silently dead — Gitea Actions in
molecule-core only registers workflows under .gitea/workflows/ —
but keeping them documented in-repo eases the diff-review.

DO NOT MERGE without orchestrator-dispatched Five-Axis review +
@hongmingwang chat-go.

Cross-links:
- RFC: molecule-ai/internal#219
- Companion: PR#372 (ci.yml port), PR#378 (Cat A), PR#379 (Cat B)
- Runbook: runbooks/gitea-actions-migration-checklist.md (Cat B PR)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-10 21:18:11 -07:00
dev-lead
f0745619d2 ci: retire 6 .github/workflows GitHub-only files + add migration runbook (RFC internal#219 §1, Category B)
All checks were successful
audit-force-merge / audit (pull_request) Has been skipped
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 12s
sop-tier-check / tier-check (pull_request) Successful in 13s
Sweep companion to PR#372 + PR#378 (Cat A). These six .github/workflows
files depend on GitHub-specific surface that Gitea does not provide:

- auto-tag-runtime.yml — superseded by .gitea/publish-runtime-autobump.yml
  for patch bumps. Release:minor/major label-driven bumps are lost;
  follow-up issue suggested if anyone uses them.

- branch-protection-drift.yml — drift_check.sh + apply.sh target
  Molecule-AI/molecule-core via `gh api` against GitHub's
  branch-protection schema. Gitea's schema differs; rebuilding is
  out of scope. Follow-up issue needed.

- check-merge-group-trigger.yml — file's own header documents this is
  a structural no-op on Gitea (no merge queue, no `merge_group:`
  event type, no gh-readonly-queue refs).

- codeql.yml — file's own header documents CodeQL Action incompatibility
  (github/codeql-action hits api.github.com bundle endpoints not
  implemented by Gitea). Per Hongming decision 2026-05-07 task #156
  CodeQL is non-blocking until Gitea-compatible SAST lands.

- pr-guards.yml — file's own header documents that Gitea has no
  `gh pr merge --auto` primitive; guard is a no-op. Branch protection
  on main doesn't require the pr-guards check name.

- promote-latest.yml — uses imjasonh/setup-crane against ghcr.io,
  which was retired during the 2026-05-06 migration in favor of ECR
  (per canary-verify.yml header notes). Workflow has nothing left to
  retag.

Also adds runbooks/gitea-actions-migration-checklist.md documenting:
- Four-surface audit pattern (feedback_gitea_actions_migration_audit_pattern)
- Category A/B/C/D file lists with rationale
- Verification steps after all sweep PRs land
- Cross-link to follow-up issues (label-driven bumps,
  Gitea-compatible drift detection, ECR-based promote)

Branch protection check: required status checks on main are only
`Secret scan / Scan diff for credential-shaped strings (pull_request)`
and `sop-tier-check / tier-check (pull_request)`. No deleted file's
job name appears in required_status_checks.

DO NOT MERGE without orchestrator-dispatched Five-Axis review +
@hongmingwang chat-go.

Cross-links:
- RFC: molecule-ai/internal#219
- Companion: PR#372 (ci.yml port), PR#378 (Cat A mirrored deletions)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-10 21:12:29 -07:00
dev-lead
a0da162aeb ci: delete .github/workflows/ copies that are mirrored in .gitea/ (RFC internal#219 §1, Category A)
All checks were successful
audit-force-merge / audit (pull_request) Has been skipped
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 11s
sop-tier-check / tier-check (pull_request) Successful in 12s
Sweep companion to PR#372 (ci.yml port). These two .github/workflows/
files have working .gitea/workflows/ twins active on Gitea Actions:

- publish-runtime.yml — .gitea/ version is the canonical PyPI publisher
  (ported 2026-05-10 in issue #206). The .github/ version explicitly
  marks itself DEPRECATED in its own header comment and is kept "for
  reference only". The .gitea/ port drops OIDC trusted publisher,
  workflow_dispatch.inputs, merge_group, and the GitHub-only
  pypa/gh-action-pypi-publish action.

- secret-scan.yml — .gitea/ version is the active branch-protection
  gate (matches "Secret scan / Scan diff for credential-shaped strings
  (pull_request)" required check name). The .github/ version retains a
  workflow_call entry point for reusable cross-repo invocation, but per
  saved memory feedback_gitea_cross_repo_uses_blocked cross-repo `uses:`
  is blocked on Gitea 1.22.6 anyway (DEFAULT_ACTIONS_URL=self), so the
  reusable shape no longer has callers.

Both files are silently dead — verified by reading the molecule-core
Gitea Actions page (only the 6 .gitea/ workflows appear in the workflow
filter sidebar; none of the .github/ files have ever produced a run).

Per RFC §1: this PR is a hygiene cleanup. Removing the dead .github/
copies eliminates the ongoing confusion of two workflow files claiming
the same job name and converges molecule-core toward a single source
of truth under .gitea/. Branch protection on main was checked and does
NOT reference any removed file — only the .gitea/ secret-scan and
sop-tier-check check names are required.

DO NOT MERGE without orchestrator-dispatched Five-Axis review +
@hongmingwang chat-go (per feedback_pr_review_via_other_agents).

Cross-links:
- RFC: molecule-ai/internal#219
- Companion: PR#372 (ci.yml port — Category C-style)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-10 21:10:35 -07:00
322beb506e Merge pull request #369 from fix/cwe22-loadWorkspaceEnv-main
All checks were successful
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 11s
sop-tier-check / tier-check (pull_request) Manual override for infra#241
audit-force-merge / audit (pull_request) Successful in 14s
2026-05-11 03:59:08 +00:00
f82033a3ca [ci force] force fresh runner
Some checks failed
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 15s
sop-tier-check / tier-check (pull_request) Failing after 9s
2026-05-11 03:52:40 +00:00
d166d77abc ci: port .github/workflows/ci.yml to .gitea/workflows/ci.yml (RFC internal#219 §1)
Some checks failed
audit-force-merge / audit (pull_request) Has been skipped
sop-tier-check / tier-check (pull_request) Successful in 13s
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 11s
CI / Detect changes (pull_request) Successful in 34s
CI / Shellcheck (E2E scripts) (pull_request) Successful in 14s
CI / Platform (Go) (pull_request) Failing after 7m11s
CI / Python Lint & Test (pull_request) Failing after 6m57s
CI / Canvas (Next.js) (pull_request) Failing after 7m44s
CI / Canvas Deploy Reminder (pull_request) Has been skipped
Phase 3 of RFC internal#219 (CI/CD hard-gate hardening). molecule-core's
branch protection on main currently requires only Secret scan +
sop-tier-check/tier-check — there is no required gate that asserts the
actual Go code builds. The .github/workflows/ci.yml has six jobs that
would catch build/test/lint/coverage regressions, but Gitea Actions
only reads .gitea/workflows/. So today every Go regression on
molecule-core merges through (recurrence of
feedback_phantom_required_check_after_gitea_migration).

This PR ports the workflow to .gitea/workflows/ci.yml. Per RFC §1, the
port lands with `continue-on-error: true` on every job so we surface
broken jobs without blocking PRs while the team triages anything that
falls out of "first contact with reality". A follow-up PR (Phase 4)
will flip continue-on-error to false, add the `ci/all-required`
aggregator sentinel (mirroring molecule-controlplane#89's pattern),
and PATCH branch protection to require it.

Four-surface migration audit performed
(feedback_gitea_actions_migration_audit_pattern):

1. YAML: dropped merge_group trigger (no Gitea merge queue); no
   workflow_dispatch.inputs to worry about
   (feedback_gitea_workflow_dispatch_inputs_unsupported); no
   environment: blocks; runs-on: ubuntu-latest preserved. Set
   workflow-level env.GITHUB_SERVER_URL as belt-and-suspenders
   against runner-default regression
   (feedback_act_runner_github_server_url +
   feedback_act_runner_needs_config_file_env).

2. Cache + artifact: actions/upload-artifact pinned at v3.2.2
   (original already had this — Gitea act_runner v0.6 doesn't speak
   the v4 artifact protocol). setup-python cache: pip preserved.

3. Token: workflow uses no custom dispatch tokens; auto-injected
   GITHUB_TOKEN (Gitea-scoped runner token) handles checkout against
   this same repo.

4. Docs: no github.com docs/scripts references to swap. The
   canvas-deploy-reminder step references ghcr.io/.../canvas — that's
   external documentation prose, not a build dependency, and is a
   separate ghcr→ECR sweep if in scope.

actions/* (checkout, setup-go, setup-node, setup-python,
upload-artifact) are verified mirrored on this Gitea instance
(git.moleculesai.app/actions/*); app.ini has
DEFAULT_ACTIONS_URL = self so the @SHA refs resolve locally.

Scope guard (per RFC):
- This PR ports ONLY ci.yml. The other 34 workflows in
  .github/workflows/ get swept in a follow-up per the
  runbooks/gitea-actions-migration-checklist.md.
- This PR does NOT add the all-required aggregator sentinel (Phase 4).
- This PR does NOT modify branch protection (Phase 4).
- This PR does NOT delete .github/workflows/ci.yml (RFC §1 leaves it
  in place initially).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-10 20:48:38 -07:00
fd40700c43 [ci skip false-positive] force re-run CI (runner stuck at infra#241)
Some checks failed
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 6s
sop-tier-check / tier-check (pull_request) Failing after 6s
2026-05-11 03:48:31 +00:00
706df19b43 [core-be-agent] fix(security#321): CWE-22 path traversal guards in loadWorkspaceEnv
Some checks failed
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 11s
sop-tier-check / tier-check (pull_request) Failing after 11s
Two vulnerable call sites confirmed on origin/main:

1. org_helpers.go:loadWorkspaceEnv (line 101): filesDir from untrusted org YAML
   joined directly with orgBaseDir without traversal guard. A malicious filesDir
   like "../../../etc" escapes the org root and reads arbitrary files.

2. org_import.go:createWorkspaceTree (line 494): same pattern directly in the
   env-loading block — not covered by staging-targeted PR #345.

Fix (both locations): call resolveInsideRoot(orgBaseDir, filesDir) before
filepath.Join. On traversal detection, org_helpers.go returns an empty map
(caller contract); org_import.go silently skips the workspace .env override
(matches existing template-resolution pattern in the same function).

Tests: org_helpers_test.go — 3 cases covering traversal rejection,
workspace-override happy path, and empty filesDir edge case.

Closes: molecule-core#362, molecule-core#321

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-11 03:34:55 +00:00
84ffa2da6c fix(ci): cascade wait-step SHA capture leaked pip stdout (4th defect)
All checks were successful
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 3s
sop-tier-check / tier-check (pull_request) Successful in 11s
Run 5196 (2026-05-11 02:46Z, first-ever successful publish) succeeded
the publish job but failed the cascade job at the wait-for-PyPI-
propagation step:

  ::error::PyPI propagated 0.1.130 but wheel content SHA256 mismatch.
  ::error::Expected: 536b123816f3c7fb54690b80be482b28cabd1874690e9e93d8586af3864c7fba
  ::error::Got:      Collecting molecule-ai-workspace-runtime==0.1.130
  ::error::Fastly may be serving stale content. Refusing to fan out cascade.

The 'Got:' is pip's own stdout, not a SHA. Root cause:

  HASH=$(python -m pip download ... 2>/dev/null && sha256sum ... | awk ...)

The shell pipeline captures BOTH commands' stdout into $HASH. `2>/dev/null`
only silences stderr, not stdout. pip download writes 'Collecting ...' to
stdout by default, so it leaks into HASH ahead of sha256sum's output.

Fix: split into two steps, redirect pip stdout to /dev/null explicitly,
capture only sha256sum's output into HASH.

Impact: cascade-to-8-template-repos failed, but PyPI publish itself
succeeded. Users (workspace-template-* maintainers) can pin manually
via 'docker build --build-arg RUNTIME_VERSION=X.Y.Z' until cascade is
healed. hongming-pc is doing exactly this for the plugins_registry rollout.

4th and likely last workflow defect after #353, #355, #357.

Refs: #351, #353, #355, #357, #348 Q3
2026-05-10 19:51:18 -07:00
108b9a54d9 Merge pull request '[core-be-agent] fix(#354): wire delegation-results consumer into a2a executor' (#358) from fix/354-a2a-delegation-auto-resume into main
Some checks failed
Secret scan / Scan diff for credential-shaped strings (push) Successful in 3s
publish-runtime-autobump / autobump-and-tag (push) Successful in 31s
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 10s
sop-tier-check / tier-check (pull_request) Failing after 11s
audit-force-merge / audit (pull_request) Has been skipped
2026-05-11 02:50:41 +00:00
173a642f9e ci: re-trigger after tier downgrade
All checks were successful
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 2s
sop-tier-check / tier-check (pull_request) Successful in 3s
audit-force-merge / audit (pull_request) Successful in 3s
Co-Authored-By: infra-sre
2026-05-11 02:49:32 +00:00
177c4ef18c ci: re-trigger after runner recovery
Co-Authored-By: infra-sre
2026-05-11 02:49:32 +00:00
99f3cf7c8f [core-be-agent] fix(#354): wire delegation-results consumer into a2a executor
Close the A2A delegation auto-resume gap.

Root cause: heartbeat.py's _check_delegations already writes completed
delegation rows to DELEGATION_RESULTS_FILE and sends a self-message to
wake the agent. executor_helpers.read_delegation_results() was defined to
atomically consume that file, but a2a_executor._core_execute() never
called it — so delegation results were written but the agent never saw
them.

Fix: call read_delegation_results() at the top of _core_execute() and
prepend the results to the user input context so the agent can act on
them without an explicit check_task_status call. The Temporal durable
workflow path is also covered because it calls _core_execute() directly.

Test: two new cases — delegation results injected when file exists;
user input passed through unchanged when file is empty.

Closes molecule-core#354.
2026-05-11 02:49:32 +00:00