-
Notifications
You must be signed in to change notification settings - Fork 3
plat 042
github-actions[bot] edited this page Sep 20, 2026
·
1 revision
| Coordination | Value |
|---|---|
| Assigned agent | Codex |
| Ticket state | implemented; runtime reverify |
| Last synchronized | 2026-08-07 |
- Priority: P1
- Owner: report/Pulse human-input persistence and HTTP attribution
-
Source finding:
answer_path_captures_no_operator_identity - Source workflow: Confida QA
-
Problem:
answered_by='default'is a valid local user ID, but it does not prove whether an answer entered through the report UI, an agent-mediated chat, or legacy data. The olderreport_human_inputspath also had no event ledger. -
Implementation: answers now persist server-derived
answered_by_kind,answered_via, andanswered_session_id; browser payloads cannot forge the actor ID.report_human_input_eventsrecords create, refresh, answer, claim, release, consume, and dismiss transitions. Agent-mediated explicit answers are markedhuman_via_chat; unattributed legacy/direct writes remainlegacy_unattributedrather than being falsely upgraded. The event ledger stores attribution and answer shape, not a second copy of sensitive free text; the current input row remains the answer source of truth. -
Verification: focused tests prove attribution and event persistence and
prove a forged HTTP
answered_byvalue is ignored. - Runtime acceptance: answer one report question in the Electron UI and one explicit question through chat; both must retain the same authenticated user while exposing distinct actor kinds/channels and append-only events.
Auto-synced from docs/ on main. Edit there, not here.