merging-and-referencing-are-enforced — Merging and referencing are enforced: every pull request carries its metadata, every reference resolves, every number is taken once
Merging and referencing are projections, typed commands and gates: every pull request carries its metadata from the records, every reference resolves on master, every number is taken once.
PLÁNOVÁNO 0 z 10 úkolů hotovo
- připraveno
- 3
- blokováno
- 7
- aktivní
- 0
- verify
- 0
- hotovo
- 0
- zrušeno
- 0
Problém
A pull request carries only what its author typed, and the repository labels hold, collision:accepted and ci:yielded are named in code but declared nowhere. plan next offers work that already sits in an open pull request. A milestone dependency holds every issue of the milestone, 26 of them at 355a0cee79a with no unfinished dependency of their own, and nothing names them. Issue ids have no allocator. A GitHub issue created by hand with a record title is adopted by github-sync. A commit need not name its issue. The landing duties of a train member are a table in docs/INTEGRATION.md.
Výsledek
Merging and referencing are projections, typed commands and gates: every pull request carries its metadata from the records, every reference resolves on master, every number is taken once.
Aktuální stav
scripts/github-sync projects issues, milestones and four label families (majordomus, priority, status, execution) from the trunk only and never touches a pull request; plan.next ranks READY by stamps alone (plan.rs:567-580); the milestone gate blocks every issue of a blocked milestone (plan.rs:1110-1130); scripts/case-numbers and lib/adr.sh each survey tree, worktrees, refs and board for one identifier; commit.validate has no rule about naming an issue; nothing declares the label vocabulary.
Cílový stav
Každé kritérium záměru nese zde některý úkol a dokazuje ho jeho test.
Rozsah
- scripts/github-sync
- scripts/ci/github-check
- scripts/ci/collision-gate
- scripts/case-numbers
- lib/adr.sh
- apps/majordomus-cli/src/plan.rs
- apps/majordomus-cli/src/commit
- apps/majordomus-cli/src/convergence
- docs/INTEGRATION.md
- CONTRIBUTING.md
Kritéria přijetí
- Every open pull request carries labels, the GitHub milestone of the issue it serves, an assignee and a managed body region of Refs links, projected from the records, with no closing keyword
- An issue whose work sits in an open pull request or under a live branch claim is never the answer of plan next or plan ready
- plan validate names every issue held only by its milestone gate, and an issue may declare that it needs nothing from its milestone dependencies
- A pull request naming a record id that resolves neither on master nor in itself is refused, and convergence reports stranded records
- Issue ids, ADR numbers and case numbers come from one survey, and two branches adding one number under different names are refused
- A GitHub issue is created only by github-sync, an issue nobody projected is reported on GitHub, and an issue without a record marker is never adopted
- A commit naming no issue or carrying a closing keyword is refused outside the narrow exemptions, judged after a recorded boundary
- Every served page names only versions of the release model
- Each train member is judged on its merged tree, and a fix member carries a test and its coverage
- Every label and convention is declared once, projected and checked
Validace
- bin/majordomus plan validate
- bin/majordomus intent validate
Požadované důkazy
- pr_metadata_projected
- work_in_review_is_not_next
- milestone_gate_is_explained
- references_resolve_on_master
- one_allocator
- issues_come_from_the_projection
- every_commit_names_its_issue
- one_version_everywhere
- merged_result_is_judged
- conventions_declared_once
Úkoly
Každý z nich je prováděcí kontrakt s vlastními kritérii přijetí, validačním příkazem a požadovanými důkazy. Sloupec wave je vrstva grafu závislostí, v níž úkol leží.
| issue | status | vlna | závisí na | název |
|---|---|---|---|---|
| I3970 | BLOKOVÁNO | 1 | I3979 | Every pull request carries its metadata, projected from the trunk's records: labels, milestone, assignee and Refs links, never a closing keyword |
| I3971 | BLOKOVÁNO | 4 | I3754 | Work in an open pull request or under a live branch claim is reported taken and is never the next issue |
| I3972 | BLOKOVÁNO | 1 | I3757 | plan validate names every issue held only by its milestone gate, and an issue may declare it needs nothing from the milestone's dependencies |
| I3973 | PŘIPRAVENO | 0 | — | A record is referenced only once it is on master: a pull request naming an unlanded id is refused, and convergence reports stranded records |
| I3974 | PŘIPRAVENO | 0 | — | One allocator surveys every number (issue ids, ADR numbers, case numbers), and two branches adding one number under different names are refused |
| I3975 | BLOKOVÁNO | 2 | I3970, I3979 | GitHub issues are created only by github-sync: an agent's raw create is refused, an issue nobody projected is reported on GitHub, and an unmarked issue is never adopted |
| I3976 | BLOKOVÁNO | 2 | I3973, I3915 | Every commit names the issue it serves, outside narrow machine-verifiable exemptions, with the earlier history as a baseline |
| I3977 | BLOKOVÁNO | 1 | I3449 | Every page a deployment serves names only versions of the release model, checked after the deploy |
| I3978 | BLOKOVÁNO | 2 | I3915 | Each train member is judged on its merged tree, and a fix member joins only with a test and its changed-code coverage |
| I3979 | PŘIPRAVENO | 0 | — | Every label, branch prefix and commit type is declared once, projected to GitHub, described in CONTRIBUTING and checked |
Graf
flowchart LR
I3970["I3970<br/>Every pull request carries its metadata, projected from the trunk's records: labels, milestone, assignee and Refs links, never a closing keyword"]:::blocked
I3971["I3971<br/>Work in an open pull request or under a live branch claim is reported taken and is never the next issue"]:::blocked
I3972["I3972<br/>plan validate names every issue held only by its milestone gate, and an issue may declare it needs nothing from the milestone's dependencies"]:::blocked
I3973["I3973<br/>A record is referenced only once it is on master: a pull request naming an unlanded id is refused, and convergence reports stranded records"]:::ready
I3974["I3974<br/>One allocator surveys every number (issue ids, ADR numbers, case numbers), and two branches adding one number under different names are refused"]:::ready
I3975["I3975<br/>GitHub issues are created only by github-sync: an agent's raw create is refused, an issue nobody projected is reported on GitHub, and an unmarked issue is never adopted"]:::blocked
I3976["I3976<br/>Every commit names the issue it serves, outside narrow machine-verifiable exemptions, with the earlier history as a baseline"]:::blocked
I3977["I3977<br/>Every page a deployment serves names only versions of the release model, checked after the deploy"]:::blocked
I3978["I3978<br/>Each train member is judged on its merged tree, and a fix member joins only with a test and its changed-code coverage"]:::blocked
I3979["I3979<br/>Every label, branch prefix and commit type is declared once, projected to GitHub, described in CONTRIBUTING and checked"]:::ready
I3970 --> I3975
I3973 --> I3976
I3979 --> I3970
I3979 --> I3975
classDef done stroke:#16a34a,fill:#dcfce7,color:#14532d,stroke-width:2px
classDef active stroke:#2563eb,fill:#eff6ff,color:#1e3a8a,stroke-width:2px
classDef verify stroke:#7c3aed,fill:#f5f3ff,color:#4c1d95,stroke-width:2px
classDef ready stroke:#0891b2,fill:#ecfeff,color:#164e63,stroke-width:2px
classDef planned stroke:#0891b2,fill:#ecfeff,color:#164e63,stroke-width:2px
classDef blocked stroke:#b45309,fill:#fffbeb,color:#78350f,stroke-width:2px
classDef cancelled stroke:#6b7280,fill:#f9fafb,color:#374151,stroke-width:2px
classDef superseded stroke:#6b7280,fill:#f9fafb,color:#374151,stroke-width:2pxOdkazuje z tohoto diagramu (10)
- I3970 Every pull request carries its metadata, projected from the trunk's records: labels, milestone, assignee and Refs links, never a closing keyword
- I3971 Work in an open pull request or under a live branch claim is reported taken and is never the next issue
- I3972 plan validate names every issue held only by its milestone gate, and an issue may declare it needs nothing from the milestone's dependencies
- I3973 A record is referenced only once it is on master: a pull request naming an unlanded id is refused, and convergence reports stranded records
- I3974 One allocator surveys every number (issue ids, ADR numbers, case numbers), and two branches adding one number under different names are refused
- I3975 GitHub issues are created only by github-sync: an agent's raw create is refused, an issue nobody projected is reported on GitHub, and an unmarked issue is never adopted
- I3976 Every commit names the issue it serves, outside narrow machine-verifiable exemptions, with the earlier history as a baseline
- I3977 Every page a deployment serves names only versions of the release model, checked after the deploy
- I3978 Each train member is judged on its merged tree, and a fix member joins only with a test and its changed-code coverage
- I3979 Every label, branch prefix and commit type is declared once, projected to GitHub, described in CONTRIBUTING and checked
Canonical record: .ai/repo/project/milestones/merging-and-referencing-are-enforced.yaml. Read it back with majordomus plan show merging-and-referencing-are-enforced.