docs(architecture): adopt inline synchronous ingestion (ADR-0017)

Why:
- ingestion is inline in the request instead of dispatched through RabbitMQ/outbox/worker; ADR-0014 is superseded (not deleted) and named as the design to adopt once ingestion needs to move off the request path.

Changes:
- new ADR-0017 plus amendments to every ADR/plan that referenced the job-shaped/broker contract, so none silently contradict it.

Impact:
- no broker, outbox, or worker code; rabbitmq test marker removed.
This commit is contained in:
2026-08-16 11:53:59 +03:30
parent e2322a2909
commit fd70ad01af
9 changed files with 542 additions and 154 deletions

View File

@@ -47,6 +47,7 @@ Use SQLAlchemy 2.x ORM models with typed mappings:
class Base(DeclarativeBase):
pass
class Tenant(Base):
__tablename__ = "tenants"
@@ -208,9 +209,12 @@ on the `content_hash` policy.
#### `ingestion_jobs`
One attempt to parse/chunk/embed/upsert a source file. This table is required
even if the first implementation processes inline, because ADR-0008's file
upload contract is job-shaped.
One attempt to parse/chunk/embed/upsert a source file. Under
[ADR-0017](0017-synchronous-ingestion-in-the-request-path.md) that attempt runs
inline in the upload request, so a row is written `running` before the work and
updated to a terminal status after it — the table is a durable record of the
attempt, not a queue. It is what makes failures inspectable, re-ingestion
idempotent, and a later move back to queued dispatch (ADR-0014) additive.
| Column | Notes |
|---|---|