FE-574: Knowledge workspace review surface + lifecycle API#39
Conversation
FE-574 Knowledge workspace review surface + lifecycle API
CRUD/review endpoints for the broader knowledge layer plus a fit-for-purpose workspace for inspecting, editing, and reviewing graph-shaped knowledge. The sidebar may remain a summary/navigation view, but the primary interaction model should no longer assume a narrow tab strip. This slice assumes the redesigned knowledge ontology/graph from 7a + 7b. |
🤖 Augment PR SummarySummary: Adds a read-only knowledge review workspace and a markdown spec export flow, plus richer fixture seeding to support manual/outer-loop testing. Changes:
Technical Notes: Export rendering uses 🤖 Was this summary useful? React with 👍 or 👎 |
| type: 'data-turn-response', | ||
| data: { | ||
| turnId: turn.id, | ||
| selectedOptionIds: selectedIds, |
There was a problem hiding this comment.
selectedOptionIds is being populated from selectedOptionPositions (positions), but hydration/projection code treats selectedOptionIds as DB option IDs. This will cause seeded fixture turns to lose their persisted selections (e.g., getPersistedSelectedPositions won’t match any options).
Severity: high
🤖 Was this useful? React with 👍 or 👎, or 🚀 if it prevented an incident/outage.
| type: 'data-confirmation', | ||
| data: { | ||
| kind: 'confirm-proposed-phase-closure', | ||
| proposalTurnId, |
There was a problem hiding this comment.
data-confirmation expects proposalTurnId: number, but this code allows proposalTurnId to be null, which can make userPartsSchema parsing drop the persisted user_parts entirely for that turn. That can also mask workflow closure provenance because parsePhaseClosureCommand will fail for invalid payloads.
Severity: medium
🤖 Was this useful? React with 👍 or 👎, or 🚀 if it prevented an incident/outage.
| try { | ||
| const { loadManifestScenarios } = await import('./manifest.js'); | ||
| manifestScenarios = loadManifestScenarios('issue-tracker'); | ||
| } catch { |
There was a problem hiding this comment.
This bare catch {} will silently ignore any failure while loading manifest scenarios (including JSON parse/shape errors), which can make issue-tracker-* scenarios disappear even though they’re documented in the README. Consider whether this should only swallow “file missing” cases or surface/log unexpected errors.
Severity: medium
🤖 Was this useful? React with 👍 or 👎, or 🚀 if it prevented an incident/outage.
| export function ExportPreview() { | ||
| const { id } = useParams({ from: '/project/$id/export' }); | ||
|
|
||
| const { data, isLoading } = useQuery({ |
There was a problem hiding this comment.
If the export fetch fails (404/500/network), the query throws and data stays undefined, so the page renders no error state beyond the header/back link. This can make export failures hard to notice and diagnose.
Severity: medium
🤖 Was this useful? React with 👍 or 👎, or 🚀 if it prevented an incident/outage.
cfddae1 to
86f63a6
Compare
Amp-Thread-ID: https://ampcode.com/threads/T-019d776b-9a7d-7521-b45c-ee24c4e45fca Co-authored-by: Amp <amp@ampcode.com>
Amp-Thread-ID: https://ampcode.com/threads/T-019d776b-9a7d-7521-b45c-ee24c4e45fca Co-authored-by: Amp <amp@ampcode.com>
Amp-Thread-ID: https://ampcode.com/threads/T-019d776b-9a7d-7521-b45c-ee24c4e45fca Co-authored-by: Amp <amp@ampcode.com>
Amp-Thread-ID: https://ampcode.com/threads/T-019d776b-9a7d-7521-b45c-ee24c4e45fca Co-authored-by: Amp <amp@ampcode.com>
Amp-Thread-ID: https://ampcode.com/threads/T-019d776b-9a7d-7521-b45c-ee24c4e45fca Co-authored-by: Amp <amp@ampcode.com>
86f63a6 to
f30c4ff
Compare

Amp-Thread-ID: https://ampcode.com/threads/T-019d776b-9a7d-7521-b45c-ee24c4e45fca
Co-authored-by: Amp amp@ampcode.com