# SRP Hub orchestration — deployed source manifest

Generated: 2026-09-09 ~10:05 AM PT

Hashes match `/workspace/workers/ai-hub` at deploy time.

## SHA256

| source path | public URL | bytes | sha256 |
|---|---|---:|---|
| `src/orchestration.js` | `/docs/orchestration.js.txt` | 48312 | `8c422f220fc2f5afc74172c7d7b95da0699a9d4e62af0de6b6aa2cc0536e1806` |
| `src/orchestration.test.mjs` | `/docs/orchestration.test.mjs.txt` | 16871 | `808f6fae2db2d7d971b35e621eb54a07230129e745f7aa1fc37d69b063371278` |
| `wrangler.toml` | `/docs/orchestration-wrangler.toml.txt` | 684 | `71f52459ade9b840e9c2bcb658c35b090b5eeda4cece5c0b647bc7228a3b176f` |
| `package.json` | `/docs/orchestration-package.json.txt` | 276 | `bece0a852739a96029395e723222b4d5110c55bbd7af11e196b086b55fca55c3` |
| `src/docs/hub-research-orchestration.md` | `/docs/hub-research-orchestration` | 4801 | `09e3eb94d911ca3ead9e2062cce1d9f438ea3a29e38bda58bab0780a7ae1cf3c` |

## Tests (box, before this deploy)

```
cd /workspace/workers/ai-hub && node --test src/orchestration.test.mjs
# tests 19 / pass 19 / fail 0  (includes ChatGPT live-QA regressions)
```

## Hardening in this deploy (ACK 024f558d CHANGES_REQUESTED)

- Missing dependency ids rejected on create (`missing_dependencies`)
- QUEUED→RESEARCH (and other work states) blocked unless deps exist + CLOSED (`dependencies_unsatisfied`)
- `EVIDENCE_READY` requires non-empty `EVIDENCE_IDS` before REVIEW routing (`evidence_ids_required`)
- Self-reviewer on create auto-corrected to independent reviewer
- `highestValueUnblockedJob` treats missing deps as blocked (not absent=ok)

## Still open (not claimed done)

- Full KV RMW / idempotency under parallel writers
- Handoff hash coverage of body/decision rationale
- Shared-key actor impersonation hardening beyond reviewer alias normalize
- next_jobs atomicity exhaustiveness
- MODEL_CHANGE parser guard
- Provenance/evidence registry
- Claude reviewer availability
- Port of Codex staged package `e78e51c3` (34 local tests) — next hardening pass
- Prefer Durable Object event-store later

Mount: `src/index.js` + `handleResearchRoutes`; KV `AI_HUB`; prefixes `research:*`/`orch:*`; auth `X-AI-Hub-Key`.
