Phase 3.5 extraction & assembly

Audit and document the shipped D.1–D.4 proxy/worker env surface: dial target vs server bind, assemble vs library timeouts, turn-buffer TTL, enqueue URL/token/host/port, and Redis ownership.

Milestone 3.5.D.5 — Config, Feature Flags, and Env Vars

Status: Completed Goal: Track D — Proxy Integration
Phase: 3.5 — Extraction & Context Assembly
Estimated effort: 1 day
Track: Track D — Proxy Integration
Depends on: Milestones 3.5.D.1–3.5.D.4


Outcome

Consolidation pass only: document the actual env vars shipped in D.1–D.4, correct stale planning-sketch names, and record the D.4 security posture for enqueue /health and Bearer enablement. No new functional knobs.

Canonical registry: ENVIRONMENT_VARIABLES.md (§9 Proxy, §11 Worker).

Shipped env surface (D.1–D.4)

Proxy (services/proxy)

VariableRequiredDefaultNotes
IBEX_CONTEXT_ENABLEDNo (3.5.D.2)falseMaster switch; false = Phase 2 directive-only
IBEX_CONTEXT_GRPC_TARGETNo (3.5.D.1)127.0.0.1:9092Dial target for ContextAssemblyService (≠ server bind IBEX_CONTEXT_GRPC_ADDR)
IBEX_CONTEXT_ASSEMBLE_TIMEOUTNo (3.5.D.1)45msPer-call Assemble budget on the proxy client (≠ library IBEX_CONTEXT_TIMEOUT)
IBEX_CONTEXT_EMBED_METADATANo (3.5.D.3)falseEmbed top-level ibex JSON via IBEXMetadataStage
IBEX_EXTRACTION_TURNS_TTLNo (3.5.D.4)same as idle timeoutTurn-buffer Redis TTL on shared REDIS_URL
IBEX_WORKER_ENQUEUE_BASE_URLNo (3.5.D.4)(empty)Worker enqueue origin; empty disables client
IBEX_WORKER_ENQUEUE_API_TOKENConditional (3.5.D.4)(empty)Shared Bearer; empty disables client; no non-empty default

Worker (services/worker)

VariableRequiredDefaultNotes
IBEX_WORKER_ENQUEUE_HOSTNo (3.5.D.4)127.0.0.1Bind host; compose uses 0.0.0.0
IBEX_WORKER_ENQUEUE_PORTNo (3.5.D.4)8007Enqueue Starlette port
IBEX_WORKER_ENQUEUE_API_TOKENYes* (3.5.D.4)(none)Required to start enqueue HTTP; missing → server not started
IBEX_EXTRACTION_REDIS_URLNofalls back to REDIS_URLWorker Redis base alias; proxy does not read this
VariableOwnerRole
IBEX_CONTEXT_GRPC_ADDRContext serverBind address
IBEX_CONTEXT_TIMEOUTContext library/serverOuter retrieval deadline

Planning sketches that called ADDR a “target” and TIMEOUT a “client-side deadline” were superseded intentionally in D.1; D.5 documents the rename rather than inventing new names.

Security nits (D.4 follow-up)

  1. GET /health on the enqueue port — intentionally unauthenticated (liveness only; no secrets). Mutating POST /internal/extraction/enqueue requires Bearer. Matches embedder probe posture.
  2. Enqueue Bearer default — already fail-closed: None/blank default; enqueue HTTP does not start without an explicit token.

Success signals

  • Env vars follow proxy/worker registry convention (Required / Default / Notes / security annotations)
  • Documentation updated (ENVIRONMENT_VARIABLES.md, this milestone, worker README)
  • Repo guards / CI checks still pass

Prerequisites

  • Milestones 3.5.D.1–3.5.D.4
Edit on GitHub

Last updated on