fix(ci): drop workflow_dispatch.inputs — TRUE root cause of #351 (Gitea parser rejects → workflow ignored for ALL events) #353

Merged
claude-ceo-assistant merged 2 commits from fix/publish-runtime-workflow-dispatch-inputs into main 2026-05-11 02:05:41 +00:00

Root cause

Gitea server log (gitea.log, last hour):

[W] ignore invalid workflow "publish-runtime.yml": unknown on type:
    map["version": {"description": ..., "required": true, "type": "string"}]

Gitea 1.22.6 mis-parses workflow_dispatch.inputs.version — it flattens the inputs sub-keys into top-level on: event types and rejects the workflow as invalid. Result: the workflow file never registers, so NO event (push.tags, branches+paths, workflow_dispatch, anything) ever dispatches it.

This is why:

  • publish-runtime.yml has 0 runs in action_run since the 2026-05-10 .gitea port
  • yesterday's runtime-v1.0.0 tag didn't publish (PyPI still 0.1.129)
  • hongming-pc's runtime-v0.1.130 push tonight didn't fire anything
  • the #352 paths/tags split (which I believed was the fix) didn't help — same underlying parse rejection

Verified by hongming-pc's observation: tag pushes succeed at the git layer, and OTHER tag-triggered workflows in this Gitea instance work fine (docker/build-push-action has 5+ tag-event runs). Bug is specific to this workflow file's YAML.

Fix

Drop the inputs: block from workflow_dispatch. Gitea 1.22.6 supports no-input dispatch only. Version derivation becomes:

  • tag push: strip runtime-v prefix
  • any other trigger (workflow_dispatch from UI, or future autobump tag-push): compute from PyPI latest + patch bump

Test plan after merge

  • YAML parses (yaml.safe_load)
  • Gitea log no longer emits [W] ignore invalid workflow for this file
  • Push runtime-v0.1.130 → workflow_id=publish-runtime.yml row appears in action_run (first ever)
  • PyPI shows 0.1.130
  • Cascade pushes .runtime-version=0.1.130 to the 8 template repos

Note on PR #352

The paths-vs-tags split from #352 is still a structural improvement (less coupling, easier to reason about), but it was NOT the actual blocker. Leaving it in.

Refs: #351, #348 Q3, #352

Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com

## Root cause Gitea server log (gitea.log, last hour): ``` [W] ignore invalid workflow "publish-runtime.yml": unknown on type: map["version": {"description": ..., "required": true, "type": "string"}] ``` Gitea 1.22.6 mis-parses `workflow_dispatch.inputs.version` — it flattens the inputs sub-keys into top-level `on:` event types and rejects the workflow as invalid. Result: **the workflow file never registers**, so NO event (push.tags, branches+paths, workflow_dispatch, anything) ever dispatches it. This is why: - `publish-runtime.yml` has 0 runs in `action_run` since the 2026-05-10 .gitea port - yesterday's `runtime-v1.0.0` tag didn't publish (PyPI still 0.1.129) - hongming-pc's `runtime-v0.1.130` push tonight didn't fire anything - the #352 paths/tags split (which I believed was the fix) didn't help — same underlying parse rejection Verified by hongming-pc's observation: tag pushes succeed at the git layer, and OTHER tag-triggered workflows in this Gitea instance work fine (`docker/build-push-action` has 5+ tag-event runs). Bug is specific to this workflow file's YAML. ## Fix Drop the `inputs:` block from `workflow_dispatch`. Gitea 1.22.6 supports no-input dispatch only. Version derivation becomes: - tag push: strip `runtime-v` prefix - any other trigger (workflow_dispatch from UI, or future autobump tag-push): compute from PyPI latest + patch bump ## Test plan after merge - [x] YAML parses (`yaml.safe_load`) - [ ] Gitea log no longer emits `[W] ignore invalid workflow` for this file - [ ] Push `runtime-v0.1.130` → workflow_id=`publish-runtime.yml` row appears in `action_run` (first ever) - [ ] PyPI shows `0.1.130` - [ ] Cascade pushes `.runtime-version=0.1.130` to the 8 template repos ## Note on PR #352 The paths-vs-tags split from #352 is still a structural improvement (less coupling, easier to reason about), but it was NOT the actual blocker. Leaving it in. Refs: #351, #348 Q3, #352 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> <!-- re-fire-marker 2026-05-11T01:50Z post-hongming-pc2-approval -->
claude-ceo-assistant added 1 commit 2026-05-11 01:48:31 +00:00
fix(ci): remove workflow_dispatch.inputs (true root cause of #351 — Gitea parser rejects, workflow ignored)
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 2s (run 5064 with 2 approvals; manual refresh per go-gitea#33700)
66653c0e8e
ROOT CAUSE found in Gitea server logs:

  actions/workflows.go:DetectWorkflows() [W] ignore invalid workflow
  "publish-runtime.yml": unknown on type:
  map["version":{"description":...,"required":true,"type":"string"}]

Gitea 1.22.6's workflow parser flattens workflow_dispatch.inputs.* into
top-level 'on:' event-keys and rejects the workflow when it doesn't
recognize them. Once rejected, the workflow never registers — so NO
event triggers it. publish-runtime.yml has 0 runs in action_run since
the .gitea port for exactly this reason; the runtime-v1.0.0 tag from
yesterday and hongming-pc's runtime-v0.1.130 from tonight both pushed
successfully but went nowhere.

This supersedes the paths-vs-tags hypothesis from #351 (PR #352).
The split is still useful for clarity but was NOT the cause — even
the original tags-only port had this same parse failure.

Fix: drop the inputs block. workflow_dispatch in Gitea 1.22.6 supports
no-input dispatch only. The bash logic for version derivation now uses
just two cases: tag-push (strip prefix) or anything-else (PyPI auto-bump).

Post-merge verification:
  - watch for first-ever publish-runtime.yml run in action_run
  - check Gitea log no longer emits 'ignore invalid workflow' for this file
  - push a runtime-v0.1.130 tag → workflow fires → PyPI 0.1.130

Refs: #351 (root cause), #348 Q3 (the blocker)
claude-ceo-assistant added the
tier:low
label 2026-05-11 01:49:07 +00:00
hongming-pc2 approved these changes 2026-05-11 01:49:59 +00:00
hongming-pc2 left a comment
Owner

[hongming-pc] APPROVED. Confirmed the diff: drops inputs: from workflow_dispatch in the publish-runtime workflow(s) — Gitea 1.22.6 flattens workflow_dispatch.inputs.<key> into top-level on: event types and rejects the whole file as invalid (ignore invalid workflow … unknown on type: map["version":…]), so the workflow never registers and nothing triggers it (tags, branches+paths, or dispatch). This matches the server-log root cause. Low-risk, correct, unblocks the whole publish-runtime → wheel → cascade chain (and the merged plugins fix #326 reaching the workspaces). Refresh the commit-status workaround and merge; I'll push a runtime-v0.1.130 tag at the new HEAD once it lands to fire the (now-registering) publisher, then do the workspace-image rebuild + restart-the-28 from there.

[hongming-pc] APPROVED. Confirmed the diff: drops `inputs:` from `workflow_dispatch` in the publish-runtime workflow(s) — Gitea 1.22.6 flattens `workflow_dispatch.inputs.<key>` into top-level `on:` event types and rejects the whole file as invalid (`ignore invalid workflow … unknown on type: map["version":…]`), so the workflow never registers and nothing triggers it (tags, branches+paths, or dispatch). This matches the server-log root cause. Low-risk, correct, unblocks the whole publish-runtime → wheel → cascade chain (and the merged plugins fix #326 reaching the workspaces). Refresh the commit-status workaround and merge; I'll push a `runtime-v0.1.130` tag at the new HEAD once it lands to fire the (now-registering) publisher, then do the workspace-image rebuild + restart-the-28 from there.
core-qa approved these changes 2026-05-11 01:52:12 +00:00
core-qa left a comment
Member

[core-qa-agent] APPROVED — CI-only change. Drops workflow_dispatch.inputs.version from publish-runtime.yml. Root cause: Gitea 1.22.6 parser mis-treats inputs sub-keys as top-level on: event types, silently ignoring the entire workflow ([W] ignore invalid workflow). Removing the inputs block restores parsing. Well-documented with Gitea log line. Complements #352.

[core-qa-agent] APPROVED — CI-only change. Drops workflow_dispatch.inputs.version from publish-runtime.yml. Root cause: Gitea 1.22.6 parser mis-treats inputs sub-keys as top-level on: event types, silently ignoring the entire workflow ([W] ignore invalid workflow). Removing the inputs block restores parsing. Well-documented with Gitea log line. Complements #352.
Member

[core-security-agent] N/A — CI workflow fix only (.gitea/workflows/publish-runtime.yml). Drops workflow_dispatch.inputs block that Gitea 1.22.6 mis-parses. No auth/middleware/db/handler/code changes. OWASP 0/0 concerns.

[core-security-agent] N/A — CI workflow fix only (.gitea/workflows/publish-runtime.yml). Drops workflow_dispatch.inputs block that Gitea 1.22.6 mis-parses. No auth/middleware/db/handler/code changes. OWASP 0/0 concerns.
hongming approved these changes 2026-05-11 02:04:41 +00:00
claude-ceo-assistant added 1 commit 2026-05-11 02:05:14 +00:00
Merge branch 'main' into fix/publish-runtime-workflow-dispatch-inputs
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 2s
audit-force-merge / audit (pull_request) Successful in 4s
4e992968da
claude-ceo-assistant merged commit b85ab71892 into main 2026-05-11 02:05:41 +00:00
Sign in to join this conversation.
No Milestone
No project
No Assignees
5 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: molecule-ai/molecule-core#353
No description provided.