Skip to content

fix(core): add respx + build to dev extras for CI test runs#1

Merged
OpenCircuitDev merged 2 commits into
mainfrom
fix/core-dev-deps-respx
May 10, 2026
Merged

fix(core): add respx + build to dev extras for CI test runs#1
OpenCircuitDev merged 2 commits into
mainfrom
fix/core-dev-deps-respx

Conversation

@OpenCircuitDev

Copy link
Copy Markdown
Owner

Summary

  • Adds respx>=0.20 to core's [project.optional-dependencies] dev so fresh CI installs can collect test_mesh_*.py (which import respx for httpx mocking).
  • Adds build>=1.0 so python -m build runs without a separate install step.

Why

The CI workflow added in c4ce449 failed because respx was 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 with ModuleNotFoundError: No module named 'respx'. See run 25620924133.

Test plan

  • pip install -e 'core/[dev]' includes respx + build
  • CI workflow tests runs green on this branch

Brand and others added 2 commits May 9, 2026 23:40
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 OpenCircuitDev merged commit 48108b8 into main May 10, 2026
3 checks passed
@OpenCircuitDev OpenCircuitDev deleted the fix/core-dev-deps-respx branch May 10, 2026 05:46
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>
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.

1 participant