docs(1b): record W0 lint decisions (DECISIONS) + claim W0 gate (STATUS/JOURNAL)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
24
DECISIONS.md
24
DECISIONS.md
@ -217,3 +217,27 @@ Architecture decisions and dead-ends. One line of rationale each. (§0, §8)
|
||||
W5/C4-C5 PASSes — keep it RUNNING; defer its C6 teardown until the operator explicitly says
|
||||
otherwise. This overrides the plan §5/§6 "destroy the throwaway" for that one VM only. All other
|
||||
cleanup proceeds normally (the Builder's first throwaway was already destroyed; RAM accounting holds).
|
||||
|
||||
## Phase 1b — lint/format tooling (open decisions §6, settled W0)
|
||||
- **Formatters/linters (RL1):** Nix = `nixpkgs-fmt` (format) + `statix` (lints) + `deadnix` (dead
|
||||
code); Python = `ruff` (lint + format); Shell = `shellcheck` + `shfmt -i 2 -ci`; YAML = `yamllint`.
|
||||
Kept `nixpkgs-fmt` over `alejandra` because it was already the repo `formatter` and devshell tool
|
||||
(no extra churn / restyle of every .nix). All built from the already-pinned nixpkgs via a flake
|
||||
`lint` devshell (`nix develop .#lint`) so CI and local use byte-identical tool versions.
|
||||
- **Lint entrypoint:** `scripts/lint.sh` (check-only by default; `--fix` auto-applies). The
|
||||
`.drone.yml` push pipeline runs it via `nix develop .#lint --command bash scripts/lint.sh`.
|
||||
- **ruff strictness:** `select = [E,F,W,I,UP,B,C4,SIM]`, `ignore = [E501]` (line length is the
|
||||
formatter's job; only un-splittable strings would trip it). `line-length=100`, `target=py311`.
|
||||
- **Drone lint stage = FAIL (not warn).** The codebase is green now, so enforce from here on — an
|
||||
unclean commit fails the `lint` step. (Resolves the §6 open question.)
|
||||
- **Python type-checking (mypy/pyright): DEFERRED to IDEAS**, not added in 1b. The harness is small
|
||||
and dynamically typed around `abra`/subprocess JSON; gradual typing is a larger effort than this
|
||||
bounded pass warrants. Revisit if Phase 2's 18-recipe ramp shows type bugs.
|
||||
- **blocking vs advisory split (§3):** treated as in the phase plan — tests-real, Nix-idempotent,
|
||||
no-footguns, no-secrets, log-redaction, harness-DRY = blocking; readability/docs/arch-drift =
|
||||
advisory unless a real plan deviation. Recorded per-finding in REVIEW-1b / BACKLOG-1b.
|
||||
- **cc-ci self-CI push trigger:** the lint stage lives in the `event: push` pipeline. The Gitea→Drone
|
||||
push webhook on this instance is flaky (`last_status: None`; documented §4.1) and predates 1b —
|
||||
recipe CI uses polling as primary, but cc-ci's *own* self-test/lint relies on the push webhook.
|
||||
The lint stage is correctly wired and proven green via the identical `nix develop .#lint` command;
|
||||
reliably auto-firing it on every push is tracked as a (pre-existing) infra item, not a 1b lint gap.
|
||||
|
||||
Reference in New Issue
Block a user