Stage closure 2026-08-18: suite green, INDEX-DIM active, CI matrix fixed - #2
Merged
Conversation
Record completed slice 2.4j @ ea3f59e, Update-59 routing, and next candidate 2.4k status load + CLI transition annotation wiring.
Docs-only Update-60: refresh routing authority, job-object stack map, module owners, 2.4k acceptance sketch, and zero-ambiguity capsule. No code, tests, plan, or backlog changes.
Slice 2.4k: add sync_list_job_statuses_for_tenant (read-only, tenant-scoped) and surface annotate_job_object_transition_context in the operator CLI human and JSON reports. Failed+protected objects remain retained_after_failed_transition with auto_delete_eligible=false; no deletion or age/budget invention.
Update-61 handoff: 2.4k complete at 9e358f1; job-object operator-visibility track closed through annotations wiring; next work requires re-scope with no default deletion.
Slice 2.5a: GET /api/admin/job-objects/inventory for JWT tenant with audit trail. Shared composition moved to ingestion.job_object_operator; CLI reuses it. No retention execute, no FS mutation, no age/budget invention.
Update-62 handoff: 2.5a complete at 0855528; operator-visibility through CLI + read-only admin HTTP; next work still requires re-scope without default deletion.
Slice 2.5b (plan §2 next ordered item): first-class IngestionJob columns for active/previous collection and manifest generation, written on complete from result.index_publication, exposed as index_publication_bind in job_public_dict. Migration 022. No deletion or age/budget invention.
Update-63: 2.5b complete at 6dbabef; next ordered plan §2 item is fault injection expansion (still no default deletion).
Update-64 docs-only: plan §2 progress map, fixed stale routing pointers, named next ordered slice 2.6a inventory/publish fail-closed fault injection, and a self-contained SESSION_HANDOFF capsule for post-compact sessions.
Add named no-op-by-default fault points at the durable inventory-write and manifest-publish commit boundaries. Tests-first coverage proves active manifest stays unchanged on inventory-write failure and unpublished candidates are discarded on publish failure without a live switch.
Update-65 routes next work to residual 2.6b fault injection after local 2.6a completion at 3f3c699. Session handoff capsule and ledger refreshed.
Add named known_query fault point before staged known-query validation so a failed smoke cannot record inventory or publish. Candidate is discarded and the active manifest stays unchanged.
Update-66 routes next work to residual 2.6c after local 2.6b completion at 0e4451e. Session handoff capsule and ledger refreshed.
Add named embeddings fault point during staged dimension validation so a failed probe cleans the partial candidate inside staging and never reaches inventory or publish. Active manifest stays unchanged.
Update-67 routes next work to residual 2.6d after local 2.6c completion at 3ba7986. Session handoff capsule and ledger refreshed.
Add named cleanup fault point before unpublished-candidate delete so a failed discard surfaces without publishing and leaves the active manifest unchanged. Covers discard after known-query and staging self-cleanup paths.
Update-68 routes next work to residual 2.6e concurrency/lock after local 2.6d completion. Session handoff capsule and ledger refreshed.
Prove concurrent same-tenant rebuilds cannot double-publish under the tenant advisory lock: a contender times out without staging, and serialized winners publish with monotonic generation. Fix adjacent lock rebuild mock to include previous_collection for publication receipts.
Update-69 routes next work to residual 2.6f (duplicate job / worker recovery) after local 2.6e completion. Session handoff capsule and ledger refreshed.
Add focused worker-side coverage for terminal job redelivery and concurrent claim races so a duplicate delivery cannot load documents or rebuild/publish an index. Complements upload Idempotency-Key replay with plan §2 residual.
Update-70 routes next work to residual 2.6g worker outage/recovery after local 2.6f completion. Session handoff capsule and ledger refreshed.
Update-71 is docs-only: supersedes Update-70 for start-point routing only. Refreshes AGENT_STATE and SESSION_HANDOFF with honest 2.6a-2.6f inventory, completion map, protected state, and next ordered candidate 2.6g worker outage/recovery. No implementation or plan checkbox changes.
…lish Slice 2.6g: probe lease ownership at pre_load/pre_index/pre_complete phase boundaries so a lagging heartbeat cannot let a zombie worker load or publish after the reaper cleared the lease. Prove no double-complete, no publication bind overwrite, and no reclaim of reaped terminal rows.
Update-72: local fault-injection residual closed through 2.6g; next is opt-in live multi-service drills or plan section 3 without live opt-in.
…t timeout Slice 3.1a (plan section 3 / REL-01): replace per-call ThreadPoolExecutor in ConversationSession wall-budget with a process-wide bounded pool; /api/ask submits through that pool and keeps the pipeline semaphore until orphaned worker work actually finishes after outer 504.
Update-73: plan section 3 started; next ordered candidate is 3.1b cooperative deadline at provider boundary.
Slice 3.1b: ContextVar wall deadline bound from ask budget/HTTP timeout; ProviderBackedLLM refuses new generate/tools/schema/stream work after expiry without failover; ConversationSession.ask maps deadline exceed to route=timeout. Cooperative only — in-flight provider calls are not killed.
Update-74: next ordered candidate is 3.1c per-session serialize.
…ions Slice 3.1c: per-session exclusive turn lock with monotonic epoch so parallel same-session ask calls queue; wall-budget orphans cannot write history or pending_action after invalidate. Snapshot chat history for pipeline input.
Update-75: next ordered candidate is 3.1d max_tokens/temperature per LLM role.
…9f19 - tests/test_csp.py: use the shared conftest `client` fixture instead of a raw `with TestClient(app)`. The raw client ran the app lifespan, and on a developer machine with a populated data/vectordb/chroma that meant initialize_vector_store() loading the real BAAI/bge-m3 model (2.3 GB from HF) — the suite hung locally while CI, which has no data/, stayed green. - tests/test_index_operator.py: since 1aa9f19 a first publish records the legacy collection as previous_collection, so the "manifest without a rollback target" case must publish the legacy name itself; the old setup now correctly yields IndexRollbackConflict, not RollbackUnavailable. - .gitignore: ignore .pytest_tmp*/ basetemp trees (151 dirs / 1.1 GB of local test-run artifacts were polluting ruff/grep). Full unit suite (Python 3.13, RAG_RERANKER_MODEL=""): 1870 passed / 7 skipped after both fixes (1 failed / 1869 passed before the second fix). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Hxj1YFwzSH8CqQDgcmhBvc
BACKLOG.md, README.md, audit_gpt_23_07_26.md and plan_sol_23_07_26 carried the owner's 2026-08-03 edits re-pointing the active backlog to rag-remediation-plan-2026-08-03.md; the plan file itself was untracked. Prior sessions left all five as "protected dirty/untracked" for two weeks. They are pure documentation pointers, so they land as one docs commit and the active DoD source is now tracked. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Hxj1YFwzSH8CqQDgcmhBvc
…INDEX-DIM active on Windows) - docs/operations/2026-08-18-test-failure-analysis.md: why tests failed (unit suite env-dependence + stale contract; live §5 gate transport-unfit candidate; infra 3-dim index / memory; lock gate = WSL2 idle-shutdown) and the closure decisions. - AGENT_STATE.md Update-209, SESSION_HANDOFF.md (§0/§0A/§0B/§1C/§12), PLAN_CLOSURE_STATUS.md, index-dim-windows-activation.md: reconciled to the activated Windows index (candidate 3x1024, manifest gen 1, snapshot retained), the WSL keepalive dev-runbook, and the §5 decision (gracekelly-mixed unfit; no more paid seeds on Windows; §5 stays OPEN). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Hxj1YFwzSH8CqQDgcmhBvc
…tbox delivery, advisories First CI run in 2.5 months (branch ci-check-20260818, run 32201231825) was red on unit/integration/security/pre-commit while lint/type-check were green: - requirements-dev.txt/.lock: add aiosqlite==0.22.1 (test-only; conftest durable-job fixture uses sqlite+aiosqlite since b7faa19 but it was never locked -> 250 ModuleNotFoundError in CI, invisible locally because the global interpreter had it). - requirements.lock + requirements-dev.lock: `uv pip compile -P` bumps for the pip-audit findings only — aiohttp 3.14.1->3.14.3 (PYSEC-2026-3545/6/7), cryptography 49.0.0->50.0.0 (PYSEC-2026-3552), pypdf 6.14.2->6.16.1 (PYSEC-2026-3655/6). No other package line changed. Local pip-audit with the CI arguments: no known vulnerabilities. - tests/test_live_quality_metrics_gate.py: module-level workspace-local `tmp_path` — the gate only accepts report_json inside the workspace, and pytest's system temp root on CI is outside it (12 ValueError failures); locally this was masked by always using an in-repo --basetemp. - services/escalation.py: the default `local` support-sink backend now writes the full record to the JSONL outbox under the configured project_root. Since ad5e435 it went through LocalFileSupportSink, which used a hardcoded repo path and dropped fields (reason/ticket_id/tenant_id). External backends keep the sink-first / JSONL-fallback order. - tests/integration/test_escalation.py: assert the §4 semantics — the human-route answer registers an automatic ticket (first outbox line) and /api/escalate adds the manual one (last line, reason=low_quality). - pre-commit trailing whitespace stripped from three docs. Verification: unit suite with SYSTEM temp dir (CI-like) 1870 passed / 7 skipped; tests/integration 6 passed / 1 skipped locally; ruff, scoped mypy, pre-commit whitespace/EOF hooks green. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Hxj1YFwzSH8CqQDgcmhBvc
brownjuly2003-code
pushed a commit
that referenced
this pull request
Aug 19, 2026
…rations/helm Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Hxj1YFwzSH8CqQDgcmhBvc
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.
Verification PR for the 350 local commits since
51628e2(June). Not meant for a merge-commit: after CI (incl.migrations+helm, which only run on PR/master) is green,masteris fast-forwarded to the same SHA and this PR closes automatically.Highlights: Update-209/210 in
AGENT_STATE.md; analysis indocs/operations/2026-08-18-test-failure-analysis.md.🤖 Generated with Claude Code
https://claude.ai/code/session_01Hxj1YFwzSH8CqQDgcmhBvc