No description
  • TypeScript 73.9%
  • Rust 24.2%
  • Shell 1.5%
  • HTML 0.4%
Find a file
PerishFire 6cd5ce5fff
All checks were successful
guard / guard (push) Successful in 2m11s
api: give the core a receiver for the things done to it (#33)
2026-07-21 13:36:40 +00:00
.cargo deps: consume keel through the perish cargo registry 2026-07-16 18:53:01 +08:00
.forgejo/workflows guard: the gate is global, not pinned per repo (#32) 2026-07-21 12:11:15 +00:00
.runseal guard: the gate is global, not pinned per repo (#32) 2026-07-21 12:11:15 +00:00
apps/web layout: four delivery planes — api, cli, web, charts (#25) 2026-07-16 14:45:12 +00:00
charts/codehull keel: move to 0.4.0, and pin the api at one replica (#30) 2026-07-21 08:14:14 +00:00
crates api: give the core a receiver for the things done to it (#33) 2026-07-21 13:36:40 +00:00
docs layout: four delivery planes — api, cli, web, charts (#25) 2026-07-16 14:45:12 +00:00
packages/components layout: four delivery planes — api, cli, web, charts (#25) 2026-07-16 14:45:12 +00:00
.gitignore layout: four delivery planes — api, cli, web, charts (#25) 2026-07-16 14:45:12 +00:00
AGENTS.md layout: four delivery planes — api, cli, web, charts (#25) 2026-07-16 14:45:12 +00:00
biome.json layout: four delivery planes — api, cli, web, charts (#25) 2026-07-16 14:45:12 +00:00
Cargo.lock keel: move to 0.4.0, and pin the api at one replica (#30) 2026-07-21 08:14:14 +00:00
Cargo.toml keel: move to 0.4.0, and pin the api at one replica (#30) 2026-07-21 08:14:14 +00:00
docker-compose.yml rename: this caller is codehull; Forgejo keeps its name upstream (#24) 2026-07-16 14:09:54 +00:00
keel.toml rename: this caller is codehull; Forgejo keeps its name upstream (#24) 2026-07-16 14:09:54 +00:00
negentropy.toml layout: four delivery planes — api, cli, web, charts (#25) 2026-07-16 14:45:12 +00:00
package.json layout: four delivery planes — api, cli, web, charts (#25) 2026-07-16 14:45:12 +00:00
pnpm-lock.yaml layout: four delivery planes — api, cli, web, charts (#25) 2026-07-16 14:45:12 +00:00
pnpm-workspace.yaml layout: four delivery planes — api, cli, web, charts (#25) 2026-07-16 14:45:12 +00:00
README.md layout: four delivery planes — api, cli, web, charts (#25) 2026-07-16 14:45:12 +00:00
runseal.toml layout: four delivery planes — api, cli, web, charts (#25) 2026-07-16 14:45:12 +00:00

codehull

Forgejo on keel: the absorption touchstone.

keel's laws were pressure-tested against Forgejo's full data model on paper (keel:.task dream-code exercise, F/G/C/T/H seat ledgers). This repository turns that audit into a running system: a Forgejo-shaped application built purely as a keel caller — models, relations, and seed grants only. The engine owns lifecycle, uniqueness, authority, events, and cache.

Ground truth exists: the lab itself runs on real Forgejo. Every behavior here is diffable against it.

Slice one

Actor, Email, Team, Topic, Repo (fork, topics), Label, Milestone, Issue (per-repo serial index, assignees, labels), Comment, Pull (one2one Issue), Review — plus keel-gate (register/login/token/session) and keel-relay (webhooks) via their declaration macros.

Known holds (filed as issues): self-referential many2many (follows, issue blocks), Reaction (needs composite unique), org-scoped labels, org+owners batch atomicity, text search, sort-by-aggregate, repo closure delete.

Shape

  • crates/api — the server; the keel caller.
  • crates/cli — the client; gh for codehull.
  • apps/web + packages/components — the web face (pnpm workspace).
  • charts/codehull — the helm delivery.

Run

cargo run -p api -- .
# sudo token prints once on first boot; store is .local/codehull.sqlite
curl -s -X POST 127.0.0.1:3400/register -H 'content-type: application/json' -d '{"login":"ada"}'

Identity middleware for development: x-login: <login> resolves an operator directly; real credentials go through /login (session cookie) or authorization: token <t>.