Skip to content

Architecture Decisions

This section captures architectural decisions made on Open Chat Studio as Architecture Decision Records (ADRs). See ADR-0000 for the introduction.

Index

ADR Status Title
0000 ACCEPTED Record architecture decisions
0001 ACCEPTED Use AWS SES + django-anymail signal handler for email ingress
0002 ACCEPTED Slack-style routing priority chain for email channel
0003 ACCEPTED Email thread continuity via ExperimentSession.external_id
0004 ACCEPTED Persist inbound email attachments in the webhook handler
0005 ACCEPTED Validate inbound email attachments by content sniffing
0006 ACCEPTED Combine email reply text and attachments into a single message
0007 ACCEPTED Adopt ty as the Python type checker
0008 ACCEPTED Enable ty rules progressively from a baseline of all-ignored
0009 ACCEPTED Context-based stateless message processing pipeline
0010 ACCEPTED Exception-based early exit with guaranteed terminal stages
0011 ACCEPTED Silent pipeline halt via EarlyAbort
0012 ACCEPTED Lean Score value layer in apps/assessments
0013 ACCEPTED Dual-write Scores from evaluations and annotations
0014 ACCEPTED Minimal read-side concordance view backed by Score
0015 ACCEPTED Dedicated human_annotations app with queue/item/annotation/aggregate model
0016 ACCEPTED Authoritative annotation for multi-reviewer consensus
0017 ACCEPTED Eager per-submission aggregation into a per-queue record
0018 ACCEPTED Scope team querysets by FK identity, not slug join
0019 ACCEPTED Poll source experiments to auto-populate evaluation datasets
0020 ACCEPTED Delta evaluation runs scoped to newly appended messages
0021 PROPOSED Invest in API surface, not a read-only role
0022 PROPOSED URL-path API versioning, v1 frozen / v2 new
0023 PROPOSED Rename experiment to chatbot in the v2 API
0024 PROPOSED inspect as a denormalized read-only projection
0025 PROPOSED Inline nested resource tree for the inspect payload
0026 PROPOSED Identify v2-exposed resources by database primary key
0027 PROPOSED Secrets exclusion via per-resource allowlist serializers
0028 PROPOSED Inspect authorizes on chatbot view + team scope, not per-resource permissions
0029 ACCEPTED Download WhatsApp inbound attachments in an overridden hydration stage
0030 ACCEPTED Gate the email channel with a global allowed-domains setting