Entwurf · Issue 236b4d1
Ein Issue zeigt seine ganze Kette
Entwurf zu Issue 236b4d1, zu docs/plans/236b4d1-an-issue-shows-its-chain.md. Die Tabelle unten vergleicht beim Rendern jeden Plan im Baum mit dem Digest, der für ihn unterschrieben wurde. Solange die rechte Spalte leer ist, wurde kein Plan nach seiner Signatur geändert.
Das Board beantwortet „was soll als Nächstes gebaut werden“, die Planansicht „wie würde es gebaut“. Dazwischen liegt die Seite, auf der ein Mensch tatsächlich landet, wenn er eine Karte anklickt — und sie ist die einzige der drei, die nichts davon weiß.
Sie zeigt Titel, Etiketten, Beschreibung, Thread. Der Plan liegt unter einer zweiten Adresse, der Entwurf unter einer dritten, die Freigabe ist eine Datei, die überhaupt niemand sehen kann. Eine Karte kuratieren heißt heute: vier Adressen, und eine davon muss man auswendig wissen.
01Vier Stationen, nicht sechs
Issue, Plan, Entwurf, Freigabe sind Dateien in diesem Baum und kosten nichts — sie antworten im frischen Clone genauso wie im Container. Patch und Gate nicht: Das Urteil ist ein Kommentar am Patch-COB, ein Patch wird über seinen Head-Commit gefunden, und ein Issue erreicht einen Patch nur über die Plandatei darin — die bei einem offenen Patch gar nicht im Baum liegt.
- Das ist
41c8a85, „A plan in an open patch is a plan, not a broken card“. Bis dahin gäbe es hier nur zwei Felder, die auf eine Liste verlinken. - Zwei Stationen, die nichts über diese Karte sagen, sind Möbel in einem Streifen, dessen ganze Aufgabe es ist, den Zustand dieser Karte zu nennen. Also fehlen sie lieber.
02Was eine Freigabe hier sagen darf
Zwei verschiedene Behauptungen, und nur eine davon ist hier beantwortbar. digestApproved rechnet über den Plan im Baum; das Statement in .chain/approvals/ trägt den Digest, der unterschrieben wurde. Der Vergleich beantwortet: Ist das noch der Plan, der freigegeben wurde?
| Plan | Issue | signiert | im Baum | fehlt |
|---|---|---|---|---|
| 085df52-badge-without-filesystem.md | 085df52 | 687f678c22 | 687f678c22 | |
| 09e87ba-an-issue-is-findable-by-its-id.md | 09e87ba | 872ac1d9ad | 872ac1d9ad | |
| 0e0ba05-the-order-is-one-picture.md | 0e0ba05 | 831d0a363c | 831d0a363c | |
| 1159d74-the-gate-speaks-on-the-card.md | 1159d74 | f1ed2ace5c | f1ed2ace5c | |
| 180c32c-plan-approved-label.md | 180c32c | — | 78d170c086 | |
| 203732a-the-chain-reads-as-one-band.md | 203732a | 0c57ca70b3 | 0c57ca70b3 | |
| 236b4d1-an-issue-shows-its-chain.md | 236b4d1 | 697efd4149 | 697efd4149 | |
| 28c2d21-the-band-stands-above-the-title.md | 28c2d21 | a48b778e58 | a48b778e58 | |
| 2dc6a5e-verify-that-runs-anywhere.md | 2dc6a5e | 44c65f0e24 | 44c65f0e24 | |
| 37ed1fb-a-sprint-in-the-address.md | 37ed1fb | b88c50bd79 | b88c50bd79 | |
| 3e8a910-the-approval-station-hands-the-pen.md | 3e8a910 | 6dbb4c0be9 | 6dbb4c0be9 | |
| 51edf0a-page-comes-up.md | 51edf0a | 1dacd19f02 | 1dacd19f02 | |
| 55ba307-an-effort-of-two-carries-a-spec.md | 55ba307 | 62357050ce | 62357050ce | |
| 55d804a-the-review-column-leaves-the-board.md | 55d804a | d1d8a11519 | d1d8a11519 | |
| 5a95366-chain-gate.md | 5a95366 | 87f48472ef | 87f48472ef | |
| 5d5298f-verdict-rides-on-the-card.md | 5d5298f | ad5b9d69cc | ad5b9d69cc | |
| 5e6f482-not-every-card-is-build-work.md | 5e6f482 | 3e6bea3d51 | 3e6bea3d51 | |
| 5fe7026-board-shows-a-page.md | 5fe7026 | — | 95a414fac9 | |
| 69eae0d-a-draft-is-findable.md | 69eae0d | fda532273b | fda532273b | |
| 7105c5a-form-language-imported.md | 7105c5a | 248bde474d | 248bde474d | |
| 71e7b6d-preflight-tag-check.md | 71e7b6d | — | c9488f7828 | |
| 75f9042-every-module-explains-itself.md | 75f9042 | 70fe2f6017 | 70fe2f6017 | |
| 852f19b-an-issue-says-what-it-waits-for.md | 852f19b | 913f57396d | 913f57396d | |
| 89b4e9c-buried-copy-leaves.md | 89b4e9c | 63efd6c2d2 | 63efd6c2d2 | |
| 8b1babd-release-line.md | 8b1babd | 8d82fdd091 | 8d82fdd091 | |
| 8d27b84-review-workbench.md | 8d27b84 | 68144e9b13 | 68144e9b13 | |
| 9073638-the-thread-stands-beside-the-issue.md | 9073638 | 08a4d17ce5 | 08a4d17ce5 | |
| 969b17d-the-issue-reads-as-a-document.md | 969b17d | 9282605d75 | 9282605d75 | |
| a76dbc0-star-map.md | a76dbc0 | 981e2532c1 | 981e2532c1 | |
| a8de23c-the-rail-carries-the-organ.md | a8de23c | 6be3b20dca | 6be3b20dca | |
| ac1293f-the-issue-page-reads-as-tabs.md | ac1293f | da3cdb80e6 | da3cdb80e6 | |
| b3cd475-mention-says-what-kind.md | b3cd475 | 9743712d23 | 9743712d23 | |
| b5c66ad-plans-waiting-badge.md | b5c66ad | 62f49255d9 | 62f49255d9 | |
| b88adde-a-plan-reads-as-a-document.md | b88adde | 68c53e082d | 68c53e082d | |
| c9b8fe7-the-badge-asks-all-five.md | c9b8fe7 | 30046c62f2 | 30046c62f2 | |
| cb83cdf-plan-settles.md | cb83cdf | 5293d490ba | 5293d490ba | |
| cf2a3bc-done-belongs-to-its-sprint.md | cf2a3bc | 717aed31ac | 717aed31ac | |
| d5ddbbc-wallet-spend-agent-account.md | d5ddbbc | — | aef5218f6e | |
| da0d198-readiness-earned-or-unclaimed.md | da0d198 | 174381d81a | 174381d81a | |
| e5ccfe1-the-rail-keeps-the-cycles.md | e5ccfe1 | a83f49a5ac | a83f49a5ac | |
| e7eab09-a-search-searches-the-whole-board.md | e7eab09 | 879627f7b4 | 879627f7b4 | |
| ea06505-one-name-one-column.md | ea06505 | fea74ce227 | fea74ce227 | |
| f63315e-plans-in-repo.md | f63315e | — | 7c50cd47a1 | |
| f8d6779-an-effort-is-the-organ.md | f8d6779 | ccb7c79cda | ccb7c79cda | |
| f9bb78d-the-plans-tab-goes.md | f9bb78d | 79d9e018aa | 79d9e018aa | |
| fc30f7f-account-block.md | fc30f7f | — | 3daacf6723 |
40 signierte Pläne, alle unverändert seit der Unterschrift. 6 noch ohne.
Ob die Signatur verifiziert, beantwortet das nicht. Dafür braucht es allowed_signers und einen Prüfer, und der laufende Container hat weder das eine noch das andere. Das bleibt die Frage des Merge-Gates — die Seite sagt das, statt aus einer Datei, die sie selbst gelesen hat, einen grünen Haken zu rendern.
03Wo zwei Quellen sich widersprechen
Ein Etikett plan/approved ohne Plan im Baum hat auf dem Board schon ein Abzeichen. Die Gegenrichtung hat keines: eine Signatur, die da ist, während das Etikett fehlt — die Karte steht dann auf dem Board nicht als bereit, obwohl sie es ist.
Keine der beiden Seiten wird zur Siegerin erklärt. Das Etikett sagt, was ein Mensch entschieden hat; die Datei sagt, ob das, worüber er entschieden hat, existiert. Wo sie sich widersprechen, zeigt der Streifen beide Hälften — dieselbe Regel, unter der lib/plans.ts geschrieben ist, eine Ebene höher.
04Was diese Seite nicht sehen kann
Die Tabelle misst Pläne an Signaturen, beide aus dem Baum. Sie kann nicht sagen, welches Issue offen ist, welche Etiketten es trägt oder ob es überhaupt existiert — das braucht einen Seed. Diese Fragen stellt /code/-/plans, das einen hat.
Und sie prüft nichts, was nach dem Merge passiert. Ein Plan, der nach seiner Freigabe geändert und gemergt wurde, taucht hier auf; einer, der nie gemergt wurde, gar nicht. Die Kette am Patch ist d15cd31.