From 47bb7409be4666c55ce82f23fa01c704999ae96d Mon Sep 17 00:00:00 2001 From: jochen Date: Thu, 12 Nov 2026 22:19:36 +0100 Subject: [PATCH] Answer A-310: a compose request's manifest names its fingerprint beside its digest Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h --- 03-DESIGN/01-to-be/47-milestones/G-22-lead-answers-2.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/03-DESIGN/01-to-be/47-milestones/G-22-lead-answers-2.md b/03-DESIGN/01-to-be/47-milestones/G-22-lead-answers-2.md index c59be226..4a25c07c 100644 --- a/03-DESIGN/01-to-be/47-milestones/G-22-lead-answers-2.md +++ b/03-DESIGN/01-to-be/47-milestones/G-22-lead-answers-2.md @@ -505,3 +505,9 @@ the principle that settles it, cited as "design 47 G A-n". - **A-309** (A-290, A-254, research 071; principles 7 and 2) A build module's `outputs` objects live as long as the step key that names them: the store's age is the steps state's time to live (two days), its cap 256 MiB, and the bus's own age removes an object; nothing else deletes one. The milestone's lifetime list gains this line. +- **A-310** (§615, §506; principles 7 and 3) A compose request's manifest named by digest also names the fingerprint + whose catalog graph entry holds it: `composer.Manifest` gains `fingerprint` beside `digest`, and the checker, the one + part that sends digests, fills it (a pull's `Fps`, else the trunk revision's entry of that module). The Go build module + reads the entry by `seat:mesh-catalog.entry` with that fingerprint, takes its manifest whole, and refuses the request, + saying which module, when the entry's `manifest-digest` differs or a digest comes without a fingerprint. A manifest + sent whole (`raw`, the assigner and the indexer) is read as today.