Roadmap
What’s not shipped yet. Grouped by area. Priorities are my read; flip them as you like.
See PROGRESS.md for what’s done.
Now — in flight
Nothing in flight. Federation feature set is closed through slice 42 (reviews over AP shipped in slice 38, suggested-blocks in slice 38, actionable reports queue in slice 42). Remaining federation items are discretionary (RFC 9421, reputation aging).
Next — small, high impact
Nothing in flight here right now — slice 42 (actionable reports) was the last “small, high impact” item on the list. Pick the next leverage item from “Soon” or “Maintenance” below.
Soon — medium investments
| Item | Why | Size |
|---|---|---|
| Resolve PR conflicts in-browser | Today a conflict means “fix it locally and push” — a 3-way merge editor would close the loop | medium-large |
| gix NIF: fill in log, commit, tree, diff_stats, merge_base, merge_tree | 10-100× perf for repo-page hot paths; Cli fallback works today | medium |
Eventually — bigger / discretionary
| Item | Why | Size |
|---|---|---|
| Native runner | Lets us drop the forgejo-runner external dep. Big undertaking, low priority since the external one works |
very large |
| RFC 9421 (HTTP Messages) signature | When peers upgrade from draft-cavage-12 | small (mostly mechanical) |
| Reputation aging for new federated hosts | Strictest policy until N days clean; auto-promote | small-medium |
act_runner (older Forgejo runner) explicit support |
Protocol is identical; verify against a specific binary version | small |
| Per-job concurrency / matrix builds | YAML parser supports it; runner orchestration doesn’t yet | medium |
| Code search (Meilisearch or similar) | Postgres FTS covers issues/PRs; code search is its own beast | large |
Explicitly declined
These are documented in the auto-memory under project-git-gud-moderation-deferred.
- Defederation cascades — auto-blocking based on peer block lists. Becomes a coordinated harassment vector; spec doesn’t fit forge use cases.
- Automated content classification (ML) — drift + bias + opaque appeals. Use as a signal feeding admin queue at most, never as an autonomous gate.
Maintenance / hygiene
| Item | Notes |
|---|---|
| Wire NIF properly for log/commit/tree | Per-op fallback works today; fill in to actually get the perf win |
| Test fixture cleanup | tmp/test/repos/ wiped on suite start; consider per-test isolation if parallelism grows |
| Documentation as code grows | This file + PROGRESS.md; append on each slice close |
mix precommit enforces warnings-as-errors |
Stay green; warnings sneak in fast |
| Operator setup doc | A first-deploy README covering compose, env vars, hooks, runner registration, allowlist seeding |
| SSH deploy keys over embedded daemon | v1 omits this; deploy keys still work via external SSH wrapper. Wire deploy-key auth into KeyApi |
| SSH stderr → channel stderr | Currently git’s stderr lands on BEAM’s stderr (iex console). Forward via a wrapper script so the client gets remote: messages |