Skip to content

fix(forensic): misattribution — attribution rules, honest immutability, subject editing (27 F.1–F.3)#178

Closed
bryanmatthewsimonson wants to merge 1 commit into
claude/phase-27-s3-proposal-uxfrom
claude/phase-27-f1-forensic-attribution
Closed

fix(forensic): misattribution — attribution rules, honest immutability, subject editing (27 F.1–F.3)#178
bryanmatthewsimonson wants to merge 1 commit into
claude/phase-27-s3-proposal-uxfrom
claude/phase-27-f1-forensic-attribution

Conversation

@bryanmatthewsimonson

Copy link
Copy Markdown
Owner

Summary

Phase-27 slices F.1–F.3 — the forensic misattribution fix. Stacked on #177.

The reported failure: LLM finding suggestions attribute a maneuver to the person calling it out (a journalist reporting X's deflection gets profiled as the deflector). Verified as over-determined: zero attribution guidance in the prompt, anchor-grounding structurally pulling toward the reporter (theirs is the only quotable sentence in reported speech), a symmetry instruction that invites profiling the journalist, and no correction path — the review panel had no subject field, and the edit modal rendered subject/maneuver as editable then silently discarded the changes.

  • F.2rulesFindings gains explicit ATTRIBUTION rules: subject = who performed the move; reporting ≠ performing; the reported-speech case is spelled out (anchor to the reporter's sentence, attribute to the actor, basis paraphrased); undeterminable performer → omit. Symmetry now reads "every SPEAKER whose own moves the text carries… not the journalist by default."
  • F.1 — the edit modal freezes the id-deriving fields (subject/maneuver/anchors) with a delete-and-recreate hint, instead of silently discarding edits to them.
  • F.3 — findings gain subject fields in the review edit panel, and accepted findings/baselines join the accepted entity's identity_id — healing the keyspace split that made label-only findings unaggregatable and silently unpublishable. Forward-only per decision D6.

Tests: 1,793 green (2 new) · build clean · lint 0 errors.

Next

F.4 (baselines actually visible in the reader) follows.

🤖 Generated with Claude Code

…tability, subject editing (27 F.1–F.3)

Phase 27 slices F.1–F.3, from the maintainer report that LLM finding
suggestions frequently attribute a maneuver to the person CALLING IT
OUT (e.g. a journalist reporting X's deflection gets profiled as the
deflector). The investigation found the error over-determined — no
attribution guidance in the prompt, anchor-grounding structurally
pulling toward the reporter (theirs is the only quotable sentence),
the symmetry line inviting it, and NO downstream correction path.

- F.2 rulesFindings gains ATTRIBUTION rules: the subject is the party
  who PERFORMED the move; describing/quoting/criticizing someone
  else's maneuver is not performing it; the reported-speech case is
  spelled out (anchor to the reporter's sentence, attribute to the
  actor, basis "paraphrased"); if the performer is undeterminable,
  OMIT. The symmetry rule now says every SPEAKER's own moves — and
  explicitly not the journalist by default. "quoted" basis narrowed to
  the subject's own verbatim words.
- F.1 forensic-modal: editing an existing finding freezes subject /
  maneuver / anchors (they derive the id; ForensicModel.update
  silently discarded those edits) with a delete-and-recreate hint.
  Role/note/counter-read/basis stay editable.
- F.3 llm-review: findings gain subject fields in the edit panel (the
  one field you could never fix), and buildFindingInput /
  buildBaselineInput join the accepted entity id via entityIdByRef —
  accepted findings land in the identity keyspace instead of
  fragmenting into label-only records that silently never publish.
  Forward-only (D6): existing label-keyed findings are not migrated.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@bryanmatthewsimonson

Copy link
Copy Markdown
Owner Author

Landed on main via the #183 consolidation merge (the stacked-merge cascade closed/retargeted intermediates; every commit from this PR is in main).

@bryanmatthewsimonson
bryanmatthewsimonson deleted the claude/phase-27-f1-forensic-attribution branch July 18, 2026 05:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant