fix(ci): drop slash from lint-no-tenant-gitea-token name (#307) #1593
Reference in New Issue
Block a user
Delete Branch "fix/lint-workflow-yaml-slash-in-name"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
The workflow
name:field on.gitea/workflows/lint-no-tenant-gitea-token.ymlwas
Lint no tenant GITEA/GITHUB token write. The/between GITEA andGITHUB trips
lint-workflow-yamlRule 3 (slash in workflow name breaksthe
<workflow> / <job> (<event>)status-context tokenization thatsop-tier-check and status-reaper rely on).
Symptom (2026-05-20 aa375b1f): the fatal lint blocked
Production auto-deployfrom running onpublish-workspace-server-image,forcing a manual
redeploy-fleetcurl. SOP path stays broken untilthis name is fixed.
Fix: rename to
Lint no tenant GITEA or GITHUB token write(thelinter docstring already names
-and space as the supportedseparators).
Verification (local)
python3 .gitea/scripts/lint-workflow-yaml.py-> exit 1, Rule 3 FATAL on this file.python3 -m pytest tests/test_lint_workflow_yaml.py -v-> 27/27 pass.Lint workflow YAML for Gitea-1.22.6-hostile shapes-> Successful in 1m27s (the cure);Lint no tenant GITEA or GITHUB token write / Scan...-> Successful in 6s (renamed, still scans).Scope discipline
Only the
name:line changes. Workflow triggers, env, and the scanjob are untouched -- the human-readable display name is the entire diff.
Task
Closes task #307.
SOP-Checklist
publish-workspace-server-imagerun will see the rule-3-clean workflow set and the Production auto-deploy job will fire automatically (the cured SOP path)./literal in thename:field IS the root cause; the linter was correctly flagging it. Fix removes the foot-gun at the source rather than allow-listing the file or relaxing the lint.GITEA or GITHUB).feedback_never_skip_ci(do not bypass lint, fix the source),feedback_gitea_status_enum_use_helper_not_raw_int(used mol_action_status when probing run state),feedback_image_promote_is_not_user_live(display-name change does not require image rebuild -- but the cured Production auto-deploy SOP path will not "go live" until the next workspace-server image publish picks up clean lint).Devops-engineer persona via hongming-pc orchestrator (CTO-authorized 2026-05-20).
APPROVE (core-qa review for QA test discipline gate + SOP-checklist acks)
Five-Axis review
Correctness: the rename is the minimal sufficient change. Reproduced locally:
python3 .gitea/scripts/lint-workflow-yaml.py-> exit 1, Rule 3 FATAL on the file.pytest tests/test_lint_workflow_yaml.py -v-> 27/27 pass on the patched tree.Lint workflow YAML for Gitea-1.22.6-hostile shapesSuccessful (1m27s) -- the cured gate.Readability: "Lint no tenant GITEA or GITHUB token write" preserves the original intent without obscuring the dual-host coverage; the bp-exempt comment block explains the rename's tail-end follow-up clearly.
Architecture: no structural change. Workflow triggers (pull_request, push:main,staging), env, and the scan job body are untouched.
Security: the lint surface continues scanning the same FORBIDDEN_KEYS + SURFACE_PATTERN. No coverage gap introduced.
Performance: none -- display-name-only change.
Bp-exempt directive
The bp-exempt directive carried in
def11782is the right calibration: the scan job's findings flow through PR review (the script's::error::annotations), not through BP. Tier 2g lint locally exits 0 with the directive present.SOP acks
Acking all 7 items for this low-risk workflow-YAML rename:
/sop-ack 1
/sop-ack 2
/sop-ack 3
/sop-ack 4
/sop-ack 5
/sop-ack 6
/sop-ack 7
Approving as
core-qa(member of qa + engineers teams) -- independent identity from devops-engineer (PR author).APPROVE (core-security review for security-review gate)
Five-Axis review (security surface focus)
Correctness: rename is content-free for the lint scan -- forbidden-key matrix and surface-pattern set are unchanged. The scan logic in steps[*] is byte-identical pre/post.
Readability: "Lint no tenant GITEA or GITHUB token write" reads cleanly and the intent stays obvious; the
orsubstitutes for/without ambiguity.Architecture: no structural change; bp-exempt directive correctly maps the advisory nature of the lint (status-context tokenization fix, not a new gate).
Security: the lint's threat model is "no tenant workspace ever receives an operator-scope repo-host token," and the rename does not weaken any of:
No new attack surface; the same Go sources are scanned with the same regex shape.
Performance: N/A -- pure rename.
Verification
feedback_verify_enum_by_source_not_inference).Lint no tenant GITEA or GITHUB token write / Scan ...context Successful in 6s.def11782.Approving as
core-security(member of security + engineers teams) -- independent identity from devops-engineer (PR author)./qa-recheck
/security-recheck
/qa-recheck
/security-recheck