SIGN IN SIGN UP

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