Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
79 commits
Select commit Hold shift + click to select a range
8468183
v3: add architectural plan combining v1 and v2 strengths
rawkode May 11, 2026
696b743
v3: rename Forgepoint to Comtrya across the codebase
rawkode May 11, 2026
7c1d9c8
v3: port pure-Rust Smart HTTP v2 Git crate from v1
rawkode May 11, 2026
4f1c399
v3: wire pure-Rust Smart HTTP v2 Git into server
rawkode May 11, 2026
048c173
v3: define typed WIT host interfaces for extensions
rawkode May 11, 2026
bfbe492
v3: add OCI extension distribution crate
rawkode May 11, 2026
d8b6064
v3: ExtensionInstallConfig in core; OCI/Local sources
rawkode May 11, 2026
8f06814
v3: add V3_STATUS.md and reconcile V3_PLAN.md with reality
rawkode May 11, 2026
81f25a5
fix: harden v3 POC smoke path
rawkode May 11, 2026
af601c0
feat(git-http): add receive-pack parser groundwork
rawkode May 11, 2026
12e32d7
feat(server): load configured extension installs
rawkode May 11, 2026
edd953a
fix(server): tighten extension install loading
rawkode May 11, 2026
b2b261d
fix(server): respect declared extension config
rawkode May 11, 2026
987e482
fix(server): reject invalid raw extension labels
rawkode May 11, 2026
42dc52c
feat(frontend): prioritize extension-composed surfaces
rawkode May 11, 2026
938cbd7
fix(frontend): harden extension-composed surfaces
rawkode May 11, 2026
ae3a972
test(smoke): assert extension surface runtime evidence
rawkode May 11, 2026
ed6e98f
test(smoke): exercise real extension host mount path
rawkode May 11, 2026
644fb34
feat(core): compose extension GraphQL SDL
rawkode May 11, 2026
bfa478e
fix(core): validate composed GraphQL SDL across extensions
rawkode May 11, 2026
e128ac8
fix(core): include degraded extensions in SDL composition
rawkode May 11, 2026
3723636
fix(core): preserve repository SDL extension compatibility
rawkode May 11, 2026
c1ba324
fix(core): fail closed on malformed GraphQL SDL
rawkode May 11, 2026
9861af4
fix(core): reject incomplete GraphQL SDL fragments
rawkode May 11, 2026
4b8f66a
fix(core): validate GraphQL SDL tokens in context
rawkode May 11, 2026
b0c9ad1
fix(core): validate GraphQL SDL argument lists
rawkode May 11, 2026
187ce75
fix(core): reject GraphQL SDL ellipsis tokens
rawkode May 11, 2026
b58f91e
fix(core): close remaining GraphQL SDL parser gaps
rawkode May 11, 2026
2aee36c
fix(core): reject nested SDL field blocks
rawkode May 11, 2026
1ad8c3e
docs: update v3 coverage test counts
rawkode May 11, 2026
cbdaae7
Revamp forge UI and interactive start
rawkode May 11, 2026
ff5223f
Redesign forge UI as dark operator console
rawkode May 11, 2026
c17ad4c
docs: workspace homepage design spec and four direction mockups
rawkode May 12, 2026
8d30cb6
docs: implementation plan for workspace homepage
rawkode May 12, 2026
8109f74
frontend: add @comtrya/extension-host path alias and bun test script
rawkode May 12, 2026
4e05f08
frontend: define SDK types for extension contributions
rawkode May 12, 2026
4a9903e
frontend: implement defineExtension SDK entry
rawkode May 12, 2026
9c54f16
frontend: implement slot registry with priority-based contention
rawkode May 12, 2026
83127e1
frontend(slot-registry): strip insertionOrder from public API surface
rawkode May 12, 2026
8c9a0d4
frontend: implement extension host facade with allowlist enforcement
rawkode May 12, 2026
ccf8da7
frontend(host-facade): explicit routePrefix narrowing + route dispose…
rawkode May 12, 2026
4474d9f
frontend: export SDK public surface for @comtrya/extension-host alias
rawkode May 12, 2026
801dbe1
frontend: parse and validate UI manifest schema v2
rawkode May 12, 2026
0aee0db
frontend(manifest): tighten id and permissions element type checks
rawkode May 12, 2026
1177c5b
frontend(manifest): split cast to fix TS2367 on schemaVersion v1 check
rawkode May 12, 2026
7c55ae6
core: add route_prefix to ExtensionInstallConfig with slug + reserved…
rawkode May 12, 2026
abf2f37
core(extensions): document _extensions defensive entry + cover empty-…
rawkode May 12, 2026
a49b77b
server: validate UI manifest schema v2 with contributes allowlist
rawkode May 12, 2026
dbdb014
server: add dev_runtime_no_extensions and reactivate non-extension tests
rawkode May 12, 2026
4d44bff
server: reject duplicate route_prefix claims at install time
rawkode May 12, 2026
2cd6bad
server: add workspace.repositoryByPath GraphQL field for nested-group…
rawkode May 12, 2026
6001b2c
frontend: add /r/<...>/<repo> repo dashboard route with SSR path reso…
rawkode May 12, 2026
3051fe4
frontend: add /x/<prefix>/<...> route; expose routePrefix via extensi…
rawkode May 12, 2026
ea3d045
server(test): defer routePrefix GraphQL integration test until extens…
rawkode May 12, 2026
bd5a542
frontend: reserve /instance route with redirect stub
rawkode May 12, 2026
51c0b92
frontend: el() DOM construction helper
rawkode May 12, 2026
7d36239
frontend(test): move DOM setup out of src/ and reset state between tests
rawkode May 12, 2026
74918a0
frontend(dom): cast onClick to EventListener for addEventListener
rawkode May 12, 2026
b3ae5b4
frontend: replace styles.css with Mechanical Specimen + 6 palette themes
rawkode May 12, 2026
6ce342c
frontend: theme persistence module with 6 known palettes
rawkode May 12, 2026
1b56796
frontend: chrome rendering with topbar, sidebar, and inline theme swi…
rawkode May 12, 2026
772ce0e
frontend: extension loader with manifest fetch, ESM import, and setup…
rawkode May 12, 2026
cb74690
frontend: homepage layout boots chrome and mounts four home.* slot fr…
rawkode May 12, 2026
a825217
frontend: repo dashboard mounts three repository.* slot frames under …
rawkode May 12, 2026
87c56ce
frontend: extension page host resolves route + mounts element with ro…
rawkode May 12, 2026
1fe73db
frontend: redirect homepage to page-home.ts boot script; deprecate ma…
rawkode May 12, 2026
8418d93
server: expand workspace.repositories with groups[] and summary state
rawkode May 12, 2026
aa89f4f
server(repositories): isolate PR/check counts by repositoryID + stren…
rawkode May 12, 2026
36aa894
server: viewer.reviewQueue/authoredPulls/failingChecks with aggregate…
rawkode May 12, 2026
c15e0de
server(viewer): document v1 fallback semantics for aggregated helpers
rawkode May 12, 2026
cb370a3
server: workspace.events filters by viewer-accessible repository ids
rawkode May 12, 2026
2199cab
ext_pull_requests: migrate to manifest v2 with routePrefix=pulls and …
rawkode May 12, 2026
371f6ce
ext_pull_requests: add v2 manifest fields and customElement registrat…
rawkode May 12, 2026
e684659
ext_code_browser: migrate to manifest v2 with routePrefix=code and SD…
rawkode May 12, 2026
1aa1d30
ext_checks: migrate to manifest v2 with routePrefix=checks and SDK setup
rawkode May 12, 2026
aaac4b6
feat(ext): add ext_workspace_home owning four home.* slot widgets
rawkode May 12, 2026
0a31e5d
start.sh: assert new workspace homepage + /r/ + /x/ routes render
rawkode May 12, 2026
63fd6f9
docs: SPEC_COVERAGE adds workspace homepage rows mapping surfaces to …
rawkode May 12, 2026
53149c7
docs: TODO + runbooks reflect v3 workspace homepage + /r/ /x/ routes
rawkode May 12, 2026
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
12 changes: 6 additions & 6 deletions .envrc.example
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
export FORGEPOINT_OPERATOR_CODE=forgepoint-local-operator-code
# Set FORGEPOINT_EXTERNAL_DEMO=1 for shared demos; startup will reject this local default code.
export FORGEPOINT_LISTEN=127.0.0.1:8080
export FORGEPOINT_FRONTEND_LISTEN=127.0.0.1:4321
export FORGEPOINT_EXTENSION_DIR=$PWD/extensions/first-party
export FORGEPOINT_RESET_DEMO_DATA=1
export COMTRYA_OPERATOR_CODE=comtrya-local-operator-code
# Set COMTRYA_EXTERNAL_DEMO=1 for shared demos; startup will reject this local default code.
export COMTRYA_LISTEN=127.0.0.1:8080
export COMTRYA_FRONTEND_LISTEN=127.0.0.1:4321
export COMTRYA_EXTENSION_DIR=$PWD/extensions/first-party
export COMTRYA_RESET_DEMO_DATA=1
37 changes: 19 additions & 18 deletions ARCHITECTURE.md
Original file line number Diff line number Diff line change
@@ -1,32 +1,32 @@
# Forgepoint Production-Testbed Architecture
# Comtrya Production-Testbed Architecture

This document describes the runnable production-testbed shape. It is not a claim
that the full Forgepoint v1 product is complete.
that the full Comtrya v1 product is complete.

## Rust Host

The Rust host lives in `crates/server/src/main.rs`. It owns startup gates,
runtime state, auth/session issuance, GraphQL responses, extension asset
serving, event streams, unsupported-surface errors, and the temporary Git smart
HTTP adapter.
serving, event streams, unsupported-surface errors, and the Git smart HTTP
endpoint.

Startup reads `config/production-testbed.cue` through `FORGEPOINT_CONFIG`,
initializes `$FORGEPOINT_DATA_DIR`, opens or seeds the demo bare repository,
Startup reads `config/production-testbed.cue` through `COMTRYA_CONFIG`,
initializes `$COMTRYA_DATA_DIR`, opens or seeds the demo bare repository,
opens extension runtime storage, validates first-party extension packages, and
instantiates the minimal Wasmtime resolver components. `/readyz` reports the
runtime checks and the explicitly unsupported surfaces.

Production-testbed startup fails closed when required production posture is
missing: TLS termination, absolute data paths, HTTPS origins, local repository
storage paths, first-party extension files, demo Git refs, resolver exports, or
operator-code requirements. `FORGEPOINT_EXTERNAL_DEMO=1` additionally rejects
operator-code requirements. `COMTRYA_EXTERNAL_DEMO=1` additionally rejects
the local default operator code from `.envrc.example`.

## Astro Shell

The Astro shell lives under `frontend/`.

- `frontend/src/server/forgepoint.ts` proxies requests to the Rust host and
- `frontend/src/server/comtrya.ts` proxies requests to the Rust host and
forwards only the HTTP headers the testbed needs.
- `frontend/src/client.ts` is the browser client for GraphQL, mutation,
subscription-shaped calls, events, extension sessions, navigation, and toast
Expand All @@ -35,7 +35,7 @@ The Astro shell lives under `frontend/`.
operator code for a bearer credential, fetches typed GraphQL roots, mounts
extension slots from runtime manifests, and shows extension load/resolver/
permission failures in the Extensions panel.
- `frontend/src/extension-host.ts` defines the `<forgepoint-extension-host>`
- `frontend/src/extension-host.ts` defines the `<comtrya-extension-host>`
custom element that passes the host client, viewer, resource, route params,
and capability context into extension UI elements.

Expand Down Expand Up @@ -73,7 +73,7 @@ business logic are still TODO work.
## Extension Storage

Extension runtime storage is under
`$FORGEPOINT_DATA_DIR/extensions/storage/`.
`$COMTRYA_DATA_DIR/extensions/storage/`.

- `schema.json`: storage schema version, migration list, collections, and
indexes.
Expand All @@ -82,22 +82,23 @@ Extension runtime storage is under
- `events.jsonl`: storage-level events such as seeding and document updates.

On first startup, `fixtures/demo/conference.json` is copied into
`$FORGEPOINT_DATA_DIR/metadata/demo-state.json` by `start.sh`; the Rust host
`$COMTRYA_DATA_DIR/metadata/demo-state.json` by `start.sh`; the Rust host
imports that seed input into extension storage. Request-time GraphQL reads Git
state plus these extension storage documents instead of reading the fixture
directly.

## Git Storage And Protocol Adapter

The demo repository is a real local bare Git repository under
`$FORGEPOINT_DATA_DIR/repositories/forgepoint/forgepoint.git`. Startup seeds or
`$COMTRYA_DATA_DIR/repositories/comtrya/comtrya.git`. Startup seeds or
opens it idempotently, validates `HEAD`, and checks expected demo branch refs.

Git clone/fetch currently works through the Astro origin and Rust host by
shelling out to `git http-backend`. That is an intentional production-testbed
adapter, not native `gix` storage. Receive-pack/push remains explicitly
unsupported and returns the registered `UNSUPPORTED` surface until write support
is implemented.
Git clone/fetch currently works through the Astro origin and Rust host through
the pure-Rust `comtrya-git-http` Smart HTTP v2 path by default. The older
`git http-backend` shell adapter remains available only for regression
comparison with `COMTRYA_GIT_BACKEND=legacy`. Receive-pack/push remains
explicitly unsupported and returns the registered `UNSUPPORTED` surface until
write support is implemented.

## Known Not Real Yet

Expand All @@ -107,5 +108,5 @@ is implemented.
GraphQL aggregation, not full extension-owned product logic.
- The host UI still renders product panels directly.
- Receive-pack/push is disabled.
- Only the seeded `forgepoint/forgepoint.git` repository path is supported.
- Only the seeded `comtrya/comtrya.git` repository path is supported.
- Some workspace/repository metadata remains seeded demo data.
Loading