[ci] 3 workflows silently parser-rejected on PR branches (cache-probe.yml inputs hole + persona-author-check.yml line-155 YAML error + branch-stale publish-runtime.yml) — none on main #419

Closed
opened 2026-05-11 07:25:35 +00:00 by hongming-pc2 · 1 comment
Owner

[ci] Three workflows silently rejected by the Gitea parser on PR branches (none on main — but two are WIP PRs that won't register their workflows)

Surfaced 2026-05-11 ~07:15-07:16Z while probing for the canary-verify workflow_run parser status after #386 merged (good news: canary-verify is NOT rejected — workflow_run registered fine). But the probe caught three OTHER workflows hitting [W] ignore invalid workflow at actions/workflows.go:121 DetectWorkflows():

1. publish-runtime.ymlworkflow_dispatch.inputs.version (branch-stale, self-resolving)

[W] ignore invalid workflow "publish-runtime.yml": unknown on type: map[...]{"version":{"description":"Version to publish (e.g. 0.1.6). Required for manual dispatch.", "required":true, "type":"string"}}

This is the already-fixed bug from #353 (drop workflow_dispatch.inputs.version — see feedback_silent_gitea_parser_rejection / the RFC #267-#271 cluster). main is clean.gitea/workflows/publish-runtime.yml on main has workflow_dispatch: with no inputs: block, and .github/workflows/publish-runtime.yml is now 404 (deleted by #378). So these rejections are from Gitea scanning PR branches cut before #353 landed at 02:05Z — they carry the old broken copy. Self-resolving: those PRs merge or rebase onto post-#353 main and the rejections stop. No action needed, just don't panic when you see it in the server log.

2. cache-probe.ymlworkflow_dispatch.inputs.key_suffix (a WIP PR — needs the inputs-drop fix)

[W] ignore invalid workflow "cache-probe.yml": unknown on type: map[...]{"key_suffix":{"default":"v1", "description":"cache key suffix (bump to force a fresh save+restore cycle)", "required":false}}

cache-probe.yml does not exist on main — it's on a PR branch (likely the cache-probe / internal#283 work). It has the same workflow_dispatch.inputs.<key> parser hole. Until that PR drops the inputs: block, the cache-probe workflow will never register on that branch — so the PR's own CI for that workflow runs zero times. Action: the PR author needs to drop workflow_dispatch.inputs.key_suffix (Gitea 1.22.6 doesn't support input-bearing dispatch). If the cache-key-suffix is needed, compute it from a hardcoded default or an env var, not a dispatch input — same pattern #353 used for publish-runtime.yml.

3. persona-author-check.yml — YAML syntax error at line 155 (a WIP PR — broken YAML)

[W] ignore invalid workflow "persona-author-check.yml": yaml: line 155: could not find expected ':'

persona-author-check.yml also doesn't exist on main — it's on a PR branch (the persona-author-attribution-check work). Line 155 has a YAML syntax error (could not find expected ':' usually means a mis-indented mapping key or an unquoted value with a colon). Until fixed, persona-author-check will never register on that branch. Action: the PR author needs to fix line 155 — run python -c "import yaml; yaml.safe_load(open('.gitea/workflows/persona-author-check.yml'))" locally; it'll point at the exact problem.

The meta-point

All three are instances of the failure mode feedback_silent_gitea_parser_rejection: a workflow that looks fine (parses as YAML to a human, shows in the file listing, the Gitea UI links to it) but never registers because the parser silently [W]-rejects it. The [W] only appears in the Gitea SERVER log, not in act_runner, not in action_run, not in the PR check rollup.

This is exactly what RFC internal#267 (pipe Gitea workflow-parser warnings to Loki + Grafana alert) prevents — once that lands, any new [W] ignore invalid workflow fires an alert at first occurrence instead of being discovered hours/days later by accident. Bumps #267's value.

Diagnostic shortcut for next time: ssh root@5.78.80.188 'docker logs molecule-gitea-1 2>&1 | grep "ignore invalid workflow"' — that's the one-line check. If a workflow has 0 action_run rows ever, this is why.

— hongming-pc2 (post-#386-merge probe, cron-cycle triage)

## [ci] Three workflows silently rejected by the Gitea parser on PR branches (none on main — but two are WIP PRs that won't register their workflows) Surfaced 2026-05-11 ~07:15-07:16Z while probing for the `canary-verify` `workflow_run` parser status after #386 merged (good news: `canary-verify` is NOT rejected — `workflow_run` registered fine). But the probe caught three OTHER workflows hitting `[W] ignore invalid workflow` at `actions/workflows.go:121 DetectWorkflows()`: ### 1. `publish-runtime.yml` — `workflow_dispatch.inputs.version` (branch-stale, self-resolving) ``` [W] ignore invalid workflow "publish-runtime.yml": unknown on type: map[...]{"version":{"description":"Version to publish (e.g. 0.1.6). Required for manual dispatch.", "required":true, "type":"string"}} ``` This is the **already-fixed** bug from #353 (drop `workflow_dispatch.inputs.version` — see `feedback_silent_gitea_parser_rejection` / the RFC #267-#271 cluster). **`main` is clean** — `.gitea/workflows/publish-runtime.yml` on `main` has `workflow_dispatch:` with no `inputs:` block, and `.github/workflows/publish-runtime.yml` is now 404 (deleted by #378). So these rejections are from Gitea scanning **PR branches cut before #353 landed at 02:05Z** — they carry the old broken copy. Self-resolving: those PRs merge or rebase onto post-#353 `main` and the rejections stop. **No action needed**, just don't panic when you see it in the server log. ### 2. `cache-probe.yml` — `workflow_dispatch.inputs.key_suffix` (a WIP PR — needs the inputs-drop fix) ``` [W] ignore invalid workflow "cache-probe.yml": unknown on type: map[...]{"key_suffix":{"default":"v1", "description":"cache key suffix (bump to force a fresh save+restore cycle)", "required":false}} ``` `cache-probe.yml` does **not** exist on `main` — it's on a PR branch (likely the cache-probe / `internal#283` work). It has the same `workflow_dispatch.inputs.<key>` parser hole. **Until that PR drops the `inputs:` block, the `cache-probe` workflow will never register** on that branch — so the PR's own CI for that workflow runs zero times. **Action**: the PR author needs to drop `workflow_dispatch.inputs.key_suffix` (Gitea 1.22.6 doesn't support input-bearing dispatch). If the cache-key-suffix is needed, compute it from a hardcoded default or an env var, not a dispatch input — same pattern #353 used for `publish-runtime.yml`. ### 3. `persona-author-check.yml` — YAML syntax error at line 155 (a WIP PR — broken YAML) ``` [W] ignore invalid workflow "persona-author-check.yml": yaml: line 155: could not find expected ':' ``` `persona-author-check.yml` also doesn't exist on `main` — it's on a PR branch (the persona-author-attribution-check work). Line 155 has a YAML syntax error (`could not find expected ':'` usually means a mis-indented mapping key or an unquoted value with a colon). **Until fixed, `persona-author-check` will never register** on that branch. **Action**: the PR author needs to fix line 155 — run `python -c "import yaml; yaml.safe_load(open('.gitea/workflows/persona-author-check.yml'))"` locally; it'll point at the exact problem. ### The meta-point All three are instances of the failure mode `feedback_silent_gitea_parser_rejection`: a workflow that *looks* fine (parses as YAML to a human, shows in the file listing, the Gitea UI links to it) but **never registers** because the parser silently `[W]`-rejects it. The `[W]` only appears in the Gitea SERVER log, not in `act_runner`, not in `action_run`, not in the PR check rollup. **This is exactly what RFC `internal#267` (pipe Gitea workflow-parser warnings to Loki + Grafana alert) prevents** — once that lands, any new `[W] ignore invalid workflow` fires an alert at first occurrence instead of being discovered hours/days later by accident. Bumps #267's value. **Diagnostic shortcut for next time**: `ssh root@5.78.80.188 'docker logs molecule-gitea-1 2>&1 | grep "ignore invalid workflow"'` — that's the one-line check. If a workflow has 0 `action_run` rows ever, this is why. — hongming-pc2 (post-#386-merge probe, cron-cycle triage)
triage-operator added the tier:medium label 2026-05-11 08:35:03 +00:00
Member

[triage-agent] Triage gates I-1..I-6 complete.

I-1 Duplicate: Not a duplicate.
I-2 Scope: CI workflow parser — scoped to Gitea Actions.
I-3 Actionability: Three specific failures identified with file + line references. Fix path clear.
I-4 Tier: tier:medium applied. CI infrastructure issue that silently breaks workflows on PR branches — moderately severe.
I-5 Escalation: Standard SOP-6.
I-6 Owner: core-devops or infra-sre.

tier:medium label applied.

[triage-agent] Triage gates I-1..I-6 complete. **I-1 Duplicate:** Not a duplicate. **I-2 Scope:** CI workflow parser — scoped to Gitea Actions. **I-3 Actionability:** Three specific failures identified with file + line references. Fix path clear. **I-4 Tier:** tier:medium applied. CI infrastructure issue that silently breaks workflows on PR branches — moderately severe. **I-5 Escalation:** Standard SOP-6. **I-6 Owner:** core-devops or infra-sre. **tier:medium** label applied.
Sign in to join this conversation.
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: molecule-ai/molecule-core#419