NEC-144: Lint parses workflow and action YAML before CI does #201
No reviewers
Labels
No labels
area:docs
area:identity
area:ops
area:plugin
area:server
channel:community
channel:direct
channel:owned
channel:press
channel:social
e2ee-constrained
gate:at-ga
gate:pre-ga
marketing
parity
relay:absent
relay:planned
relay:requested
relay:supported
risk:additive
risk:contract
risk:none
usability
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
Nectenda/nectenda!201
Loading…
Reference in a new issue
No description provided.
Delete branch "worktree-nec-144-lint-parses-workflow-and-action-yaml-bef"
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?
Task: NEC-144 — https://projectron.nerchure.com/tasks/151
pnpm lint now parses every .yml/.yaml under .forgejo/ (scripts/lint-yaml.mjs, yaml 2.9.1 as a root devDependency, already in the lockfile via vite) and fails on any parse error with file:line:col, or when it finds no files. Nothing read these files before the runner did: NEC-69's plain scalar containing ': ' passed lint, unit suites and a full e2e run locally, then the runner rejected the whole action and PR #200's e2e job ran no scenarios.
Verified: restoring e910d87's action.yml makes pnpm lint fail with '.forgejo/actions/obsidian-e2e/action.yml:146:12 BLOCK_AS_IMPLICIT_KEY', the line the runner named; restoring the file makes it pass ('lint-yaml: 9 files under .forgejo parse'). Each rule was mutation-checked (no errors collected, no zero-files guard, first document only, .yml only), and each mutation fails a test. Local gate green at
f5878ff.Known limits, out of scope for a parse-only check: an undefined alias (*x with no anchor) is not an error in the yaml package's parse but go-yaml rejects it; symlinked files under .forgejo/ would be skipped (none exist).
Spec:
docs/changes/NEC-144-lint-yaml/spec.mdChangelog
NONE