Repository navigation
Commit bc6533d
committed
ci: enforce the house-style rules instead of documenting them
The rules in `.taskless/` have been in the tree for nine commits with
nothing running them. `validate.yml` had no Taskless step at all, so
every finding they can produce depended on a person remembering to run
`pnpm cli check` locally. #104 asks for enforcement, and a rule nothing
runs is documentation.
A step inside the existing `Validate` job rather than the standalone
`.github/workflows/taskless.yml` the `taskless agent ci` recipe writes.
The recipe is right for a consumer being onboarded, where touching a
pipeline you do not own is the larger risk; here the two things the
check needs only exist inside this job. Branch protection requires
`Validate` and nothing else, so a separate workflow would run, report,
and block nothing. And the job has already built `dist/` from this exact
commit by the time the step runs, so the check costs one process rather
than a second checkout, install, and build.
It runs `pnpm cli check`, the workspace build, not `npx @taskless/cli`.
This repository IS the CLI: checking our own documents with a published
release would exempt the engine at HEAD from its own rules and defer a
rule-evaluation regression to whenever the next version ships. The step
comment says this is a deliberate divergence from the recipe so a future
reader does not correct it back.
It blocks. `check` exits non-zero on an error-severity finding and on an
engine that failed or timed out, so an em dash added to a README,
CLAUDE.md, or `.conventions/*.md` turns the build red. That is the
intended cost. Warning-severity rules still only report, which is what
`severity: warning` means.
Verified non-vacuous rather than assumed. Appending an em dash to
CLAUDE.md and to README.md each exits 1; a missing `dist/` exits 1
rather than passing empty; a `branches:` filter added under
`pull_request:` exits 1, which is the ast-grep engine reporting on this
very file. Clean tree exits 0. Both engines are therefore live, not
silently skipped.
Full scan, not the recipe's diff scan, for the reason the `Validate
specs` step gives: rot accumulates in the files a PR does not touch, and
the scoped corpus is small enough that a diff scan buys nothing.
No secrets. Static rules run unauthenticated; `.taskless/rules/runtime/`
is empty, so there is nothing a `TASKLESS_TOKEN` would unlock yet.
Fixes #1041 parent a58350a commit bc6533d
1 file changed
Lines changed: 45 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
65 | 65 | | |
66 | 66 | | |
67 | 67 | | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
68 | 113 | | |
69 | 114 | | |
70 | 115 | | |
| |||
0 commit comments