Skip to content

Sync upstream main through ffd641575 - #186

Merged
crstdr merged 15 commits into
mainfrom
fork/sync-upstream-20261023
Oct 23, 2026
Merged

crstdr merged 15 commits into
mainfrom
fork/sync-upstream-20261023

Conversation

@crstdr

@crstdr crstdr commented Oct 23, 2026

Copy link
Copy Markdown
Owner

Summary

Sync fork main 65cb7a60a with upstream main pinned at ffd64157596ff7ac4fccc3b3c8f9666a6c13bece, retaining fork-specific policies. The branch contains two merge commits, a separate dependency revert, and a bounded re-prompt/provider-switch integration repair; no rebase or cherry-picks.

Upstream merges included

Upstream PR Change
repoprompt#1425 Packaged smoke external-probe client name
repoprompt#1430 Grok Build completed native-edit diff previews
repoprompt#1432 Inline re-prompt before sending
repoprompt#1433 Expiring-quota balancing and critical-usage override
repoprompt#1436 Cache-owned catalog shard lease retention
repoprompt#1435 Reconnect approval changes, subsequently reverted locally as below
repoprompt#1169 SIGTERM quits the app
repoprompt#1450 Preserve retained tool results across transcript commits
repoprompt#1442 Report atomic-writer directory synchronization failures
repoprompt#1439 Restore saved oversight after duplicate windows close
repoprompt#1438 Stabilize snapshot publication test hydration

Local exclusions and integration

Behavior heads-up: inline re-prompt (repoprompt#1432), Grok native-edit previews (repoprompt#1430), quota balancing (repoprompt#1433), catalog shard leases (repoprompt#1436), SIGTERM exit (repoprompt#1169), retained tool-result preservation (repoprompt#1450), surfaced atomic-sync failures (repoprompt#1442), and saved-oversight restoration (repoprompt#1439) are included.

Validation

On 34d21dd816176b231e0c53e34ba855d355446a90:

  • Two new regression tests: passed.
  • Affected suites: 413 tests, zero failures.
  • Full suite, once: 6,975 tests, 15 skipped; two known fork-only failing test cases (six XCTest failure records):
    • SessionAdminInventoryReadTests.testExactTargetApprovalAfterRequesterReconnectUsesProductionCatalog
    • SessionAdminInventoryReadTests.testExactTargetApprovalContinuesColdSavedLinkAndManagedTaskWithoutUserTurn
      Both match the existing Move sidebar workspace preparation off the main actor repoprompt/repoprompt-ce#1384-revert baseline: connection closed, missing become_overseer, and an unwaited tools-list-change expectation. Tests were not weakened or newly skipped.
  • Restoration lifecycle: 61 tests passed; the Diagnose restoration lifecycle fixture failures (#1382) repoprompt/repoprompt-ce#1445 flake did not occur. Pane snapshot publication: four tests passed; the previously flagged pane-target test also passed.
  • RepoPrompt product build: passed.
  • Format and strict lint: passed. Repository guardrails: passed. Release-tooling tests: 10 passed.
  • Divergence survival check: all 125 markers passed.
  • Non-disruptive live smoke: unavailable at windows (exit 73; no CE debug MCP connection). No visible app launch, stop or relaunch was performed.
  • Staged-index and outgoing-commit gitleaks scans: no leaks found; push safety preflight passed.

baron and others added 15 commits October 20, 2026 21:11
…rompt#1425)

repoprompt#1346 removed client-name auto-allow; the bundled helper is now auto-approved only
when clientInfo.name starts with "RepoPrompt CLI". The external initialize probe
sent codex-mcp-client, waiting 300s for manual approval past the 60s watchdog.

Rename the probe client, keep object-valued capabilities, and preserve the probe's
stdout/stderr, exit status, and helper debug tail on failure. Add source-text
regression tests.
…ff previews (repoprompt#1430)

* test(grok): red replay of recorded 1.0.62 native edits (repoprompt#1327)

* test(grok): embed recorded 1.0.62 fixtures as Swift raw strings (repoprompt#1327)

* Grok Build: show native search_replace/write results as edit diffs (repoprompt#1327)

* test(grok): self-contained fixture provenance; normalizer doc note (repoprompt#1327)

* test(grok): reproduce native edit gutter offsets live and restored (repoprompt#1327)

* Grok Build: preserve terminal edit line numbers in diff previews (repoprompt#1327)

* Grok Build: bound split edit lines and cover canonical failure gate (repoprompt#1327)

* Grok Build: share diff input limits from the ACP adapter (repoprompt#1327)
…mpt#1432)

* feat(agent): persist scoped Re-prompt settings with schema 13

* feat(agent): add isolated Re-prompt rewriting and context consults

* feat(agent): gate local composer turns on reviewed briefs and reuse automation judgments

* feat(agent): add Re-prompt composer review and scoped guidance editor

* docs: record Re-prompt validation results and remaining acceptance gaps

* fix(agent-mode): address re-prompt review findings

* feat(agent): stream Re-prompt preparation in composer

Replace modal consult/review with claim-free Markdown streaming, inline clarification, explicit second-Send dispatch, independent subscription-first model selection, bounded recent-chat context, recovery and fenced speculative routing. Remove Re-prompt-only context consultation plumbing and extend schema 13 model settings. Record v2 design, deviations, privacy disclosure, file inventory and coordinated verification.

* feat(agent): refine Re-prompt composer controls and modes

Refresh cached pill activity at every phase transition. Add inline original/revert, scoped Cmd-Return repeat and one-shot Review, Escape/native-undo recovery, and opt-in profile-scoped auto-send with clarification fallback and fresh-claim fencing. Present concrete model choices, migrate legacy Oracle linkage, persist history preferences, collapse advanced guidance, and document v2.1 verification.

* fix(agent): preserve Re-prompt intent and satisfy review gates

* test(settings): pin global settings document at schema 13 for Re-prompt fields
…ge override (repoprompt#1433)

Even pace scored plans by used/elapsed, which looks backward: Claude at 32%
used with 37h to reset and Codex at 6% with 6 days both scored ~0.4, so
balancing never moved work off the router's GPT pick while Claude allowance
expired unused. It also treated a freshly reset plan as "behind".

- Even pace now uses forward spare pace: unused share divided by the share
  of the weekly window left (tightest applicable window). Weekly readings
  stay usable for six hours instead of one.
- New opt-in "Override Model Router when usage is critical". A plan is
  critical when it has >=25% weekly allowance resetting within 48h (even if
  the other plan's usage is unknown), 1.75x the other plan's spare pace, or
  the other plan is >=90% used. Only the dominant provider's models reach the
  decision service; a single remaining model skips it entirely.
- Primary sessions under the override are floored at strong/frontier tiers
  (Opus/Fable or Sol/Astra) so trivial prompts never land on Haiku, Sonnet,
  Luna, or Terra; subagents and lanes keep every tier.
- The no-router fallback applies the same override across tiers and
  efforts, keeping the existing paid Fast / parameterized / non-curated
  starting-target exclusions.
Reclaim scope-cache leases on retired shard objects before enforcing the live-shard cap. Preserve external snapshot readers and current-publication cache entries.

Refs repoprompt#1416
…#1435)

* fix(mcp): retain process-scoped approval across reconnects

* fix(mcp): preserve FIFO approval order across actor suspension
* fix: bound app termination and sweep owned agent processes

* Reduce quit-hang fix and run SIGTERM terminate from the run loop

SIGTERM called NSApp.terminate(nil) from a main-queue dispatch-source
callout. With .terminateLater, AppKit spins a nested run loop inside that
callout, which holds the main queue, so the @mainactor work that sends the
reply never runs. An idle app ignored SIGTERM for more than 15 seconds.
Cmd+Q was unaffected. Perform terminate from the run loop instead.

Shrink the termination bound to what the issue needs. The coordinator
races shutdown against a 5 second deadline, runs a synchronous child sweep,
and replies once. The registry is a pid set that SIGKILLs still-unreaped
child process groups on app exit. Drop waitpid routing, launch admission,
the poll loop, and the graceful-path sweep.

* Trim quit fix to the SIGTERM run-loop change

Fable deslop review: the reproduced bug is SIGTERM calling NSApp.terminate
from a main-queue callout, which deadlocks the .terminateLater reply. The
deadline coordinator and child registry addressed a hung await that was
never reproduced, and graceful shutdown already bounds child teardown via
beginAppTerminationFastPath. Remove them with their tests and the launcher
hook.
…mits (repoprompt#1450)

* fix(agent-mode): retain tool payloads across session saves

* fix(agent-mode): preserve payloads during in-place transcript commits
)

* Report atomic writer directory synchronization failures

* Address atomic writer durability review feedback
…ompt#1439)

* Fix saved oversight restoration after duplicate windows close

* Address review feedback on duplicate-window oversight restoration

* Keep duplicate-restoration notices synchronized with current presentation

* Make duplicate-restoration notices edge-triggered and dismissible
* Fix snapshot publication test activation race

* Pin snapshot test unpublished-selection precondition
@crstdr
crstdr marked this pull request as ready for review October 23, 2026 10:41
@crstdr
crstdr merged commit 0413b21 into main Oct 23, 2026
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.

4 participants