docs: FA1 CLOSED — re-review CF-1 seam-map addenda + ledger verdict

The narrow re-review (96df892d) closed FA1 with no reopen and one
carry-forward: two further forward-looking seam-map rows (:128 owner
diagram, :214 state-parameter pattern) still cited the deleted
AllegianceTree as FA2 design guidance. Both now carry dated strike/
addendum notes pointing FA2 at the parsed profile records instead.
FA2 unblocked per the re-review's precondition.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Erik 2026-08-12 00:56:18 +02:00
parent 96df892d21
commit 1bb707e248
2 changed files with 18 additions and 4 deletions

View file

@ -126,6 +126,14 @@ GameRuntime
│ └── borrows RuntimeEntityObjectLifetime (member guid → ClientObject)
└── AllegianceOwner : RuntimeAllegianceState (new)
└── owns the ported AcDream.Core.Allegiance.AllegianceTree
^^^ [FA1 fix-round addendum 2026-08-12, re-review CF-1:
AllegianceTree was DELETED at 4281750b (lane C verdict —
wrong passup transcription, wire-contradicting tree model).
RuntimeAllegianceState owns the PARSED profile records from
ClientCommandResponses.ReadAllegianceProfileBody instead —
the flat vassal list + monarch/patron/self blocks, already
assembled with retail's four rejection rules. Do not recreate
a tree type.]
```
Rationale and precedent:
@ -211,9 +219,15 @@ like every other Runtime-owned sink above"). Two legal shapes:
- **State object** (like `friends`, `squelch`, `itemMana`, `vendor`,
`externalContainers`): the type lives in `AcDream.Core.*`, Runtime owns
the instance, Core.Net writes into it. `FriendsState`/`SquelchState` live
in `AcDream.Core.Social`; `AllegianceTree` already lives in
`AcDream.Core.Allegiance` — **so the allegiance tree can be passed
directly as a state parameter**, exactly like `friends`.
in `AcDream.Core.Social`; ~~`AllegianceTree` already lives in
`AcDream.Core.Allegiance` — so the allegiance tree can be passed
directly as a state parameter, exactly like `friends`~~ [FA1 fix-round
addendum 2026-08-12, re-review CF-1: `AllegianceTree` was DELETED at
`4281750b`. The pattern itself stands — the PARSED allegiance profile
records (from `ReadAllegianceProfileBody`, in `AcDream.Core.Net`) are
what gets passed/held; FA2 defines the owned snapshot type in
`AcDream.Core.*` if a Core-side holder is needed, or holds the parsed
records directly in the Runtime owner].
- **Delegate hole** (like `onCharacterOptions`, `onInterfaceText`,
`onUseDone`): a `Action<...>` the router closes over.