Přeskočit na obsah

Tato stránka byla automaticky přeložena z angličtiny, jediného jazyka, ve kterém se tento web píše. Číst originál.

I3976 — Every commit names the issue it serves, outside narrow machine-verifiable exemptions, with the earlier history as a baseline

commit.validate gains two rules with policy levels in .ai/repo/policy.yaml's commit block. issue_required (error): a commit whose subject or trailers name no issue record id (I followed by digits, resolved as UnresolvedReference already resolves ids) is refused by the commit-msg hook and by scripts/ci/commit-policy. closing_keyword (error): a message carrying a closing keyword (close, fix or resolve, in any inflection, followed by an issue number) is refused, because it closes the GitHub issue ahead of its record. The rule applies to commits after a recorded boundary commit (the commit that turns it on, kept in .ai/repo/commit-policy-baseline.txt beside today's count), so the 4494 earlier subjects of origin/master that name no issue are outside it and the existing count baseline is unchanged; every commit a branch adds after the boundary must pass outright. The exemptions are decided from the commit and the repository, never from a word a person types, and are checked against every commit shape this repository makes: a git-generated subject (Merge, fixup!, squash!, amend!), a revert of a merge, the root commit, and a commit with two or more parents (the train merges written as merge: train ...). Commits the tools write (the train composer of I3915 and I3978 writing fix(top) and chore(top) subjects, the release record step writing chore(release)) are changed to name the issues they carry or the release issue, so they need no exemption. The hook falls back to the installed release when the executable is not built (I3831), so the rule refuses at commit time once a release carries it and in CI from the commit that turns it on.

BLOKOVÁNO vlna 2 · p1 · profil implementation · běží samostatně

Part of merging-and-referencing-are-enforced — Merging and referencing are enforced: every pull request carries its metadata, every reference resolves, every number is taken once.

Blocked. This issue cannot start until I3973, I3915 are done. The status is derived from that, not declared.

Cíl

commit.validate gains two rules with policy levels in .ai/repo/policy.yaml's commit block. issue_required (error): a commit whose subject or trailers name no issue record id (I followed by digits, resolved as UnresolvedReference already resolves ids) is refused by the commit-msg hook and by scripts/ci/commit-policy. closing_keyword (error): a message carrying a closing keyword (close, fix or resolve, in any inflection, followed by an issue number) is refused, because it closes the GitHub issue ahead of its record. The rule applies to commits after a recorded boundary commit (the commit that turns it on, kept in .ai/repo/commit-policy-baseline.txt beside today's count), so the 4494 earlier subjects of origin/master that name no issue are outside it and the existing count baseline is unchanged; every commit a branch adds after the boundary must pass outright. The exemptions are decided from the commit and the repository, never from a word a person types, and are checked against every commit shape this repository makes: a git-generated subject (Merge, fixup!, squash!, amend!), a revert of a merge, the root commit, and a commit with two or more parents (the train merges written as merge: train ...). Commits the tools write (the train composer of I3915 and I3978 writing fix(top) and chore(top) subjects, the release record step writing chore(release)) are changed to name the issues they carry or the release issue, so they need no exemption. The hook falls back to the installed release when the executable is not built (I3831), so the rule refuses at commit time once a release carries it and in CI from the commit that turns it on.

Proč

The owner's 2026-10-22 order asks every change to be traceable to the issue it serves, as prismatic-platform's commit-msg hook (GITL v3) enforces with its exemptions E1 to E4. Plan delivery reads commit subjects to find an issue's work (plan/delivery.rs), so a commit naming no issue is delivery nobody can attribute; merge commits of combined tops already name only prose.

Aktuální stav

Verified at 355a0cee79a: policy.yaml commit has subject_max_chars, scope_unknown, fix_requires_test, reference_unresolved and breaking_unexplained (policy.yaml:366-371); commit/verdict.rs CommitRule has no rule about naming an issue or about closing keywords, so there is nothing to raise from warning to error; scripts/ci/commit-policy compares one count with .ai/repo/commit-policy-baseline.txt (54, commit-policy:105-122); 254 of 4748 subjects on origin/master name an issue id; train and release commits (merge: train 3a ..., fix(top): ..., chore(release): record ...) name none.

Cílový stav

A commit with no issue id is refused at commit time and in CI, the exemptions are tested one by one, and the history before the rule is a baseline that does not grow.

Rozsah

  • apps/majordomus-cli/src/commit/verdict.rs
  • apps/majordomus-cli/src/commit/policy.rs
  • .ai/repo/policy.yaml
  • scripts/ci/commit-policy
  • .ai/repo/commit-policy-baseline.txt
  • .githooks/commit-msg
  • .ai/repo/rules/project/conventional-commits.v2.md
  • apps/majordomus-cli/src/commands/prs.rs
  • .github/workflows/release.yml
  • test/cases/274_commit_policy.sh
  • .ai/repo/project/issues/I3976.yaml

Mimo rozsah

  • Rewriting published commits
  • A typed bypass marker of any kind

Závislosti

Kritéria přijetí

  • commit validate refuses docs(plan): x with no issue id with code issue_missing and accepts docs(plan): x (I3976) (case a_commit_naming_no_issue_is_refused)
  • A message containing a closing keyword followed by an issue number is refused with code closing_keyword
  • Each exemption (git-generated subject, revert of a merge, root commit, a commit with two or more parents) is accepted, and a person typing an exemption word is not
  • The subjects the train composer and the release record step write name an issue and pass
  • commit-policy on the repository reports the count baseline unchanged, judges only commits after the recorded boundary, and refuses a new branch commit naming no issue

Validace

  • bin/majordomus plan validate
  • env -u MAJORDOMUS_SHARE cargo test --manifest-path apps/majordomus-cli/Cargo.toml --lib -- commit::
  • env -u MAJORDOMUS_SHARE bash test/run.sh 274_commit_policy

Požadované důkazy

  • every_commit_names_its_issue

Důkazy

Nic nezaznamenáno. Za každým tokenem výše musí stát příkaz nebo artefakt, než lze tento úkol dokončit; vyprávění se odmítá.

Časová osa

zahájeno
—
ověřeno
—
dokončeno
—

Tato tři pole, důkazy výše a stav závislostí jsou vše, z čeho se stav skládá. Neexistuje žádné pole stavu, které by s nimi mohlo být v rozporu.

Canonical record: .ai/repo/project/issues/I3976.yaml. Read it back with majordomus plan show I3976.

Prohledává názvy a popisy všech stránek, které tento web publikuje.