Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions ARCHITECTURE.md
Original file line number Diff line number Diff line change
Expand Up @@ -156,11 +156,14 @@ forgekit/
ledger.js # PCM core: content-addressed claims, oracle taxonomy, decayed Beta val, Eq. 3 retrieval, semilattice merge (ADR-0006)
ledger_store.js # git-native on-disk ledger (.forge/ledger/): sharded claims, append-only evidence/tombstone logs, normal-form verify
ledger_bridge.js # legacy-store bridge: cortex/recall/brain shadow-writes + idempotent `ledger import`
ledger_read.js # merged legacy∪ledger read path: cortex lesson/fact injection, `recall list`, brain's AGENTS.md index all see teammate knowledge from `ledger merge`
reuse.js # proof-carrying artifact cache: fingerprint (MinHash+LSH), exact→near→adapt→miss ladder, atlas revalidation
embed.js # optional embeddings tier (ADR-0005): FORGE_EMBED=cmd:<cmd>|http:<url>, swaps MinHash/Jaccard for cosine in `reuse query`/`ledger query`, disk-cached at .forge/embed-cache.jsonl, silent fallback to MinHash
context.js # budgeted context assembly + completeness gate: R(edit) set cover, compression ladder, computed missing-set
diagnose.js # doom-loop diagnosis: normalized failure signatures; 3× = diagnosis claim + one-tier escalation
imagine.js # consequence simulation (Eq. 4): predicted breaks + minimal dry-run suite via greedy set cover
uifingerprint.js # deterministic design fingerprint + slop-distance / conformance gate (no LLM, no screenshots)
taste.js # taste-profile system: applies design-taste profiles (brutalist, corporate, editorial, minimalist, playful; JSON in global/taste/) to parameterize `uicheck design` gate thresholds via --taste
dash.js # localhost-only read-only dashboard over the ledger, metrics, and blast radius (node:http, one HTML page)
metrics.js # stage-tagged .forge/metrics.jsonl — the measured events every cost figure is computed from
cost_report.js # per-stage cost factors as pure arithmetic over metrics.jsonl; composes ONLY measured stages
Expand All @@ -174,7 +177,14 @@ forgekit/
.claude-plugin/ .codex-plugin/ # plugin manifests → point at global/ + skills/ (no dup beyond the codex skill mirror)
install.sh # hardened: idempotent, symlink, backup, no curl|sh
bin/ # back-compat shims → src/cli.js
landing/ # hand-authored public landing page; design tokens shared with `forge dash`
scripts/
build-pages.mjs # generates public/index.html, the live status page, from real repo data
```
Public site deploy (two independent Pages targets, both built from `landing/` +
`scripts/build-pages.mjs`): `.github/workflows/static.yml` (GitHub Pages — assembles
landing + status page into one `_site/`) · `.gitlab-ci.yml` (GitLab Pages — status
page only).
plugin.json, install.sh, and the npm bin **all reference `global/` + `source/`** —
no duplication; each channel just runs `forge sync` at the end. A test asserts all
three resolve to `global/`.
Expand Down
10 changes: 7 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -183,16 +183,20 @@ load-bearing statistic re-graded against primary sources, is the
[cognitive-substrate white paper](docs/cognitive-substrate/).


## GitLab Pages landing page
## Public site

Forgekit includes a generated, professional GitLab Pages landing page in [`public/index.html`](public/index.html). It is intentionally static and auto-updated from real repository data (`package.json`, `README.md`, `CHANGELOG.md`, and `reports/benchmarks.md`) by the generator in [`scripts/build-pages.mjs`](scripts/build-pages.mjs).
Forgekit ships two static pages. [`landing/index.html`](landing/index.html) is a hand-authored landing page — the project's front door. [`public/index.html`](public/index.html) is a generated status page, intentionally static and auto-updated from real repository data (`package.json`, `README.md`, `CHANGELOG.md`, and `reports/benchmarks.md`) by the generator in [`scripts/build-pages.mjs`](scripts/build-pages.mjs).

```bash
npm run pages:build # offline, deterministic repo-data build
BUILD_PAGES_LIVE=1 npm run pages:build # also refresh public GitHub counters
```

The optional live mode uses the no-auth GitHub repository API with timeouts, retries, jitter, and ETag/Last-Modified caching. GitLab Pages deployment is defined in [`.gitlab-ci.yml`](.gitlab-ci.yml).
The optional live mode uses the no-auth GitHub repository API with timeouts, retries, jitter, and ETag/Last-Modified caching.

Both pages share one design system (the same tokens as `forge dash`) and are gated by `forge uicheck design` and the rendered `forge uicheck visual` check.

GitHub Pages is the primary deployment, via [`.github/workflows/static.yml`](.github/workflows/static.yml): the landing page is published at the site root and the status page at `/status/`. GitLab Pages ([`.gitlab-ci.yml`](.gitlab-ci.yml)) is unchanged and only deploys the status page at its root — it does not get the landing page.

## Documentation

Expand Down
26 changes: 18 additions & 8 deletions ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
Direction, not promises — shaped by the two field reports this project is grounded in
(the SDLC pain-point map and the ecosystem landscape). Open a Discussion to weigh in.

## Now (`master`, v0.5.0)
## Now (`master`, v0.6.0)
Cross-tool config for nine agents (Claude Code, Codex, Cursor, Gemini, Aider, Copilot,
Windsurf, Zed, Continue) plus MCP config for Roo & VS Code, verification layer
(`forge verify`), security gate (`forge scan`), portable memory (`forge brain`), cost
Expand All @@ -25,20 +25,30 @@ protocol** (ADR-0006) — every stored thing is a claim that carries its evidenc
confidence only from independent oracles, and merges across teammates conflict-free
(git-native CRDT ledger).

## Shipped — 0.6.0
- **Embeddings tier** — optional vector backend (`src/embed.js`, ADR-0005 dependency
tier, stdlib fallback kept): `FORGE_EMBED=cmd:<command>` or
`FORGE_EMBED=http:<url>` (OpenAI-compatible), disk-cached at
`.forge/embed-cache.jsonl`; `forge reuse query` and `forge ledger query` replace the
MinHash `rel` term with embedding cosine and print which backend served
(`sim: minhash` / `sim: embed(cmd)`), degrading silently to MinHash on failure.
- **Public site redesign** — the landing page (`landing/index.html`) and generated
status page (`scripts/build-pages.mjs` → `public/index.html`) are rebuilt on one
8-color/4px design system and gated by `forge uicheck design` and the rendered
`forge uicheck visual` gate; `.github/workflows/static.yml` builds and deploys an
assembled `_site/` to GitHub Pages — landing at the site root, status page at
`/status/`.

## Next
- **Legacy store retirement** — the read-path flip has shipped: every read surface
(cortex injection/status, the substrate advisory, routing, `recall list`, brain's
AGENTS.md index) is now a merged view (legacy ∪ ledger) via `src/ledger_read.js`,
so teammate knowledge from `forge ledger merge` reaches injection. The legacy
formats (`lessons/*.md`, recall/brain fact files) are still written as the canonical
local state; the remaining step is retiring them so the ledger is the only store.
- **Embeddings tier** — optional vector backend (ADR-0005 dependency tier, stdlib
fallback kept) for Eq. 3 retrieval and `forge reuse` near-match, where MinHash is
weak on short specs.
- **Playwright loop** — shipped as `forge uicheck visual` (rendered computed-style
fingerprint through the design gate + 2-viewport screenshots, optional-tier
playwright); still open: interaction checks and feeding verdicts back as oracle
evidence on design claims.
- **Playwright loop** — still open: interaction checks and feeding verdicts back as
oracle evidence on design claims (fingerprinting itself shipped as
`forge uicheck visual`).
- **Advisory → gated promotions** — outcome-calibrated routing weights, consolidation
promotion (ʿilm→fahm), M6 hazard estimates: advisory today, become blocking only
once fixtures measure them (overview §4 honesty register).
Expand Down
Loading