-
Notifications
You must be signed in to change notification settings - Fork 0
FE-579: Greenfield/brownfield first-screen + exploration #44
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
10 commits
Select commit
Hold shift + click to select a range
6c99460
chore: ln-sync + ln-handoff after slices 17a and 14
lunelson feecb9a
feat: greenfield/brownfield first-screen routing and codebase explora…
lunelson 7079e9c
chore: ln-review findings from slice 14a appended to REFACTOR.md
lunelson a0a3e3a
chore: rewrite REFACTOR.md with verified duplication map and parallel…
lunelson 701cce3
refactor: stabilize shared primitive exports for type deduplication
lunelson 2ad5b7b
refactor: collapse client phase primitives onto shared imports
lunelson 917214e
refactor: narrow fixture manifest types to shared contracts
lunelson 019af8e
refactor: collapse interview mode and mutation types onto shared cont…
lunelson f9082e1
refactor: collapse server workflow primitives onto shared imports
lunelson 4aa052c
chore: delete REFACTOR.md — type deduplication complete
lunelson File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,95 @@ | ||
| # Handoff — 2026-04-12 | ||
|
|
||
| ## Phase in flow | ||
|
|
||
| ``` | ||
| grill ✓ → spec ✓ → plan ✓ → [design ✓] → scope ✓ → build ✓ → review ✓ → [sync] | ||
| ``` | ||
|
|
||
| - **Last completed skill**: `ln-review` — reviewed slices 17a and 14, no high-impact findings | ||
| - **Current skill**: `ln-handoff` + `ln-sync` (in progress) | ||
| - **Next action**: `/ln-sync` to refresh SPEC.md and PLAN.md after the implementation burst, then `/ln-scope` for slice 14a | ||
|
|
||
| ## Session summary | ||
|
|
||
| Three slices landed plus a sync pass. The session started from the prior handoff which had slice 14's scope card ready. | ||
|
|
||
| 1. **ln-sync** — Refreshed PLAN.md and SPEC.md. Trimmed slice 17 completion block to 4 lines, updated parallelism notes (17 done), updated dependency graph. Updated SPEC.md coverage table with actual test counts (interview.test.ts 10→11, InterviewWorkspace.test.tsx 21→22, workspace-loader.test.ts 2→3, export.test.ts 6→9, added manifest.test.ts). | ||
|
|
||
| 2. **ln-scope → ln-build** for slice 17a (debug route removal + shiki decoupling): | ||
| - Replaced `CodeBlock` in `tool.tsx` with plain `<pre><code>` for JSON rendering | ||
| - Removed `preloadRichCodeHighlighter` from `markdown-rendering.tsx` | ||
| - Removed `/debug` route from router | ||
| - Deleted `ComponentDebug.tsx` + `debug-surface.tsx` | ||
| - Created `ai-elements.stories.tsx` Ladle story with full showcase | ||
| - Updated `build-boundary.test.ts` (no-shiki oracle, 1050KB budget) and `capability-boundaries.test.ts` | ||
| - Retired invariant I30 (moot), updated I28/I29/I32 | ||
| - Commit: `78f7e89` | ||
|
|
||
| 3. **ln-scope → ln-build** for slice 14 (local-first storage + npx distribution): | ||
| - Created `project.ts` — `BrunchProject` interface, `findBrunchProject` (walk-up), `initBrunchProject`, `resolveBrunchProject` | ||
| - Created `launcher.ts` — Express serving API + static dist/ on one port, opens browser | ||
| - Created `cli.ts` — bin entry for `npx @hashintel/brunch` | ||
| - Fixed `db.ts` — migrations path resolved via `import.meta.url` instead of relative `./drizzle` | ||
| - Updated `index.ts` — dev server uses `resolveBrunchProject` when no `BRUNCH_DB` env var | ||
| - Added `open` dependency, `bin` entry in `package.json` | ||
| - 11 new tests (project.test.ts: 8, launcher.test.ts: 3) | ||
| - New invariant I100 (project resolution + launcher seam) | ||
| - Commits: `006b9b8`, `6306579` | ||
|
|
||
| 4. **ln-review** of slices 17a and 14 — clean, no high-impact findings. One medium oracle gap: launcher-serves-static test doesn't create a mock dist/ (deferred to outer-loop manual testing). | ||
|
|
||
| ## In-flight state | ||
|
|
||
| ### Review findings (from ln-review, all deferred) | ||
|
|
||
| 1. **tool.tsx: repeated `<pre><code>` pattern** — depth/low — three identical pre/code blocks in ToolInput/ToolOutput. Acceptable per YAGNI. | ||
| 2. **launcher.test.ts unused import** — coupling/low — `writeFileSync` imported but unused. | ||
| 3. **launcher-serves-static oracle gap** — oracle-coverage/medium — test 2 doesn't actually test static serving (no mock dist/). Deferred to outer-loop manual npx walkthrough. | ||
| 4. **launcher.ts owns resolution + serving** — coupling/low — `launch(cwd)` does both project resolution and server setup. Fine for single caller. | ||
| 5. **db.ts + launcher.ts: duplicated `__dirname` pattern** — coupling/low — standard ESM boilerplate, not worth abstracting. | ||
| 6. **index.ts dev/production divergence** — depth/low — intentional, well-bounded. | ||
| 7. **All oracle coverage met** except finding #3. Lexicon alignment clean. | ||
|
|
||
| ### Key design insight preserved from prior session | ||
|
|
||
| (Carried forward from prior handoff — still relevant for 14a) | ||
| - Answered question cards are **read-only** — re-answering routes through the revisit model (Phase 8), not a casual UI toggle | ||
| - Primary blue needs adjustment to match Hash logo (lighter sky blue) — not yet resolved via Figma | ||
| - Badges should explore mono font — not yet implemented | ||
|
|
||
| ## Priority note from user | ||
|
|
||
| The first delivery deadline is approaching. Priority order: | ||
| 1. **Done**: slice 17 (UI refinement), slice 17a (shiki decoupling), slice 14 (local-first + npx) | ||
| 2. **Must-have next**: slice 14a (brownfield/greenfield) — this must land | ||
| 3. **Stretch**: slice 15 + 15a (knowledge-graph revisit) — may not land before deadline | ||
| 4. **Deferred**: 13a (review lifecycle refinement), 16 (drizzle-kit audit) | ||
|
|
||
| ## Persisted state | ||
|
|
||
| ### Git | ||
| - **Branch**: `ln/fe-545-storage-and-distro` | ||
| - **Recent commits**: 6306579 → 006b9b8 → 415deb1 → 78f7e89 | ||
| - **Working tree**: clean | ||
|
|
||
| ### Artifacts | ||
| - `memory/SPEC.md` — **current** (coverage table updated, I30 retired, I28/I29/I32 updated, I100 added) | ||
| - `memory/PLAN.md` — **current** (slices 17a and 14 marked done, parallelism notes updated) | ||
| - `docs/design/LOCAL_STORAGE.md` — **current** (approved design, implemented in slice 14) | ||
|
|
||
| ### Test status | ||
| 264 tests: all pass. `npm run verify` green (0 lint errors, build succeeds). | ||
|
|
||
| ## Resume prompt | ||
|
|
||
| ``` | ||
| I'm picking up from a build + review session. Read HANDOFF.md, then: | ||
| 1. Run /ln-sync to refresh docs after the implementation burst (slices 17a + 14) | ||
| 2. Then /ln-scope for slice 14a (greenfield/brownfield first-screen + exploration) | ||
|
|
||
| Key context: slice 14a depends on slice 14 which just landed. Branch is | ||
| ln/fe-545-storage-and-distro. The design doc is at docs/design/BROWNFIELD_EXPLORATION.md. | ||
|
|
||
| Priority: slice 14a is the last must-have for the first delivery deadline. | ||
| ``` | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,3 @@ | ||
| ALTER TABLE `project` ADD `mode` text NOT NULL DEFAULT 'greenfield'; | ||
| --> statement-breakpoint | ||
| ALTER TABLE `project` ADD `cwd` text; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
HANDOFF.md:1 — Process: this PR title doesn’t follow the required
{issue-id}: {Linear issue title...}convention (e.g.FE-534: ...) per (Rule: AGENTS.md).Severity: low
🤖 Was this useful? React with 👍 or 👎, or 🚀 if it prevented an incident/outage.