feat(freeze): no authors in the config, no author check

A repository that takes commits from people it cannot list has no way
to freeze a range today: a null `authors` falls back to
`git config user.email`, so every foreign author or committer fails.
Null, or no key, now means neither is checked; the freeze warns that it
did not check them and records `authors` as null. A list is checked as
before. An empty list, which no commit could pass, is a config error
that points at null.
Released as 1.1.0.
This commit is contained in:
Jorijn van der Graaf 2026-11-02 13:57:20 +01:00
commit c6b4d78245
Signed by: jorijnvdgraaf
GPG key ID: 2937E59CDCC1BCFB
10 changed files with 52 additions and 49 deletions

View file

@ -136,7 +136,7 @@ delta `@{upstream}..HEAD`, the rule for a repository that pushes to its
own trunk; `base`: always the merge-base with `base`, the whole pull request
for a repository whose branches become PRs — their commits must be linear,
rebased, never a merge of the integration branch), `authors` (the emails the
freeze accepts; null = `git config user.email`), `aiTrailers` (`forbid` or
freeze accepts; null = neither author nor committer is checked), `aiTrailers` (`forbid` or
`allow`), `requireSigned`, `allowDirty` (tracked
files the local stack rewrites in place while the lenses run), `gate0` (the
commands Gate 0 runs by hand, for the skill), `modes` (`modes.<name>`: the
@ -209,8 +209,9 @@ default), `notes`.
output where a commit message's "tested" claim can point at it
(`--context-paths`).
2. **Freeze** — `freeze` checks, all of them, before it
exports anything: author AND committer are in `authors`; AI attribution
trailers (`Assisted-by:`, `Co-Authored-By:`) by the `aiTrailers` rule; the
exports anything: author AND committer are in `authors` (when it is
set); AI attribution trailers (`Assisted-by:`, `Co-Authored-By:`) by the
`aiTrailers` rule; the
tracked tree is clean (the `allowDirty` paths aside, warned); no merge
commit in the range (`git format-patch` drops them silently, so the
artifact would not be the push); the range is a fast-forward of