FORGE Project State
reference· current· updated Tue Apr 07 2026 00:00:00 GMT+0000 (Coordinated Universal Time)· decay daily· CCoS
Current State
Phase: 3 — Read path SHIPPED. Ready for npm run build and first real Claude query.
Last commit: 66a4bf7 ignore .next.nosync and node_modules.nosync (Phase 3 code written in sandbox, not yet committed).
What shipped this session:
- Verified production build clean on Damir's machine:
next build→ compiled in 4.4s, 4 static pages, 102 kB First Load JS. - Fixed iCloud build-artifact corruption.
.nextandnode_modulesnow live in.next.nosyncandnode_modules.nosyncbehind symlinks. iCloud ignores.nosyncpaths, so no more "file 2.ts" duplication. - Fixed
tsconfig.jsonto excludenode_modules.nosyncand.next.nosyncfrom the TS include glob (otherwise tsc scans Next's source and trips onwebpack/module.d.ts). - Cleaned up stray
~/package-lock.jsonleft in home from a mis-targeted earlier attempt. - Confirmed repo is live at
github.com/dsim-oss/forge, visible in GitHub Desktop after remove + re-add.
What's blocked:
- Nothing on the build side. tsconfig change needs a commit + push.
- Vercel deploy still pending (separate step, not blocking Phase 3 work).
What shipped this session (Phase 3):
- Design system in
app/globals.css: dark near-black bg, Inter + JetBrains Mono via Google Fonts, forged-copper accent (#e58a3a), namespace dot colors (personal emerald, work sky, ventures amber, external violet, sensitive rose, agents fuchsia, meta zinc), full.prosestyles for markdown pages, keyboard hintkbdstyling. app/layout.tsx— sticky top bar with FORGE mark, home / meta nav, phase marker, footer with the "capture frictionless, commit deliberate" tagline.lib/namespaces.ts— namespace metadata (label, color, description, hidden flag for sensitive + raw). Single source of truth for namespace colors across components.lib/indexes.ts— loaders forconcepts.json,entities.json,dates.json. Falls back to empty when indexes not built.lib/markdown.ts— remark + remark-gfm + remark-html pipeline.lib/vault.ts— addedlistSearchEntries()producing lightweight{slug, title, type, namespace, snippet}records for the client search index.components/SearchBar.tsx— client component. MiniSearch index built on mount./to focus, ↑↓ to navigate, Enter to open, Esc to close. Namespace dot rendered per hit.components/QueryPanel.tsx— client component. Textarea + submit button, ⌘↵ shortcut, renders answer and clickable citations.app/api/query/route.ts— POST endpoint. Scores vault pages by keyword overlap, picks top 6, excludes sensitive by default. Calls Claude Sonnet 4.6 via raw fetch (no SDK dep) usingANTHROPIC_API_KEY. Dry-run mode when the key is missing: returns the candidate list and a canned explanation so the plumbing is verifiable without a key.app/wiki/[...slug]/page.tsx— dynamic route.generateStaticParams()enumerates every non-sealed page. Renders header with type/status/updated/decay/owner, prose markdown body, sidebar with tags, linked entities, linked concepts, linked dates, and sources. Breadcrumb shows namespace dot + slug.app/page.tsx— rewritten homepage. Hero, search bar, query panel, namespace grid with counts, recent pages list.package.json— addedminisearch@^7.1.0.- Sandbox
npx tsc --noEmitpasses clean. - Vault indexes rebuilt: 9 pages, 0 entities, 0 dates (no frontmatter has
linked_entitiesorlinked_datesyet, which is expected for Phase 2 seeds).
What's blocked:
- Next
npm run buildverification on Damir's machine (sandbox can't cleanly rebuild inside iCloud). - Commit + push of Phase 3 code.
ANTHROPIC_API_KEYin.env.localto flip the query endpoint from dry-run to real answers.
Next task:
- On Damir's machine:
npm install(pulls minisearch on the real side), thennpm run build. - Commit + push Phase 3.
- Add
ANTHROPIC_API_KEYto.env.local(gitignored). Hit the homepage, ask "what is FORGE?" as the first real query. - Phase 4 starts with ingest: voice capture, photo capture, text paste, diff preview, confirm-to-commit.
History
- 2026-04-07 19:35 — Phase 2 scaffold written to disk. Build verification deferred to Terminal.
- 2026-04-07 22:30 — Phase 2 build verified clean. iCloud build-artifact corruption diagnosed (iCloud was duplicating files in
.nextcausingTS2300 Duplicate identifier). Fixed with.nosyncsymlink trick. tsconfig exclude list updated. Phase 2 closed. - 2026-04-07 23:10 — Phase 3 shipped: design system, wiki dynamic route, MiniSearch search bar, QueryPanel, Claude query endpoint with dry-run fallback. Typecheck clean in sandbox.
Open Questions
- Is
forge.simunac.comalready pointed at Vercel, or does the DNS still need a CNAME? - Do we want the nightly lint + index rebuild to run as Vercel Cron, GitHub Actions, or a local LaunchAgent on the machine that holds the iCloud copy?
- Should the
.nosyncsymlink pattern be documented inREADME.mdas a setup step for anyone else who clones the repo, or is this permanently a one-machine repo?