Story-1139 — Continue the trace from SQS through Bedrock

Implements pramaan-docs ADR-104 for pramaan-agents: the already-attached ADOT Lambda layer is the ONE tracing system; this Story makes the agents Lambda continue the trace that pramaan-functions started.

The trace journey

HTTP request (traceparent + x-pramaan-correlation-id)
  → pramaan-functions route span
  → SQS enqueue: message attributes traceparent / tracestate / correlation_id
  → agents Lambda: consume_record() extracts context
  → "pramaan-agents-runs-{env} process" CONSUMER span (parent = producer span)
  → Bedrock / SQS / API GW management spans from the ADOT layer's botocore
    instrumentation, parented under the consumer span

Middleware home: the single SQS record-consume wrapper

Correlation contract

Structured logs (PRAMAAN log shape v1)

Kill switch and SnapStart safety

Dependency hygiene

Test evidence

BehaviorTest
Trace continues from message attributestests/observability/test_sqs_consume.py, test_handler_trace.py
Backward compat (old producer)test_missing_attributes_starts_new_root_trace, test_old_producer_record_without_attributes_still_processes
Batch span linkstest_batch_records_use_span_links_not_parent, test_multi_record_batch_uses_links
Correlation precedence + envelope fieldtest_correlation_*, tests/runtime/test_payloads_correlation.py
Log shape with trace_id/span_id/correlation_idtests/observability/test_logger.py
Kill switchtest_kill_switch_processing_works_without_tracing