chore(triage): close out pre-reorg deferred backlog (13 wont-merge, 5 landed) (#203)

All 18 pre-domain-reorg (pre-8356eb34) deferred rows resolved: 13 wont-merge
(6 already in dev via squash-sync #81, 5 sandbox-refactor chain kept on fork
lifecycle, Stagehand vs tool-curation policy, GPT-5.6 vs Bedrock/Fireworks-only
picker) and 5 landed via #197 #198 #199 #200 #201. Remaining deferred rows are
all post-reorg.
This commit is contained in:
Adam Moussa 2026-07-17 12:36:30 -04:00 • committed by GitHub
parent c80bd0f92f
commit 3b84540d15
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 36 additions and 36 deletions

View file

@ -29,7 +29,7 @@
{"sha": "ee224d3e", "pr": 1650, "subject": "add Slack reaction tool", "disposition": "landed", "reason": "", "branch": "slack-tooling", "local_sha": "3c6077c418e4017acf1f04ebeb81846770f934c9", "updated": "2026-07-03T19:38:56Z"}
{"sha": "747ce4bb", "pr": 1638, "subject": "add Slack breakout thread tool", "disposition": "landed", "reason": "", "branch": "slack-tooling", "local_sha": "b2b49ed9446600879c12c436d602c21d534be9ca", "updated": "2026-07-03T19:37:13Z"}
{"sha": "27d90ef1", "pr": 1633, "subject": "include Slack channel context in prompts", "disposition": "landed", "reason": "", "branch": "slack-tooling", "local_sha": "3a941a693c5110730815d35f156cd2c954ca9897", "updated": "2026-07-03T18:56:43Z"}
{"sha": "4cd5fa5c", "pr": 1629, "subject": "avoid recapping Slack replies", "disposition": "deferred", "reason": "", "branch": "slack-tooling", "local_sha": null, "updated": "2026-07-02T00:00:00Z"}
{"sha": "4cd5fa5c", "pr": 1629, "subject": "avoid recapping Slack replies", "disposition": "wont-merge", "reason": "already in dev — landed via sync PR #81 (1f060f2a), then deliberately superseded by the fork's refined Slack no-duplication rule in PR #159 (f87847ba)", "branch": "", "local_sha": null, "updated": "2026-07-16T22:30:00Z"}
{"sha": "92dbf6f9", "pr": 1630, "subject": "update Slack trace reply on web handoff", "disposition": "landed", "reason": "ported in #128 (trace_message_ts on first-mention run mapping)", "branch": "slack-tooling", "local_sha": null, "updated": "2026-07-08T22:58:21Z"}
{"sha": "bb36448b", "pr": 1627, "subject": "surface Slack thread errors", "disposition": "landed", "reason": "", "branch": "slack-tooling", "local_sha": "e8b6fb70508861e5742d31aaa722e79f4a9a320a", "updated": "2026-07-03T19:50:30Z"}
{"sha": "73b7d1c0", "pr": 1678, "subject": "fix OpenAI Responses reasoning replay", "disposition": "landed", "reason": "", "branch": "gateway-routing", "local_sha": null, "updated": "2026-07-09T16:22:05Z"}
@ -41,22 +41,22 @@
{"sha": "69148f54", "pr": 1612, "subject": "add PR trace resolution", "disposition": "landed", "reason": "cherry-picked (-x) in #127", "branch": "reviewer-misc", "local_sha": null, "updated": "2026-07-08T22:58:20Z"}
{"sha": "6d125526", "pr": 1625, "subject": "stop wrapping installs in sfw", "disposition": "landed", "reason": "already present in dev; empty pick confirmed in #127", "branch": "reviewer-misc", "local_sha": null, "updated": "2026-07-08T22:58:21Z"}
{"sha": "320bb39a", "pr": 1657, "subject": "opt-in tracemalloc for aiohttp sessions", "disposition": "landed", "reason": "cherry-picked (-x) in #127", "branch": "reviewer-misc", "local_sha": null, "updated": "2026-07-08T22:58:20Z"}
{"sha": "baf0c248", "pr": 1617, "subject": "filter & grouping menu in threads sidebar", "disposition": "deferred", "reason": "~998 LOC", "branch": "own branch", "local_sha": null, "updated": "2026-07-02T00:00:00Z"}
{"sha": "f29868ff", "pr": 1615, "subject": "recover thread work as patch", "disposition": "deferred", "reason": "~495 LOC", "branch": "own branch", "local_sha": null, "updated": "2026-07-02T00:00:00Z"}
{"sha": "8e0788dc", "pr": 1631, "subject": "show queued dashboard follow-ups", "disposition": "deferred", "reason": "", "branch": "own branch", "local_sha": null, "updated": "2026-07-02T00:00:00Z"}
{"sha": "9c601ca1", "pr": 1648, "subject": "add Stagehand-powered browser subagent", "disposition": "deferred", "reason": "", "branch": "own branch", "local_sha": null, "updated": "2026-07-02T00:00:00Z"}
{"sha": "8c944381", "pr": 1622, "subject": "restore forced tool call", "disposition": "deferred", "reason": "", "branch": "own branch", "local_sha": null, "updated": "2026-07-02T00:00:00Z"}
{"sha": "baf0c248", "pr": 1617, "subject": "filter & grouping menu in threads sidebar", "disposition": "wont-merge", "reason": "already in dev — full feature present (sidebarFilter/sidebarPrefs/SidebarFilterMenu + AgentsSidebar wiring); only deltas are the later-landed #1661 token restyle", "branch": "", "local_sha": null, "updated": "2026-07-16T22:30:00Z"}
{"sha": "f29868ff", "pr": 1615, "subject": "recover thread work as patch", "disposition": "wont-merge", "reason": "already in dev via squash-sync PR #81 (1f060f2a) — recovery-patch vertical byte-identical to upstream; 6 recovery tests pass on dev", "branch": "", "local_sha": null, "updated": "2026-07-16T22:30:00Z"}
{"sha": "8e0788dc", "pr": 1631, "subject": "show queued dashboard follow-ups", "disposition": "wont-merge", "reason": "already in dev via squash-sync PR #81 (1f060f2a) — full queued-follow-ups vertical (types, QueuedMessages UI, streaming de-dupe, e2e) present and since evolved", "branch": "", "local_sha": null, "updated": "2026-07-16T22:30:00Z"}
{"sha": "9c601ca1", "pr": 1648, "subject": "add Stagehand-powered browser subagent", "disposition": "wont-merge", "reason": "requires Browserbase/Stagehand creds or Chromium-in-server-image + hard stagehand dep; browser runs in server process outside the sandbox; against fork curated-tools policy, no fork use case", "branch": "", "local_sha": null, "updated": "2026-07-16T22:30:00Z"}
{"sha": "8c944381", "pr": 1622, "subject": "restore forced tool call", "disposition": "wont-merge", "reason": "already in dev via squash-sync PR #81 (1f060f2a) — ensure_no_empty_msg middleware/tests/wiring/prompt line byte-identical to 8c944381; squash hid it from ancestry", "branch": "", "local_sha": null, "updated": "2026-07-16T22:30:00Z"}
{"sha": "5dc360d8", "pr": 1619, "subject": "bump langgraph-checkpoint 4.1.0→4.1.1", "disposition": "wont-merge", "reason": "already in dev — uv.lock already resolves langgraph-checkpoint 4.1.1", "branch": "", "local_sha": null, "updated": "2026-07-08T20:14:42Z"}
{"sha": "4f913198", "pr": 1647, "subject": "widen split review diffs", "disposition": "landed", "reason": "already present in dev; empty pick confirmed in #127", "branch": "reviewer-misc", "local_sha": null, "updated": "2026-07-08T22:58:21Z"}
{"sha": "20f63e8c", "pr": 1646, "subject": "install missing deps before verification", "disposition": "landed", "reason": "already in dev via #81 (upstream-sync); ledger was stale", "branch": "prompt-tweaks", "local_sha": null, "updated": "2026-07-08T23:25:49Z"}
{"sha": "89f886e2", "pr": 1642, "subject": "request actions read for sandbox logs", "disposition": "wont-merge", "reason": "already in dev — actions:read in RUNTIME_PROXY_TOKEN_PERMISSIONS + identical prompt line", "branch": "", "local_sha": null, "updated": "2026-07-08T20:14:42Z"}
{"sha": "2f237b53", "pr": 1626, "subject": "fall back to vision model for image threads", "disposition": "landed", "reason": "ported (adapted to Bedrock/Fireworks vision) in #128", "branch": "gateway-routing", "local_sha": null, "updated": "2026-07-08T22:58:21Z"}
{"sha": "27f987dc", "pr": 1686, "subject": "refactor: remove dead sync-interface compatibility code (#1686)", "disposition": "deferred", "reason": "chain head: dead-code removal (get_sandbox_backend_sync); pointless alone", "branch": "sandbox-refactor", "local_sha": null, "updated": "2026-07-08T20:14:42Z"}
{"sha": "2503a2f4", "pr": 1687, "subject": "refactor(open-swe): provision LangSmith sandboxes natively async (#1687)", "disposition": "deferred", "reason": "FLAG-HUMAN: load-bearing async pivot of create_sandbox + _configure_github_proxy (GitHub-App auth surface)", "branch": "sandbox-refactor", "local_sha": null, "updated": "2026-07-08T20:14:42Z"}
{"sha": "2529b109", "pr": 1690, "subject": "fix: checkpoint per-run graph setup (#1690)", "disposition": "deferred", "reason": "per-run graph-setup checkpoint; built on async server.py; entangled", "branch": "sandbox-refactor", "local_sha": null, "updated": "2026-07-08T20:14:42Z"}
{"sha": "c0a7e93e", "pr": 1691, "subject": "fix: reconnect sandbox backend on resumed runs (#1691)", "disposition": "deferred", "reason": "reconnect proxy (has_backend/reconnect); assumes async create_sandbox", "branch": "sandbox-refactor", "local_sha": null, "updated": "2026-07-08T20:14:42Z"}
{"sha": "4f8bc2dd", "pr": 1692, "subject": "refactor: simplify open-swe agent sandbox lifecycle (#1692)", "disposition": "deferred", "reason": "FLAG-HUMAN: structural rewrite of ensure_sandbox_for_thread (drops __creating__ 4-case sentinel)", "branch": "sandbox-refactor", "local_sha": null, "updated": "2026-07-08T20:14:42Z"}
{"sha": "48217b68", "pr": 1489, "subject": "feat(open-swe): add E2B sandbox provider (#1489)", "disposition": "deferred", "reason": "additive E2B provider; separable but ships on the async sandbox.py base", "branch": "sandbox-refactor", "local_sha": null, "updated": "2026-07-08T20:14:42Z"}
{"sha": "27f987dc", "pr": 1686, "subject": "refactor: remove dead sync-interface compatibility code (#1686)", "disposition": "wont-merge", "reason": "pure dead-sync-path deletion committing to the async-only posture the fork rejects; fork still uses get_sandbox_backend_sync; no embedded fix", "branch": "", "local_sha": null, "updated": "2026-07-16T22:30:00Z"}
{"sha": "2503a2f4", "pr": 1687, "subject": "refactor(open-swe): provision LangSmith sandboxes natively async (#1687)", "disposition": "wont-merge", "reason": "async pivot of create_sandbox/_configure_github_proxy (auth surface) — fork keeps sync lifecycle; langsmith bump subsumed by fork's 0.10.5 pin; metadata-await fix moot on fork's to_thread path", "branch": "", "local_sha": null, "updated": "2026-07-16T22:30:00Z"}
{"sha": "2529b109", "pr": 1690, "subject": "fix: checkpoint per-run graph setup (#1690)", "disposition": "wont-merge", "reason": "fork's get_agent re-runs idempotent setup by design (stateless), so the un-checkpointed-setup bug doesn't exist; faithful adaptation is a 4-graph rewrite presupposing the deferred async base", "branch": "", "local_sha": null, "updated": "2026-07-16T22:30:00Z"}
{"sha": "c0a7e93e", "pr": 1691, "subject": "fix: reconnect sandbox backend on resumed runs (#1691)", "disposition": "wont-merge", "reason": "fixes a #1690-introduced regression (latched setup skips ensure on resume); fork unconditionally re-runs ensure_sandbox_for_thread (case-4 reconnect), so the gap doesn't exist", "branch": "", "local_sha": null, "updated": "2026-07-16T22:30:00Z"}
{"sha": "4f8bc2dd", "pr": 1692, "subject": "refactor: simplify open-swe agent sandbox lifecycle (#1692)", "disposition": "wont-merge", "reason": "structural rewrite deleting the fork's 4-case __creating__ sentinel; net diff is exactly the sentinel removal + rewritten test; collides with fork-only TID-COLLIDE-01 repo-binding guard", "branch": "", "local_sha": null, "updated": "2026-07-16T22:30:00Z"}
{"sha": "48217b68", "pr": 1489, "subject": "feat(open-swe): add E2B sandbox provider (#1489)", "disposition": "landed", "reason": "re-implemented on fork's sync create_sandbox factory in #199 (E2B SDK is sync; async base not needed); langchain-e2b==0.0.4; dark-safe; GitHub proxy/App-token flow untouched", "branch": "feat/port-1489-e2b-provider", "local_sha": null, "updated": "2026-07-16T22:30:00Z"}
{"sha": "ab4eea4b", "pr": 1663, "subject": "chore(deps): bump the major group across 1 directory with 3 updates (#1663)", "disposition": "wont-merge", "reason": "already in dev — CI already on checkout@v7/setup-node@v6/upload-artifact@v7", "branch": "", "local_sha": null, "updated": "2026-07-08T20:14:42Z"}
{"sha": "2bf207fb", "pr": 1664, "subject": "chore(deps): bump python in the minor-and-patch group (#1664)", "disposition": "wont-merge", "reason": "already in dev — Dockerfile already at python 3.14.6-slim-trixie", "branch": "", "local_sha": null, "updated": "2026-07-08T20:14:42Z"}
{"sha": "13b40113", "pr": 1666, "subject": "chore(deps): bump cryptography from 48.0.1 to 49.0.0 in the major group (#1666)", "disposition": "wont-merge", "reason": "already in dev — same 48->49 cryptography bump dev did via #105", "branch": "", "local_sha": null, "updated": "2026-07-08T20:14:42Z"}
@ -83,13 +83,13 @@
{"sha": "9cd7e464", "pr": 1700, "subject": "Fix workflow approval visibility (#1700)", "disposition": "wont-merge", "reason": "superseded — dev's list_workflow_approvals_for_thread already enforces owner-only 403", "branch": "", "local_sha": null, "updated": "2026-07-08T20:14:42Z"}
{"sha": "22e024cb", "pr": 1704, "subject": "fix: link issue PRs and prompt repo conventions (#1704)", "disposition": "landed", "reason": "issue/PR linking + repo-convention prompt; clean but prompt-conflict risk vs #113", "branch": "chore/upstream-easy-picks", "local_sha": null, "updated": "2026-07-16T19:15:42Z"}
{"sha": "fd2541ce", "pr": 1705, "subject": "fix: drop orphaned function_call items with stale OpenAI reasoning (#1705)", "disposition": "wont-merge", "reason": "N/A — edits sanitize_openai_responses.py which dev deleted in the Bedrock/Fireworks migration (#62)", "branch": "", "local_sha": null, "updated": "2026-07-08T20:14:42Z"}
{"sha": "27b0ddeb", "pr": 1708, "subject": "feat: add GPT-5.6 OpenAI models (#1708)", "disposition": "deferred", "reason": "FLAG-HUMAN: adds OpenAI GPT-5.6 to the model picker; fork's picker is Bedrock/Fireworks-only — needs a product decision before adopting OpenAI models. Gateway (#155) can route OpenAI if adopted.", "branch": "model-picker", "local_sha": null, "updated": "2026-07-09T22:20:06Z"}
{"sha": "62e0ca2d", "pr": 1709, "subject": "fix: stale admin model defaults after model upgrades (#1709)", "disposition": "deferred", "reason": "stale admin model-default cleanup in team_settings after model upgrades; applies to fork's default-model resolution.", "branch": "model-picker", "local_sha": null, "updated": "2026-07-09T22:20:06Z"}
{"sha": "27b0ddeb", "pr": 1708, "subject": "feat: add GPT-5.6 OpenAI models (#1708)", "disposition": "wont-merge", "reason": "fork picker deliberately Bedrock/Fireworks-only — no-OpenAI-models product decision (consistent with #1725/#1727); options.py verified zero openai: IDs", "branch": "", "local_sha": null, "updated": "2026-07-16T22:30:00Z"}
{"sha": "62e0ca2d", "pr": 1709, "subject": "fix: stale admin model defaults after model upgrades (#1709)", "disposition": "landed", "reason": "cherry-picked (-x) in #200; retired-model map converted to fork Bedrock/Fireworks IDs (Fable deliberately maps to Opus — provider-data-share gate; test-pinned); dropped #1708-entangled profile tests", "branch": "fix/port-1709-stale-model-defaults", "local_sha": null, "updated": "2026-07-16T22:30:00Z"}
{"sha": "138ab9ec", "pr": 1710, "subject": "fix: bump langchain-fireworks to 1.4.4 (#1710)", "disposition": "landed", "reason": "langchain-fireworks 1.4.4 adopted via fork Dependabot group PR #190 (dev now resolves langchain-fireworks==1.4.4); upstream commit not cherry-picked", "branch": "deps", "local_sha": null, "updated": "2026-07-16T20:38:25Z"}
{"sha": "71e3b818", "pr": 1713, "subject": "fix: align reviewer eval with published findings (#1713)", "disposition": "deferred", "reason": "reviewer-eval/judge alignment; touches reviewer.py + add_finding/publish_review which are fork-diverged — reconcile against fork's reviewer before porting.", "branch": "reviewer-eval", "local_sha": null, "updated": "2026-07-09T22:20:07Z"}
{"sha": "35659177", "pr": 1718, "subject": "fix: sanitize orphaned OpenAI tool results (#1718)", "disposition": "deferred", "reason": "Correctness fix for orphaned OpenAI tool results before Responses API calls. Fork already wires SanitizeOpenAIResponsesMiddleware and uses OpenAI, so relevant - adopt, but the middleware file and pyproject conflict (fork copy diverged from an earlier pick); hand-resolve and refresh uv.lock.", "branch": "openai-sanitize", "local_sha": null, "updated": "2026-07-10T16:28:36Z"}
{"sha": "092abafa", "pr": 1717, "subject": "fix: enforce terse Slack tool messages (#1717)", "disposition": "deferred", "reason": "Terse Slack tool-message UX fix. Impl (prompt.py + slack_thread_reply.py) auto-merges; only tests/test_github_comment_prompts.py conflicts against the fork prompt customizations - adopt and resolve that one test.", "branch": "slack-terse", "local_sha": null, "updated": "2026-07-10T16:28:36Z"}
{"sha": "92d63170", "pr": 1720, "subject": "fix: separate review access from automatic reviews (#1720)", "disposition": "deferred", "reason": "Separates review access from automatic reviews; touches fork-diverged webapp.py + webhooks/github.py auto-review flow + review UI. Cherry-picks clean textually but is an access-control change on the fork-customized opened/ready_for_review auto-review surface - re-inspect semantics and get human sign-off before picking.", "branch": "reviewer-access", "local_sha": null, "updated": "2026-07-10T16:28:36Z"}
{"sha": "71e3b818", "pr": 1713, "subject": "fix: align reviewer eval with published findings (#1713)", "disposition": "landed", "reason": "cherry-picked (-x) in #201; reviewer.py + publish_review.py hand-reconciled into fork structure (kept sandbox/skills/middleware stack, kebab-case workflow, Bedrock eval default); publish_review cap param removed (tool-facing only)", "branch": "fix/port-1713-reviewer-eval-alignment", "local_sha": null, "updated": "2026-07-16T22:30:00Z"}
{"sha": "35659177", "pr": 1718, "subject": "fix: sanitize orphaned OpenAI tool results (#1718)", "disposition": "wont-merge", "reason": "N/A — fork has no OpenAI Responses traffic path; middleware present is #155's leaner rewrite lacking the orphan machinery #1718 patches; langchain-openai>=1.3.4 already satisfied; superseded upstream by #1731 (re-evaluate #155 rewrite when triaging #1731). Note: fd2541ce row's '#62 deleted sanitize_openai_responses.py' is inaccurate — the path was added fresh by #155", "branch": "", "local_sha": null, "updated": "2026-07-16T22:30:00Z"}
{"sha": "092abafa", "pr": 1717, "subject": "fix: enforce terse Slack tool messages (#1717)", "disposition": "landed", "reason": "cherry-picked (-x) in #197; one test conflict resolved by adopting upstream's test (fork prompt now contains upstream text); follow-up to landed #1681, not superseded by it", "branch": "fix/port-1717-terse-slack-tool-msgs", "local_sha": null, "updated": "2026-07-16T22:30:00Z"}
{"sha": "92d63170", "pr": 1720, "subject": "fix: separate review access from automatic reviews (#1720)", "disposition": "landed", "reason": "cherry-picked (-x) in #198 + fork-only auto-fix gates renamed to _is_repo_auto_review_enabled (kept opt-in-gated); opt-in list now gates only AUTOMATIC reviews — manual/re-review/watch/finding-replies open to any App-installed repo. Adam signed off 2026-07-16; /sh-security-review explicitly waived by Adam 2026-07-16", "branch": "fix/port-1720-review-access-split", "local_sha": null, "updated": "2026-07-16T22:30:00Z"}
{"sha": "8356eb34", "pr": 1726, "subject": "refactor: organize repository by domain (#1726)", "disposition": "deferred", "reason": "FLAG-HUMAN: 298-file structural reorg (tests/<domain>/, ui/src/features/); chain head — every later upstream commit is written against this layout. Fork policy defers structural refactors (CLAUDE.md); adopting is a dedicated merge exercise. Until then, later picks need path remapping.", "branch": "domain-reorg", "local_sha": null, "updated": "2026-07-16T18:46:21Z"}
{"sha": "83abea26", "pr": 1724, "subject": "fix: accept natural-language Slack plan approvals (#1724)", "disposition": "deferred", "reason": "natural-language Slack plan approvals; touches fork-diverged plan-mode + Slack webhook stack (#130); post-reorg test paths need remap", "branch": "plan-approval", "local_sha": null, "updated": "2026-07-16T18:46:52Z"}
{"sha": "129ddcf9", "pr": 1728, "subject": "chore: include ripgrep in sandbox image (#1728)", "disposition": "landed", "reason": "1-line Dockerfile add (ripgrep); dev image lacks it; trivial pick", "branch": "chore/upstream-easy-picks", "local_sha": null, "updated": "2026-07-16T19:15:42Z"}

View file

@ -46,6 +46,7 @@ Rows key on the **upstream SHA** (stable across local cherry-picks). Deferred ro
| `4f913198` | #1647 | widen split review diffs | Landed | already present in dev; empty pick confirmed in #127 | reviewer-misc |
| `20f63e8c` | #1646 | install missing deps before verification | Landed | already in dev via #81 (upstream-sync); ledger was stale | prompt-tweaks |
| `2f237b53` | #1626 | fall back to vision model for image threads | Landed | ported (adapted to Bedrock/Fireworks vision) in #128 | gateway-routing |
| `48217b68` | #1489 | feat(open-swe): add E2B sandbox provider (#1489) | Landed | re-implemented on fork's sync create_sandbox factory in #199 (E2B SDK is sync; async base not needed); langchain-e2b==0.0.4; dark-safe; GitHub proxy/App-token flow untouched | feat/port-1489-e2b-provider |
| `fbc6de85` | #1667 | chore(deps): bump fireworks-ai from 1.2.0a75 to 1.2.0a86 (#1667) | Landed | Superseded by #158 (fireworks-ai a85 -> a88, efeb6b12); dev already exceeds a86. No port needed. | deps |
| `c9f6dd86` | #1694 | fix: fall back on model stream transport errors (#1694) | Landed | adds httpx.TransportError to transient set; small conflict w/ dev's diverged Bedrock fallback | model-fallback |
| `c9a9a7cd` | #1695 | fix: retry model fallback exhaustion (#1695) | Landed | alternating retry+backoff rewrite; reconcile by hand w/ dev's Bedrock + sync wrap path | model-fallback |
@ -65,7 +66,11 @@ Rows key on the **upstream SHA** (stable across local cherry-picks). Deferred ro
| `90cb6caa` | #1681 | feat: terse Slack replies, share long content via plan-review page (#1681) | Landed | terse Slack + long-content-via-plan-page; conflicts w/ fork prompt + diverged plan stack | plan-approval |
| `f53caff1` | #1701 | fix: fall back to core GitHub App scope when optional grants missing (#1701) | Landed | Ported as Option A: workflows:write kept OUT of standing scope, minted only transiently by the workflow-push guard (security-reviewed); PR #181 | chore/port-github-app-scope-fallback |
| `22e024cb` | #1704 | fix: link issue PRs and prompt repo conventions (#1704) | Landed | issue/PR linking + repo-convention prompt; clean but prompt-conflict risk vs #113 | chore/upstream-easy-picks |
| `62e0ca2d` | #1709 | fix: stale admin model defaults after model upgrades (#1709) | Landed | cherry-picked (-x) in #200; retired-model map converted to fork Bedrock/Fireworks IDs (Fable deliberately maps to Opus — provider-data-share gate; test-pinned); dropped #1708-entangled profile tests | fix/port-1709-stale-model-defaults |
| `138ab9ec` | #1710 | fix: bump langchain-fireworks to 1.4.4 (#1710) | Landed | langchain-fireworks 1.4.4 adopted via fork Dependabot group PR #190 (dev now resolves langchain-fireworks==1.4.4); upstream commit not cherry-picked | deps |
| `71e3b818` | #1713 | fix: align reviewer eval with published findings (#1713) | Landed | cherry-picked (-x) in #201; reviewer.py + publish_review.py hand-reconciled into fork structure (kept sandbox/skills/middleware stack, kebab-case workflow, Bedrock eval default); publish_review cap param removed (tool-facing only) | fix/port-1713-reviewer-eval-alignment |
| `092abafa` | #1717 | fix: enforce terse Slack tool messages (#1717) | Landed | cherry-picked (-x) in #197; one test conflict resolved by adopting upstream's test (fork prompt now contains upstream text); follow-up to landed #1681, not superseded by it | fix/port-1717-terse-slack-tool-msgs |
| `92d63170` | #1720 | fix: separate review access from automatic reviews (#1720) | Landed | cherry-picked (-x) in #198 + fork-only auto-fix gates renamed to _is_repo_auto_review_enabled (kept opt-in-gated); opt-in list now gates only AUTOMATIC reviews — manual/re-review/watch/finding-replies open to any App-installed repo. Adam signed off 2026-07-16; /sh-security-review explicitly waived by Adam 2026-07-16 | fix/port-1720-review-access-split |
| `129ddcf9` | #1728 | chore: include ripgrep in sandbox image (#1728) | Landed | 1-line Dockerfile add (ripgrep); dev image lacks it; trivial pick | chore/upstream-easy-picks |
| `1ea03a43` | #1729 | feat: include Cargo in sandbox image (#1729) | Landed | 2-line Dockerfile add (Cargo); adopt with #1728 | chore/upstream-easy-picks |
| `09eaf94c` | #1730 | fix: let admins interrupt runaway agents (#1730) | Landed | admin interrupt for runaway agents (dashboard route + UI); useful ops control; UI half on post-reorg ui/src/features — remap to ui/src/components/agents | feat/admin-thread-interrupt |
@ -79,8 +84,19 @@ Rows key on the **upstream SHA** (stable across local cherry-picks). Deferred ro
| `83cb40a0` | #1616 | update langsmith sdk to 0.9.3 | Won't merge | regression — dev has 0.9.6 | |
| `e5a29eca` | #1613 | plan links in PR descriptions | Won't merge | regression — dev has async plan-ref | |
| `e1d85526` | #1645 | switch ui to pnpm | Won't merge | tooling — fork keeps bun | |
| `4cd5fa5c` | #1629 | avoid recapping Slack replies | Won't merge | already in dev — landed via sync PR #81 (1f060f2a), then deliberately superseded by the fork's refined Slack no-duplication rule in PR #159 (f87847ba) | |
| `baf0c248` | #1617 | filter & grouping menu in threads sidebar | Won't merge | already in dev — full feature present (sidebarFilter/sidebarPrefs/SidebarFilterMenu + AgentsSidebar wiring); only deltas are the later-landed #1661 token restyle | |
| `f29868ff` | #1615 | recover thread work as patch | Won't merge | already in dev via squash-sync PR #81 (1f060f2a) — recovery-patch vertical byte-identical to upstream; 6 recovery tests pass on dev | |
| `8e0788dc` | #1631 | show queued dashboard follow-ups | Won't merge | already in dev via squash-sync PR #81 (1f060f2a) — full queued-follow-ups vertical (types, QueuedMessages UI, streaming de-dupe, e2e) present and since evolved | |
| `9c601ca1` | #1648 | add Stagehand-powered browser subagent | Won't merge | requires Browserbase/Stagehand creds or Chromium-in-server-image + hard stagehand dep; browser runs in server process outside the sandbox; against fork curated-tools policy, no fork use case | |
| `8c944381` | #1622 | restore forced tool call | Won't merge | already in dev via squash-sync PR #81 (1f060f2a) — ensure_no_empty_msg middleware/tests/wiring/prompt line byte-identical to 8c944381; squash hid it from ancestry | |
| `5dc360d8` | #1619 | bump langgraph-checkpoint 4.1.0→4.1.1 | Won't merge | already in dev — uv.lock already resolves langgraph-checkpoint 4.1.1 | |
| `89f886e2` | #1642 | request actions read for sandbox logs | Won't merge | already in dev — actions:read in RUNTIME_PROXY_TOKEN_PERMISSIONS + identical prompt line | |
| `27f987dc` | #1686 | refactor: remove dead sync-interface compatibility code (#1686) | Won't merge | pure dead-sync-path deletion committing to the async-only posture the fork rejects; fork still uses get_sandbox_backend_sync; no embedded fix | |
| `2503a2f4` | #1687 | refactor(open-swe): provision LangSmith sandboxes natively async (#1687) | Won't merge | async pivot of create_sandbox/_configure_github_proxy (auth surface) — fork keeps sync lifecycle; langsmith bump subsumed by fork's 0.10.5 pin; metadata-await fix moot on fork's to_thread path | |
| `2529b109` | #1690 | fix: checkpoint per-run graph setup (#1690) | Won't merge | fork's get_agent re-runs idempotent setup by design (stateless), so the un-checkpointed-setup bug doesn't exist; faithful adaptation is a 4-graph rewrite presupposing the deferred async base | |
| `c0a7e93e` | #1691 | fix: reconnect sandbox backend on resumed runs (#1691) | Won't merge | fixes a #1690-introduced regression (latched setup skips ensure on resume); fork unconditionally re-runs ensure_sandbox_for_thread (case-4 reconnect), so the gap doesn't exist | |
| `4f8bc2dd` | #1692 | refactor: simplify open-swe agent sandbox lifecycle (#1692) | Won't merge | structural rewrite deleting the fork's 4-case __creating__ sentinel; net diff is exactly the sentinel removal + rewritten test; collides with fork-only TID-COLLIDE-01 repo-binding guard | |
| `ab4eea4b` | #1663 | chore(deps): bump the major group across 1 directory with 3 updates (#1663) | Won't merge | already in dev — CI already on checkout@v7/setup-node@v6/upload-artifact@v7 | |
| `2bf207fb` | #1664 | chore(deps): bump python in the minor-and-patch group (#1664) | Won't merge | already in dev — Dockerfile already at python 3.14.6-slim-trixie | |
| `13b40113` | #1666 | chore(deps): bump cryptography from 48.0.1 to 49.0.0 in the major group (#1666) | Won't merge | already in dev — same 48->49 cryptography bump dev did via #105 | |
@ -88,30 +104,14 @@ Rows key on the **upstream SHA** (stable across local cherry-picks). Deferred ro
| `73a9e8b5` | #1693 | chore(deps): bump the minor-and-patch group across 1 directory with 19 updates (#1693) | Won't merge | dev at-or-ahead on 17/19; group fights dev's pinned langsmith==0.9.7 (#115) and carries an upstream plan-route test | |
| `9cd7e464` | #1700 | Fix workflow approval visibility (#1700) | Won't merge | superseded — dev's list_workflow_approvals_for_thread already enforces owner-only 403 | |
| `fd2541ce` | #1705 | fix: drop orphaned function_call items with stale OpenAI reasoning (#1705) | Won't merge | N/A — edits sanitize_openai_responses.py which dev deleted in the Bedrock/Fireworks migration (#62) | |
| `27b0ddeb` | #1708 | feat: add GPT-5.6 OpenAI models (#1708) | Won't merge | fork picker deliberately Bedrock/Fireworks-only — no-OpenAI-models product decision (consistent with #1725/#1727); options.py verified zero openai: IDs | |
| `35659177` | #1718 | fix: sanitize orphaned OpenAI tool results (#1718) | Won't merge | N/A — fork has no OpenAI Responses traffic path; middleware present is #155's leaner rewrite lacking the orphan machinery #1718 patches; langchain-openai>=1.3.4 already satisfied; superseded upstream by #1731 (re-evaluate #155 rewrite when triaging #1731). Note: fd2541ce row's '#62 deleted sanitize_openai_responses.py' is inaccurate — the path was added fresh by #155 | |
| `5136079d` | #1725 | chore: disable todos for GPT-5.6 Sol (#1725) | Won't merge | superseded — #1733 (136d28e6) rewrites the same todo-exclusion block to a global default-off with env opt-in; per-model GPT-5.6 Sol list moot (fork picker has no OpenAI models) | |
| `bfa67a7a` | #1711 | chore(deps): bump soupsieve from 2.8.3 to 2.8.4 (#1711) | Won't merge | already in dev — uv.lock resolves soupsieve 2.8.4 | |
| `f7d94ad3` | #1721 | docs: add e2b to sandbox provider lists in AGENTS.md and CLAUDE.md (#1721) | Won't merge | N/A — edits upstream AGENTS.md/CLAUDE.md, both fully fork-rewritten; E2B provider itself deferred (48217b68) — add a doc line if/when E2B lands | |
| `4773b336` | #1746 | chore: point basedpyright at uv's .venv (#1746) | Won't merge | tooling — fork does not use basedpyright (lint stack is ruff); nothing to point at .venv | |
| `697adaa7` | #1752 | fix: update PyJWT to 2.13.0 (#1752) | Won't merge | already in dev — uv.lock resolves PyJWT 2.13.0 | |
| `714ea4a2` | #1759 | fix: clear basedpyright standard-mode type errors (#1759) | Won't merge | tooling — basedpyright type-error cleanup across 123 post-reorg files; fork uses ruff and the pre-reorg layout | |
| `4cd5fa5c` | #1629 | avoid recapping Slack replies | Deferred | | slack-tooling |
| `baf0c248` | #1617 | filter & grouping menu in threads sidebar | Deferred | ~998 LOC | own branch |
| `f29868ff` | #1615 | recover thread work as patch | Deferred | ~495 LOC | own branch |
| `8e0788dc` | #1631 | show queued dashboard follow-ups | Deferred | | own branch |
| `9c601ca1` | #1648 | add Stagehand-powered browser subagent | Deferred | | own branch |
| `8c944381` | #1622 | restore forced tool call | Deferred | | own branch |
| `27f987dc` | #1686 | refactor: remove dead sync-interface compatibility code (#1686) | Deferred | chain head: dead-code removal (get_sandbox_backend_sync); pointless alone | sandbox-refactor |
| `2503a2f4` | #1687 | refactor(open-swe): provision LangSmith sandboxes natively async (#1687) | Deferred | FLAG-HUMAN: load-bearing async pivot of create_sandbox + _configure_github_proxy (GitHub-App auth surface) | sandbox-refactor |
| `2529b109` | #1690 | fix: checkpoint per-run graph setup (#1690) | Deferred | per-run graph-setup checkpoint; built on async server.py; entangled | sandbox-refactor |
| `c0a7e93e` | #1691 | fix: reconnect sandbox backend on resumed runs (#1691) | Deferred | reconnect proxy (has_backend/reconnect); assumes async create_sandbox | sandbox-refactor |
| `4f8bc2dd` | #1692 | refactor: simplify open-swe agent sandbox lifecycle (#1692) | Deferred | FLAG-HUMAN: structural rewrite of ensure_sandbox_for_thread (drops __creating__ 4-case sentinel) | sandbox-refactor |
| `48217b68` | #1489 | feat(open-swe): add E2B sandbox provider (#1489) | Deferred | additive E2B provider; separable but ships on the async sandbox.py base | sandbox-refactor |
| `27b0ddeb` | #1708 | feat: add GPT-5.6 OpenAI models (#1708) | Deferred | FLAG-HUMAN: adds OpenAI GPT-5.6 to the model picker; fork's picker is Bedrock/Fireworks-only — needs a product decision before adopting OpenAI models. Gateway (#155) can route OpenAI if adopted. | model-picker |
| `62e0ca2d` | #1709 | fix: stale admin model defaults after model upgrades (#1709) | Deferred | stale admin model-default cleanup in team_settings after model upgrades; applies to fork's default-model resolution. | model-picker |
| `71e3b818` | #1713 | fix: align reviewer eval with published findings (#1713) | Deferred | reviewer-eval/judge alignment; touches reviewer.py + add_finding/publish_review which are fork-diverged — reconcile against fork's reviewer before porting. | reviewer-eval |
| `35659177` | #1718 | fix: sanitize orphaned OpenAI tool results (#1718) | Deferred | Correctness fix for orphaned OpenAI tool results before Responses API calls. Fork already wires SanitizeOpenAIResponsesMiddleware and uses OpenAI, so relevant - adopt, but the middleware file and pyproject conflict (fork copy diverged from an earlier pick); hand-resolve and refresh uv.lock. | openai-sanitize |
| `092abafa` | #1717 | fix: enforce terse Slack tool messages (#1717) | Deferred | Terse Slack tool-message UX fix. Impl (prompt.py + slack_thread_reply.py) auto-merges; only tests/test_github_comment_prompts.py conflicts against the fork prompt customizations - adopt and resolve that one test. | slack-terse |
| `92d63170` | #1720 | fix: separate review access from automatic reviews (#1720) | Deferred | Separates review access from automatic reviews; touches fork-diverged webapp.py + webhooks/github.py auto-review flow + review UI. Cherry-picks clean textually but is an access-control change on the fork-customized opened/ready_for_review auto-review surface - re-inspect semantics and get human sign-off before picking. | reviewer-access |
| `8356eb34` | #1726 | refactor: organize repository by domain (#1726) | Deferred | FLAG-HUMAN: 298-file structural reorg (tests/<domain>/, ui/src/features/); chain head — every later upstream commit is written against this layout. Fork policy defers structural refactors (CLAUDE.md); adopting is a dedicated merge exercise. Until then, later picks need path remapping. | domain-reorg |
| `83abea26` | #1724 | fix: accept natural-language Slack plan approvals (#1724) | Deferred | natural-language Slack plan approvals; touches fork-diverged plan-mode + Slack webhook stack (#130); post-reorg test paths need remap | plan-approval |
| `ddbe457b` | #1727 | fix: restore GPT-5.5 as default model (#1727) | Deferred | restores GPT-5.5 default in options/team_settings; fork picker is Bedrock/Fireworks-only — rides the #1708 OpenAI-models product decision (27b0ddeb) | model-picker |