FE-709: Spec/Plan and ADR Reconciliations#139
Conversation
This stack of pull requests is managed by Graphite. Learn more about stacking. |
PR SummaryLow Risk Overview Re-syncs Reviewed by Cursor Bugbot for commit 0c7799e. Bugbot is set up for automated code reviews on this repo. Configure here. |
🤖 Augment PR SummarySummary: Re-syncs planning/design docs after FE-709 and documents the next runtime arc. 🤖 Was this summary useful? React with 👍 or 👎 |
|
|
||
| ## Recent Frontier Archives | ||
|
|
||
| - 2026-05-15 — **Side-chat persistence V4a retired as an independent frontier** — persistent side-chat history was absorbed into the Conversational Workspace Runtime Track 2 thread-runtime frontier; the old V4a `chat.kind='side_chat'` persistence plan remains a historical substrate option, while `chat-runtime-threads` decides child-chat vs new-thread-table vs UI-rendered substrate shape. |
There was a problem hiding this comment.
PR title doesn’t match the repo convention '{issue-id}: {Linear issue title}', which makes stack/Linear traceability harder for reviewers. (Rule: AGENTS.md)
Severity: low
🤖 Was this useful? React with 👍 or 👎, or 🚀 if it prevented an incident/outage.
Planning baseline for the umbrella's frontier-item decomposition. Adds three new frontier definitions for the runtime tracks not yet captured in PLAN.md (Tracks 2/3/5), flips continuous-workspace to done after FE-709, and retires side-chat-persistence-v4a as superseded by Track 2. This is a draft planning PR — Linear issue TBD. Per planning-pr convention: planning baselines for shared downstream branches go on a separate planning branch off main (here, off ln/fe-705-extensions so it inherits the new PLAN.md format from Lu's stack and shows only the umbrella additions in the diff). Changes: - Context paragraph: name the umbrella + its 5 sub-tracks - Sequencing: continuous-workspace done; insert chat-runtime-threads, thread-context-provision, reconciliation-runtime into Next - Three new frontier definitions: chat-runtime-threads (Track 2), reconciliation-runtime (Track 3), thread-context-provision (Track 5) - continuous-workspace: Linear=FE-709, Status=done - Horizon: side-chat-persistence-v4a removed (superseded) - Recently Completed: FE-709 entry - Dependencies: TRACK A restructured as the umbrella; RETIRED section added for v4a Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
All four phase routes now render ContinuousWorkspaceView, which shows all realized phase sections stacked in one scroll surface. Unrealized future phases are skipped. Only the current reachable phase section has an actionable bottom artifact. Graph view is unchanged. InterviewView is preserved as-is for its existing test coverage. Co-authored-by: Amp <amp@ampcode.com>
One controller owns the single chat session, lifecycle hooks, auto-phase-intent, and per-phase section projection. ContinuousWorkspaceView no longer double-reads from useSpecificationBundleData + useInterviewController — it uses only the new controller. useInterviewController is preserved unchanged for InterviewView tests. Co-authored-by: Amp <amp@ampcode.com>
Added WorkspaceFocusContext to bridge scroll position from the continuous workspace view to the phase navigation sidebar. IntersectionObserver on section divs updates focusedPhase; the sidebar uses it for is-active highlighting instead of route-active matching when available. Route-based highlighting is preserved as fallback for graph view and export routes. Co-authored-by: Amp <amp@ampcode.com>
Co-authored-by: Amp <amp@ampcode.com>
… core Move 9 pure helper functions (live activity, tool items, reasoning text, turn reference comparison) and the bottom-artifact enrichment chain from both useInterviewController and useContinuousWorkspaceController into -interview-controller-core.ts. Both controllers now import from core instead of carrying character-identical copies. Also moves InterviewControllerBottomArtifactState type to core (re-exported from -interview-controller.ts for downstream consumers) and fixes ContinuousWorkspaceController to use InterviewDurableSpecificationState directly instead of ReturnType<typeof ...>. Net reduction: ~185 lines. No behavior change. Co-authored-by: Amp <amp@ampcode.com>
Remove dead InterviewView and useInterviewController mocks from router.test.tsx (no production route renders them anymore). Rename interviewView* counters to workspaceView* to match the actual component under test (ContinuousWorkspaceView). Remove provenance comment from continuous controller. Completes Step 4 of the CONTINUOUS_WORKSPACE_HYBRID.md migration plan. The route-first assumptions were already structurally retired by Steps 1-2 (continuous controller derives activePhase from workflow state, not route params). This commit cleans up the residual test artifacts. Co-authored-by: Amp <amp@ampcode.com>
Clear stale workspace focus on route changes and stabilize continuous workspace section inputs so scroll-spy observers are not rebuilt on unrelated renders. Co-authored-by: Cursor <cursoragent@cursor.com>
Update mutation callback refs synchronously so stable action wrappers always call the latest mutation implementation. Co-authored-by: Cursor <cursoragent@cursor.com>
Avoid rebuilding the continuous workspace observer for artifact-only section changes by keying the effect to the rendered phase list instead of stabilizing controller artifacts. Co-authored-by: Cursor <cursoragent@cursor.com>
Keep submitted-phase live tool indicators running so the refactored controllers preserve the previous pre-stream UI behavior. Co-authored-by: Cursor <cursoragent@cursor.com>
Re-applies FE-705's a4827a2 'Fix completed tool activity rendering' to the extracted -interview-controller-core helpers, so the live tool-running indicator goes false the moment a tool returns output-available instead of persisting until the chat stream ends. InterviewView fixture for the 'pre-stream generating window' test now seeds the tool part with state: 'input-available' (the actual pre-stream state), which is what hasRunningLiveTool requires.
HANDOFF.md is volatile session-transfer state — its own contract said "Delete this file after PR is submitted." ln-sync and ln-build skills both instruct agents to remove stale HANDOFF.md files rather than preserve them as archive breadcrumbs.
59e81fb to
dce8bbe
Compare
8068b1b to
0c7799e
Compare
Promote chat-runtime-secondary-chats to Active in PLAN.md (Linear=FE-716) with V1 narrowing and deferred list. CARDS.md decomposes FE-716 into commit-sized slices C0–C10. Adopt 'secondary chat' lexicon throughout (matches PR #139). Retire HANDOFF.md per its contract.
Promote chat-runtime-secondary-chats to Active in PLAN.md (Linear=FE-716) with V1 narrowing and deferred list. CARDS.md decomposes FE-716 into commit-sized slices C0–C10. Adopt 'secondary chat' lexicon throughout (matches PR #139). Retire HANDOFF.md per its contract. Co-authored-by: Amp <amp@ampcode.com>

re-sync and add notes about server refactor
ln-sync updates