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.
32 lines
1.1 KiB
Markdown
32 lines
1.1 KiB
Markdown
# 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`, then `make test`, then `make 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 `.mf` manifest files.
|
|
- The proto definition is in `mfer/mf.proto`; generated `.pb.go` files are
|
|
committed (required for `go get` compatibility).
|
|
- The format specification is in `FORMAT.md`.
|
|
- See the TODO section in `README.md` for the 1.0 implementation plan and open
|
|
design questions.
|