Skip to content

Meanwhile v0.1.3 — prove the attention loop#8

Merged
tcballard merged 2 commits into
mainfrom
codex/v0.1.3-prove-the-loop
Jul 19, 2026
Merged

Meanwhile v0.1.3 — prove the attention loop#8
tcballard merged 2 commits into
mainfrom
codex/v0.1.3-prove-the-loop

Conversation

@tcballard

@tcballard tcballard commented Jul 19, 2026

Copy link
Copy Markdown
Owner

Summary

Implements docs/v0.1.3-prove-the-loop.md.

Adds:

  • a clearly labelled six-second attention test for the status item and optional reminder
  • observable freshness and manual recovery for review and failing-CI sources
  • persisted in-app controls for review and failing-CI interruptions
  • in-context repair for agent hooks and GitHub authentication
  • failure-safe agent and browser handoffs that keep the interruption active
  • deterministic state, cache-bypass, and source-transition coverage

Scope

Included

  • Native Settings controls for testing the attention loop
  • Real-work pre-emption and stale-expiry protection for tests
  • Independent source states for disabled, never checked, refreshing, successful, and failed
  • Agent requests permanently enabled, with Reviews and Failing CI independently switchable at runtime
  • Manual source refresh that bypasses the idle polling gate and cache without bypassing presentation policy
  • Copy Link and Open Settings recovery when a handoff fails
  • Version 0.1.3, build 6, README and release-contract updates

Excluded

  • Queue, session roster, history, or work counts
  • Floating island or Perch-style presence UI
  • New work sources or repeated reminders
  • Automatic updating
  • Changes to the waiting-first GitHub presentation gate

Product / Architecture Decisions

  • The attention test is separate from WorkItem, agent sessions, recent signals, and notification receipts, so test state cannot be mistaken for real work.
  • Real work always pre-empts test presentation; a test cannot start while any real interruption is active.
  • Manual GitHub refresh bypasses source scheduling and cache only. MeanwhileEngine remains authoritative for whether work may appear.
  • Source freshness records actual GitHub command attempts rather than frequent cached runtime requests.
  • JSON configuration seeds the first-run source choice; persisted in-app preferences are authoritative afterward.
  • AppKit remains limited to status-item rendering, notifications, workspace routing, and native alerts; Settings composition remains SwiftUI.

User-Facing Contract

Settings

  • Run Attention Test shows a labelled red menu-bar test for six seconds.
  • When reminders are enabled and authorized, the test also posts a labelled notification that returns to Settings.
  • Connection health shows review and failing-CI freshness with Refresh/Retry actions.
  • Attention sources lets users enable Reviews and Failing CI independently without relaunching; agent requests remain always on.
  • Missing hooks expose Repair; missing GitHub authentication exposes Copy Login Command.

Handoffs

  • A failed GitHub open retains the interruption and offers Copy Link.
  • A failed agent return retains the interruption and offers Open Settings.

Verification

Ran

  • swift test --disable-sandbox --scratch-path /tmp/Meanwhile-v013-build
  • swift build --disable-sandbox --scratch-path /tmp/Meanwhile-v013-build --product Meanwhile
  • GITHUB_REPOSITORY=tcballard/Meanwhile ./Scripts/release-unsigned.sh with isolated HOME, module caches, build path, and output path
  • strict deep codesign verification of the packaged app and the app extracted from Meanwhile-0.1.3-unsigned.zip
  • Computer Use inspection of the packaged Settings window and accessibility tree

Covered

  • 113 tests pass with zero failures.
  • Attention tests cover real-work pre-emption, duplicate starts, and stale expiry.
  • Source tests cover source-specific success/failure state, disabled sources, cache behavior, and forced cache bypass.
  • Preference and engine tests cover persistence, runtime selection, agents-only behavior, and agent-request invariance.
  • Production app and helper both link successfully.
  • The unsigned release ZIP and Homebrew cask generate successfully for version 0.1.3.
  • Packaged Settings renders cleanly at 620×680 with version 0.1.3 (6), native controls, labelled disclosures, button hints, and independently updating source health.
  • Packaged Attention sources renders cleanly with accessible switch labels; disabling Failing CI immediately changed the section summary and Connection health, and re-enabling it restored refresh behavior without relaunching.
  • Clicking Run Attention Test while real work was active preserved that interruption and showed the expected refusal inline.
  • macOS keyboard navigation reached the repository filter under the machine’s current text-controls-only keyboard-navigation policy; every new action is exposed as a labelled native button in the accessibility tree.

Review Path

  1. AttentionTestState, test notification delivery, and AppDelegate presentation routing
  2. SourceRefreshSnapshot and forced-refresh behavior in MeanwhileRuntime
  3. Settings model and Connection health recovery controls
  4. State/source tests
  5. Version, README, and release contract

Notes For Reviewer

  • The successful no-work attention-test transition is covered deterministically in core tests; the live QA machine currently has real waiting sessions, and the product correctly refuses to replace them for testing.
  • Production Developer ID signing, notarization, stapling, stable cask generation, and final extracted-ZIP Gatekeeper verification remain post-merge release steps.

Implements docs/v0.1.3-prove-the-loop.md.

Adds:
- a safe menu-bar and notification attention test
- observable GitHub source freshness and manual recovery
- repair actions and failure-safe agent and browser handoffs
- deterministic state and source cache coverage
Implements the source-selection extension in docs/v0.1.3-prove-the-loop.md.

Adds:
- persisted Reviews and Failing CI switches
- live runtime filtering and refresh behavior
- always-on agent request messaging
- diagnostics schema 2 source state
- preference, engine, package, and rendered UI evidence
@tcballard
tcballard marked this pull request as ready for review July 19, 2026 20:07
@tcballard
tcballard merged commit 5297438 into main Jul 19, 2026
1 check passed
@tcballard
tcballard deleted the codex/v0.1.3-prove-the-loop branch July 19, 2026 20:07
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