mirror of
https://github.com/stablyai/orca.git
synced 2026-09-29 16:02:50 +00:00
Second adversarial review of the consolidation pass, six areas, and the fixes for what it turned up. Providers: a degraded OpenCode capture read no longer publishes the file cursor. The read marks the capture scope incomplete, the flag rides back across the worker hop, the writer takes the not-applied path so the store marks the candidate stale and the next scan re-parses; no red badge for a retryable read. The parse deadline no longer counts time queued behind unrelated index writes (separate worker and consumer bounds). Codex metadata refresh returns the same reference whenever nothing changed. The OpenCode worker host is generalised to LazyWorkerThreadHost and the port scanner adopts it, dropping its duplicate lifecycle. Renderer: the poll latch is gone. Main emits aiVault:searchIndexingChanged after every apply, and the store does one read, subscribes to the push, and polls only while a phase genuinely advances; a failed read is an unconfirmed reading that keeps polling with a 4/8/16/32 s backoff, cleared by success or push. The web client, which has no push channel, keeps its visibility-gated interval. Coverage is observed only from a current result and never overwrites a newer run. idle is a resting phase. Unverified sources surface in the panel status line. Service and store: a store that is transiently null during clear no longer answers "search is off"; coverage falls back to consent. A superseded transient write failure rebuilds the progress batch so a stale failure count does not linger. Consent is persisted before it is applied. The WAL sampling comment names the real second connection. messages_batch is a partial index (schema 11). The benchmarks drive the real store. Database removal uses the shared Windows retry loop. Query: operator-only pages go through the ranking owner, so forks collapse the same way for `repo:app` and `needle repo:app`. Typo repair falls through to the best visible candidate instead of abandoning the prefix. The grouped CTE's measured cost is recorded next to it. The outbound projection validates against strict enums while the received schema keeps its fallbacks, and the result type is pinned by equality rather than mutual extension. Remote and CLI: search operations share one relay lane again, so a status or configure issued during a query waits unsent and survives a sidecar fault. A query gets the scan budget rather than the title budget. A rejected backfill releases the owner lease. The configure path no longer refuses on an in-flight `applied`. The search boolean vocabulary has one owner in the spec. The method record moves into the contract module and gains searchCoverage. The CLI status formatter treats applied:false as a caveat, not as unavailable. An aggregate is not partial merely because a host reported unverifiable sources. Every fix carries a test that fails when it is reverted.