# GCS-RUNTIME-001 - No Async Queue Contract

Spec ID      : GCS-RUNTIME-001
Title        : No Async Queue
Version      : v1.0
Status       : Settled
Owner        : Phil
Approver     : Phil
Settled      : 2026-07-08
Depends on   : GCS-SYS-001, GCS-NAME-001, GCS-DATA-003, GCS-TEST-001
Supersedes   : -

## 1. Rule

GCS has no async queue, worker, scheduler, broker, Celery app, Redis broker,
RabbitMQ exchange, durable outbox, or durable inbox in Phase 0.

This absence is binding. A queue-like implementation is forbidden until this
contract is amended.

## 2. Why

The current implementation is a static contract and research surface. The next
load-bearing runtime work is the point-in-time store. Queueing before
durable source truth exists would create operational motion without evidence
authority.

## 3. Future Conditions Before Queues

Async delivery may be introduced only after:

- GCS-DATA-003 has physical outbox/inbox tables or an equivalent durable
  source-of-truth design.
- GCS-DEPLOY-002 names the broker service and local host-port rule.
- GCS-DEPLOY-001 names the managed runtime service identity.
- GCS-NAME-002 registers every logical queue name and message type.
- GCS-API-001 or data-ingestion contracts define idempotency keys.
- GCS-TEST-001 has positive and negative tests for duplicate delivery,
  broker loss, retry, dead-letter, and worker crash behavior.

## 4. Forbidden Source Tokens

Source code may not introduce queue/broker implementation tokens such as:

- `celery`
- `rabbitmq`
- `redis` as broker/cache
- `queue_name`
- `dead_letter`
- `outbox`
- `inbox`
- `worker` as async consumer
- `scheduler` as async producer

Contracts may discuss these terms. Source code may not implement them while
this no-queue contract is active.

## 5. Validation

Positive verification: `python3 -m tools.check_contracts --check` scans source
files and finds no queue/broker implementation tokens.

Negative verification: adding a source line such as `queue_name =
"gcs.ingest"` or `from celery import Celery` makes the gate fail with the file
and forbidden token.
