Skip to content

Stage closure 2026-08-18: suite green, INDEX-DIM active, CI matrix fixed - #2

Merged
brownjuly2003-code merged 350 commits into
masterfrom
ci-check-20260818
Aug 19, 2026
Merged

Stage closure 2026-08-18: suite green, INDEX-DIM active, CI matrix fixed#2
brownjuly2003-code merged 350 commits into
masterfrom
ci-check-20260818

Conversation

@brownjuly2003-code

Copy link
Copy Markdown
Owner

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, master is fast-forwarded to the same SHA and this PR closes automatically.

Highlights: Update-209/210 in AGENT_STATE.md; analysis in docs/operations/2026-08-18-test-failure-analysis.md.

🤖 Generated with Claude Code

https://claude.ai/code/session_01Hxj1YFwzSH8CqQDgcmhBvc

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.
JuliaEdom and others added 27 commits August 12, 2026 14:36
…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
@brownjuly2003-code
brownjuly2003-code merged commit 752488b into master Aug 19, 2026
22 checks passed
@brownjuly2003-code
brownjuly2003-code deleted the ci-check-20260818 branch August 19, 2026 01:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants