diff --git a/packages/chrome-extension/background.BUG-ANALYSIS.md b/packages/chrome-extension/background.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/chrome-extension/background.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/chrome-extension/check.BUG-ANALYSIS.md b/packages/chrome-extension/check.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/chrome-extension/check.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/chrome-extension/content.BUG-ANALYSIS.md b/packages/chrome-extension/content.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/chrome-extension/content.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/chrome-extension/options.BUG-ANALYSIS.md b/packages/chrome-extension/options.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/chrome-extension/options.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/App.BUG-ANALYSIS.md b/packages/framework/dashboard/App.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/App.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/ActionsRunNotice.BUG-ANALYSIS.md b/packages/framework/dashboard/components/ActionsRunNotice.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/ActionsRunNotice.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/ActionsRunNotice.test.BUG-ANALYSIS.md b/packages/framework/dashboard/components/ActionsRunNotice.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/ActionsRunNotice.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/AddDeviceDialog.BUG-ANALYSIS.md b/packages/framework/dashboard/components/AddDeviceDialog.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/AddDeviceDialog.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/AddDeviceDialog.test.BUG-ANALYSIS.md b/packages/framework/dashboard/components/AddDeviceDialog.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/AddDeviceDialog.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/AddProjectPanel.BUG-ANALYSIS.md b/packages/framework/dashboard/components/AddProjectPanel.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/AddProjectPanel.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/AddProjectPanel.test.BUG-ANALYSIS.md b/packages/framework/dashboard/components/AddProjectPanel.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/AddProjectPanel.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/AgentActionBar.BUG-ANALYSIS.md b/packages/framework/dashboard/components/AgentActionBar.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/AgentActionBar.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/AgentActionsMenu.BUG-ANALYSIS.md b/packages/framework/dashboard/components/AgentActionsMenu.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/AgentActionsMenu.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/AgentActionsMenu.test.BUG-ANALYSIS.md b/packages/framework/dashboard/components/AgentActionsMenu.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/AgentActionsMenu.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/AgentActionsMenu.test.tsx b/packages/framework/dashboard/components/AgentActionsMenu.test.tsx index 234e4a682..85269ad32 100644 --- a/packages/framework/dashboard/components/AgentActionsMenu.test.tsx +++ b/packages/framework/dashboard/components/AgentActionsMenu.test.tsx @@ -77,7 +77,7 @@ describe('AgentActionsMenu (#toolbar-menu)', () => { fireEvent.click(screen.getByText('Copy resume command')) await waitFor(() => expect(writeText).toHaveBeenCalledWith( - 'mkdir -p /repo/.the-framework/worktrees/run-1 && cd /repo/.the-framework/worktrees/run-1 && claude --resume 45015d11-755b-423c-ae71-8dbfd54f7cce', + "mkdir -p '/repo/.the-framework/worktrees/run-1' && cd '/repo/.the-framework/worktrees/run-1' && claude --resume 45015d11-755b-423c-ae71-8dbfd54f7cce", ), ) // And it says so, since a click that only fills the clipboard shows nothing otherwise. diff --git a/packages/framework/dashboard/components/AgentChanges.BUG-ANALYSIS.md b/packages/framework/dashboard/components/AgentChanges.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/AgentChanges.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/AgentChanges.test.BUG-ANALYSIS.md b/packages/framework/dashboard/components/AgentChanges.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/AgentChanges.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/AgentComposer.BUG-ANALYSIS.md b/packages/framework/dashboard/components/AgentComposer.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/AgentComposer.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/AgentComposer.test.BUG-ANALYSIS.md b/packages/framework/dashboard/components/AgentComposer.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/AgentComposer.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/AgentComposer.tsx b/packages/framework/dashboard/components/AgentComposer.tsx index de8130d0a..53de12b4c 100644 --- a/packages/framework/dashboard/components/AgentComposer.tsx +++ b/packages/framework/dashboard/components/AgentComposer.tsx @@ -95,7 +95,13 @@ export function AgentComposer({ const stopping = stopBusy || (stopRequested && live) // The last message that went through: a queued control entry is invisible until the agent // drains it between turns, so without this the send looked like nothing happened (#948). + // Reset like the latches above: the note is about THIS agent's live session, so it must not + // survive an agent switch or outlive the session it was queued into. const [queued, setQueued] = useState(null) + useEffect(() => setQueued(null), [agentId]) + useEffect(() => { + if (!live) setQueued(null) + }, [live]) const resumable = !live && sessionId !== undefined const send = async (text: string, _kind: 'build' | 'prompt', opts: { newAgent: boolean }): Promise => { diff --git a/packages/framework/dashboard/components/AgentDetails.BUG-ANALYSIS.md b/packages/framework/dashboard/components/AgentDetails.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/AgentDetails.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/AgentErrorCount.BUG-ANALYSIS.md b/packages/framework/dashboard/components/AgentErrorCount.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/AgentErrorCount.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/AgentErrorCount.test.BUG-ANALYSIS.md b/packages/framework/dashboard/components/AgentErrorCount.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/AgentErrorCount.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/AgentFeed.BUG-ANALYSIS.md b/packages/framework/dashboard/components/AgentFeed.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/AgentFeed.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/AgentHandoff.BUG-ANALYSIS.md b/packages/framework/dashboard/components/AgentHandoff.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/AgentHandoff.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/AgentHandoff.test.BUG-ANALYSIS.md b/packages/framework/dashboard/components/AgentHandoff.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/AgentHandoff.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/AgentHandoff.test.tsx b/packages/framework/dashboard/components/AgentHandoff.test.tsx index ed3a7d767..c46d3f9a5 100644 --- a/packages/framework/dashboard/components/AgentHandoff.test.tsx +++ b/packages/framework/dashboard/components/AgentHandoff.test.tsx @@ -91,6 +91,15 @@ describe('run handoff (#799)', () => { expect(screen.getByText('Nothing committed — no PR to open.')).toBeTruthy() }) + test('a merged branch says merged, not "no changes" — its commits are all on the base', async () => { + // Merged implies empty: `base..branch` lists nothing once every commit landed. The two facts + // must not read the same, since one means work shipped and the other means there was none. + onAgentHandoff.mockResolvedValue({ ...worked, commits: [], files: [], insertions: 0, deletions: 0, empty: true, pushed: true, merged: true }) + render() + await waitFor(() => expect(screen.getByText('merged')).toBeTruthy()) + expect(screen.queryByText('no changes')).toBeNull() + }) + test('an empty branch with work waiting in the tree names the work, never a button (#1173)', async () => { onAgentHandoff.mockResolvedValue({ ...worked, diff --git a/packages/framework/dashboard/components/AgentHandoff.tsx b/packages/framework/dashboard/components/AgentHandoff.tsx index 2701d48e7..6ec23a52f 100644 --- a/packages/framework/dashboard/components/AgentHandoff.tsx +++ b/packages/framework/dashboard/components/AgentHandoff.tsx @@ -36,7 +36,9 @@ export function HandoffSummary({ handoff }: { handoff: AgentHandoff | null }) { // A branch that is gone and a branch that was never pushed are different facts, and the summary // is only useful if it tells them apart. if (!handoff.exists) return branch gone - if (handoff.empty) return no changes + // A merged branch reads as empty too — its commits are all on the base, so `base..branch` lists + // nothing — but "merged" and "no changes" are opposite verdicts, and only one of them is true. + if (handoff.empty) return {handoff.merged ? 'merged' : 'no changes'} const commits = `${handoff.commits.length} commit${handoff.commits.length === 1 ? '' : 's'}` const files = `${handoff.files.length} file${handoff.files.length === 1 ? '' : 's'}` return ( @@ -48,7 +50,6 @@ export function HandoffSummary({ handoff }: { handoff: AgentHandoff | null }) { {/* Whether the work is on the remote yet is the first handoff question — say it. The PR itself is not repeated here: the bar already links it. */} {handoff.pushed && !handoff.pr && · pushed} - {handoff.merged && · merged} ) } @@ -85,6 +86,9 @@ export function HandoffArm({ useEffect(() => { if (pending && pending === armed) setPending(null) }, [pending, armed]) + // Mounted un-keyed across agent switches: a pick still waiting for agent A's event echo must + // not paint agent B's box, where `pending === armed` may never come true to clear it. + useEffect(() => setPending(null), [agentId]) const set = (next: HandoffLevel): void => { setPending(next) diff --git a/packages/framework/dashboard/components/AgentHistory.BUG-ANALYSIS.md b/packages/framework/dashboard/components/AgentHistory.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/AgentHistory.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/AgentHistory.test.BUG-ANALYSIS.md b/packages/framework/dashboard/components/AgentHistory.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/AgentHistory.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/AgentHistory.tsx b/packages/framework/dashboard/components/AgentHistory.tsx index 42bef89fc..054ab0c6b 100644 --- a/packages/framework/dashboard/components/AgentHistory.tsx +++ b/packages/framework/dashboard/components/AgentHistory.tsx @@ -173,8 +173,9 @@ export function AgentHistory({ // New is the active view when a project is open on its launcher (its "New" / Start-a-session // screen: a project selected, no run picked, not following a live one). On the Overview that role - // belongs to the Overview item instead, so the two are never active at once. - const atProjectLauncher = projectId !== null && selectedAgentId === null && !followLive + // belongs to the Overview item instead, so the two are never active at once — and a ticket page + // routes with a project but is the Tickets view, not the launcher. + const atProjectLauncher = projectId !== null && selectedAgentId === null && !followLive && !ticketsActive const hasRecents = rows.length > 0 || showOptimistic @@ -600,7 +601,9 @@ function AgentHistoryRow({ it used to pulse identically whether it was mid-edit or had been idle for an hour. */} {/* The publishing dot pulses green like the session pill's (#1431), so the two surfaces describe the same window the same way. */} - {status === 'running' && ( + {/* `parked` alone covers the cloud-side wait: its local status is done, but the SPEC's + "waiting" always comes with the still dot, wherever the session is parked. */} + {(status === 'running' || parked) && ( )} {publishingNow && } diff --git a/packages/framework/dashboard/components/AgentOverview.BUG-ANALYSIS.md b/packages/framework/dashboard/components/AgentOverview.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/AgentOverview.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/AgentView.BUG-ANALYSIS.md b/packages/framework/dashboard/components/AgentView.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/AgentView.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/AgentView.test.BUG-ANALYSIS.md b/packages/framework/dashboard/components/AgentView.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/AgentView.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/AgentView.tsx b/packages/framework/dashboard/components/AgentView.tsx index 11357ff2f..3d9e53409 100644 --- a/packages/framework/dashboard/components/AgentView.tsx +++ b/packages/framework/dashboard/components/AgentView.tsx @@ -97,6 +97,13 @@ export function AgentView({ const retained = useLoaded(!live && agentId ? () => onRetainedWorktrees(projectId) : null, [], [projectId, agentId, live]) const [removed, setRemoved] = useState(false) const onWorktreeRemoved = useCallback(() => setRemoved(true), []) + // The view is mounted un-keyed, so switching agents only swaps props: per-agent latches must + // reset by hand or the previous agent's Remove press hides this one's offer (and a stale + // archiveBehind can swallow the catch-up re-read on an equal-length collision). + useEffect(() => { + setRemoved(false) + setArchiveBehind(0) + }, [agentId]) const hasWorktree = !live && !removed && agentId !== null && agentId !== undefined && retained.includes(agentId) // Whether the agent is still working, which is not whether the agent's process is up (#1173). diff --git a/packages/framework/dashboard/components/Agents.BUG-ANALYSIS.md b/packages/framework/dashboard/components/Agents.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/Agents.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/Agents.test.BUG-ANALYSIS.md b/packages/framework/dashboard/components/Agents.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/Agents.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/AiQueue.BUG-ANALYSIS.md b/packages/framework/dashboard/components/AiQueue.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/AiQueue.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/AiQueue.test.BUG-ANALYSIS.md b/packages/framework/dashboard/components/AiQueue.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/AiQueue.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/AnsweredChoice.BUG-ANALYSIS.md b/packages/framework/dashboard/components/AnsweredChoice.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/AnsweredChoice.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/AppFrame.BUG-ANALYSIS.md b/packages/framework/dashboard/components/AppFrame.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/AppFrame.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/BrandLink.BUG-ANALYSIS.md b/packages/framework/dashboard/components/BrandLink.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/BrandLink.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/BrandLink.test.BUG-ANALYSIS.md b/packages/framework/dashboard/components/BrandLink.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/BrandLink.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/BridgeSettings.BUG-ANALYSIS.md b/packages/framework/dashboard/components/BridgeSettings.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/BridgeSettings.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/BridgeSettings.test.BUG-ANALYSIS.md b/packages/framework/dashboard/components/BridgeSettings.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/BridgeSettings.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/BrowserPanel.BUG-ANALYSIS.md b/packages/framework/dashboard/components/BrowserPanel.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/BrowserPanel.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/BrowserPanel.test.BUG-ANALYSIS.md b/packages/framework/dashboard/components/BrowserPanel.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/BrowserPanel.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/ChoicePanel.BUG-ANALYSIS.md b/packages/framework/dashboard/components/ChoicePanel.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/ChoicePanel.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/ChoicePanel.tsx b/packages/framework/dashboard/components/ChoicePanel.tsx index 6030c5b37..a8e61c341 100644 --- a/packages/framework/dashboard/components/ChoicePanel.tsx +++ b/packages/framework/dashboard/components/ChoicePanel.tsx @@ -75,9 +75,11 @@ export function ChoicePanel({ const post = (pick: string | string[], by: 'user' | 'autopilot' = 'user') => { const deliver = send ?? ((p: string | string[], b: 'user' | 'autopilot') => sendChoice(projectId, choice.id, p, b, agentId ?? undefined)) - void run(() => deliver(pick, by), 'Could not send your choice — try again.').then( - result => { - if (result !== undefined) { + // Both deliverers resolve void and run() reports failure as undefined, so map a delivered + // pick to a value — otherwise success is indistinguishable from a failed post. + void run(() => deliver(pick, by).then(() => true as const), 'Could not send your choice — try again.').then( + delivered => { + if (delivered) { setSent(true) onAnswered?.(pick) } diff --git a/packages/framework/dashboard/components/CloudAgentNotice.BUG-ANALYSIS.md b/packages/framework/dashboard/components/CloudAgentNotice.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/CloudAgentNotice.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/CloudAgentNotice.test.BUG-ANALYSIS.md b/packages/framework/dashboard/components/CloudAgentNotice.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/CloudAgentNotice.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/Composer.BUG-ANALYSIS.md b/packages/framework/dashboard/components/Composer.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/Composer.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/Composer.test.BUG-ANALYSIS.md b/packages/framework/dashboard/components/Composer.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/Composer.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/ConnectionIndicator.BUG-ANALYSIS.md b/packages/framework/dashboard/components/ConnectionIndicator.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/ConnectionIndicator.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/ContextFiles.BUG-ANALYSIS.md b/packages/framework/dashboard/components/ContextFiles.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/ContextFiles.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/ContextFiles.test.BUG-ANALYSIS.md b/packages/framework/dashboard/components/ContextFiles.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/ContextFiles.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/ContextMenu.BUG-ANALYSIS.md b/packages/framework/dashboard/components/ContextMenu.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/ContextMenu.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/ContextMenu.test.BUG-ANALYSIS.md b/packages/framework/dashboard/components/ContextMenu.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/ContextMenu.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/DashboardPage.BUG-ANALYSIS.md b/packages/framework/dashboard/components/DashboardPage.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/DashboardPage.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/DevicesSettings.BUG-ANALYSIS.md b/packages/framework/dashboard/components/DevicesSettings.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/DevicesSettings.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/DevicesSettings.test.BUG-ANALYSIS.md b/packages/framework/dashboard/components/DevicesSettings.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/DevicesSettings.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/DiffView.BUG-ANALYSIS.md b/packages/framework/dashboard/components/DiffView.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/DiffView.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/DisclosureToggle.BUG-ANALYSIS.md b/packages/framework/dashboard/components/DisclosureToggle.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/DisclosureToggle.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/DisclosureToggle.test.BUG-ANALYSIS.md b/packages/framework/dashboard/components/DisclosureToggle.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/DisclosureToggle.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/DiscordDialogs.BUG-ANALYSIS.md b/packages/framework/dashboard/components/DiscordDialogs.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/DiscordDialogs.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/DiscordDialogs.test.BUG-ANALYSIS.md b/packages/framework/dashboard/components/DiscordDialogs.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/DiscordDialogs.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/DocsPanel.BUG-ANALYSIS.md b/packages/framework/dashboard/components/DocsPanel.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/DocsPanel.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/DriverModelMenu.BUG-ANALYSIS.md b/packages/framework/dashboard/components/DriverModelMenu.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/DriverModelMenu.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/DriverModelMenu.test.BUG-ANALYSIS.md b/packages/framework/dashboard/components/DriverModelMenu.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/DriverModelMenu.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/ErrorBoundary.BUG-ANALYSIS.md b/packages/framework/dashboard/components/ErrorBoundary.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/ErrorBoundary.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/ErrorBoundary.test.BUG-ANALYSIS.md b/packages/framework/dashboard/components/ErrorBoundary.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/ErrorBoundary.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/EventList.BUG-ANALYSIS.md b/packages/framework/dashboard/components/EventList.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/EventList.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/EventList.test.BUG-ANALYSIS.md b/packages/framework/dashboard/components/EventList.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/EventList.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/FilePreview.BUG-ANALYSIS.md b/packages/framework/dashboard/components/FilePreview.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/FilePreview.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/FilePreview.test.BUG-ANALYSIS.md b/packages/framework/dashboard/components/FilePreview.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/FilePreview.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/FileTree.BUG-ANALYSIS.md b/packages/framework/dashboard/components/FileTree.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/FileTree.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/FileTree.test.BUG-ANALYSIS.md b/packages/framework/dashboard/components/FileTree.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/FileTree.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/GitStatusBar.BUG-ANALYSIS.md b/packages/framework/dashboard/components/GitStatusBar.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/GitStatusBar.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/GitStatusBar.test.BUG-ANALYSIS.md b/packages/framework/dashboard/components/GitStatusBar.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/GitStatusBar.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/HotTickets.BUG-ANALYSIS.md b/packages/framework/dashboard/components/HotTickets.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/HotTickets.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/HotTickets.test.BUG-ANALYSIS.md b/packages/framework/dashboard/components/HotTickets.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/HotTickets.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/InlineBrowser.BUG-ANALYSIS.md b/packages/framework/dashboard/components/InlineBrowser.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/InlineBrowser.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/InlineBrowser.test.BUG-ANALYSIS.md b/packages/framework/dashboard/components/InlineBrowser.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/InlineBrowser.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/Logo.BUG-ANALYSIS.md b/packages/framework/dashboard/components/Logo.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/Logo.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/Logo.test.BUG-ANALYSIS.md b/packages/framework/dashboard/components/Logo.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/Logo.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/Markdown.BUG-ANALYSIS.md b/packages/framework/dashboard/components/Markdown.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/Markdown.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/Markdown.test.BUG-ANALYSIS.md b/packages/framework/dashboard/components/Markdown.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/Markdown.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/Markdown.tsx b/packages/framework/dashboard/components/Markdown.tsx index e0eb19328..24113b2de 100644 --- a/packages/framework/dashboard/components/Markdown.tsx +++ b/packages/framework/dashboard/components/Markdown.tsx @@ -37,7 +37,7 @@ function tableCells(row: string): string[] { /** The GFM header separator (`| --- | :-: |`), which is what makes pipe rows a table. */ function isTableSeparator(row: string): boolean { - return tableCells(row).length > 0 && tableCells(row).every(c => /^:?-{3,}:?$/.test(c)) + return tableCells(row).length > 0 && tableCells(row).every(c => /^:?-+:?$/.test(c)) } function renderBlocks(text: string, compact = false): ReactNode[] { diff --git a/packages/framework/dashboard/components/NotFound.BUG-ANALYSIS.md b/packages/framework/dashboard/components/NotFound.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/NotFound.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/NotificationsMenu.BUG-ANALYSIS.md b/packages/framework/dashboard/components/NotificationsMenu.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/NotificationsMenu.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/NotificationsMenu.test.BUG-ANALYSIS.md b/packages/framework/dashboard/components/NotificationsMenu.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/NotificationsMenu.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/OnboardingChecklist.BUG-ANALYSIS.md b/packages/framework/dashboard/components/OnboardingChecklist.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/OnboardingChecklist.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/OnboardingChecklist.test.BUG-ANALYSIS.md b/packages/framework/dashboard/components/OnboardingChecklist.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/OnboardingChecklist.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/OpenQuestions.BUG-ANALYSIS.md b/packages/framework/dashboard/components/OpenQuestions.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/OpenQuestions.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/OpenQuestions.test.BUG-ANALYSIS.md b/packages/framework/dashboard/components/OpenQuestions.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/OpenQuestions.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/OpenQuestions.test.tsx b/packages/framework/dashboard/components/OpenQuestions.test.tsx index e34f65c78..710982ec5 100644 --- a/packages/framework/dashboard/components/OpenQuestions.test.tsx +++ b/packages/framework/dashboard/components/OpenQuestions.test.tsx @@ -124,9 +124,6 @@ describe('OpenQuestions jump-nav (#1455 bonus 1)', () => { describe('OpenQuestions answered collapse (#1455 bonus 2)', () => { test('answering collapses the card to a ✓ line in place, and the header counts only open ones', async () => { - // A defined result is the ChoicePanel's "posted and accepted" condition, which is what - // fires onAnswered — the default undefined models a failed post and must not collapse. - sendChoice.mockResolvedValue(null) onOpenQuestions.mockResolvedValue([question()]) render() await waitFor(() => expect(screen.getByText('Work on it')).toBeTruthy()) @@ -139,7 +136,6 @@ describe('OpenQuestions answered collapse (#1455 bonus 2)', () => { }) test('expanding an answered card shows the options with the pick marked, and still opens the session', async () => { - sendChoice.mockResolvedValue(null) onOpenQuestions.mockResolvedValue([question()]) const onOpenAgent = vi.fn() render() diff --git a/packages/framework/dashboard/components/OptionsMenu.BUG-ANALYSIS.md b/packages/framework/dashboard/components/OptionsMenu.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/OptionsMenu.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/OptionsMenu.test.BUG-ANALYSIS.md b/packages/framework/dashboard/components/OptionsMenu.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/OptionsMenu.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/PresetCreatePanel.BUG-ANALYSIS.md b/packages/framework/dashboard/components/PresetCreatePanel.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/PresetCreatePanel.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/PresetCreatePanel.test.BUG-ANALYSIS.md b/packages/framework/dashboard/components/PresetCreatePanel.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/PresetCreatePanel.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/PresetsMenu.BUG-ANALYSIS.md b/packages/framework/dashboard/components/PresetsMenu.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/PresetsMenu.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/PresetsMenu.test.BUG-ANALYSIS.md b/packages/framework/dashboard/components/PresetsMenu.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/PresetsMenu.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/ProjectActions.BUG-ANALYSIS.md b/packages/framework/dashboard/components/ProjectActions.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/ProjectActions.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/ProjectDocs.BUG-ANALYSIS.md b/packages/framework/dashboard/components/ProjectDocs.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/ProjectDocs.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/ProjectDocs.test.BUG-ANALYSIS.md b/packages/framework/dashboard/components/ProjectDocs.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/ProjectDocs.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/ProjectErrorBanner.BUG-ANALYSIS.md b/packages/framework/dashboard/components/ProjectErrorBanner.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/ProjectErrorBanner.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/ProjectErrorBanner.test.BUG-ANALYSIS.md b/packages/framework/dashboard/components/ProjectErrorBanner.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/ProjectErrorBanner.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/ProjectHome.BUG-ANALYSIS.md b/packages/framework/dashboard/components/ProjectHome.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/ProjectHome.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/PromptEditor.BUG-ANALYSIS.md b/packages/framework/dashboard/components/PromptEditor.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/PromptEditor.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/PromptEditor.test.BUG-ANALYSIS.md b/packages/framework/dashboard/components/PromptEditor.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/PromptEditor.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/Quota.BUG-ANALYSIS.md b/packages/framework/dashboard/components/Quota.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/Quota.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/Quota.test.BUG-ANALYSIS.md b/packages/framework/dashboard/components/Quota.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/Quota.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/RemoteAgentNotice.BUG-ANALYSIS.md b/packages/framework/dashboard/components/RemoteAgentNotice.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/RemoteAgentNotice.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/ResolvedOptions.BUG-ANALYSIS.md b/packages/framework/dashboard/components/ResolvedOptions.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/ResolvedOptions.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/ResolvedOptions.test.BUG-ANALYSIS.md b/packages/framework/dashboard/components/ResolvedOptions.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/ResolvedOptions.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/RightRail.BUG-ANALYSIS.md b/packages/framework/dashboard/components/RightRail.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/RightRail.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/RightRail.test.BUG-ANALYSIS.md b/packages/framework/dashboard/components/RightRail.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/RightRail.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/RoutineWork.BUG-ANALYSIS.md b/packages/framework/dashboard/components/RoutineWork.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/RoutineWork.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/RoutineWork.test.BUG-ANALYSIS.md b/packages/framework/dashboard/components/RoutineWork.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/RoutineWork.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/SettingsPage.BUG-ANALYSIS.md b/packages/framework/dashboard/components/SettingsPage.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/SettingsPage.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/SettingsPage.test.BUG-ANALYSIS.md b/packages/framework/dashboard/components/SettingsPage.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/SettingsPage.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/StartAgentForm.BUG-ANALYSIS.md b/packages/framework/dashboard/components/StartAgentForm.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/StartAgentForm.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/StartAgentForm.test.BUG-ANALYSIS.md b/packages/framework/dashboard/components/StartAgentForm.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/StartAgentForm.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/SystemPromptDisclosure.BUG-ANALYSIS.md b/packages/framework/dashboard/components/SystemPromptDisclosure.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/SystemPromptDisclosure.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/SystemPromptDisclosure.test.BUG-ANALYSIS.md b/packages/framework/dashboard/components/SystemPromptDisclosure.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/SystemPromptDisclosure.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/ThemeToggle.BUG-ANALYSIS.md b/packages/framework/dashboard/components/ThemeToggle.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/ThemeToggle.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/ThemeToggle.test.BUG-ANALYSIS.md b/packages/framework/dashboard/components/ThemeToggle.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/ThemeToggle.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/TicketDetailPage.BUG-ANALYSIS.md b/packages/framework/dashboard/components/TicketDetailPage.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/TicketDetailPage.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/TicketDetailPage.test.BUG-ANALYSIS.md b/packages/framework/dashboard/components/TicketDetailPage.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/TicketDetailPage.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/TicketFilterBar.BUG-ANALYSIS.md b/packages/framework/dashboard/components/TicketFilterBar.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/TicketFilterBar.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/TicketFilterBar.test.BUG-ANALYSIS.md b/packages/framework/dashboard/components/TicketFilterBar.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/TicketFilterBar.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/TicketPlanPage.BUG-ANALYSIS.md b/packages/framework/dashboard/components/TicketPlanPage.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/TicketPlanPage.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/TicketPlanPage.test.BUG-ANALYSIS.md b/packages/framework/dashboard/components/TicketPlanPage.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/TicketPlanPage.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/TicketsPage.BUG-ANALYSIS.md b/packages/framework/dashboard/components/TicketsPage.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/TicketsPage.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/TicketsPage.test.BUG-ANALYSIS.md b/packages/framework/dashboard/components/TicketsPage.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/TicketsPage.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/TicketsPage.test.tsx b/packages/framework/dashboard/components/TicketsPage.test.tsx index 4bdaa4a1f..340944f7c 100644 --- a/packages/framework/dashboard/components/TicketsPage.test.tsx +++ b/packages/framework/dashboard/components/TicketsPage.test.tsx @@ -147,17 +147,12 @@ describe('TicketsPage sort (#1144/#1265)', () => { // The filters (#1144): search + facets, state mirrored to the URL so a filtered view is a link. describe('TicketsPage filters (#1144)', () => { - const fixture = () => - onAllTickets.mockResolvedValue([ - { - projectId: 'p1', - projectName: 'Alpha', - tickets: [ - ticket({ file: 'lock.md', title: 'Improve the lock', topics: ['dx'], priority: '9' }), - ticket({ file: 'other.md', title: 'Something else', locked: true, lockedBy: 'agent-1' }), - ], - }, - ]) + const fixture = ( + tickets = [ + ticket({ file: 'lock.md', title: 'Improve the lock', topics: ['dx'], priority: '9' }), + ticket({ file: 'other.md', title: 'Something else', locked: true, lockedBy: 'agent-1' }), + ], + ) => onAllTickets.mockResolvedValue([{ projectId: 'p1', projectName: 'Alpha', tickets }]) test('searching narrows the rows and writes q= to the URL', async () => { fixture() @@ -189,6 +184,18 @@ describe('TicketsPage filters (#1144)', () => { expect(window.location.search).toBe('?topics=dx') }) + test('a badge whose topic is capitalised filters by it just the same', async () => { + // Matching lowercases the ticket's topics, so an `UX` badge added verbatim matched nothing — + // clicking it emptied the page instead of narrowing it. + fixture([ticket({ file: 'ux.md', title: 'Polish the rail', topics: ['UX'] }), ticket({ file: 'other.md', title: 'Something else' })]) + render( {}} />) + await screen.findByText('Polish the rail') + fireEvent.click(screen.getByRole('button', { name: 'UX' })) + await waitFor(() => expect(screen.queryByText('Something else')).toBeNull()) + expect(screen.getByText('Polish the rail')).toBeTruthy() + expect(window.location.search).toBe('?topics=ux') + }) + test('clicking the claim marker narrows to claimed tickets', async () => { fixture() render( {}} />) diff --git a/packages/framework/dashboard/components/TicketsPage.tsx b/packages/framework/dashboard/components/TicketsPage.tsx index 93948fc59..3664bbb0b 100644 --- a/packages/framework/dashboard/components/TicketsPage.tsx +++ b/packages/framework/dashboard/components/TicketsPage.tsx @@ -70,7 +70,10 @@ export function TicketsPage({ const clearFilters = () => setView({ ...view, filters: defaultView().filters }) // Click-to-filter (#1144): a row's topic badge adds its topic, the claim marker narrows to // claimed — additive, so clicking a second topic widens the OR instead of replacing it. - const addTopic = (topic: string) => { + // Lowercased on the way in, the one casing the filters hold (the query-string parser does the + // same): matching lowercases the ticket's own topics, so a badge reading `UX` filtered nothing. + const addTopic = (raw: string) => { + const topic = raw.toLowerCase() if (!view.filters.topics.includes(topic)) setView({ ...view, filters: { ...view.filters, topics: [...view.filters.topics, topic] } }) } const filterClaimed = () => { diff --git a/packages/framework/dashboard/components/TicketsPanel.BUG-ANALYSIS.md b/packages/framework/dashboard/components/TicketsPanel.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/TicketsPanel.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/TicketsPanel.test.BUG-ANALYSIS.md b/packages/framework/dashboard/components/TicketsPanel.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/TicketsPanel.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/ViewsRail.BUG-ANALYSIS.md b/packages/framework/dashboard/components/ViewsRail.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/ViewsRail.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/WorkspaceActions.BUG-ANALYSIS.md b/packages/framework/dashboard/components/WorkspaceActions.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/WorkspaceActions.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/WorkspaceActions.test.BUG-ANALYSIS.md b/packages/framework/dashboard/components/WorkspaceActions.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/WorkspaceActions.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/driver-logos.BUG-ANALYSIS.md b/packages/framework/dashboard/components/driver-logos.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/driver-logos.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/prompt-editor/SuggestionList.BUG-ANALYSIS.md b/packages/framework/dashboard/components/prompt-editor/SuggestionList.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/prompt-editor/SuggestionList.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/prompt-editor/suggestion.BUG-ANALYSIS.md b/packages/framework/dashboard/components/prompt-editor/suggestion.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/prompt-editor/suggestion.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/prompt-editor/tokenize.BUG-ANALYSIS.md b/packages/framework/dashboard/components/prompt-editor/tokenize.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/prompt-editor/tokenize.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/prompt-editor/tokens.BUG-ANALYSIS.md b/packages/framework/dashboard/components/prompt-editor/tokens.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/prompt-editor/tokens.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/ui/badge.BUG-ANALYSIS.md b/packages/framework/dashboard/components/ui/badge.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/ui/badge.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/ui/button.BUG-ANALYSIS.md b/packages/framework/dashboard/components/ui/button.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/ui/button.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/ui/card.BUG-ANALYSIS.md b/packages/framework/dashboard/components/ui/card.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/ui/card.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/ui/checkbox.BUG-ANALYSIS.md b/packages/framework/dashboard/components/ui/checkbox.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/ui/checkbox.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/ui/confirm-dialog.BUG-ANALYSIS.md b/packages/framework/dashboard/components/ui/confirm-dialog.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/ui/confirm-dialog.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/ui/copy-button.BUG-ANALYSIS.md b/packages/framework/dashboard/components/ui/copy-button.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/ui/copy-button.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/ui/dialog.BUG-ANALYSIS.md b/packages/framework/dashboard/components/ui/dialog.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/ui/dialog.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/ui/dropdown-menu.BUG-ANALYSIS.md b/packages/framework/dashboard/components/ui/dropdown-menu.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/ui/dropdown-menu.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/ui/input.BUG-ANALYSIS.md b/packages/framework/dashboard/components/ui/input.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/ui/input.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/ui/message-scroller.BUG-ANALYSIS.md b/packages/framework/dashboard/components/ui/message-scroller.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/ui/message-scroller.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/ui/message-scroller.test.BUG-ANALYSIS.md b/packages/framework/dashboard/components/ui/message-scroller.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/ui/message-scroller.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/ui/option-label.BUG-ANALYSIS.md b/packages/framework/dashboard/components/ui/option-label.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/ui/option-label.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/ui/popover.BUG-ANALYSIS.md b/packages/framework/dashboard/components/ui/popover.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/ui/popover.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/ui/scroll-area.BUG-ANALYSIS.md b/packages/framework/dashboard/components/ui/scroll-area.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/ui/scroll-area.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/ui/scroll-area.test.BUG-ANALYSIS.md b/packages/framework/dashboard/components/ui/scroll-area.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/ui/scroll-area.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/ui/separator.BUG-ANALYSIS.md b/packages/framework/dashboard/components/ui/separator.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/ui/separator.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/ui/sheet.BUG-ANALYSIS.md b/packages/framework/dashboard/components/ui/sheet.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/ui/sheet.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/ui/sidebar.BUG-ANALYSIS.md b/packages/framework/dashboard/components/ui/sidebar.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/ui/sidebar.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/ui/skeleton.BUG-ANALYSIS.md b/packages/framework/dashboard/components/ui/skeleton.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/ui/skeleton.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/ui/slider.BUG-ANALYSIS.md b/packages/framework/dashboard/components/ui/slider.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/ui/slider.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/components/ui/tooltip.BUG-ANALYSIS.md b/packages/framework/dashboard/components/ui/tooltip.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/components/ui/tooltip.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/design/build.BUG-ANALYSIS.md b/packages/framework/dashboard/design/build.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/design/build.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/design/previews.BUG-ANALYSIS.md b/packages/framework/dashboard/design/previews.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/design/previews.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/design/vite.config.css.BUG-ANALYSIS.md b/packages/framework/dashboard/design/vite.config.css.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/design/vite.config.css.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/lib/agent-label.BUG-ANALYSIS.md b/packages/framework/dashboard/lib/agent-label.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/lib/agent-label.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/lib/agent-option-rows.BUG-ANALYSIS.md b/packages/framework/dashboard/lib/agent-option-rows.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/lib/agent-option-rows.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/lib/agent-option-rows.test.BUG-ANALYSIS.md b/packages/framework/dashboard/lib/agent-option-rows.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/lib/agent-option-rows.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/lib/agent-settings.BUG-ANALYSIS.md b/packages/framework/dashboard/lib/agent-settings.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/lib/agent-settings.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/lib/agent-status.BUG-ANALYSIS.md b/packages/framework/dashboard/lib/agent-status.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/lib/agent-status.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/lib/agent-status.test.BUG-ANALYSIS.md b/packages/framework/dashboard/lib/agent-status.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/lib/agent-status.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/lib/document-title.BUG-ANALYSIS.md b/packages/framework/dashboard/lib/document-title.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/lib/document-title.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/lib/document-title.test.BUG-ANALYSIS.md b/packages/framework/dashboard/lib/document-title.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/lib/document-title.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/lib/draft-handoff.BUG-ANALYSIS.md b/packages/framework/dashboard/lib/draft-handoff.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/lib/draft-handoff.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/lib/draft-handoff.test.BUG-ANALYSIS.md b/packages/framework/dashboard/lib/draft-handoff.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/lib/draft-handoff.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/lib/editors.BUG-ANALYSIS.md b/packages/framework/dashboard/lib/editors.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/lib/editors.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/lib/event-labels.BUG-ANALYSIS.md b/packages/framework/dashboard/lib/event-labels.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/lib/event-labels.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/lib/event-labels.test.BUG-ANALYSIS.md b/packages/framework/dashboard/lib/event-labels.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/lib/event-labels.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/lib/event-times.BUG-ANALYSIS.md b/packages/framework/dashboard/lib/event-times.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/lib/event-times.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/lib/favicon.BUG-ANALYSIS.md b/packages/framework/dashboard/lib/favicon.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/lib/favicon.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/lib/favicon.test.BUG-ANALYSIS.md b/packages/framework/dashboard/lib/favicon.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/lib/favicon.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/lib/format-date.BUG-ANALYSIS.md b/packages/framework/dashboard/lib/format-date.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/lib/format-date.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/lib/format-date.test.BUG-ANALYSIS.md b/packages/framework/dashboard/lib/format-date.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/lib/format-date.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/lib/get-strict-context.BUG-ANALYSIS.md b/packages/framework/dashboard/lib/get-strict-context.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/lib/get-strict-context.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/lib/live-state.BUG-ANALYSIS.md b/packages/framework/dashboard/lib/live-state.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/lib/live-state.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/lib/live-state.test.BUG-ANALYSIS.md b/packages/framework/dashboard/lib/live-state.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/lib/live-state.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/lib/notification-permission.BUG-ANALYSIS.md b/packages/framework/dashboard/lib/notification-permission.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/lib/notification-permission.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/lib/notify-channels.BUG-ANALYSIS.md b/packages/framework/dashboard/lib/notify-channels.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/lib/notify-channels.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/lib/notify-channels.test.BUG-ANALYSIS.md b/packages/framework/dashboard/lib/notify-channels.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/lib/notify-channels.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/lib/preferences.BUG-ANALYSIS.md b/packages/framework/dashboard/lib/preferences.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/lib/preferences.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/lib/preferences.test.BUG-ANALYSIS.md b/packages/framework/dashboard/lib/preferences.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/lib/preferences.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/lib/profiles.BUG-ANALYSIS.md b/packages/framework/dashboard/lib/profiles.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/lib/profiles.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/lib/profiles.test.BUG-ANALYSIS.md b/packages/framework/dashboard/lib/profiles.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/lib/profiles.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/lib/profiles.test.ts b/packages/framework/dashboard/lib/profiles.test.ts index 9ed060362..b17bfd7a3 100644 --- a/packages/framework/dashboard/lib/profiles.test.ts +++ b/packages/framework/dashboard/lib/profiles.test.ts @@ -45,6 +45,10 @@ describe('profiles.ts (#1052)', () => { expect(parseDeviceUrl(' http://box:4200/some/path?token=xyz ')).toEqual({ url: 'http://box:4200', token: 'xyz' }) expect(parseDeviceUrl('http://box:4200')).toEqual({ url: 'http://box:4200', token: '' }) expect(parseDeviceUrl('not a url')).toBeNull() + // A scheme-less paste parses with `localhost:` as the scheme and a `null` origin — reject it + // rather than storing an unusable device (and crashing the dialog's host label). + expect(parseDeviceUrl('localhost:4200/?token=abc')).toBeNull() + expect(parseDeviceUrl('ftp://box:4200/?token=abc')).toBeNull() }) test('connectUrl carries the token for the bootstrap hop', () => { @@ -58,6 +62,9 @@ describe('profiles.ts (#1052)', () => { expect(connectUrl({ url: 'http://127.0.0.1:4200', token: '' }, 'hi')).toBe('http://127.0.0.1:4200/?draft=hi') // An oversize draft is dropped so it can't blow the URL length; the hop still connects. expect(connectUrl({ url: 'http://box:4200', token: 'abc' }, 'x'.repeat(8000))).toBe('http://box:4200/?token=abc') + // The cap measures the percent-encoded form: multibyte text encodes ~9x longer, and the + // encoded length is what the destination daemon's header budget sees. + expect(connectUrl({ url: 'http://box:4200', token: 'abc' }, '中'.repeat(1000))).toBe('http://box:4200/?token=abc') }) test('connectTo navigates carrying the token and the draft (#1066)', () => { diff --git a/packages/framework/dashboard/lib/profiles.ts b/packages/framework/dashboard/lib/profiles.ts index dff119229..f74219456 100644 --- a/packages/framework/dashboard/lib/profiles.ts +++ b/packages/framework/dashboard/lib/profiles.ts @@ -89,6 +89,9 @@ function hostLabel(url: string): string { export function parseDeviceUrl(pasted: string): { url: string; token: string } | null { try { const u = new URL(pasted.trim()) + // A scheme-less paste like `localhost:4200/?token=…` parses with `localhost:` as the scheme + // and an opaque `null` origin — not a device address. + if (u.protocol !== 'http:' && u.protocol !== 'https:') return null return { url: u.origin, token: u.searchParams.get('token') ?? '' } } catch { return null @@ -106,8 +109,9 @@ export function localOrigin(): string { return store()?.getItem(LOCAL_ORIGIN_KEY) ?? DEFAULT_LOCAL_ORIGIN } -/** Cap on a carried composer draft (#1066): above this the hop drops the draft (plain connect) so a - * huge paste can't blow the URL length. */ +/** Cap on a carried composer draft (#1066), measured on the percent-encoded form — the thing whose + * length the URL actually spends (multibyte text encodes up to 9x longer). Above this the hop drops + * the draft (plain connect) so a huge paste can't blow the URL length. */ const MAX_CARRIED_DRAFT = 7000 /** The connect URL for a device: its origin plus the token for the one bootstrap hop (#1051), and @@ -116,7 +120,8 @@ const MAX_CARRIED_DRAFT = 7000 export function connectUrl(profile: Pick, draft?: string): string { const parts: string[] = [] if (profile.token) parts.push(`token=${encodeURIComponent(profile.token)}`) - if (draft && draft.length <= MAX_CARRIED_DRAFT) parts.push(`draft=${encodeURIComponent(draft)}`) + const encodedDraft = draft ? encodeURIComponent(draft) : '' + if (encodedDraft && encodedDraft.length <= MAX_CARRIED_DRAFT) parts.push(`draft=${encodedDraft}`) return parts.length ? `${profile.url}/?${parts.join('&')}` : profile.url } diff --git a/packages/framework/dashboard/lib/queue-entry.BUG-ANALYSIS.md b/packages/framework/dashboard/lib/queue-entry.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/lib/queue-entry.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/lib/queue-entry.test.BUG-ANALYSIS.md b/packages/framework/dashboard/lib/queue-entry.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/lib/queue-entry.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/lib/quota-bar.BUG-ANALYSIS.md b/packages/framework/dashboard/lib/quota-bar.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/lib/quota-bar.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/lib/quota-bar.test.BUG-ANALYSIS.md b/packages/framework/dashboard/lib/quota-bar.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/lib/quota-bar.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/lib/quota.BUG-ANALYSIS.md b/packages/framework/dashboard/lib/quota.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/lib/quota.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/lib/quota.test.BUG-ANALYSIS.md b/packages/framework/dashboard/lib/quota.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/lib/quota.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/lib/remote-target.BUG-ANALYSIS.md b/packages/framework/dashboard/lib/remote-target.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/lib/remote-target.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/lib/resume-command.BUG-ANALYSIS.md b/packages/framework/dashboard/lib/resume-command.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/lib/resume-command.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/lib/resume-command.test.BUG-ANALYSIS.md b/packages/framework/dashboard/lib/resume-command.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/lib/resume-command.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/lib/resume-command.test.ts b/packages/framework/dashboard/lib/resume-command.test.ts index a8a1ab2c0..e74acb9c7 100644 --- a/packages/framework/dashboard/lib/resume-command.test.ts +++ b/packages/framework/dashboard/lib/resume-command.test.ts @@ -7,7 +7,14 @@ describe('buildResumeCommand (#1195)', () => { // The mkdir is the load-bearing part: the CLI matches a session by the cwd it ran in, so // without the path existing again `--resume` cannot find it. expect(cmd).toBe( - 'mkdir -p /repo/.the-framework/worktrees/run-1 && cd /repo/.the-framework/worktrees/run-1 && claude --resume sess-1', + "mkdir -p '/repo/.the-framework/worktrees/run-1' && cd '/repo/.the-framework/worktrees/run-1' && claude --resume sess-1", + ) + }) + + test('quotes a workspace path containing spaces or quotes', () => { + // The repo lives wherever the user keeps it — `/Users/John Doe/…` must survive the shell. + expect(buildResumeCommand({ sessionId: 's', workspace: "/Users/John Doe/it's" })).toBe( + `mkdir -p '/Users/John Doe/it'\\''s' && cd '/Users/John Doe/it'\\''s' && claude --resume s`, ) }) diff --git a/packages/framework/dashboard/lib/resume-command.ts b/packages/framework/dashboard/lib/resume-command.ts index c2231abb6..8c6c9d2ef 100644 --- a/packages/framework/dashboard/lib/resume-command.ts +++ b/packages/framework/dashboard/lib/resume-command.ts @@ -21,5 +21,8 @@ export function buildResumeCommand( if (!id) return null const dir = session.workspace if (!dir) return id - return `mkdir -p ${dir} && cd ${dir} && claude --resume ${id}` + // The path is wherever the user keeps the repo — quote it so a space (routine on macOS, + // `/Users/John Doe/…`) doesn't split the command. + const q = `'${dir.replaceAll("'", `'\\''`)}'` + return `mkdir -p ${q} && cd ${q} && claude --resume ${id}` } diff --git a/packages/framework/dashboard/lib/route.BUG-ANALYSIS.md b/packages/framework/dashboard/lib/route.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/lib/route.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/lib/route.test.BUG-ANALYSIS.md b/packages/framework/dashboard/lib/route.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/lib/route.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/lib/rpc.BUG-ANALYSIS.md b/packages/framework/dashboard/lib/rpc.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/lib/rpc.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/lib/session-link.BUG-ANALYSIS.md b/packages/framework/dashboard/lib/session-link.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/lib/session-link.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/lib/session-link.test.BUG-ANALYSIS.md b/packages/framework/dashboard/lib/session-link.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/lib/session-link.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/lib/status-tone.BUG-ANALYSIS.md b/packages/framework/dashboard/lib/status-tone.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/lib/status-tone.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/lib/ticket-filter.BUG-ANALYSIS.md b/packages/framework/dashboard/lib/ticket-filter.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/lib/ticket-filter.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/lib/ticket-filter.test.BUG-ANALYSIS.md b/packages/framework/dashboard/lib/ticket-filter.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/lib/ticket-filter.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/lib/ticket-priority.BUG-ANALYSIS.md b/packages/framework/dashboard/lib/ticket-priority.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/lib/ticket-priority.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/lib/ticket-priority.test.BUG-ANALYSIS.md b/packages/framework/dashboard/lib/ticket-priority.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/lib/ticket-priority.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/lib/use-action.BUG-ANALYSIS.md b/packages/framework/dashboard/lib/use-action.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/lib/use-action.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/lib/use-action.test.BUG-ANALYSIS.md b/packages/framework/dashboard/lib/use-action.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/lib/use-action.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/lib/use-agent-handoff.BUG-ANALYSIS.md b/packages/framework/dashboard/lib/use-agent-handoff.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/lib/use-agent-handoff.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/lib/use-agents.BUG-ANALYSIS.md b/packages/framework/dashboard/lib/use-agents.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/lib/use-agents.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/lib/use-agents.test.BUG-ANALYSIS.md b/packages/framework/dashboard/lib/use-agents.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/lib/use-agents.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/lib/use-async.BUG-ANALYSIS.md b/packages/framework/dashboard/lib/use-async.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/lib/use-async.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/lib/use-async.test.BUG-ANALYSIS.md b/packages/framework/dashboard/lib/use-async.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/lib/use-async.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/lib/use-context-set.BUG-ANALYSIS.md b/packages/framework/dashboard/lib/use-context-set.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/lib/use-context-set.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/lib/use-daemon-health.BUG-ANALYSIS.md b/packages/framework/dashboard/lib/use-daemon-health.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/lib/use-daemon-health.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/lib/use-daemon-health.test.BUG-ANALYSIS.md b/packages/framework/dashboard/lib/use-daemon-health.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/lib/use-daemon-health.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/lib/use-device-status.BUG-ANALYSIS.md b/packages/framework/dashboard/lib/use-device-status.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/lib/use-device-status.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/lib/use-device-status.test.BUG-ANALYSIS.md b/packages/framework/dashboard/lib/use-device-status.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/lib/use-device-status.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/lib/use-live-events.BUG-ANALYSIS.md b/packages/framework/dashboard/lib/use-live-events.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/lib/use-live-events.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/lib/use-live-events.test.BUG-ANALYSIS.md b/packages/framework/dashboard/lib/use-live-events.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/lib/use-live-events.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/lib/use-mobile.BUG-ANALYSIS.md b/packages/framework/dashboard/lib/use-mobile.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/lib/use-mobile.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/lib/use-notifications.BUG-ANALYSIS.md b/packages/framework/dashboard/lib/use-notifications.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/lib/use-notifications.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/lib/use-notifications.test.BUG-ANALYSIS.md b/packages/framework/dashboard/lib/use-notifications.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/lib/use-notifications.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/lib/use-route.BUG-ANALYSIS.md b/packages/framework/dashboard/lib/use-route.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/lib/use-route.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/lib/use-route.test.BUG-ANALYSIS.md b/packages/framework/dashboard/lib/use-route.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/lib/use-route.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/lib/use-start-agent.BUG-ANALYSIS.md b/packages/framework/dashboard/lib/use-start-agent.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/lib/use-start-agent.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/lib/use-working.BUG-ANALYSIS.md b/packages/framework/dashboard/lib/use-working.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/lib/use-working.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/lib/utils.BUG-ANALYSIS.md b/packages/framework/dashboard/lib/utils.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/lib/utils.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/main.BUG-ANALYSIS.md b/packages/framework/dashboard/main.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/main.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/rpc/control.BUG-ANALYSIS.md b/packages/framework/dashboard/rpc/control.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/rpc/control.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/rpc/devices.BUG-ANALYSIS.md b/packages/framework/dashboard/rpc/devices.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/rpc/devices.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/rpc/events.BUG-ANALYSIS.md b/packages/framework/dashboard/rpc/events.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/rpc/events.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/rpc/preferences.BUG-ANALYSIS.md b/packages/framework/dashboard/rpc/preferences.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/rpc/preferences.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/rpc/projects.BUG-ANALYSIS.md b/packages/framework/dashboard/rpc/projects.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/rpc/projects.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/rpc/quota.BUG-ANALYSIS.md b/packages/framework/dashboard/rpc/quota.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/rpc/quota.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/rpc/reads.BUG-ANALYSIS.md b/packages/framework/dashboard/rpc/reads.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/rpc/reads.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/test-utils.BUG-ANALYSIS.md b/packages/framework/dashboard/test-utils.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/test-utils.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/vite.config.BUG-ANALYSIS.md b/packages/framework/dashboard/vite.config.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/vite.config.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/vitest.config.BUG-ANALYSIS.md b/packages/framework/dashboard/vitest.config.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/vitest.config.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/dashboard/vitest.setup.BUG-ANALYSIS.md b/packages/framework/dashboard/vitest.setup.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/dashboard/vitest.setup.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/scripts/gen-prompts.BUG-ANALYSIS.md b/packages/framework/scripts/gen-prompts.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/scripts/gen-prompts.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/scripts/gen-prompts.mjs b/packages/framework/scripts/gen-prompts.mjs index 4db2a7b3a..de31faaa1 100644 --- a/packages/framework/scripts/gen-prompts.mjs +++ b/packages/framework/scripts/gen-prompts.mjs @@ -20,14 +20,15 @@ const outFile = join(here, '..', 'src', 'prompts.generated.ts') /** * Every prompt .md under prompts/, as absolute paths, sorted so the output is stable. - * README.md and SPEC.md are documentation for humans, not prompts. + * README.md and the SPEC.md docs — the directory's own and each prompt's sibling — are + * documentation for humans, not prompts. */ async function findMarkdown(dir) { const found = [] for (const entry of await readdir(dir, { withFileTypes: true })) { const path = join(dir, entry.name) if (entry.isDirectory()) found.push(...(await findMarkdown(path))) - else if (entry.name.endsWith('.md') && entry.name !== 'README.md' && entry.name !== 'SPEC.md') found.push(path) + else if (entry.name.endsWith('.md') && entry.name !== 'README.md' && !entry.name.endsWith('SPEC.md')) found.push(path) } return found.sort() } diff --git a/packages/framework/scripts/run-tests.BUG-ANALYSIS.md b/packages/framework/scripts/run-tests.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/scripts/run-tests.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/agent-archive.BUG-ANALYSIS.md b/packages/framework/src/agent-archive.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/agent-archive.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/agent-archive.test.BUG-ANALYSIS.md b/packages/framework/src/agent-archive.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/agent-archive.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/agent-driver.BUG-ANALYSIS.md b/packages/framework/src/agent-driver.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/agent-driver.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/agent-driver.test.BUG-ANALYSIS.md b/packages/framework/src/agent-driver.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/agent-driver.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/agent-location.BUG-ANALYSIS.md b/packages/framework/src/agent-location.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/agent-location.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/agent-locks.BUG-ANALYSIS.md b/packages/framework/src/agent-locks.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/agent-locks.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/agent-locks.test.BUG-ANALYSIS.md b/packages/framework/src/agent-locks.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/agent-locks.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/agent-messages.BUG-ANALYSIS.md b/packages/framework/src/agent-messages.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/agent-messages.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/agent-messages.test.BUG-ANALYSIS.md b/packages/framework/src/agent-messages.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/agent-messages.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/agent-options.BUG-ANALYSIS.md b/packages/framework/src/agent-options.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/agent-options.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/agent-options.test.BUG-ANALYSIS.md b/packages/framework/src/agent-options.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/agent-options.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/agent-spec.BUG-ANALYSIS.md b/packages/framework/src/agent-spec.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/agent-spec.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/agent-spec.test.BUG-ANALYSIS.md b/packages/framework/src/agent-spec.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/agent-spec.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/agent-telemetry.BUG-ANALYSIS.md b/packages/framework/src/agent-telemetry.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/agent-telemetry.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/agent-telemetry.test.BUG-ANALYSIS.md b/packages/framework/src/agent-telemetry.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/agent-telemetry.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/agent-view.BUG-ANALYSIS.md b/packages/framework/src/agent-view.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/agent-view.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/agent-view.test.BUG-ANALYSIS.md b/packages/framework/src/agent-view.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/agent-view.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/agent.BUG-ANALYSIS.md b/packages/framework/src/agent.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/agent.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/agent.test.BUG-ANALYSIS.md b/packages/framework/src/agent.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/agent.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/archived-agent-patch.BUG-ANALYSIS.md b/packages/framework/src/archived-agent-patch.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/archived-agent-patch.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/archived-agent-patch.test.BUG-ANALYSIS.md b/packages/framework/src/archived-agent-patch.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/archived-agent-patch.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/auto-pm.BUG-ANALYSIS.md b/packages/framework/src/auto-pm.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/auto-pm.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/auto-pm.test.BUG-ANALYSIS.md b/packages/framework/src/auto-pm.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/auto-pm.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/auto-pm.test.ts b/packages/framework/src/auto-pm.test.ts index 14fef3362..40cdfdc19 100644 --- a/packages/framework/src/auto-pm.test.ts +++ b/packages/framework/src/auto-pm.test.ts @@ -1282,6 +1282,24 @@ test("a plan-only sweep visits only the project the card picked (#1204)", async assert.deepEqual(started, ['p2'], 'the other project is not swept by a click that named one') }) +test('a plan click does not cost the maintenance sweep its turn either', async () => { + // Same rule as the rotation index above: the click borrows the tick for the routine it named, + // so the due sweep never ran — and stamping its calendar would postpone it a whole interval. + const stamped: string[] = [] + const { loop, ran } = harness({ + jobs: [PLAN_JOB], + cooldownMs: 0, + planCandidates: async () => ['a.md'], + lockPlans: async (_p, assignments) => assignments, + maintenanceDue: async () => true, + recordMaintenance: async project => void stamped.push(project.id), + }) + await loop.tick({ onDemand: true, only: 'plan', projectId: 'p1' }) + loop.stop() + assert.deepEqual(ran, ['plan']) + assert.deepEqual(stamped, [], 'the sweep it did not run keeps its schedule') +}) + test("a plan click does not cost the rotation its turn (#1204)", async () => { // The rotation is mid-cycle; a click that borrows the tick for a routine it named must leave // the cycle where it was, the same way a due maintenance sweep does. diff --git a/packages/framework/src/auto-pm.ts b/packages/framework/src/auto-pm.ts index 848a009c9..36ac0917b 100644 --- a/packages/framework/src/auto-pm.ts +++ b/packages/framework/src/auto-pm.ts @@ -934,7 +934,11 @@ export function startAutoPm(deps: AutoPmDeps): AutoPmLoop { // is genuinely empty, and a tick that fell through to the rotation because draining is // switched off still has entries waiting — exactly the case this sweep stays out of. const maintenanceJob = wanted(deps.maintenanceJob ?? AUTO_PM_MAINTENANCE_JOB) + // Never on a click that named a routine: that click takes the tick outright below, so the + // sweep does not run — and a schedule stamped for a sweep that never ran postpones the + // real one a whole interval. Asked first, so such a click also costs no schedule read. const sweep = + !named && decision.mode === 'pm' && maintenanceJob !== undefined && (await deps.maintenanceDue?.(project).catch(() => false)) === true diff --git a/packages/framework/src/await-gate.BUG-ANALYSIS.md b/packages/framework/src/await-gate.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/await-gate.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/bin.BUG-ANALYSIS.md b/packages/framework/src/bin.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/bin.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/branch-links.BUG-ANALYSIS.md b/packages/framework/src/branch-links.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/branch-links.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/branch-links.test.BUG-ANALYSIS.md b/packages/framework/src/branch-links.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/branch-links.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/branch-names.BUG-ANALYSIS.md b/packages/framework/src/branch-names.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/branch-names.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/browser-stream.BUG-ANALYSIS.md b/packages/framework/src/browser-stream.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/browser-stream.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/browser-stream.test.BUG-ANALYSIS.md b/packages/framework/src/browser-stream.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/browser-stream.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/browser.BUG-ANALYSIS.md b/packages/framework/src/browser.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/browser.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/browser.test.BUG-ANALYSIS.md b/packages/framework/src/browser.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/browser.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/ci-watch.BUG-ANALYSIS.md b/packages/framework/src/ci-watch.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/ci-watch.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/ci-watch.test.BUG-ANALYSIS.md b/packages/framework/src/ci-watch.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/ci-watch.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/ci-watch.test.ts b/packages/framework/src/ci-watch.test.ts index 984c08b27..a49ffc851 100644 --- a/packages/framework/src/ci-watch.test.ts +++ b/packages/framework/src/ci-watch.test.ts @@ -71,6 +71,16 @@ test('an auto-armed PR is never merged here: GitHub holds that promise', async ( assert.deepEqual(result.merged, []) }) +test('a PR read still warming waits for the next tick: its OPEN is a guess', async () => { + // The cache answers `pending` with a synthetic OPEN (agent-handoff.ts), which on a daemon's + // start-up tick is every watched agent — including ones whose PR has since merged or closed. + const { deps, merges, fixes } = sweepDeps(openPr(), { checks: 'passing', failed: [] }) + const result = await sweepProjectCi('/p', { ...deps, pr: async () => ({ value: openPr(), pending: true }) }) + assert.deepEqual(merges, []) + assert.deepEqual(fixes, []) + assert.deepEqual(result, { merged: [], failed: [], fixes: [] }) +}) + test('pending checks wait for the next tick: no merge, no fix', async () => { const { deps, merges, fixes } = sweepDeps(openPr(), { checks: 'pending', failed: [] }) const result = await sweepProjectCi('/p', deps) @@ -79,22 +89,34 @@ test('pending checks wait for the next tick: no merge, no fix', async () => { assert.deepEqual(result, { merged: [], failed: [], fixes: [] }) }) +/** A repo that genuinely has no CI: `gh` answered, so the read carries the head it read. */ +const NO_CI: PrCiStatus = { checks: 'none', failed: [], headSha: 'abc1234', branch: 'tf-change' } + test('a check-less PR younger than the attach grace is not merged — the stale-check window (#1406)', async () => { const justOpened = openPr({ createdAt: new Date(NOW - NO_CHECKS_GRACE_MS + 1000).toISOString() }) - const { deps, merges } = sweepDeps(justOpened, { checks: 'none', failed: [] }) + const { deps, merges } = sweepDeps(justOpened, NO_CI) await sweepProjectCi('/p', deps) assert.deepEqual(merges, []) }) test('a check-less PR past the grace merges: the repo genuinely has no CI', async () => { const settled = openPr({ createdAt: new Date(NOW - NO_CHECKS_GRACE_MS - 1000).toISOString() }) - const { deps, merges } = sweepDeps(settled, { checks: 'none', failed: [] }) + const { deps, merges } = sweepDeps(settled, NO_CI) await sweepProjectCi('/p', deps) assert.deepEqual(merges, ['run-1']) }) +test('an unreadable CI status never merges, however old the PR is', async () => { + // `gh` failing answers `none` with no head (gh.ts): indistinguishable from a CI-less repo except + // by the missing head commit, and merging on it lands work whose checks may be red. + const settled = openPr({ createdAt: new Date(NOW - NO_CHECKS_GRACE_MS - 1000).toISOString() }) + const { deps, merges } = sweepDeps(settled, { checks: 'none', failed: [] }) + await sweepProjectCi('/p', deps) + assert.deepEqual(merges, []) +}) + test('a check-less PR with no createdAt never merges: age unknowable', async () => { - const { deps, merges } = sweepDeps(openPr({ createdAt: undefined as unknown as string }), { checks: 'none', failed: [] }) + const { deps, merges } = sweepDeps(openPr({ createdAt: undefined as unknown as string }), NO_CI) await sweepProjectCi('/p', deps) assert.deepEqual(merges, []) }) diff --git a/packages/framework/src/ci-watch.ts b/packages/framework/src/ci-watch.ts index 015216237..3cf26e294 100644 --- a/packages/framework/src/ci-watch.ts +++ b/packages/framework/src/ci-watch.ts @@ -177,7 +177,12 @@ export async function sweepProjectCi(cwd: string, deps: CiSweepDeps = {}): Promi const seen = new Set() for (const meta of candidates) { - const linked = (await pr(cwd, meta).catch((): Cached => ({ value: undefined, pending: false }))).value + const read = await pr(cwd, meta).catch((): Cached => ({ value: undefined, pending: false })) + // A cache still warming answers `pending`, and the value standing in for the state it has not + // read yet is a synthetic OPEN (agent-handoff.ts). Acting on that guess re-merges PRs that + // already landed and starts fix sessions on branches a human closed; the next tick knows. + if (read.pending) continue + const linked = read.value // No PR, or one that is no longer open: nothing left to watch. CLOSED stays closed on // purpose — an unmerged close is a human's rejection of the work. if (!linked || linked.state !== 'OPEN' || seen.has(linked.number)) continue @@ -193,7 +198,13 @@ export async function sweepProjectCi(cwd: string, deps: CiSweepDeps = {}): Promi // Green — but the merge is only ours where GitHub could not take it (#1418): an auto-armed // PR lands by GitHub's own hand, and a check-less one must outlive the attach window first. if (meta.mergeOutcome !== 'watched') continue - if (status.checks === 'none' && !pastNoChecksGrace(linked, now())) continue + if (status.checks === 'none') { + // "No checks" means "this repo has no CI" only when `gh` actually answered: an unreadable + // status reads `none` too (gh.ts), and acting on one must never merge anything. A read that + // succeeded always carries the head commit, so its presence is what tells the two apart. + if (!status.headSha) continue + if (!pastNoChecksGrace(linked, now())) continue + } const attemptKey = `${cwd}\u0000${linked.number}\u0000${status.headSha ?? ''}` if (deps.attemptedMerges?.has(attemptKey)) continue const outcome = await merge(cwd, meta) diff --git a/packages/framework/src/cli-exec.BUG-ANALYSIS.md b/packages/framework/src/cli-exec.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/cli-exec.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/cli-exec.test.BUG-ANALYSIS.md b/packages/framework/src/cli-exec.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/cli-exec.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/cli.BUG-ANALYSIS.md b/packages/framework/src/cli.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/cli.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/cli.test.BUG-ANALYSIS.md b/packages/framework/src/cli.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/cli.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/cli.ts b/packages/framework/src/cli.ts index fd1f8f4bf..9fc25d5a4 100644 --- a/packages/framework/src/cli.ts +++ b/packages/framework/src/cli.ts @@ -932,8 +932,13 @@ async function driveAgent(opts: AgentOptions, io: CliIO): Promise { // Who parks and who ends is #1390: a dashboard-spawned session drains what queued and then ends // itself — the dashboard reopens the conversation as a continuation (#762), so nothing needs to // stay alive for the composer. + // + // Not tied to the gates (#846): an unattended agent leaves `requestChoice` unset so its gates + // take the recommended option, but its control channel still carries Stop and the user's own + // messages — "messages still work" is what the SPEC promises of it. Reading the queue off the + // gate switch dropped every message typed at a preset or routine agent, reported as queued. const chatQueue = - isInteractive(opts) && requestChoice + isInteractive(opts) && control !== undefined ? { messages: { next: (signal?: AbortSignal) => gateKeepalive.hold(messages.next(signal)), diff --git a/packages/framework/src/client.BUG-ANALYSIS.md b/packages/framework/src/client.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/client.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/client.test.BUG-ANALYSIS.md b/packages/framework/src/client.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/client.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/closing-keywords.BUG-ANALYSIS.md b/packages/framework/src/closing-keywords.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/closing-keywords.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/closing-keywords.test.BUG-ANALYSIS.md b/packages/framework/src/closing-keywords.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/closing-keywords.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/closing-keywords.test.ts b/packages/framework/src/closing-keywords.test.ts index fe5a301a5..afcfa28ba 100644 --- a/packages/framework/src/closing-keywords.test.ts +++ b/packages/framework/src/closing-keywords.test.ts @@ -22,6 +22,14 @@ describe('defuseClosingKeywords', () => { } }) + test('the colon form GitHub also accepts is defused, colon and all', () => { + // "The keywords can be followed by colons... `Closes: #10`" — GitHub's own documentation, so + // `Fixes: #1164` closes exactly like `Fixes #1164` and has to lose its authority too. + assert.equal(defuseClosingKeywords('Fixes: #1164'), 'Fixes: the ticket #1164') + assert.equal(defuseClosingKeywords('CLOSES: #10'), 'CLOSES: the ticket #10') + assert.equal(defuseClosingKeywords('resolves:#7'), 'resolves:the ticket #7') + }) + test('the reference itself is never rewritten, so it stays clickable and cross-references', () => { // Rom's point on #1612: backticking the reference defused the phrase but also killed the // link and the mention on the issue's own timeline. Only the adjacency may be broken. diff --git a/packages/framework/src/closing-keywords.ts b/packages/framework/src/closing-keywords.ts index 59985c0eb..b07e907b5 100644 --- a/packages/framework/src/closing-keywords.ts +++ b/packages/framework/src/closing-keywords.ts @@ -29,12 +29,14 @@ const CLOSING_KEYWORDS = ['close', 'closes', 'closed', 'fix', 'fixes', 'fixed', const FILLER = 'the ticket' /** - * A closing keyword, whitespace, then an issue reference — `#123`, or the cross-repo - * `owner/repo#123` form, which closes just as well. A reference already inside backticks is - * left alone: GitHub does not act on one, and rewriting it would corrupt a code sample. + * A closing keyword, the gap GitHub allows after it, then an issue reference — `#123`, or the + * cross-repo `owner/repo#123` form, which closes just as well. The gap is whitespace or a colon + * ("The keywords can be followed by colons... `Closes: #10`", per the same documentation), and it + * is re-emitted verbatim so the sentence keeps its own punctuation. A reference already inside + * backticks is left alone: GitHub does not act on one, and rewriting it would corrupt a code sample. */ const CLOSING_PHRASE = new RegExp( - String.raw`(^|[^\`\w])(${CLOSING_KEYWORDS.join('|')})(\s+)((?:[\w.-]+\/[\w.-]+)?#\d+)(?!\`)`, + String.raw`(^|[^\`\w])(${CLOSING_KEYWORDS.join('|')})(\s*:\s*|\s+)((?:[\w.-]+\/[\w.-]+)?#\d+)(?!\`)`, 'gi', ) diff --git a/packages/framework/src/cloud-run-state.BUG-ANALYSIS.md b/packages/framework/src/cloud-run-state.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/cloud-run-state.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/cloud-run-state.test.BUG-ANALYSIS.md b/packages/framework/src/cloud-run-state.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/cloud-run-state.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/cloud-scratch-refs.BUG-ANALYSIS.md b/packages/framework/src/cloud-scratch-refs.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/cloud-scratch-refs.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/cloud-scratch-refs.test.BUG-ANALYSIS.md b/packages/framework/src/cloud-scratch-refs.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/cloud-scratch-refs.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/cloud-session-link.test.BUG-ANALYSIS.md b/packages/framework/src/cloud-session-link.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/cloud-session-link.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/cloud-work.BUG-ANALYSIS.md b/packages/framework/src/cloud-work.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/cloud-work.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/cloud-work.test.BUG-ANALYSIS.md b/packages/framework/src/cloud-work.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/cloud-work.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/config-layers.BUG-ANALYSIS.md b/packages/framework/src/config-layers.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/config-layers.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/config-layers.test.BUG-ANALYSIS.md b/packages/framework/src/config-layers.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/config-layers.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/config.BUG-ANALYSIS.md b/packages/framework/src/config.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/config.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/config.test.BUG-ANALYSIS.md b/packages/framework/src/config.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/config.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/control.BUG-ANALYSIS.md b/packages/framework/src/control.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/control.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/control.test.BUG-ANALYSIS.md b/packages/framework/src/control.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/control.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/daemon-runtime.BUG-ANALYSIS.md b/packages/framework/src/daemon-runtime.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/daemon-runtime.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/daemon-runtime.test.BUG-ANALYSIS.md b/packages/framework/src/daemon-runtime.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/daemon-runtime.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/daemon-services.BUG-ANALYSIS.md b/packages/framework/src/daemon-services.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/daemon-services.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/daemon-services.test.BUG-ANALYSIS.md b/packages/framework/src/daemon-services.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/daemon-services.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/daemon-tick.BUG-ANALYSIS.md b/packages/framework/src/daemon-tick.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/daemon-tick.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/daemon-tick.test.BUG-ANALYSIS.md b/packages/framework/src/daemon-tick.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/daemon-tick.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/daemon-workspace.test.BUG-ANALYSIS.md b/packages/framework/src/daemon-workspace.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/daemon-workspace.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/daemon.BUG-ANALYSIS.md b/packages/framework/src/daemon.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/daemon.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/daemon.test.BUG-ANALYSIS.md b/packages/framework/src/daemon.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/daemon.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard-rpc/agent-addressing.test.BUG-ANALYSIS.md b/packages/framework/src/dashboard-rpc/agent-addressing.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard-rpc/agent-addressing.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard-rpc/context.BUG-ANALYSIS.md b/packages/framework/src/dashboard-rpc/context.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard-rpc/context.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard-rpc/control.BUG-ANALYSIS.md b/packages/framework/src/dashboard-rpc/control.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard-rpc/control.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard-rpc/control.test.BUG-ANALYSIS.md b/packages/framework/src/dashboard-rpc/control.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard-rpc/control.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard-rpc/devices.BUG-ANALYSIS.md b/packages/framework/src/dashboard-rpc/devices.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard-rpc/devices.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard-rpc/devices.test.BUG-ANALYSIS.md b/packages/framework/src/dashboard-rpc/devices.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard-rpc/devices.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard-rpc/events-tail.BUG-ANALYSIS.md b/packages/framework/src/dashboard-rpc/events-tail.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard-rpc/events-tail.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard-rpc/events-tail.test.BUG-ANALYSIS.md b/packages/framework/src/dashboard-rpc/events-tail.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard-rpc/events-tail.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard-rpc/events.BUG-ANALYSIS.md b/packages/framework/src/dashboard-rpc/events.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard-rpc/events.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard-rpc/index.BUG-ANALYSIS.md b/packages/framework/src/dashboard-rpc/index.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard-rpc/index.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard-rpc/preferences.BUG-ANALYSIS.md b/packages/framework/src/dashboard-rpc/preferences.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard-rpc/preferences.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard-rpc/preferences.test.BUG-ANALYSIS.md b/packages/framework/src/dashboard-rpc/preferences.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard-rpc/preferences.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard-rpc/projects.BUG-ANALYSIS.md b/packages/framework/src/dashboard-rpc/projects.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard-rpc/projects.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard-rpc/projects.test.BUG-ANALYSIS.md b/packages/framework/src/dashboard-rpc/projects.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard-rpc/projects.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard-rpc/quota.BUG-ANALYSIS.md b/packages/framework/src/dashboard-rpc/quota.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard-rpc/quota.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard-rpc/quota.test.BUG-ANALYSIS.md b/packages/framework/src/dashboard-rpc/quota.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard-rpc/quota.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard-rpc/reads.BUG-ANALYSIS.md b/packages/framework/src/dashboard-rpc/reads.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard-rpc/reads.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard-rpc/reads.test.BUG-ANALYSIS.md b/packages/framework/src/dashboard-rpc/reads.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard-rpc/reads.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard-rpc/relay-agent.BUG-ANALYSIS.md b/packages/framework/src/dashboard-rpc/relay-agent.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard-rpc/relay-agent.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard-rpc/relay-dispatch.BUG-ANALYSIS.md b/packages/framework/src/dashboard-rpc/relay-dispatch.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard-rpc/relay-dispatch.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard-rpc/relay-dispatch.test.BUG-ANALYSIS.md b/packages/framework/src/dashboard-rpc/relay-dispatch.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard-rpc/relay-dispatch.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard-rpc/stream-forward.BUG-ANALYSIS.md b/packages/framework/src/dashboard-rpc/stream-forward.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard-rpc/stream-forward.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard-rpc/stream-forward.test.BUG-ANALYSIS.md b/packages/framework/src/dashboard-rpc/stream-forward.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard-rpc/stream-forward.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard-rpc/test-context.BUG-ANALYSIS.md b/packages/framework/src/dashboard-rpc/test-context.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard-rpc/test-context.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard/activity-discord.test.BUG-ANALYSIS.md b/packages/framework/src/dashboard/activity-discord.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard/activity-discord.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard/activity.BUG-ANALYSIS.md b/packages/framework/src/dashboard/activity.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard/activity.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard/activity.test.BUG-ANALYSIS.md b/packages/framework/src/dashboard/activity.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard/activity.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard/agent-handoff.BUG-ANALYSIS.md b/packages/framework/src/dashboard/agent-handoff.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard/agent-handoff.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard/agent-handoff.test.BUG-ANALYSIS.md b/packages/framework/src/dashboard/agent-handoff.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard/agent-handoff.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard/agent-handoff.ts b/packages/framework/src/dashboard/agent-handoff.ts index 5d369c13e..17f958ef9 100644 --- a/packages/framework/src/dashboard/agent-handoff.ts +++ b/packages/framework/src/dashboard/agent-handoff.ts @@ -107,6 +107,12 @@ export interface AgentHandoffDeps { * on the same branch name (#1251). Without it, only an open PR is trusted. */ since?: string + /** + * Which of the run's own PRs answers, when it has more than one (#1512). Identity questions want + * the first; a handoff decision comparing the branch tip against a PR's head wants the last one + * that saw the branch, or work a later PR already landed reads as unlanded. See {@link pickAgentPr}. + */ + order?: 'first' | 'latest' } /** @@ -132,7 +138,7 @@ export function agentBranchFor(agent: { id: string; branch?: string; sessionName async function lookupAgentPr(cwd: string, branch: string, deps: AgentHandoffDeps): Promise> { if (deps.pr) return { value: await deps.pr(cwd, branch).catch(() => undefined), pending: false } const prs = await cachedPrsForBranch(cwd, branch).catch(() => ({ value: undefined, pending: false })) - return { value: prs.value ? pickAgentPr(prs.value, deps.since) : undefined, pending: prs.pending } + return { value: prs.value ? pickAgentPr(prs.value, deps.since, deps.order) : undefined, pending: prs.pending } } /** The cached single-PR read {@link resolveAgentPr} asks for the recorded PR's current state. */ @@ -557,7 +563,10 @@ export async function openAgentPullRequest( options: { draft?: boolean } = {}, ): Promise { const branch = agentBranchFor(agent) - const handoff = await readAgentHandoff(cwd, branch, { since: agent.startedAt }).catch(() => undefined) + // `latest` order (#1512), because the `movedPastPr` decision below compares the branch tip + // against a PR's head: against the *first* PR, work a second one already landed reads as + // unlanded and this opens a third for it. The same reason the automatic handoff picks latest. + const handoff = await readAgentHandoff(cwd, branch, { since: agent.startedAt, order: 'latest' }).catch(() => undefined) // The agent's PR first, even when its branch is gone locally: a hands-off web agent's branch only // ever existed on the remote, and its PR is the answer the button exists to give (#1255). // Unless the session demonstrably kept committing after that PR merged or closed (#1512) — diff --git a/packages/framework/src/dashboard/bridge-endpoints.BUG-ANALYSIS.md b/packages/framework/src/dashboard/bridge-endpoints.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard/bridge-endpoints.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard/bridge-endpoints.test.BUG-ANALYSIS.md b/packages/framework/src/dashboard/bridge-endpoints.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard/bridge-endpoints.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard/bridge-question.BUG-ANALYSIS.md b/packages/framework/src/dashboard/bridge-question.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard/bridge-question.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard/bridge-sessions.BUG-ANALYSIS.md b/packages/framework/src/dashboard/bridge-sessions.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard/bridge-sessions.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard/bridge-sessions.test.BUG-ANALYSIS.md b/packages/framework/src/dashboard/bridge-sessions.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard/bridge-sessions.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard/bridge-starts.BUG-ANALYSIS.md b/packages/framework/src/dashboard/bridge-starts.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard/bridge-starts.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard/bridge-starts.test.BUG-ANALYSIS.md b/packages/framework/src/dashboard/bridge-starts.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard/bridge-starts.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard/bridge-store.BUG-ANALYSIS.md b/packages/framework/src/dashboard/bridge-store.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard/bridge-store.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard/bridge-store.test.BUG-ANALYSIS.md b/packages/framework/src/dashboard/bridge-store.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard/bridge-store.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard/browser-proxy.BUG-ANALYSIS.md b/packages/framework/src/dashboard/browser-proxy.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard/browser-proxy.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard/browser-proxy.test.BUG-ANALYSIS.md b/packages/framework/src/dashboard/browser-proxy.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard/browser-proxy.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard/bundle.BUG-ANALYSIS.md b/packages/framework/src/dashboard/bundle.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard/bundle.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard/cache.BUG-ANALYSIS.md b/packages/framework/src/dashboard/cache.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard/cache.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard/cache.test.BUG-ANALYSIS.md b/packages/framework/src/dashboard/cache.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard/cache.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard/content-type.BUG-ANALYSIS.md b/packages/framework/src/dashboard/content-type.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard/content-type.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard/dashboard.BUG-ANALYSIS.md b/packages/framework/src/dashboard/dashboard.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard/dashboard.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard/dashboard.test.BUG-ANALYSIS.md b/packages/framework/src/dashboard/dashboard.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard/dashboard.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard/discord-webhook.BUG-ANALYSIS.md b/packages/framework/src/dashboard/discord-webhook.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard/discord-webhook.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard/discord-webhook.test.BUG-ANALYSIS.md b/packages/framework/src/dashboard/discord-webhook.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard/discord-webhook.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard/docs.BUG-ANALYSIS.md b/packages/framework/src/dashboard/docs.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard/docs.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard/docs.test.BUG-ANALYSIS.md b/packages/framework/src/dashboard/docs.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard/docs.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard/file-diff.BUG-ANALYSIS.md b/packages/framework/src/dashboard/file-diff.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard/file-diff.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard/file-diff.test.BUG-ANALYSIS.md b/packages/framework/src/dashboard/file-diff.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard/file-diff.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard/file-diff.test.ts b/packages/framework/src/dashboard/file-diff.test.ts index e202e5668..adc1eb58d 100644 --- a/packages/framework/src/dashboard/file-diff.test.ts +++ b/packages/framework/src/dashboard/file-diff.test.ts @@ -30,6 +30,24 @@ test('a modified file yields the hunks, without git’s diff/index preamble', as assert.equal(diff.removed, 1) // the `---`/`+++` headers are not counted as changes }) +test('a removed line that looks like a file header is still counted', async () => { + // A removed `---` separator reads `----` in the patch and a removed `-- comment` reads + // `--- comment`: content, not headers, and dropping them undercounted the file's own stats. + const patch = [ + '--- a/notes.md', + '+++ b/notes.md', + '@@ -1,4 +1,1 @@', + '----', + '-title: x', + '--- a note', + ' kept', + ].join('\n') + const diff = await readFileDiff('/repo', 'notes.md', 'modified', fakeGit(patch)) + assert.ok(diff) + assert.equal(diff.removed, 3) + assert.equal(diff.added, 0) +}) + test('a file with no diff to show yields null, not an empty card', async () => { assert.equal(await readFileDiff('/repo', 'src/a.ts', 'modified', fakeGit('')), null) }) @@ -50,6 +68,18 @@ test('a long patch is cut and says it was cut', async () => { assert.equal(diff.patch.split('\n').length, 500) }) +test('a long untracked file is counted whole, though its preview is cut', async () => { + // The Changes list takes an untracked file's added count from this read, and the SPEC says that + // count is the file's line count — counting the cut preview reported every big new file as 500. + const dir = await mkdtemp(join(tmpdir(), 'framework-diff-')) + await writeFile(join(dir, 'big.ts'), Array.from({ length: 900 }, (_, i) => `line ${i}`).join('\n') + '\n') + const diff = await readFileDiff(dir, 'big.ts', 'untracked', fakeGit('')) + assert.ok(diff) + assert.equal(diff.added, 900) + assert.equal(diff.truncated, true) + assert.equal(diff.patch.split('\n').length, 500) +}) + test('a repo with no commits falls back to the working-tree diff', async () => { // `git diff HEAD` fails before the first commit; the change is still worth showing. let calls = 0 @@ -88,6 +118,8 @@ test('safeRepoPath rejects everything that is not a plain repo-relative path', ( '--output=/tmp/pwned', // git would read a leading dash as a flag '.git/config', '.git\\config', + '.GIT/config', // macOS and Windows are case-insensitive: this opens the same file + 'nested/.Git/config', 'src//a.ts', 'a\0b', ]) { diff --git a/packages/framework/src/dashboard/file-diff.ts b/packages/framework/src/dashboard/file-diff.ts index 144c7a9ac..5731a112c 100644 --- a/packages/framework/src/dashboard/file-diff.ts +++ b/packages/framework/src/dashboard/file-diff.ts @@ -50,8 +50,16 @@ function hunksOnly(patch: string): string { function countChanges(patch: string): { added: number; removed: number } { let added = 0 let removed = 0 + let inHunk = false for (const line of patch.split('\n')) { - if (line.startsWith('+++') || line.startsWith('---')) continue + if (line.startsWith('@@')) { + inHunk = true + continue + } + // The file headers only ever precede the first hunk. Past it a line opening the same way is + // content — a removed `---` separator reads `----`, a removed `-- comment` reads `--- comment` + // — and skipping those undercounted the file's own stats. + if (!inHunk && (line.startsWith('+++') || line.startsWith('---'))) continue if (line.startsWith('+')) added++ else if (line.startsWith('-')) removed++ } @@ -87,8 +95,12 @@ export async function readFileDiff( const raw = await readConfinedFile(cwd, path) if (!raw) return null if (raw.includes(0)) return { path, status, patch: '', added: 0, removed: 0, truncated: false, binary: true } - const { body: patch, truncated } = cutToPreview(asAllAdded(raw.toString('utf8'))) - return { path, status, patch, ...countChanges(patch), truncated, binary: false } + const all = asAllAdded(raw.toString('utf8')) + const { body: patch, truncated } = cutToPreview(all) + // Every line of an untracked file is an addition, so it is counted rather than parsed — and + // counted over the whole file, not the cut preview: the Changes list reports the file's own + // size, which a long new file used to report as exactly the preview limit. + return { path, status, patch, added: all ? all.split('\n').length : 0, removed: 0, truncated, binary: false } } // `HEAD` is missing in a repo with no commits yet; the working-tree diff is the honest answer diff --git a/packages/framework/src/dashboard/file-read.BUG-ANALYSIS.md b/packages/framework/src/dashboard/file-read.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard/file-read.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard/file-read.test.BUG-ANALYSIS.md b/packages/framework/src/dashboard/file-read.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard/file-read.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard/file-read.ts b/packages/framework/src/dashboard/file-read.ts index 6981e30cf..3fc67223c 100644 --- a/packages/framework/src/dashboard/file-read.ts +++ b/packages/framework/src/dashboard/file-read.ts @@ -27,7 +27,9 @@ export function safeRepoPath(path: string): boolean { if (path.startsWith('/') || path.startsWith('-') || /^[a-zA-Z]:/.test(path)) return false const parts = path.split(/[\\/]/) // Any `.git` segment, not just a leading one: a nested repo's `.git/config` holds credentials too. - if (parts.includes('.git')) return false + // Compared case-insensitively, because macOS and Windows are: there `.GIT/config` opens the very + // file this refuses, and the path comes from the browser. + if (parts.some(part => part.toLowerCase() === '.git')) return false return parts.every(part => part !== '' && part !== '.' && part !== '..') } diff --git a/packages/framework/src/dashboard/file-status.BUG-ANALYSIS.md b/packages/framework/src/dashboard/file-status.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard/file-status.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard/file-status.test.BUG-ANALYSIS.md b/packages/framework/src/dashboard/file-status.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard/file-status.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard/gh.BUG-ANALYSIS.md b/packages/framework/src/dashboard/gh.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard/gh.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard/gh.test.BUG-ANALYSIS.md b/packages/framework/src/dashboard/gh.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard/gh.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard/git-status.BUG-ANALYSIS.md b/packages/framework/src/dashboard/git-status.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard/git-status.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard/git-status.test.BUG-ANALYSIS.md b/packages/framework/src/dashboard/git-status.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard/git-status.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard/github.BUG-ANALYSIS.md b/packages/framework/src/dashboard/github.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard/github.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard/github.test.BUG-ANALYSIS.md b/packages/framework/src/dashboard/github.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard/github.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard/index.BUG-ANALYSIS.md b/packages/framework/src/dashboard/index.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard/index.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard/interventions-discord.test.BUG-ANALYSIS.md b/packages/framework/src/dashboard/interventions-discord.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard/interventions-discord.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard/interventions.BUG-ANALYSIS.md b/packages/framework/src/dashboard/interventions.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard/interventions.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard/interventions.test.BUG-ANALYSIS.md b/packages/framework/src/dashboard/interventions.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard/interventions.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard/interventions.test.ts b/packages/framework/src/dashboard/interventions.test.ts index c6f91e4d7..ee7996c9e 100644 --- a/packages/framework/src/dashboard/interventions.test.ts +++ b/packages/framework/src/dashboard/interventions.test.ts @@ -123,15 +123,19 @@ test('buildInterventions surfaces PRs and awaiting runs together, newest first', assert.deepEqual(items.map(i => i.kind), ['awaiting', 'pr']) // awaiting is newer }) -test('interventionKey is the url for a PR and project+gate for an awaiting run', () => { +test('interventionKey is the url for a PR and project+agent+gate for an awaiting run', () => { assert.equal( interventionKey({ projectId: 'a', projectName: 'a', kind: 'pr', title: 't', url: 'https://gh/pr/1', number: 1 }), 'https://gh/pr/1', ) assert.equal( - interventionKey({ projectId: 'a', projectName: 'a', kind: 'awaiting', title: 't', url: '', awaitId: 'g1' }), - 'awaiting:a:g1', + interventionKey({ projectId: 'a', projectName: 'a', kind: 'awaiting', title: 't', url: '', awaitId: 'g1', agentId: 'r1' }), + 'awaiting:a:r1:g1', ) + // Every agent's first gate is `await-choices`, so two agents parked in one project would share + // an identity without the run in the key — and the dedupe would announce only one of them. + const parked = { projectId: 'a', projectName: 'a', kind: 'awaiting', title: 't', url: '', awaitId: 'await-choices' } as const + assert.notEqual(interventionKey({ ...parked, agentId: 'r1' }), interventionKey({ ...parked, agentId: 'r2' })) }) // #860: a finished agent whose branch still holds unpushed, unmerged commits. diff --git a/packages/framework/src/dashboard/keyed-watcher.BUG-ANALYSIS.md b/packages/framework/src/dashboard/keyed-watcher.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard/keyed-watcher.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard/keyed-watcher.test.BUG-ANALYSIS.md b/packages/framework/src/dashboard/keyed-watcher.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard/keyed-watcher.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard/keys.BUG-ANALYSIS.md b/packages/framework/src/dashboard/keys.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard/keys.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard/keys.ts b/packages/framework/src/dashboard/keys.ts index e84dc66bc..2661d36a0 100644 --- a/packages/framework/src/dashboard/keys.ts +++ b/packages/framework/src/dashboard/keys.ts @@ -17,11 +17,16 @@ import type { Intervention } from './interventions.js' /** * The stable identity of an intervention. A PR is its url (survives title edits and re-sorts); - * the other two are keyed on the project plus the thing waiting — the gate id, or the agent whose - * branch is unpushed — since their url is the shared dashboard URL and would otherwise collide. + * the other two are keyed on the project plus the thing waiting — the agent and the gate it is + * parked on, or the agent whose branch is unpushed — since their url is the shared dashboard URL + * and would otherwise collide. + * + * The agent is part of the awaiting key because a gate id is only unique within its own agent: + * every agent's first gate is `await-choices`. Two agents running in one project (#736) and both + * parked would otherwise share one identity, and the dedupe would announce only one of them. */ export function interventionKey(item: Intervention): string { - if (item.kind === 'awaiting') return `awaiting:${item.projectId}:${item.awaitId ?? ''}` + if (item.kind === 'awaiting') return `awaiting:${item.projectId}:${item.agentId ?? ''}:${item.awaitId ?? ''}` if (item.kind === 'unpushed') return `unpushed:${item.projectId}:${item.agentId ?? ''}` return item.url } diff --git a/packages/framework/src/dashboard/open-in-app.BUG-ANALYSIS.md b/packages/framework/src/dashboard/open-in-app.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard/open-in-app.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard/open-in-app.test.BUG-ANALYSIS.md b/packages/framework/src/dashboard/open-in-app.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard/open-in-app.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard/open-questions.BUG-ANALYSIS.md b/packages/framework/src/dashboard/open-questions.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard/open-questions.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard/open-questions.test.BUG-ANALYSIS.md b/packages/framework/src/dashboard/open-questions.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard/open-questions.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard/overview.BUG-ANALYSIS.md b/packages/framework/src/dashboard/overview.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard/overview.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard/overview.test.BUG-ANALYSIS.md b/packages/framework/src/dashboard/overview.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard/overview.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard/projects.BUG-ANALYSIS.md b/packages/framework/src/dashboard/projects.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard/projects.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard/projects.test.BUG-ANALYSIS.md b/packages/framework/src/dashboard/projects.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard/projects.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard/queue.BUG-ANALYSIS.md b/packages/framework/src/dashboard/queue.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard/queue.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard/queue.test.BUG-ANALYSIS.md b/packages/framework/src/dashboard/queue.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard/queue.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard/quota.BUG-ANALYSIS.md b/packages/framework/src/dashboard/quota.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard/quota.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard/quota.test.BUG-ANALYSIS.md b/packages/framework/src/dashboard/quota.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard/quota.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard/relay-endpoints.BUG-ANALYSIS.md b/packages/framework/src/dashboard/relay-endpoints.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard/relay-endpoints.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard/remote-run.BUG-ANALYSIS.md b/packages/framework/src/dashboard/remote-run.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard/remote-run.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard/remote-run.integration.test.BUG-ANALYSIS.md b/packages/framework/src/dashboard/remote-run.integration.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard/remote-run.integration.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard/remote-run.test.BUG-ANALYSIS.md b/packages/framework/src/dashboard/remote-run.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard/remote-run.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard/rpc-serve.BUG-ANALYSIS.md b/packages/framework/src/dashboard/rpc-serve.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard/rpc-serve.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard/rpc-serve.test.BUG-ANALYSIS.md b/packages/framework/src/dashboard/rpc-serve.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard/rpc-serve.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard/rpc-serve.test.ts b/packages/framework/src/dashboard/rpc-serve.test.ts index 34056bde8..fe1253ce6 100644 --- a/packages/framework/src/dashboard/rpc-serve.test.ts +++ b/packages/framework/src/dashboard/rpc-serve.test.ts @@ -1,6 +1,7 @@ import { strict as assert } from 'node:assert' import { test } from 'node:test' import { createServer, type Server } from 'node:http' +import { connect } from 'node:net' import { makeRpcMount, type DashboardContext } from './rpc-serve.js' import { RPC_HANDLERS } from '../dashboard-rpc/index.js' import { registryPreferencesStore } from '../registry.js' @@ -53,6 +54,35 @@ const call = async (url: string, name: string, args: unknown[] = []): Promise<{ return { status: res.status, body: await res.text() } } +/** One request over a raw socket, so a header `fetch` refuses to send can be put on the wire. */ +const rawRequest = (url: string, hostHeader: string): Promise => + new Promise((resolve, reject) => { + const socket = connect(Number(new URL(url).port), '127.0.0.1', () => { + socket.write(`POST /_rpc/onProjects HTTP/1.1\r\n${hostHeader}\r\nContent-Length: 2\r\nConnection: close\r\n\r\n[]`) + }) + let seen = '' + socket.setEncoding('utf8') + socket.on('data', chunk => (seen += chunk)) + socket.on('end', () => resolve(seen)) + socket.on('error', reject) + }) + +test('a request whose Host header is malformed is answered, not thrown past the server', async () => { + // Node's parser accepts `Host:` (empty — so the `?? 'localhost'` fallback never applied) and + // `Host: foo bar`; interpolating either into the parse base threw where nothing caught it, so + // any local process could end the daemon with one request it never answered. + const server = await mounted() + try { + for (const host of ['Host:', 'Host: foo bar']) { + assert.match(await rawRequest(server.url, host), /^HTTP\/1\.1 \d{3}/, host) + } + // Still serving. + assert.equal((await call(server.url, 'onNothingLikeThis')).status, 404) + } finally { + await server.close() + } +}) + test('every RPC the modules export is dispatchable by its own name', () => { // The registry is built from the modules' exports rather than a hand-written list, which is what // makes "exported but never registered" impossible — the failure that shipped per-project diff --git a/packages/framework/src/dashboard/rpc-serve.ts b/packages/framework/src/dashboard/rpc-serve.ts index 896921054..2650556e8 100644 --- a/packages/framework/src/dashboard/rpc-serve.ts +++ b/packages/framework/src/dashboard/rpc-serve.ts @@ -207,7 +207,10 @@ export function makeRpcMount( ): (req: IncomingMessage, res: ServerResponse) => Promise { setDashboardContext(context) return async (req, res) => { - const url = new URL(req.url ?? '/', `http://${req.headers.host ?? 'localhost'}`) + // A fixed base, like every other request parse here: only the path and the query are read, + // and a request carrying an empty or malformed `Host` made this throw — outside the handler's + // own try, so the daemon died of the unhandled rejection rather than answering the request. + const url = new URL(req.url ?? '/', 'http://localhost') if (url.pathname !== RPC_PREFIX && !url.pathname.startsWith(`${RPC_PREFIX}/`)) return false if (!isSameOriginRequest(req)) { res.writeHead(403, { 'content-type': 'text/plain' }) diff --git a/packages/framework/src/dashboard/server.BUG-ANALYSIS.md b/packages/framework/src/dashboard/server.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard/server.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard/server.test.BUG-ANALYSIS.md b/packages/framework/src/dashboard/server.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard/server.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard/static.BUG-ANALYSIS.md b/packages/framework/src/dashboard/static.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard/static.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard/tickets.BUG-ANALYSIS.md b/packages/framework/src/dashboard/tickets.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard/tickets.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard/tickets.test.BUG-ANALYSIS.md b/packages/framework/src/dashboard/tickets.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard/tickets.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard/types.BUG-ANALYSIS.md b/packages/framework/src/dashboard/types.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard/types.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard/web-start-endpoints.BUG-ANALYSIS.md b/packages/framework/src/dashboard/web-start-endpoints.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard/web-start-endpoints.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/dashboard/web-start-endpoints.test.BUG-ANALYSIS.md b/packages/framework/src/dashboard/web-start-endpoints.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/dashboard/web-start-endpoints.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/data-branch.BUG-ANALYSIS.md b/packages/framework/src/data-branch.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/data-branch.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/data-branch.test.BUG-ANALYSIS.md b/packages/framework/src/data-branch.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/data-branch.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/discord-credentials-store.BUG-ANALYSIS.md b/packages/framework/src/discord-credentials-store.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/discord-credentials-store.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/discord-credentials.BUG-ANALYSIS.md b/packages/framework/src/discord-credentials.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/discord-credentials.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/discord-credentials.test.BUG-ANALYSIS.md b/packages/framework/src/discord-credentials.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/discord-credentials.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/driver-cli.BUG-ANALYSIS.md b/packages/framework/src/driver-cli.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/driver-cli.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/driver-names.BUG-ANALYSIS.md b/packages/framework/src/driver-names.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/driver-names.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/driver/actions-zip.BUG-ANALYSIS.md b/packages/framework/src/driver/actions-zip.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/driver/actions-zip.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/driver/actions-zip.test.BUG-ANALYSIS.md b/packages/framework/src/driver/actions-zip.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/driver/actions-zip.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/driver/actions.BUG-ANALYSIS.md b/packages/framework/src/driver/actions.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/driver/actions.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/driver/actions.test.BUG-ANALYSIS.md b/packages/framework/src/driver/actions.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/driver/actions.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/driver/child-registry.BUG-ANALYSIS.md b/packages/framework/src/driver/child-registry.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/driver/child-registry.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/driver/claude-code-quota.BUG-ANALYSIS.md b/packages/framework/src/driver/claude-code-quota.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/driver/claude-code-quota.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/driver/claude-code-quota.test.BUG-ANALYSIS.md b/packages/framework/src/driver/claude-code-quota.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/driver/claude-code-quota.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/driver/claude-code.BUG-ANALYSIS.md b/packages/framework/src/driver/claude-code.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/driver/claude-code.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/driver/claude-code.test.BUG-ANALYSIS.md b/packages/framework/src/driver/claude-code.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/driver/claude-code.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/driver/claude-code.test.ts b/packages/framework/src/driver/claude-code.test.ts index e6cae3ea3..e1da2277f 100644 --- a/packages/framework/src/driver/claude-code.test.ts +++ b/packages/framework/src/driver/claude-code.test.ts @@ -82,6 +82,9 @@ test('StreamJsonParser announces the session id once, re-announcing only a chang test('StreamJsonParser ignores non-JSON noise and falls back to assistant text', () => { const p = new StreamJsonParser() assert.deepEqual(p.push('some banner line'), []) + // `null` is valid JSON, so it survives the parse and used to throw on the first field read — + // inside a readline handler, which takes the daemon and every live agent with it. + assert.deepEqual(p.push('null'), []) p.push(JSON.stringify({ type: 'assistant', message: { content: [{ type: 'text', text: 'partial' }] } })) assert.deepEqual(p.result(), { text: 'partial' }) }) diff --git a/packages/framework/src/driver/claude-code.ts b/packages/framework/src/driver/claude-code.ts index 10aa57da8..2a1205890 100644 --- a/packages/framework/src/driver/claude-code.ts +++ b/packages/framework/src/driver/claude-code.ts @@ -238,6 +238,9 @@ export class StreamJsonParser { } catch { return [] // Non-JSON noise (banners etc.); ignore. } + // `null` parses, so the catch above lets it through and every field read below throws — from + // inside a readline handler, where nothing catches it. Noise is noise whatever it parses to. + if (typeof obj !== 'object' || obj === null) return [] // Announced on the very first stream line, so it must not wait for `result`: a turn that is // stopped or dies mid-flight would take the id — the agent's `claude --resume` handle — with diff --git a/packages/framework/src/driver/cli-session.BUG-ANALYSIS.md b/packages/framework/src/driver/cli-session.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/driver/cli-session.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/driver/cli-session.test.BUG-ANALYSIS.md b/packages/framework/src/driver/cli-session.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/driver/cli-session.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/driver/cloud.BUG-ANALYSIS.md b/packages/framework/src/driver/cloud.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/driver/cloud.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/driver/cloud.test.BUG-ANALYSIS.md b/packages/framework/src/driver/cloud.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/driver/cloud.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/driver/codex.BUG-ANALYSIS.md b/packages/framework/src/driver/codex.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/driver/codex.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/driver/codex.test.BUG-ANALYSIS.md b/packages/framework/src/driver/codex.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/driver/codex.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/driver/codex.test.ts b/packages/framework/src/driver/codex.test.ts index e7a21983f..c16007ec2 100644 --- a/packages/framework/src/driver/codex.test.ts +++ b/packages/framework/src/driver/codex.test.ts @@ -87,6 +87,9 @@ test('CodexJsonParser ignores noise that is not an event (#539)', () => { const p = new CodexJsonParser() assert.deepEqual(p.push('Reading additional input from stdin...'), []) assert.deepEqual(p.push(''), []) + // `null` is valid JSON, so it survives the parse and used to throw on the first field read — + // inside a readline handler, which takes the daemon and every live agent with it. + assert.deepEqual(p.push('null'), []) assert.deepEqual(p.push(JSON.stringify({ type: 'turn.started' })), []) assert.deepEqual(p.result(), { text: '' }) }) diff --git a/packages/framework/src/driver/codex.ts b/packages/framework/src/driver/codex.ts index 5aa85daac..e145b2e9e 100644 --- a/packages/framework/src/driver/codex.ts +++ b/packages/framework/src/driver/codex.ts @@ -133,6 +133,9 @@ export class CodexJsonParser implements AgentCliParser { } catch { return [] // Banners and other noise: not every line is an event. } + // `null` parses, so the catch above lets it through and every field read below throws — from + // inside a readline handler, where nothing catches it. Noise is noise whatever it parses to. + if (typeof obj !== 'object' || obj === null) return [] const type = obj['type'] if (type === 'thread.started') { diff --git a/packages/framework/src/driver/fake.BUG-ANALYSIS.md b/packages/framework/src/driver/fake.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/driver/fake.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/driver/fake.test.BUG-ANALYSIS.md b/packages/framework/src/driver/fake.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/driver/fake.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/driver/index.BUG-ANALYSIS.md b/packages/framework/src/driver/index.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/driver/index.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/driver/session-support.BUG-ANALYSIS.md b/packages/framework/src/driver/session-support.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/driver/session-support.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/driver/types.BUG-ANALYSIS.md b/packages/framework/src/driver/types.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/driver/types.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/e2e/fake-agent-bin.BUG-ANALYSIS.md b/packages/framework/src/e2e/fake-agent-bin.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/e2e/fake-agent-bin.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/e2e/harness.BUG-ANALYSIS.md b/packages/framework/src/e2e/harness.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/e2e/harness.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/e2e/story-projects-and-settings.test.BUG-ANALYSIS.md b/packages/framework/src/e2e/story-projects-and-settings.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/e2e/story-projects-and-settings.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/e2e/story-session-lifecycle.test.BUG-ANALYSIS.md b/packages/framework/src/e2e/story-session-lifecycle.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/e2e/story-session-lifecycle.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/e2e/story-steering-and-gates.test.BUG-ANALYSIS.md b/packages/framework/src/e2e/story-steering-and-gates.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/e2e/story-steering-and-gates.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/e2e/story-tickets-and-queue.test.BUG-ANALYSIS.md b/packages/framework/src/e2e/story-tickets-and-queue.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/e2e/story-tickets-and-queue.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/error-message.BUG-ANALYSIS.md b/packages/framework/src/error-message.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/error-message.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/event-stream.BUG-ANALYSIS.md b/packages/framework/src/event-stream.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/event-stream.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/events.BUG-ANALYSIS.md b/packages/framework/src/events.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/events.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/events.test.BUG-ANALYSIS.md b/packages/framework/src/events.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/events.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/fake-script.BUG-ANALYSIS.md b/packages/framework/src/fake-script.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/fake-script.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/fake-script.test.BUG-ANALYSIS.md b/packages/framework/src/fake-script.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/fake-script.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/format-bytes.BUG-ANALYSIS.md b/packages/framework/src/format-bytes.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/format-bytes.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/format-bytes.test.BUG-ANALYSIS.md b/packages/framework/src/format-bytes.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/format-bytes.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/framework-dir.BUG-ANALYSIS.md b/packages/framework/src/framework-dir.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/framework-dir.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/framework-gitignore.BUG-ANALYSIS.md b/packages/framework/src/framework-gitignore.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/framework-gitignore.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/gate-keepalive.BUG-ANALYSIS.md b/packages/framework/src/gate-keepalive.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/gate-keepalive.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/gate-keepalive.test.BUG-ANALYSIS.md b/packages/framework/src/gate-keepalive.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/gate-keepalive.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/git-exclude.BUG-ANALYSIS.md b/packages/framework/src/git-exclude.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/git-exclude.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/handoff-level.BUG-ANALYSIS.md b/packages/framework/src/handoff-level.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/handoff-level.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/index.BUG-ANALYSIS.md b/packages/framework/src/index.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/index.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/install.BUG-ANALYSIS.md b/packages/framework/src/install.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/install.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/install.test.BUG-ANALYSIS.md b/packages/framework/src/install.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/install.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/jsonl-tail.BUG-ANALYSIS.md b/packages/framework/src/jsonl-tail.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/jsonl-tail.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/jsonl-tail.test.BUG-ANALYSIS.md b/packages/framework/src/jsonl-tail.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/jsonl-tail.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/layout.BUG-ANALYSIS.md b/packages/framework/src/layout.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/layout.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/layout.test.BUG-ANALYSIS.md b/packages/framework/src/layout.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/layout.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/loopback-host.BUG-ANALYSIS.md b/packages/framework/src/loopback-host.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/loopback-host.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/loopback-host.test.BUG-ANALYSIS.md b/packages/framework/src/loopback-host.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/loopback-host.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/maintenance.BUG-ANALYSIS.md b/packages/framework/src/maintenance.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/maintenance.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/maintenance.test.BUG-ANALYSIS.md b/packages/framework/src/maintenance.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/maintenance.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/merged-worktrees.BUG-ANALYSIS.md b/packages/framework/src/merged-worktrees.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/merged-worktrees.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/merged-worktrees.test.BUG-ANALYSIS.md b/packages/framework/src/merged-worktrees.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/merged-worktrees.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/node-fs.BUG-ANALYSIS.md b/packages/framework/src/node-fs.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/node-fs.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/on-before-mergeable-prompt.BUG-ANALYSIS.md b/packages/framework/src/on-before-mergeable-prompt.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/on-before-mergeable-prompt.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/on-before-mergeable-prompt.test.BUG-ANALYSIS.md b/packages/framework/src/on-before-mergeable-prompt.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/on-before-mergeable-prompt.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/pick-directory.BUG-ANALYSIS.md b/packages/framework/src/pick-directory.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/pick-directory.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/pick-directory.test.BUG-ANALYSIS.md b/packages/framework/src/pick-directory.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/pick-directory.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/preference-defaults.BUG-ANALYSIS.md b/packages/framework/src/preference-defaults.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/preference-defaults.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/preflight.BUG-ANALYSIS.md b/packages/framework/src/preflight.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/preflight.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/preflight.test.BUG-ANALYSIS.md b/packages/framework/src/preflight.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/preflight.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/preset-catalog.BUG-ANALYSIS.md b/packages/framework/src/preset-catalog.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/preset-catalog.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/preset-catalog.test.BUG-ANALYSIS.md b/packages/framework/src/preset-catalog.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/preset-catalog.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/preset-prompt.BUG-ANALYSIS.md b/packages/framework/src/preset-prompt.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/preset-prompt.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/preset-prompt.test.BUG-ANALYSIS.md b/packages/framework/src/preset-prompt.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/preset-prompt.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/preset-registry.BUG-ANALYSIS.md b/packages/framework/src/preset-registry.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/preset-registry.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/presets.BUG-ANALYSIS.md b/packages/framework/src/presets.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/presets.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/presets.test.BUG-ANALYSIS.md b/packages/framework/src/presets.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/presets.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/project-errors.BUG-ANALYSIS.md b/packages/framework/src/project-errors.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/project-errors.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/project-errors.test.BUG-ANALYSIS.md b/packages/framework/src/project-errors.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/project-errors.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/project-presets.BUG-ANALYSIS.md b/packages/framework/src/project-presets.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/project-presets.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/project-presets.test.BUG-ANALYSIS.md b/packages/framework/src/project-presets.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/project-presets.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/project.BUG-ANALYSIS.md b/packages/framework/src/project.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/project.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/project.test.BUG-ANALYSIS.md b/packages/framework/src/project.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/project.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/prompt-template.BUG-ANALYSIS.md b/packages/framework/src/prompt-template.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/prompt-template.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/prompt-template.test.BUG-ANALYSIS.md b/packages/framework/src/prompt-template.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/prompt-template.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/quota-boundary.BUG-ANALYSIS.md b/packages/framework/src/quota-boundary.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/quota-boundary.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/quota-boundary.test.BUG-ANALYSIS.md b/packages/framework/src/quota-boundary.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/quota-boundary.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/quota-poller.BUG-ANALYSIS.md b/packages/framework/src/quota-poller.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/quota-poller.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/quota-poller.test.BUG-ANALYSIS.md b/packages/framework/src/quota-poller.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/quota-poller.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/registry.BUG-ANALYSIS.md b/packages/framework/src/registry.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/registry.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/registry.test.BUG-ANALYSIS.md b/packages/framework/src/registry.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/registry.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/request-path.BUG-ANALYSIS.md b/packages/framework/src/request-path.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/request-path.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/routine-locks.BUG-ANALYSIS.md b/packages/framework/src/routine-locks.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/routine-locks.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/routine-locks.test.BUG-ANALYSIS.md b/packages/framework/src/routine-locks.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/routine-locks.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/runtime-keys.BUG-ANALYSIS.md b/packages/framework/src/runtime-keys.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/runtime-keys.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/session-link.BUG-ANALYSIS.md b/packages/framework/src/session-link.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/session-link.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/store/agent-checkout.BUG-ANALYSIS.md b/packages/framework/src/store/agent-checkout.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/store/agent-checkout.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/store/agent-checkout.test.BUG-ANALYSIS.md b/packages/framework/src/store/agent-checkout.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/store/agent-checkout.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/store/agent-store.BUG-ANALYSIS.md b/packages/framework/src/store/agent-store.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/store/agent-store.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/store/agent-store.test.BUG-ANALYSIS.md b/packages/framework/src/store/agent-store.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/store/agent-store.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/store/agent-store.ts b/packages/framework/src/store/agent-store.ts index 9200d04c8..acbde4f58 100644 --- a/packages/framework/src/store/agent-store.ts +++ b/packages/framework/src/store/agent-store.ts @@ -1183,9 +1183,9 @@ export type ArchivePatch = Partial> * on. There is no event stream left to carry it, and every surface reads the record, so this * one write is what turns a "nothing committed" row into its real branch and PR. * - * A plain file write: the archive lives on the data branch's checkout, and a fact written there - * is only durable once committed — {@link patchArchivedAgentOnDataBranch} is the funneled form - * every caller outside a test uses. + * The archive lives on the data branch's checkout, and a fact written there is only durable once + * committed — {@link patchArchivedAgentOnDataBranch} is the funneled form every caller outside a + * test uses. */ export async function patchArchivedAgent( cwd: string, @@ -1199,7 +1199,7 @@ export async function patchArchivedAgent( if (!archive) return false const meta = await readMetaFile(fs, archive.meta) if (!meta) return false - await fs.write(archive.meta, JSON.stringify({ ...meta, ...patch })) + await writeMetaFile(fs, archive.meta, { ...meta, ...patch }) return true } catch { return false diff --git a/packages/framework/src/store/index.BUG-ANALYSIS.md b/packages/framework/src/store/index.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/store/index.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/store/worktree-deps.BUG-ANALYSIS.md b/packages/framework/src/store/worktree-deps.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/store/worktree-deps.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/store/worktree-deps.test.BUG-ANALYSIS.md b/packages/framework/src/store/worktree-deps.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/store/worktree-deps.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/store/worktree-size.test.BUG-ANALYSIS.md b/packages/framework/src/store/worktree-size.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/store/worktree-size.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/store/worktree.BUG-ANALYSIS.md b/packages/framework/src/store/worktree.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/store/worktree.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/store/worktree.test.BUG-ANALYSIS.md b/packages/framework/src/store/worktree.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/store/worktree.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/system-prompt-file.BUG-ANALYSIS.md b/packages/framework/src/system-prompt-file.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/system-prompt-file.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/system-prompt.BUG-ANALYSIS.md b/packages/framework/src/system-prompt.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/system-prompt.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/system-prompt.test.BUG-ANALYSIS.md b/packages/framework/src/system-prompt.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/system-prompt.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/terminal.BUG-ANALYSIS.md b/packages/framework/src/terminal.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/terminal.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/ticket-locks.BUG-ANALYSIS.md b/packages/framework/src/ticket-locks.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/ticket-locks.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/ticket-locks.test.BUG-ANALYSIS.md b/packages/framework/src/ticket-locks.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/ticket-locks.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/tickets.BUG-ANALYSIS.md b/packages/framework/src/tickets.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/tickets.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/tickets.test.BUG-ANALYSIS.md b/packages/framework/src/tickets.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/tickets.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/todo-loop.BUG-ANALYSIS.md b/packages/framework/src/todo-loop.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/todo-loop.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/todo-loop.test.BUG-ANALYSIS.md b/packages/framework/src/todo-loop.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/todo-loop.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/turn-gate.BUG-ANALYSIS.md b/packages/framework/src/turn-gate.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/turn-gate.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/turn-gate.test.BUG-ANALYSIS.md b/packages/framework/src/turn-gate.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/turn-gate.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/update-check.BUG-ANALYSIS.md b/packages/framework/src/update-check.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/update-check.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/update-check.test.BUG-ANALYSIS.md b/packages/framework/src/update-check.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/update-check.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/usage.BUG-ANALYSIS.md b/packages/framework/src/usage.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/usage.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/usage.test.BUG-ANALYSIS.md b/packages/framework/src/usage.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/usage.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/worktrees.BUG-ANALYSIS.md b/packages/framework/src/worktrees.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/worktrees.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/framework/src/worktrees.test.BUG-ANALYSIS.md b/packages/framework/src/worktrees.test.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/framework/src/worktrees.test.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/the-framework.ai/pages/+Head.BUG-ANALYSIS.md b/packages/the-framework.ai/pages/+Head.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/the-framework.ai/pages/+Head.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/the-framework.ai/pages/+config.BUG-ANALYSIS.md b/packages/the-framework.ai/pages/+config.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/the-framework.ai/pages/+config.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/the-framework.ai/pages/banner/+Page.BUG-ANALYSIS.md b/packages/the-framework.ai/pages/banner/+Page.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/the-framework.ai/pages/banner/+Page.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/the-framework.ai/pages/banner/+config.BUG-ANALYSIS.md b/packages/the-framework.ai/pages/banner/+config.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/the-framework.ai/pages/banner/+config.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/the-framework.ai/pages/go-to-dashboard/+Page.BUG-ANALYSIS.md b/packages/the-framework.ai/pages/go-to-dashboard/+Page.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/the-framework.ai/pages/go-to-dashboard/+Page.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/the-framework.ai/pages/go-to-dashboard/+config.BUG-ANALYSIS.md b/packages/the-framework.ai/pages/go-to-dashboard/+config.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/the-framework.ai/pages/go-to-dashboard/+config.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/the-framework.ai/pages/index/+Page.BUG-ANALYSIS.md b/packages/the-framework.ai/pages/index/+Page.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/the-framework.ai/pages/index/+Page.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/the-framework.ai/pages/index/AutonomousAi.BUG-ANALYSIS.md b/packages/the-framework.ai/pages/index/AutonomousAi.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/the-framework.ai/pages/index/AutonomousAi.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/the-framework.ai/pages/index/Cta.BUG-ANALYSIS.md b/packages/the-framework.ai/pages/index/Cta.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/the-framework.ai/pages/index/Cta.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/the-framework.ai/pages/index/EnhancedSystemPrompt.BUG-ANALYSIS.md b/packages/the-framework.ai/pages/index/EnhancedSystemPrompt.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/the-framework.ai/pages/index/EnhancedSystemPrompt.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/the-framework.ai/pages/index/Features.BUG-ANALYSIS.md b/packages/the-framework.ai/pages/index/Features.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/the-framework.ai/pages/index/Features.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/the-framework.ai/pages/index/Footer.BUG-ANALYSIS.md b/packages/the-framework.ai/pages/index/Footer.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/the-framework.ai/pages/index/Footer.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/the-framework.ai/pages/index/Hero.BUG-ANALYSIS.md b/packages/the-framework.ai/pages/index/Hero.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/the-framework.ai/pages/index/Hero.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/the-framework.ai/pages/index/HowItWorks.BUG-ANALYSIS.md b/packages/the-framework.ai/pages/index/HowItWorks.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/the-framework.ai/pages/index/HowItWorks.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/the-framework.ai/pages/index/Prompts.BUG-ANALYSIS.md b/packages/the-framework.ai/pages/index/Prompts.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/the-framework.ai/pages/index/Prompts.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/the-framework.ai/pages/index/Queues.BUG-ANALYSIS.md b/packages/the-framework.ai/pages/index/Queues.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/the-framework.ai/pages/index/Queues.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/the-framework.ai/pages/index/SectionNav.BUG-ANALYSIS.md b/packages/the-framework.ai/pages/index/SectionNav.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/the-framework.ai/pages/index/SectionNav.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/the-framework.ai/pages/index/StopBabysitting.BUG-ANALYSIS.md b/packages/the-framework.ai/pages/index/StopBabysitting.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/the-framework.ai/pages/index/StopBabysitting.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/the-framework.ai/pages/index/StopBabysitting.tsx b/packages/the-framework.ai/pages/index/StopBabysitting.tsx index 2c9b915b1..8f85859ac 100644 --- a/packages/the-framework.ai/pages/index/StopBabysitting.tsx +++ b/packages/the-framework.ai/pages/index/StopBabysitting.tsx @@ -44,7 +44,7 @@ const PROBLEMS: { title: string; desc?: string; rows: Row[] }[] = [ bad('Explicitly tell AI to deep dive important aspects.'), good( <> - Automatic loop of critcal feedback research confidence implementation. + Automatic loop of critical feedback research confidence implementation. , ), ], diff --git a/packages/the-framework.ai/pages/index/TopNav.BUG-ANALYSIS.md b/packages/the-framework.ai/pages/index/TopNav.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/the-framework.ai/pages/index/TopNav.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/the-framework.ai/pages/index/YourFramework.BUG-ANALYSIS.md b/packages/the-framework.ai/pages/index/YourFramework.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/the-framework.ai/pages/index/YourFramework.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/the-framework.ai/pages/index/copy.BUG-ANALYSIS.md b/packages/the-framework.ai/pages/index/copy.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/the-framework.ai/pages/index/copy.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/the-framework.ai/pages/index/icons.BUG-ANALYSIS.md b/packages/the-framework.ai/pages/index/icons.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/the-framework.ai/pages/index/icons.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/the-framework.ai/pages/index/ui.BUG-ANALYSIS.md b/packages/the-framework.ai/pages/index/ui.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/the-framework.ai/pages/index/ui.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/the-framework.ai/pages/press/+Page.BUG-ANALYSIS.md b/packages/the-framework.ai/pages/press/+Page.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/the-framework.ai/pages/press/+Page.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/the-framework.ai/pages/press/+config.BUG-ANALYSIS.md b/packages/the-framework.ai/pages/press/+config.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/the-framework.ai/pages/press/+config.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698) diff --git a/packages/the-framework.ai/vite.config.BUG-ANALYSIS.md b/packages/the-framework.ai/vite.config.BUG-ANALYSIS.md new file mode 100644 index 000000000..21e8ae498 --- /dev/null +++ b/packages/the-framework.ai/vite.config.BUG-ANALYSIS.md @@ -0,0 +1 @@ +Last analyzed: [25 August 2026](https://github.com/framework/the-framework/pull/1698)