You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[TK-005] Replace global pair closure with typed obligations, stable identity, and validated rolls #5
One blank inbound closes all cue/check-in pairs for a seat; one relay closes all rolls. Stable Discord author identity is discarded. Will/William substring matching is ambiguous; duplicate aliases are accepted; unknown speakers become new seats. “14 damage” and “3 hit points back” are consumed as rolls; natural 99 is accepted; unattributed failure repeats forever.
Scope / specification
Model every cue/check-in/roll/narration/delivery as one immutable obligation with explicit opener, expected actor/audience, type, correlation/source IDs, lifecycle, deadline/pause, and resolution evidence. Identity resolution prioritizes source-native principal ID mapped by host; aliases are exact normalized fallback and ambiguity is an error. Roll result carries roll ID, source, die/range/total, and confidence/provenance.
Acceptance criteria
One inbound/result can close only explicitly correlated obligations.
Empty content never acknowledges without a source event type that defines it.
Duplicate/ambiguous aliases/IDs rejected; unknown principal remains unknown, not auto-enrolled.
Bot/transport identity comes from source-native ID and is_bot/role.
Typed dice-bot/VTT result preferred; prose roll inference remains advisory and cannot auto-close high-authority obligations.
Natural ranges and system rules are validated by upstream engine/source when asserted.
Attribution failures are idempotently recorded once and repairable.
A relay with total=null appends neither an act containing ? nor a roll resolution.
Every native message—including unattributed, rejected, or quarantined relays—is durably recorded/deduplicated before routing and surfaced to the operator.
Host-generated obligation IDs are globally collision-resistant and unique; duplicate IDs fail instead of overwriting state.
Each obligation kind has explicit allowed transition/outcome enums; orphan close/resolve events are rejected with typed diagnostics.
Remaining: host-protected principal/source bindings, canonical dice/VTT and DM-ruling events, and production correction/consent/redaction/conflict behavior. #17 owns that boundary; #18 tests whether it yields accurate, useful findings.
Activity
chaoz23 commentedon Aug 3, 2026
Status reconciliation (2026-08-03): keep open; typed obligations are merged, cross-source authority is not.
PR #10 delivered typed cue/roll lifecycles, explicit correlation, conservative identity, replay-safe receipts, and quarantine/refusal paths. PRs #11–#15 preserve exact evidence through four-tool conformance.
Remaining: host-protected principal/source bindings, canonical dice/VTT and DM-ruling events, and production correction/consent/redaction/conflict behavior. #17 owns that boundary; #18 tests whether it yields accurate, useful findings.