Post-GA batch: CRUD update, real-backend wiring, admin-UI fixes & Docker/demo stack - #194
Merged
Merged
Conversation
Wire real backends from rag.yaml so the gateway runs end-to-end RAG instead of noop-only:
- rag_backends.llm.OpenAILLM (chat completions) behind a new [openai] extra
- _build_{embedder,vector_store,llm}_from_config in wiring; vector-store lifespan init
- IngestPipeline gains an optional content_store; PgVectorStore.put_content /
hydrate_content persist chunk text so retrieved refs can be hydrated for
rerank / pack / generate (the vector store holds vectors only)
- query path now hydrates whenever pack or generate need text, not just rerank
- gateway [backends] extra pulls rag-backends[openai] + rag-embedders[openai]
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…CRUD
The Edit action on the Corpora and Webhooks pages was a dead placeholder
(BUG-002 / BUG-003): the update (U) of CRUD was unimplemented across UI,
gateway, and store. This adds the backend half:
- CorpusStore.update + SubscriptionStore.update (SPI + noop + pg, tenant-scoped;
embedding model/dim immutable on corpora, signing secret stays masked on subs)
- PATCH /v1/corpora/{id} and PATCH /v1/webhooks/subscriptions/{id} on the gateway
- CreateCorpusRequest/update wire types in gateway_types + webhook_types
- contract + gateway-route tests; OpenAPI re-exported (drift gate)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Resolves the admin-console bugs found in this session's testing pass: - BUG-002/003: wire the corpus & webhook Edit dialogs to the new PATCH routes (updateCorpus / updateWebhook in api.ts), with demo-mode local simulation - BUG-004: each seed-fallback Live-Status card (breakers/quotas/drift/feedback/ cost/experiments) renders a per-source SourceBadge so seed data isn't shown as Live - BUG-007: suppressHydrationWarning on the Metrics 'Captured' locale timestamp - BUG-008: drop stale 'lands with Phase 6' copy on API Keys + Tenants (project is GA) - BUG-009: Playground 'Demo data' badge only shows after a mock run, not on load - chat: default RAG scope to the tenant's live corpora once loaded Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
One-command full-stack run for local demo / verification: - docker-compose.app.yml: pgvector + gateway + admin-ui (stack PG maps to host :5433 so it doesn't collide with a native :5432); admin-ui Dockerfile added - infra/rag.docker.yaml: rag.yaml for the stack (real pgvector + OpenAI; the OPENAI_API_KEY is read from env / .env.openai, never committed) - infra/postgres/init.sql: chunk-content table for hydration - .dockerignore to keep build context lean; gateway Dockerfile + debug launch config Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Replace the generic Layers placeholder with a real brand identity: - admin-ui BrandMark component + app icon.svg, wired into the sidebar - shared logo_main.svg; Docusaurus favicon + navbar logo now point at it Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- scripts/demo/: layered-defense + prompt-injection safety demos (safety_demo.py, hallucination_probe.py) and rendered slide decks (PNG/PDF) for go-to-market walkthroughs - BUGS.md: testing-findings tracker (companion to TRACKER.md), this session's 10 bugs logged with root cause + resolution - .gitignore: ignore macOS .DS_Store Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
officialCodeWork
pushed a commit
that referenced
this pull request
Jun 18, 2026
Flip the Step 3.10 'update (PATCH) deferred' note to done, add a post-GA batch entry to Recently shipped, refresh the Status block + Last updated. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
officialCodeWork
added a commit
that referenced
this pull request
Jun 18, 2026
…green-gates Post-GA follow-up: green the lint/policy gates + PATCH docs + TRACKER (after #194)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
A post-GA batch from a testing + demo-prep session, branched off latest
main(the Step 3.10 branch it was sitting on is already merged via #189/#190). Logically-grouped commits spanning bug fixes, real-backend wiring, the local Docker stack, branding, and GTM demo assets.What's in it
60ac857OpenAILLM+ content hydration so the gateway runs end-to-end RAG fromrag.yaml, not noop-only628f408be7a42c4b0d83adocker-compose.app.yml(pg + gateway + admin-ui),rag.docker.yaml,init.sqlb2246fed854098BUGS.mdtracker, ignore.DS_Store8fb9688gateway.md/webhooks.mdd073316scripts/demotooling from ruff + policy-coverage;ruff format+UP017on shipped codedb2c513Bugs fixed
Closes the testing-pass bugs logged in
BUGS.md: BUG-002, BUG-003, BUG-004, BUG-007, BUG-008, BUG-009. (BUG-005 audit-writer coverage and BUG-006 ingest document-count are deferred with root cause in BUGS.md; BUG-010 is environmental.)Notable
.env/.env.openaistay gitignored and the stack readsOPENAI_API_KEYfrom env; the only committed credential is the local-devPOSTGRES_PASSWORD: rag.Verification — all gates green (run locally; CI is billing-blocked)
ruff check+ruff format --checkmypy --strict(packages/+apps/gateway/)pytest(full suite,-m 'not perf')tsc·eslint·vitest·next buildscripts/demo(GTM slide builders + adversarial safety demos) is excluded from ruff and the policy-coverage linter — it's demo tooling, not shipped code, andsafety_demo.pydeliberately bypasses the PolicyEngine to demonstrate the injection guard. Shipped code is held to the full bar.Documentation
docs/reference/gateway.md+docs/reference/webhooks.md— the new PATCH update endpoints.TRACKER.md— Step 3.10 PATCH flipped to done + post-GA batch entry.BUGS.md— testing-findings tracker (new).🤖 Generated with Claude Code