Skip to content

spec: bind signature mode to the signer allowlist in the normative text - #645

Merged
MongLong0214 merged 1 commit into
mainfrom
spec/signer-allowlist
Aug 14, 2026
Merged

spec: bind signature mode to the signer allowlist in the normative text#645
MongLong0214 merged 1 commit into
mainfrom
spec/signer-allowlist

Conversation

@MongLong0214

Copy link
Copy Markdown
Owner

The normative spec describes a weaker gate than the implementation enforces

#642 (#597) made signature mode require two things: Git's G status and an exact %GF fingerprint in the repository-local commitlore.trustedSigner allowlist. Every user-facing surface picked that up. The normative text did not.

Surface Carries the allowlist requirement
README.md, README.ko.md, README.ja.md, README.zh-CN.md yes
docs/cli.md (lines 29–31, 143) yes
docs/capture.md (line 150) yes
docs/adr/ADR-0005-trust-minimal.md yes
spec/SPEC.md §7 no — still G status only

Why this is worth a PR rather than a follow-up note

SPEC is what an independent implementer reads; the README is not. Building to §7 as written produces a verifier that grades a record [directive] where CommitLore grades it [claim] — a signed commit from a key in Git's trust store but absent from the repository's allowlist.

That is the same class of defect as #631, where one record graded differently through the CLI and through MCP. Here the divergence is between the spec and the implementation rather than between two routes, and it is the more durable of the two: a runtime skew is fixed by converging runtimes, while a spec that understates a security condition keeps producing under-built verifiers for as long as it stands.

What changed

Two sentences in §7. The wording is transcribed from ADR-0005, which is already merged — this carries no new decision, and the missing pieces are the ones that change behaviour:

  • the %GF fingerprint must appear in commitlore.trustedSigner;
  • an absent, empty, or unreadable allowlist authorizes nobody, so every record renders as a claim — it never means every valid signer is authorized;
  • a verified signature establishes that an accepted key signed the commit, while the allowlist is what supplies repository authority.

The closing "minimum, not a solution" sentence now names the allowlist alongside Git's trust store.

Verification

bash spec/verify.sh                    OK: 32 fixtures + README example sync + vocab table
node scripts/check-readme-numbers.mjs  block matches bench/report.ts

§3 is untouched, so the README↔SPEC vocabulary check is unaffected.

Raised as a PR rather than pushed, since §7 is the CTO's contract surface — if the intended reading differs from ADR-0005's, the ADR is the text to reconcile against.

@github-actions

github-actions Bot commented Aug 14, 2026

Copy link
Copy Markdown

CommitLore — record lint

Trailers: clean — 1 commit in origin/main..feaf59a4e5bd773d79b24b48d37f7693f35768fb
Active constraints: not read — commitlore: the index is incomplete: the build stopped after its time budget with 532 commit(s) or note(s) unread — records in them are missing from this answer. fix: commitlore init (or commitlore index) to finish the index (1 changed path)

Trailer violations fail this check. Active constraints are informational — they are what the repository already decided, not a verdict on this PR.

#642(#597)가 requireSignedDirective 모드에 trustedSigner allowlist를 추가했다.
README 4개·docs/cli.md·docs/capture.md·ADR-0005는 새 계약을 담고 있는데
SPEC §7만 옛 계약(Git G 상태만 요구)에 머물러 있었다.

정본이 구현보다 약한 게이트를 서술하면, 스펙만 보고 만든 구현은 CommitLore가
claim으로 등급하는 레코드를 directive로 등급한다. #631이 다루는 경로별 등급
불일치와 같은 종류이며, 여기서는 스펙과 구현 사이에서 벌어진다.

문구는 ADR-0005의 이미 승인된 서술을 옮긴 것이고 새 결정을 담지 않는다.

Limit: SPEC §7은 구현이 실제로 강제하는 것보다 약한 조건을 서술할 수 없다
Ruled-out: README·docs만 고치고 SPEC은 두기 | 정본이 규범이라 독립 구현자는 SPEC을 읽지 README를 읽지 않는다
Record-Id: r-signspec645
Blast: module
Undo: easy
Certainty: firm
X-Claude-Session: https://claude.ai/code/session_01Go54NtZpaoNMRtmYtPLX6R
@MongLong0214
MongLong0214 force-pushed the spec/signer-allowlist branch from 80dfdc5 to feaf59a Compare August 14, 2026 04:35
@MongLong0214
MongLong0214 merged commit 97c6b45 into main Aug 14, 2026
12 checks passed
@MongLong0214
MongLong0214 deleted the spec/signer-allowlist branch August 14, 2026 05:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant