Rewrite REPO_POLICIES.md sentence by sentence (closes #136)
check / check (push) Canceled after 0s
check / check (push) Canceled after 0s
Every sentence of prompts/REPO_POLICIES.md is rewritten against the sentence rules: one idea per sentence, about 30 words at most, lists as bulleted lists, subject and verb early, the main rule before any exception. No rule's meaning changed: nothing is added, removed, loosened or tightened, every reason stays, and code blocks, digests, URLs, file names, commands and quoted strings are unchanged. Both repo checklists carry the same rewrite of the sentences they quote word for word. Model: fable-5-1
This commit is contained in:
@@ -21,6 +21,13 @@ fmt-check, and commit.
|
|||||||
|
|
||||||
# Completed Steps
|
# Completed Steps
|
||||||
|
|
||||||
|
- 2026-11-04: Rewrote `prompts/REPO_POLICIES.md` sentence by sentence
|
||||||
|
(https://git.eeqj.de/sneak/prompts/issues/136), on sneak's yes at
|
||||||
|
https://git.eeqj.de/sneak/prompts/issues/136#issuecomment-165193. Every rule
|
||||||
|
keeps its meaning and its place, and `must` and `should` stay as they were.
|
||||||
|
Long sentences are split, comma-chained lists are now bulleted lists, and
|
||||||
|
every reason stays. Code blocks, digests, URLs, file names, commands and
|
||||||
|
quoted strings are unchanged.
|
||||||
- 2026-11-03: The canonical golangci-lint is now v2.15.0, still built with
|
- 2026-11-03: The canonical golangci-lint is now v2.15.0, still built with
|
||||||
go1.27.0, so the `go` directive rule is unchanged (issue 142). Repositories
|
go1.27.0, so the `go` directive rule is unchanged (issue 142). Repositories
|
||||||
pick this up on their next re-vendor. Each item in the canonical
|
pick this up on their next re-vendor. Each item in the canonical
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: Existing Repo Checklist
|
title: Existing Repo Checklist
|
||||||
last_modified: 2026-11-03
|
last_modified: 2026-11-04
|
||||||
---
|
---
|
||||||
|
|
||||||
Use this checklist when beginning work in a repo that may not yet conform to our
|
Use this checklist when beginning work in a repo that may not yet conform to our
|
||||||
@@ -105,37 +105,43 @@ with your task.
|
|||||||
`services/api/.claude/`: add anchored entries for those directories.
|
`services/api/.claude/`: add anchored entries for those directories.
|
||||||
- [ ] If the repo embeds a version in a binary: `.dockerignore` lets `.git` into
|
- [ ] If the repo embeds a version in a binary: `.dockerignore` lets `.git` into
|
||||||
the build context. It keeps out every git `config` at any depth
|
the build context. It keeps out every git `config` at any depth
|
||||||
(`**/.git/config`, `**/.git/modules/**/config`): the repository's own,
|
(`**/.git/config`, `**/.git/modules/**/config`):
|
||||||
each submodule's under `.git/modules/`, and that of a submodule keeping
|
- the repository's own
|
||||||
its own `.git` directory. `git describe` does not need them, and each can
|
- each submodule's under `.git/modules/`
|
||||||
hold a credential: a password in a remote URL, or the token the CI
|
- that of a submodule keeping its own `.git` directory
|
||||||
checkout step stores there. A submodule whose name has a `config` segment
|
|
||||||
(`config`, `deploy/config`, `config/lib`) loses its whole git directory to
|
`git describe` does not need them, and each can hold a credential: a
|
||||||
`**/.git/modules/**/config`, and Go's version stamping then fails the
|
password in a remote URL, or the token the CI checkout step stores there. A
|
||||||
build: give it a name without that segment (`git submodule add --name`).
|
submodule name may have a `config` segment, as in `config`, `deploy/config`
|
||||||
The stage that compiles has `git` (the Debian Go image has it; an alpine
|
or `config/lib`. Such a submodule loses its whole git directory to
|
||||||
one needs `apk add --no-cache git`) and takes the version from the
|
`**/.git/modules/**/config`, and Go's version stamping then fails the build.
|
||||||
`VERSION` build argument when one is given, otherwise from
|
Give it a name without that segment (`git submodule add --name`). The stage
|
||||||
`git describe --tags --always`. That gives the tag on a tagged commit; on
|
that compiles has `git`: the Debian Go image has it, and an alpine one needs
|
||||||
a later commit, the tag, the number of commits since it and the short
|
`apk add --no-cache git`. That stage takes the version from the `VERSION`
|
||||||
commit (`v1.2.3-4-gabc1234`); and the short commit when no tag is
|
build argument when one is given, otherwise from
|
||||||
reachable. The stage that compiles also marks its working directory safe
|
`git describe --tags --always`. That gives:
|
||||||
for git (`git config --system --add safe.directory /src`): a context sent
|
- the tag, on a tagged commit
|
||||||
as a tar stream keeps the sender's file owners, and git refuses a checkout
|
- the tag, the number of commits since it and the short commit
|
||||||
owned by another user, so the version would come out empty. `ARG VERSION`
|
(`v1.2.3-4-gabc1234`), on a later commit
|
||||||
has no default, and the build fails if the context carries `.git` and the
|
- the short commit, when no tag is reachable
|
||||||
version still comes out empty, `dev` or `unknown`. A plain
|
|
||||||
`docker build .` with no build arguments must succeed; a Dockerfile that
|
The stage that compiles also marks its working directory safe for git
|
||||||
refuses an empty build argument drops that refusal and keeps the argument.
|
(`git config --system --add safe.directory /src`). A context sent as a tar
|
||||||
A checkout whose `.git` is a file (a linked worktree, or a repository
|
stream keeps the sender's file owners, and git refuses a checkout owned by
|
||||||
checked out as a submodule) is the exception: that file points to a git
|
another user, so the version would come out empty. `ARG VERSION` has no
|
||||||
directory outside the build context, so the build cannot read the version
|
default. The build fails if the context carries `.git` and the version still
|
||||||
and a plain `docker build .` fails; pass the version with
|
comes out empty, `dev` or `unknown`. A plain `docker build .` with no build
|
||||||
`--build-arg VERSION=...`. `script/docker` and `script/cibuild` already
|
arguments must succeed; a Dockerfile that refuses an empty build argument
|
||||||
pass the version they compute on the host; it takes precedence. The
|
drops that refusal and keeps the argument. A checkout whose `.git` is a file
|
||||||
canonical `.gitea/workflows/check.yml` sets `fetch-depth: 0` on its
|
is the exception: a linked worktree, or a repository checked out as a
|
||||||
checkout step, which otherwise clones shallow and fetches no tags, so a CI
|
submodule. That file points to a git directory outside the build context, so
|
||||||
build finds the tag too.
|
the build cannot read the version and a plain `docker build .` fails. Pass
|
||||||
|
the version with `--build-arg VERSION=...`. `script/docker` and
|
||||||
|
`script/cibuild` already pass the version they compute on the host; it takes
|
||||||
|
precedence. The canonical `.gitea/workflows/check.yml` sets `fetch-depth: 0`
|
||||||
|
on its checkout step, which otherwise clones shallow and fetches no tags, so
|
||||||
|
a CI build finds the tag too.
|
||||||
|
|
||||||
- [ ] Gitea Actions workflow in `.gitea/workflows/` runs `script/cibuild` on
|
- [ ] Gitea Actions workflow in `.gitea/workflows/` runs `script/cibuild` on
|
||||||
push, checks out with `persist-credentials: false` and with
|
push, checks out with `persist-credentials: false` and with
|
||||||
`fetch-depth: 0` (which fetches the tags `git describe` needs), carries
|
`fetch-depth: 0` (which fetches the tags `git describe` needs), carries
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: New Repo Checklist
|
title: New Repo Checklist
|
||||||
last_modified: 2026-11-03
|
last_modified: 2026-11-04
|
||||||
---
|
---
|
||||||
|
|
||||||
Use this checklist when creating a new repository from scratch. Follow the steps
|
Use this checklist when creating a new repository from scratch. Follow the steps
|
||||||
@@ -75,34 +75,42 @@ Template files can be fetched from:
|
|||||||
anchored entry.
|
anchored entry.
|
||||||
- If the image embeds a version in a binary: `.dockerignore` lets `.git`
|
- If the image embeds a version in a binary: `.dockerignore` lets `.git`
|
||||||
into the build context. It keeps out every git `config` at any depth
|
into the build context. It keeps out every git `config` at any depth
|
||||||
(`**/.git/config`, `**/.git/modules/**/config`): the repository's own,
|
(`**/.git/config`, `**/.git/modules/**/config`):
|
||||||
each submodule's under `.git/modules/`, and that of a submodule keeping
|
- the repository's own
|
||||||
its own `.git` directory. `git describe` does not need them, and each can
|
- each submodule's under `.git/modules/`
|
||||||
hold a credential: a password in a remote URL, or the token the CI
|
- that of a submodule keeping its own `.git` directory
|
||||||
checkout step stores there. A submodule whose name has a `config` segment
|
|
||||||
(`config`, `deploy/config`, `config/lib`) loses its whole git directory to
|
`git describe` does not need them, and each can hold a credential: a
|
||||||
`**/.git/modules/**/config`, and Go's version stamping then fails the
|
password in a remote URL, or the token the CI checkout step stores
|
||||||
build: give it a name without that segment (`git submodule add --name`).
|
there. A submodule name may have a `config` segment, as in `config`,
|
||||||
The stage that compiles has `git` (the Debian Go image has it; an alpine
|
`deploy/config` or `config/lib`. Such a submodule loses its whole git
|
||||||
one needs `apk add --no-cache git`) and takes the version from the
|
directory to `**/.git/modules/**/config`, and Go's version stamping then
|
||||||
`VERSION` build argument when one is given, otherwise from
|
fails the build. Give it a name without that segment
|
||||||
`git describe --tags --always`. That gives the tag on a tagged commit; on
|
(`git submodule add --name`). The stage that compiles has `git`: the
|
||||||
a later commit, the tag, the number of commits since it and the short
|
Debian Go image has it, and an alpine one needs
|
||||||
commit (`v1.2.3-4-gabc1234`); and the short commit when no tag is
|
`apk add --no-cache git`. That stage takes the version from the
|
||||||
reachable. The stage that compiles also marks its working directory safe
|
`VERSION` build argument when one is given, otherwise from
|
||||||
for git (`git config --system --add safe.directory /src`): a context sent
|
`git describe --tags --always`. That gives:
|
||||||
as a tar stream keeps the sender's file owners, and git refuses a checkout
|
- the tag, on a tagged commit
|
||||||
owned by another user, so the version would come out empty. `ARG VERSION`
|
- the tag, the number of commits since it and the short commit
|
||||||
has no default, and the build fails if the context carries `.git` and the
|
(`v1.2.3-4-gabc1234`), on a later commit
|
||||||
version still comes out empty, `dev` or `unknown`. A plain
|
- the short commit, when no tag is reachable
|
||||||
`docker build .` with no build arguments must succeed; a Dockerfile that
|
|
||||||
refuses an empty build argument drops that refusal and keeps the argument.
|
The stage that compiles also marks its working directory safe for git
|
||||||
A checkout whose `.git` is a file (a linked worktree, or a repository
|
(`git config --system --add safe.directory /src`). A context sent as a
|
||||||
checked out as a submodule) is the exception: that file points to a git
|
tar stream keeps the sender's file owners, and git refuses a checkout
|
||||||
directory outside the build context, so the build cannot read the version
|
owned by another user, so the version would come out empty.
|
||||||
and a plain `docker build .` fails; pass the version with
|
`ARG VERSION` has no default. The build fails if the context carries
|
||||||
`--build-arg VERSION=...`, as `script/docker` and `script/cibuild` already
|
`.git` and the version still comes out empty, `dev` or `unknown`. A
|
||||||
do.
|
plain `docker build .` with no build arguments must succeed; a
|
||||||
|
Dockerfile that refuses an empty build argument drops that refusal and
|
||||||
|
keeps the argument. A checkout whose `.git` is a file is the exception:
|
||||||
|
a linked worktree, or a repository checked out as a submodule. That file
|
||||||
|
points to a git directory outside the build context, so the build cannot
|
||||||
|
read the version and a plain `docker build .` fails. Pass the version
|
||||||
|
with `--build-arg VERSION=...`, as `script/docker` and `script/cibuild`
|
||||||
|
already do.
|
||||||
|
|
||||||
- The Dockerfile carries a `lint` phase and a `test` phase, each invoking
|
- The Dockerfile carries a `lint` phase and a `test` phase, each invoking
|
||||||
its tool directly rather than through `make` or `script/`, and the final
|
its tool directly rather than through `make` or `script/`, and the final
|
||||||
stage carries a `COPY --from=` of a harmless file from each so the image
|
stage carries a `COPY --from=` of a harmless file from each so the image
|
||||||
@@ -147,6 +155,7 @@ Template files can be fetched from:
|
|||||||
- Server: the final stage builds and runs the application
|
- Server: the final stage builds and runs the application
|
||||||
- Non-server: the final stage brings up the dev environment
|
- Non-server: the final stage brings up the dev environment
|
||||||
- Image pinned by sha256 hash with version/date comment
|
- Image pinned by sha256 hash with version/date comment
|
||||||
|
|
||||||
- [ ] Gitea Actions workflow at `.gitea/workflows/check.yml` that runs
|
- [ ] Gitea Actions workflow at `.gitea/workflows/check.yml` that runs
|
||||||
`script/cibuild` on push, checks out with `persist-credentials: false` and
|
`script/cibuild` on push, checks out with `persist-credentials: false` and
|
||||||
with `fetch-depth: 0` (which fetches the tags `git describe` needs),
|
with `fetch-depth: 0` (which fetches the tags `git describe` needs),
|
||||||
|
|||||||
+473
-345
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user