fix(sepia): resolve model identity per role, never by comparing roles
Round 3 of Codex review on #45 surfaced two more unhandled combinations (executor's narrative layer not loaded when generating fiction; same family with different releases could not be reported). With round 1 (unconditional row) and round 2 (different families; Mythos tag) that made five findings in one place, and the cause is structural: the rule enumerated cases — author known, executor known, same family, different family, release match — and each round found the next unlisted one. Enumeration does not terminate; the previous PR on this repository (#43) closed a spelling class the same way. The rule is rewritten as a function of one role at a time. Each role (author, executor) resolves to unknown, family, or family plus release. A known family loads its narrative layer as priors on the fiction route whenever that role's model produced or is producing the story — author on review, executor on write, both on refactor and recreate — and loads its prose layer on every route, operative when the release matches the table's tag and a prior otherwise. The author's layers act on the given text, the executor's on the produced text; on write there is no author role. An unknown role, or a family without a table for a layer, loads nothing for it and reports none. No sentence compares the two roles, so the same-family and different-family cases no longer exist; the composition sentence added in round 2 is deleted. Report lines are per role: "Prose layer: author=<operative|prior|none> executor=<operative|prior|none>", and the fiction report gains "Narrative layer: author=<prior|none> executor=<prior|none>" so a loaded narrative prior is recordable. The Claude prose row states its trigger per role. A local read-only structural review (codex exec, gpt-5.6-sol, high) over the whole rule surface before this push enumerated the state space roles × identity × route × operation × layer and found the remaining gaps that are fixed here: refactor missing from the narrative mapping, write having no author target, families without a prose table, the fiction report unable to record narrative loading, and two (V) clauses in professional-pass.md applying vendor evidence without an identity. Those two clauses are now identity-independent Sepia inferences without (V) attribution — density fails in both directions; absence of formatting tells is not evidence of a human, since which formatting a release over- or under-uses changes — and professional-pass.md drops the V alias. sources.md lists only model-fingerprints.md as the consumer of both vendor pages, which is now true. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TtoUEQarAYtQYrZLLwqjao
N
Nanako Tsai committed
73896c7f4bf40a0aeffedfb16ebd0b687f046e6c
Parent: 297c1f8