All checks were successful
check / check (push) Successful in 38s
script/fmt ran prettier with default settings over root-level *.md and *.json, swallowing every failure with `|| true`, while script/fmt-check checked gofmt only. The formatter and the gate therefore disagreed silently: `make fmt` rewrote markdown that `make check` never looked at, including REPO_POLICIES.md, which is a verbatim copy of an authoritative upstream document that local tooling must not touch. Configuration: - .prettierrc pins the two policy deviations from prettier defaults, four-space indents and proseWrap: always. Nothing else. - .prettierignore excludes REPO_POLICIES.md so no local run can drift it from upstream again, plus .golangci.yml (user-owned, and listed even though the current file set does not reach it) and node_modules, vendor, bin. One canonical file set: - New script/prettier takes --write or --check and applies the same patterns in both modes, so script/fmt and script/fmt-check cannot drift apart by construction. The patterns are repo-wide (**/*.md, **/*.json) rather than root-only, so markdown in subdirectories such as a future docs/ is covered. - No `|| true` anywhere, and no --no-error-on-unmatched-pattern: both patterns always match tracked files, so an empty match means the glob broke and prettier should say so instead of passing vacuously. A missing prettier is a hard error naming script/bootstrap, not a silent skip. Pinned prettier: - package.json/yarn.lock pin prettier 3.9.6; the lockfile carries the integrity hash, and --frozen-lockfile enforces it. script/prettier prefers node_modules/.bin/prettier and warns on stderr when it has to fall back to a PATH prettier of unknown version. - script/bootstrap now installs node, yarn, and the locked JS deps. Its NODE_VERSION and YARN_VERSION pins already existed. Docker gate: - The golangci-lint image has no node, so the lint stage runs the new script/fmt-check-go (the Go half of fmt-check, extracted) instead of the whole thing. - The markdown half gets its own stage on a digest-pinned node image shipping exactly the node and yarn versions bootstrap pins. The builder stage takes a COPY --from dependency on it, so BuildKit cannot skip it and a markdown violation fails `docker build .` rather than being skipped somewhere nobody looks. Markdown files other than REPO_POLICIES.md are reformatted here for the first time under the policy settings.
1.1 KiB
1.1 KiB
Agent Instructions
Read REPO_POLICIES.md before making any changes. It is the authoritative
source for coding standards, formatting, linting, and workflow rules.
Workflow
-
When fixing a bug, write a failing test FIRST. Only after the test fails, write the code to fix the bug. Then ensure the test passes. Leave the test in place and commit it with the bugfix. Don't run shell commands to test bugfixes or reproduce bugs. Write tests!
-
After each change, run
make fmt, thenmake test, thenmake lint. Fix any failures before committing. -
After each change, commit only the files you've changed. Push after committing.
Attribution
- Never mention Claude, Anthropic, or any AI/LLM tooling in commit messages. Do not use attribution.
Repository-Specific Notes
- This is a Go library + CLI tool for generating
.mfmanifest files. - The proto definition is in
mfer/mf.proto; generated.pb.gofiles are committed (required forgo getcompatibility). - The format specification is in
FORMAT.md. - See the TODO section in
README.mdfor the 1.0 implementation plan and open design questions.