fix(core): add respx + build to dev extras for CI test runs#1
Merged
Conversation
The core test suite imports respx for mocking httpx in mesh provider tests (test_mesh_hyper3d, test_mesh_meshy, test_mesh_tripo3d). Locally respx was pulled in as a transitive dep, but a fresh CI install with only the listed dev extras failed to collect those tests. Also add `build` so `python -m build` runs without needing a separate pip install in CI. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…tags The starter set has grown from 5 to 10 (plan-mode, subagent, skill, permission, todo-advance tags). The test asserted exact count == 5 which CI caught after the dev-deps fix unblocked test collection. - Test now asserts the original 5 IDs are present and len >= 5, forward-compatible with future starter additions. - Stale comments in tags.py (STARTER_TAGS comment, bootstrap_starters docstring) updated to match. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
OpenCircuitDev
pushed a commit
that referenced
this pull request
May 17, 2026
…-last directive Three strategies to fix "I hear briefings about things from five minutes ago that I already knew about": 1) AudioQueue.submit drops pending non-alert jobs for the same sid when a newer job arrives. The newer narration already covers the most- recent event window for that session, so the older queued job is informationally dead — playing it wastes the listener's attention. Alerts (errors, notifications) are never dropped. Drops are logged at INFO with sid + dropped text + reason=superseded_by_newer for audit, and the AudioJobRegistry transitions to skipped with gate=overlap. 2) Default staleness 20s → 8s. Even if a job survived overlap-dedup at submit, it dies at pop-time if more than 8s elapsed since enqueue. Combined with #1, audio you actually hear is < 8s old at synth-completion. cfg override via live.staleness_seconds for use cases that genuinely need longer. 3) LiveMode._build_prompt filters scoped_events to those strictly newer than _last_narrate_by_session[sid], and prepends a CONTINUITY directive telling the LLM "you last narrated Xs ago, cover ONLY new events, do NOT restate older ones." Cuts consecutive narrations from "summarize last 30 events in different words" to "describe only what changed since last time." Density up, repetition down. First narration of a session falls back to the legacy [-30:] window (no prior context to delta against). Pytest: 1219 passed, 17 skipped. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
OpenCircuitDev
pushed a commit
that referenced
this pull request
May 21, 2026
…S (brief mode) Closes the #1 finding from the 2026-05-21 market analysis: 8+ personas independently asked for "a confidence flag" / "an uncertainty indicator" on narrations. Their concrete ask: when the LLM is summarizing INFERENCE (guessing intent from incomplete events) versus DIRECT OBSERVATION (a file edit landed), surface that distinction so the user knows when to look more closely. ## What this MVP does Adds an optional `[UNSURE]` prefix the LLM emits when its brief is based on inference. The audio dispatch strips the prefix BEFORE sending to TTS — users don't hear "UNSURE" spoken aloud. The confidence signal is captured in the helper return value but not yet plumbed through to the narration log schema or webui. ## Files changed - core/claude_code_talker/modes/brief.py — BRIEF_SYSTEM gains a "HEDGE WHEN UNCERTAIN" section with three examples of when to prefix. BriefMode.build_async parses + strips the prefix before returning. - core/claude_code_talker/narration_log.py — new HEDGE_PREFIX constant + parse_hedge_prefix(text) -> (cleaned, confidence) helper. Returns confidence="low" when prefix present, "normal" otherwise. Whitespace-tolerant. - core/tests/test_narration_log.py — 3 tests cover no-prefix / prefix / leading-whitespace cases. 17/17 in test_narration_log + test_modes_brief green. ## Deferred to v2 - Plumb confidence through NarrationEntry.confidence field + AudioJob metadata, so the webui can render a hedge badge on low-confidence rows of the narration log. - Extend the hedge to LIVE mode (more complex because the LLM streams chunks; the prefix-on-first-chunk strip needs to look ahead before queuing). ## Also in this commit - docs/superpowers/decisions/marketplaces-and-distribution.md — Phase 1-4 launch sequence for marketplaces (PyPI/MCP/Claude Code plugin/Google Play/Homebrew/etc.) with strategic-value scores and listing requirements. Drafted from a research pass; will drive the v1.0 launch checklist. Co-Authored-By: Claude Opus 4.7 (1M context) <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.
Summary
respx>=0.20to core's[project.optional-dependencies] devso fresh CI installs can collecttest_mesh_*.py(which import respx for httpx mocking).build>=1.0sopython -m buildruns without a separate install step.Why
The CI workflow added in
c4ce449failed becauserespxwas pulled in locally as a transitive dependency but isn't declared. Three test modules (test_mesh_hyper3d, test_mesh_meshy, test_mesh_tripo3d) failed to collect withModuleNotFoundError: No module named 'respx'. See run 25620924133.Test plan
pip install -e 'core/[dev]'includes respx + buildtestsruns green on this branch