Skip to content

Triage dirty release-prep work into focused branches #66

@cbusillo

Description

@cbusillo

Objective

Separate the current broad dirty tree into reviewable workstreams so fixes stop masking or reintroducing each other.

Finish Line

Every dirty change is classified as keep, revert, shelve, or split into a focused branch/PR; no signed dogfood package is built from a broad multi-workstream tree unless explicitly marked as scratch.

Current Status

State: Active
Next action: Split the AGENTS.md runtime guardrail into its own doc-only PR, then branch remaining fixes by purpose.
Blocked by: Need explicit decision before reverting/shelving broad dirty code changes.
Last verified: 2026-05-12

Dirty tree groups:

  1. Runtime/process guardrail docs: AGENTS.md. This is coherent and should be kept as a small doc-only PR.
  2. App Store signing/profile/package validation: Config/*entitlements, scripts/package-native-macos-app.sh, scripts/upload-testflight-macos-app.sh, docs/release.md, Tests/ReleaseEntitlementsTests.swift, Xcode project changes.
  3. Gemini sandbox/bookmark access: SecureFileBookmark.swift, AccountConfigurationStore.swift, SnapshotRefreshService.swift, account-store tests, provider connector tests, provider usage docs.
  4. Snapshot merge and stale account preservation/dedupe: SnapshotStore.swift, SnapshotStoreTests.swift; current behavior preserves failed refreshes but also preserves stale logical account IDs.
  5. Burn-rate/forecast behavior: BurnRateEstimator.swift, FastModeForecast.swift, FastModeForecastTests.swift, widget forecast display changes.
  6. Settings/UI restoration and product surface changes: ContextPanelPreviewApp.swift, widget display preferences changes, settings text/authorization UI changes.
  7. Claude Web decision: deleted Sources/ClaudeWebUsageProbe, deleted ClaudeWebUsage.swift, deleted tests, Package.swift/Xcode membership changes, UI sheet removal.
  8. Claude statusline/cache migration: ClaudeLocalStatus.swift, ClaudeStatuslineSetup.swift, Claude scripts, Claude tests, ClaudeLimitProbe/main.swift.
  9. General docs: docs/README.md, docs/provider-usage-access.md, docs/todo.md existing pre-work untracked/dirty state.

Recommended branch/PR order:

  1. AGENTS.md runtime validation guardrail only.
  2. Runtime evidence helper or manual validation update, if needed, after Stabilize Context Panel runtime validation #65.
  3. Dirty tree cleanup/split branch with no product behavior claims.
  4. Settings restoration (Restore Context Panel settings and account management surface #67) from a clean runtime baseline.
  5. Gemini signed-runtime access (Fix Gemini access from signed sandbox runtime #68).
  6. Snapshot account dedupe (Deduplicate stale provider account IDs in snapshots #69).
  7. Claude Web product decision (Decide and enforce Claude Web capture removal or restoration #70).
  8. TestFlight packaging/icon (Validate TestFlight packaging and App Store icon separately #71).

Current stop condition:
Do not package or install another dogfood/TestFlight build from this broad dirty tree. Any next code change should happen on a focused branch or after explicitly shelving unrelated changes.

Scope

  • In: Classification of current dirty files and branch split proposal.
  • Out: Implementing the fixes during triage.

Acceptance Criteria

  • Dirty files are grouped by purpose.
  • Unrelated changes are not packaged together as a candidate build.
  • Each follow-up branch has one finish line and validation gate.

Relationships

Sub-issue of #64. Should precede product/provider fixes.

Validation

Use ## fix/widget-refresh-regression
M AGENTS.md
M Config/ContextPanel.entitlements
M Config/ContextPanelAppStore.entitlements
M Config/ContextPanelRefreshAgent.entitlements
M Config/ContextPanelRefreshAgentAppStore.entitlements
M ContextPanel.xcodeproj/project.pbxproj
M Package.swift
M Sources/ClaudeLimitProbe/main.swift
D Sources/ClaudeWebUsageProbe/ClaudeWebUsageProbeApp.swift
M Sources/ContextPanelCore/AccountConfigurationStore.swift
M Sources/ContextPanelCore/BurnRateEstimator.swift
M Sources/ContextPanelCore/ClaudeLocalStatus.swift
M Sources/ContextPanelCore/ClaudeStatuslineSetup.swift
D Sources/ContextPanelCore/ClaudeWebUsage.swift
M Sources/ContextPanelCore/ContextPanelLocations.swift
M Sources/ContextPanelCore/FastModeForecast.swift
M Sources/ContextPanelCore/ProviderConnector.swift
M Sources/ContextPanelCore/SnapshotRefreshService.swift
M Sources/ContextPanelCore/SnapshotStore.swift
M Sources/ContextPanelPreview/ContextPanelPreviewApp.swift
M Sources/ContextPanelWidget/ContextPanelWidget.swift
M Tests/ContextPanelCoreTests/AccountConfigurationStoreTests.swift
M Tests/ContextPanelCoreTests/ClaudeLocalStatusTests.swift
D Tests/ContextPanelCoreTests/ClaudeWebUsageTests.swift
M Tests/ContextPanelCoreTests/FastModeForecastTests.swift
M Tests/ContextPanelCoreTests/ProviderConnectorTests.swift
M Tests/ContextPanelCoreTests/SnapshotStoreTests.swift
M docs/README.md
M docs/provider-usage-access.md
M docs/release.md
M scripts/claude-ccusage-cache.sh
M scripts/claude-statusline-cache.sh
M scripts/package-native-macos-app.sh
M scripts/upload-testflight-macos-app.sh
M scripts/validate-claude-statusline-pipeline.sh
?? .claude/
?? Sources/ContextPanelCore/SecureFileBookmark.swift
?? Tests/ContextPanelCoreTests/ReleaseEntitlementsTests.swift
?? docs/todo.md, AGENTS.md | 55 +-
Config/ContextPanel.entitlements | 20 +-
Config/ContextPanelAppStore.entitlements | 6 +
Config/ContextPanelRefreshAgent.entitlements | 20 +-
.../ContextPanelRefreshAgentAppStore.entitlements | 6 +
ContextPanel.xcodeproj/project.pbxproj | 8 +-
Package.swift | 8 -
Sources/ClaudeLimitProbe/main.swift | 33 +-
.../ClaudeWebUsageProbeApp.swift | 583 ---------------------
.../AccountConfigurationStore.swift | 77 ++-
Sources/ContextPanelCore/BurnRateEstimator.swift | 229 ++++++--
Sources/ContextPanelCore/ClaudeLocalStatus.swift | 167 +++---
.../ContextPanelCore/ClaudeStatuslineSetup.swift | 8 +-
Sources/ContextPanelCore/ClaudeWebUsage.swift | 140 -----
.../ContextPanelCore/ContextPanelLocations.swift | 106 ++--
Sources/ContextPanelCore/FastModeForecast.swift | 17 +-
Sources/ContextPanelCore/ProviderConnector.swift | 37 --
.../ContextPanelCore/SnapshotRefreshService.swift | 18 +-
Sources/ContextPanelCore/SnapshotStore.swift | 9 +-
.../ContextPanelPreviewApp.swift | 521 ++++++------------
.../ContextPanelWidget/ContextPanelWidget.swift | 58 +-
.../AccountConfigurationStoreTests.swift | 51 +-
.../ClaudeLocalStatusTests.swift | 75 +--
.../ClaudeWebUsageTests.swift | 62 ---
.../FastModeForecastTests.swift | 224 +++++++-
.../ProviderConnectorTests.swift | 112 +++-
.../ContextPanelCoreTests/SnapshotStoreTests.swift | 100 +++-
docs/README.md | 1 +
docs/provider-usage-access.md | 31 +-
docs/release.md | 25 +-
scripts/claude-ccusage-cache.sh | 17 +-
scripts/claude-statusline-cache.sh | 19 +-
scripts/package-native-macos-app.sh | 57 +-
scripts/upload-testflight-macos-app.sh | 18 +
scripts/validate-claude-statusline-pipeline.sh | 14 -
35 files changed, 1266 insertions(+), 1666 deletions(-), and targeted diffs by file group.

Decisions

Do not build signed release candidates from broad dirty state.

Open Questions

Which current changes should be preserved as scratch dogfood evidence versus reset into clean branches?

Metadata

Metadata

Assignees

No one assigned

    Labels

    planDurable planning issueplan:donePlan completed or superseded

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions