Skip to content

FE-574: Knowledge workspace review surface + lifecycle API#39

Merged
lunelson merged 5 commits into
mainfrom
ln/fe-574-knowledge-workspace-export
Apr 12, 2026
Merged

FE-574: Knowledge workspace review surface + lifecycle API#39
lunelson merged 5 commits into
mainfrom
ln/fe-574-knowledge-workspace-export

Conversation

@lunelson
Copy link
Copy Markdown
Contributor

@linear
Copy link
Copy Markdown

linear Bot commented Apr 10, 2026

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.

Copy link
Copy Markdown
Contributor Author

lunelson commented Apr 10, 2026

This stack of pull requests is managed by Graphite. Learn more about stacking.

@lunelson lunelson changed the title chore: renumber slices 12→12a, 13→12b under FE-574 FE-574: Knowledge workspace review surface + lifecycle API Apr 10, 2026
@lunelson lunelson marked this pull request as ready for review April 12, 2026 06:29
@augmentcode
Copy link
Copy Markdown

augmentcode Bot commented Apr 12, 2026

🤖 Augment PR Summary

Summary: Adds a read-only knowledge review workspace and a markdown spec export flow, plus richer fixture seeding to support manual/outer-loop testing.

Changes:

  • Introduced /project/:id/knowledge client route rendering kind-grouped knowledge items with requirement/criteria review badges and basic dependency context.
  • Implemented GET /api/projects/:id/export gated by “all phases closed”, and a server-side markdown renderer (src/server/export.ts).
  • Upgraded the export preview UI to fetch export state, show a not-ready message, render the markdown preview, and allow downloading spec.md.
  • Added manifest-driven fixture seeding (issue-tracker domain) and merged these scenarios into the seed CLI’s scenario list.
  • Updated README/PLAN/SPEC to document the new seeding workflow and reflect completed FE-574 slices.

Technical Notes: Export rendering uses md-pen and the shared knowledgeKindRegistry ordering; the knowledge workspace reuses the existing workspace loader and remains read-only.

🤖 Was this summary useful? React with 👍 or 👎

Copy link
Copy Markdown

@augmentcode augmentcode Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review completed. 4 suggestions posted.

Fix All in Augment

Comment augment review to trigger a new review at any time.

Comment thread src/server/fixtures/manifest.ts Outdated
type: 'data-turn-response',
data: {
turnId: turn.id,
selectedOptionIds: selectedIds,
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Fix This in Augment

🤖 Was this useful? React with 👍 or 👎, or 🚀 if it prevented an incident/outage.

Comment thread src/server/fixtures/manifest.ts Outdated
type: 'data-confirmation',
data: {
kind: 'confirm-proposed-phase-closure',
proposalTurnId,
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Fix This in Augment

🤖 Was this useful? React with 👍 or 👎, or 🚀 if it prevented an incident/outage.

Comment thread src/server/fixtures/scenarios.ts Outdated
try {
const { loadManifestScenarios } = await import('./manifest.js');
manifestScenarios = loadManifestScenarios('issue-tracker');
} catch {
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Fix This in Augment

🤖 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({
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Fix This in Augment

🤖 Was this useful? React with 👍 or 👎, or 🚀 if it prevented an incident/outage.

@lunelson lunelson force-pushed the ln/fe-574-knowledge-workspace-export branch from cfddae1 to 86f63a6 Compare April 12, 2026 12:28
Copy link
Copy Markdown
Contributor Author

lunelson commented Apr 12, 2026

Merge activity

  • Apr 12, 12:28 PM UTC: A user started a stack merge that includes this pull request via Graphite.
  • Apr 12, 12:31 PM UTC: Graphite rebased this pull request as part of a merge.
  • Apr 12, 12:32 PM UTC: @lunelson merged this pull request with Graphite.

@lunelson lunelson changed the base branch from ln/fe-573-project-dashboard-workflow to graphite-base/39 April 12, 2026 12:29
@lunelson lunelson changed the base branch from graphite-base/39 to main April 12, 2026 12:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant