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?

PlanIssuesigniertim Baumfehlt
085df52-badge-without-filesystem.md085df52687f678c22687f678c22
09e87ba-an-issue-is-findable-by-its-id.md09e87ba872ac1d9ad872ac1d9ad
0e0ba05-the-order-is-one-picture.md0e0ba05831d0a363c831d0a363c
1159d74-the-gate-speaks-on-the-card.md1159d74f1ed2ace5cf1ed2ace5c
180c32c-plan-approved-label.md180c32c—78d170c086
203732a-the-chain-reads-as-one-band.md203732a0c57ca70b30c57ca70b3
236b4d1-an-issue-shows-its-chain.md236b4d1697efd4149697efd4149
28c2d21-the-band-stands-above-the-title.md28c2d21a48b778e58a48b778e58
2dc6a5e-verify-that-runs-anywhere.md2dc6a5e44c65f0e2444c65f0e24
37ed1fb-a-sprint-in-the-address.md37ed1fbb88c50bd79b88c50bd79
3e8a910-the-approval-station-hands-the-pen.md3e8a9106dbb4c0be96dbb4c0be9
51edf0a-page-comes-up.md51edf0a1dacd19f021dacd19f02
55ba307-an-effort-of-two-carries-a-spec.md55ba30762357050ce62357050ce
55d804a-the-review-column-leaves-the-board.md55d804ad1d8a11519d1d8a11519
5a95366-chain-gate.md5a9536687f48472ef87f48472ef
5d5298f-verdict-rides-on-the-card.md5d5298fad5b9d69ccad5b9d69cc
5e6f482-not-every-card-is-build-work.md5e6f4823e6bea3d513e6bea3d51
5fe7026-board-shows-a-page.md5fe7026—95a414fac9
69eae0d-a-draft-is-findable.md69eae0dfda532273bfda532273b
7105c5a-form-language-imported.md7105c5a248bde474d248bde474d
71e7b6d-preflight-tag-check.md71e7b6d—c9488f7828
75f9042-every-module-explains-itself.md75f904270fe2f601770fe2f6017
852f19b-an-issue-says-what-it-waits-for.md852f19b913f57396d913f57396d
89b4e9c-buried-copy-leaves.md89b4e9c63efd6c2d263efd6c2d2
8b1babd-release-line.md8b1babd8d82fdd0918d82fdd091
8d27b84-review-workbench.md8d27b8468144e9b1368144e9b13
9073638-the-thread-stands-beside-the-issue.md907363808a4d17ce508a4d17ce5
969b17d-the-issue-reads-as-a-document.md969b17d9282605d759282605d75
a76dbc0-star-map.mda76dbc0981e2532c1981e2532c1
a8de23c-the-rail-carries-the-organ.mda8de23c6be3b20dca6be3b20dca
ac1293f-the-issue-page-reads-as-tabs.mdac1293fda3cdb80e6da3cdb80e6
b3cd475-mention-says-what-kind.mdb3cd4759743712d239743712d23
b5c66ad-plans-waiting-badge.mdb5c66ad62f49255d962f49255d9
b88adde-a-plan-reads-as-a-document.mdb88adde68c53e082d68c53e082d
c9b8fe7-the-badge-asks-all-five.mdc9b8fe730046c62f230046c62f2
cb83cdf-plan-settles.mdcb83cdf5293d490ba5293d490ba
cf2a3bc-done-belongs-to-its-sprint.mdcf2a3bc717aed31ac717aed31ac
d5ddbbc-wallet-spend-agent-account.mdd5ddbbc—aef5218f6e
da0d198-readiness-earned-or-unclaimed.mdda0d198174381d81a174381d81a
e5ccfe1-the-rail-keeps-the-cycles.mde5ccfe1a83f49a5aca83f49a5ac
e7eab09-a-search-searches-the-whole-board.mde7eab09879627f7b4879627f7b4
ea06505-one-name-one-column.mdea06505fea74ce227fea74ce227
f63315e-plans-in-repo.mdf63315e—7c50cd47a1
f8d6779-an-effort-is-the-organ.mdf8d6779ccb7c79cdaccb7c79cda
f9bb78d-the-plans-tab-goes.mdf9bb78d79d9e018aa79d9e018aa
fc30f7f-account-block.mdfc30f7f—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.