Commit Graph

161 Commits

Author SHA1 Message Date
iomgaa f9995ef61b docs: add project README 2026-07-23 03:37:20 -04:00
iomgaa b2ee4fa383 docs: record v1.0.0 release and close out M4 roadmap status v1.0.0 2026-07-22 11:47:16 -04:00
iomgaa 6380ba7514 fix: sync __version__ with pyproject and pin test to single source 2026-07-22 11:28:20 -04:00
iomgaa 8559f10403 chore: bump version to 1.0.0 with changelog 2026-07-22 11:18:50 -04:00
iomgaa e09362dcd1 docs: sync M4 outcomes into roadmap, architecture, and migration docs
VT migration abandoned (v1.0 scope becomes two projects), Q1 resolved
to Gitea PyPI, Q6 resolved as judge exemption (unwired zero-consumer
eval scaffolding), migration docs annotated with implementation errata,
and the reference/ read-only rule clarified for the worktree workflow.
2026-07-22 10:57:00 -04:00
iomgaa 7ac51f1f55 docs: register m4-acceptance finding in wiki 2026-07-22 10:36:33 -04:00
iomgaa f50df42084 docs: record M4 two-project migration acceptance 2026-07-22 10:36:33 -04:00
iomgaa 3846305634 fix: scope postgres telemetry test to run-prefixed rows
The fixture used to DROP the shared llm_calls table on every run, wiping
concurrent migration-batch telemetry (and its own count assertion was
polluted in return). Assertions now filter by a per-run call_id prefix
and teardown deletes only its own rows.
2026-07-22 10:32:15 -04:00
iomgaa 547141cf0a docs: revise M4 plan per independent review (4I/6M) 2026-07-22 05:46:14 -04:00
iomgaa 84e23dc5c3 docs: add M4 migration implementation plan 2026-07-22 05:33:05 -04:00
iomgaa ee1bc403ad docs: revise M4 design per independent review (3I/6M) and register wiki entity 2026-07-22 05:12:45 -04:00
iomgaa c95c70b69b docs: add M4 migration verification design 2026-07-22 04:57:54 -04:00
iomgaa 2bdcb33123 style: wrap page_idx validation line for formatter 2026-07-22 03:20:09 -04:00
iomgaa d883d6e9c7 docs: record verifier fixes and P7 confirmation round 2026-07-22 02:42:33 -04:00
iomgaa 3c9f306ea3 fix: address M3 verifier findings on soak invariants and probe tests 2026-07-22 02:21:33 -04:00
iomgaa fdd36e0e1f style: apply ruff format to OCR modules 2026-07-22 01:43:55 -04:00
iomgaa 18d4f60665 docs: record P7 OCR soak acceptance at 99.73 percent 2026-07-22 01:37:17 -04:00
iomgaa 0f9ecad2c4 docs: sync OCR architecture wording and close G1 R9 R10 2026-07-21 23:34:33 -04:00
iomgaa bb1600c0f1 feat: add P7 OCR soak scenario and scoreboard 2026-07-21 23:22:12 -04:00
iomgaa d2138e535f test: add MonkeyOCR live integration suite 2026-07-21 23:08:33 -04:00
iomgaa 26e0e72926 feat: export OCR public API surface 2026-07-21 23:02:34 -04:00
iomgaa 89e86448b0 feat: add OcrClient governed loop with dual ports 2026-07-21 22:55:03 -04:00
iomgaa 1231226205 feat: add OcrSettings scope configuration 2026-07-21 22:45:12 -04:00
iomgaa dfbb2f8f10 feat: add MonkeyOCR dual-endpoint transport 2026-07-21 22:36:14 -04:00
iomgaa 31f83e380f feat: add OCR port family protocols 2026-07-21 22:28:03 -04:00
iomgaa 2fdd14f64b feat: add OCR result and transport types 2026-07-21 22:24:51 -04:00
iomgaa 88127a6e8b docs: address M3 plan review findings 2026-07-21 22:21:16 -04:00
iomgaa e51f0773ac docs: add M3 OCR implementation plan and telemetry metric 2026-07-21 22:11:33 -04:00
iomgaa dfc013e8ed docs: note 35-sample multipart evidence and archive path 2026-07-21 21:54:33 -04:00
iomgaa 40be3a22ef docs: address M3 OCR design review findings 2026-07-21 21:50:56 -04:00
iomgaa b8f7007d06 docs: add M3 OCR port family design 2026-07-21 21:39:49 -04:00
iomgaa a06761917e fix: address M2.5 verifier findings before merge
AIMD ceiling now respects per-source max_concurrency and the pacer is
assembled explicitly in the client; MIN_CALLS parses as strict int;
acceptance doc corrects source-5 attempt count to 549; design and
migration notes aligned with implemented 429/stall/suppression
semantics and AIMD constants documented.
2026-07-21 21:10:02 -04:00
iomgaa 9d28e03d49 docs: record M2.5 acceptance at 98.96 percent on unchanged P6 2026-07-21 17:34:13 -04:00
iomgaa 121888a0eb feat: suppress consecutive-channel opening on evidently healthy sources
Round 8 forensics caught the healthy source circuit-opened by five
random empty completions (~20% ambient failure rate makes a 5-streak
land every ~3000 attempts), blacking out the only good source for 60s.
When the window holds min_calls samples below the failure-rate
threshold, a streak is noise and no longer opens the gate; cold-start
and low-traffic semantics are unchanged and sudden death of a warm
source is still caught by the rate channel.
2026-07-21 15:28:34 -04:00
iomgaa 0e0d599441 chore: print per-source reason chain on soak call failure 2026-07-21 14:37:49 -04:00
iomgaa 69968f2e8b feat: exempt 429 pushback from retry budget with stall ceiling
Round 6 hit account-level rate throttling the concurrency AIMD cannot
absorb: at 26 req/min the gateway still returned 16% 429s and each one
burned a third of the retry budget. Retry-After-guided 429s now back
off without consuming attempts (gRPC pushback semantics); the retry
loop gains a per-call ceiling using the same dual-condition stall
verdict as quota-wait (local window exceeded AND no global progress).
2026-07-21 13:19:16 -04:00
iomgaa 6b98a89bb3 feat: default two structured re-asks and sharper AIMD cut
Round 5 left three residual failure classes; ladder exhaustion (3.2%
of structured calls with a single re-ask) and 429 leakage (5.8%, AIMD
oscillating above the sustainable point) are addressable: re-ask
default goes 1 to 2 (conservative vs instructor's 3) and the AIMD cut
factor drops to 0.5.
2026-07-21 12:52:32 -04:00
iomgaa dcd386d4aa fix: insert demoted source after credible alternatives, not at tail
Round 4 showed tail placement routes the third attempt to junk sources
whenever the credible alternative is gate-skipped (tight-RPM source
admitted as credible, then skipped by the limiter, falling through to
the flapping watchdog source). Demoted sources now sit between credible
and non-credible candidates.
2026-07-21 12:08:37 -04:00
iomgaa 0e17f71482 feat: gate in-call demotion on credible alternative health
Round 3 showed unconditional yield-after-two-failures pushes the third
attempt onto known-bad sources in heterogeneous pools (83% vs 10%
expected success). OutcomeAwareSelector now exposes health(); a failed
source only yields when some untried candidate scores at least half its
health. Health-blind selectors keep the unconditional rule.
2026-07-21 11:24:52 -04:00
iomgaa 58061c7536 feat: add AIMD adaptive concurrency pacing per source
P6 round 2 showed routing convergence turns account-level 429s into
the binding constraint (62% throttle rate at full concurrency). Each
source now carries a local AIMD limit: multiplicative cut on 429,
additive growth on success. Over-limit picks queue via the existing
quota-wait poll instead of burning retry budget or tripping the
circuit-open verdict.
2026-07-21 10:38:48 -04:00
iomgaa 910857fd13 docs: sync env template, migration notes and architecture for M2.5 2026-07-21 10:00:11 -04:00
iomgaa 4c2a148db9 feat: feed selector health and demote in-call failed sources
RetryMW keeps a per-call failure map (local, never instance state):
a source failing twice in one call yields to the next candidate.
Attempt outcomes feed OutcomeAwareSelector behind a swallow-and-warn
guard; ResultInvalid and provider-rejected paths record success with
count_attempt=False so the breaker window stays clean. Same accounting
applied in EmbeddingClient.
2026-07-21 09:55:08 -04:00
iomgaa e69dc05fd5 feat: add health-aware P2C selector as default
Score is success-rate EWMA over (1 + inflight) with a 0.05 exploration
floor so quarantined sources can prove recovery; EWMA climb doubles as
slow-start. New optional OutcomeAwareSelector port feeds attempt
outcomes.
2026-07-21 09:22:37 -04:00
iomgaa e1678e4ff5 style: format M2.5 breaker changes 2026-07-21 09:11:56 -04:00
iomgaa c7ccb5798c feat: add failure-rate breaker channel with exponential reopen backoff
Dual-channel opening: consecutive failures (CHS-compatible, no streak
bump) plus windowed failure rate (two 30s buckets, min_calls guard).
429s bypass both channels as backpressure, and a probe hitting 429
releases instead of holding the lease. Open duration doubles per
rate/probe reopen up to max_cooldown_s, decaying after stable CLOSED.
record_success gains count_attempt so bad-result successes stay out of
the window.
2026-07-21 09:08:14 -04:00
iomgaa 72b25724d8 feat: add rate-channel breaker config and health_aware default
Threshold auto-raise now uses per-source concurrency only (the M2
global-concurrency formula neutered the breaker at scale). Four new
optional keys: MIN_CALLS, FAIL_RATE, WINDOW_S, MAX_COOLDOWN_S.
2026-07-21 08:49:36 -04:00
iomgaa 8e2673487a docs: revise M2.5 plan per independent review 2026-07-21 08:41:17 -04:00
iomgaa 3542917ba8 docs: register M2.5 plan in wiki graph 2026-07-21 08:30:36 -04:00
iomgaa f92124fb8c docs: add M2.5 resilience implementation plan 2026-07-21 08:30:33 -04:00
iomgaa f621508117 docs: add M2.5 resilience design with review revisions 2026-07-21 08:26:43 -04:00