fix(studium): lockless ingest voice — the 39 canon-breadth tasks land + persist live - #75
Merged
Merged
Conversation
… land live Observed live: the C_FEED ingest voice printed 'queue busy (lock timeout) — skipped' every beat and never seeded the tasks (studium-* stayed 0 for 30min), while the daily face fired fine. Root cause = the same 'generators must be lockless' lesson as the revenue-backlog organ (#97): the daemon does NOT hold the queue lock across a beat, so queue_lock here only STARVES the voice under live contention. Fix: drop queue_lock; re-read fresh right before the write, dedupe by id, atomic-save — exactly like generate-revenue-backlog / generate-backlog. NEVER skip on contention; the id-dedupe is idempotent and the every-beat re-emit self-heals any clobber. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
4444J99
pushed a commit
that referenced
this pull request
Jun 23, 2026
…rge backlog The sync-reclaim organ landed via direct heal commit f9325a8 (bypassing PR CI) carrying 4 stray-semicolon violations (E702/E703) in cli/tests/test_sync_reclaim.py. That made `ruff check cli/src cli/tests web/api mcp` — the first step of the `python` CI job — fail on main, so EVERY PR branched from main inherits a red `python` check (#75, #73, #57, #56, #54, #53, #52, #51 …). The merge organ holds CI-red PRs, so the whole recent merge backlog — including the VLTIMA organ engine (#73) — was jammed. Split the compound/trailing-semicolon statements onto separate lines (pure formatting, semantics unchanged). ruff now passes; the 7 sync-reclaim tests still pass. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
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.
The studium daily face is live (renders Iliad Book 1). This makes the breadth-release durable too.
Problem (observed live): the C_FEED ingest voice printed
queue busy (lock timeout) — skippedevery beat and never seeded the 39 content tasks (studium-* stayed 0 for 30min), while the daily face fired fine.Root cause: same 'generators must be lockless' lesson as the revenue-backlog organ (#97) — the daemon does not hold the queue lock across a beat, so
queue_lockhere only STARVES the voice under live contention.Fix: drop queue_lock; re-read fresh before the write, dedupe by id, atomic-save — exactly like generate-revenue-backlog / generate-backlog. Never skip on contention; idempotent re-emit self-heals any clobber.
259 tests green.
🤖 Generated with Claude Code