trevato/forge-upstream
Public: anyone can read this; nobody can change it.
A software forge you can read in an afternoon and mold by hand.
- A new account is made only through one gate: createUser takes a required origin, and a stranger's door is held to the signup setting and the sign-up window there
- Every password door counts in the sign-in windows: the API session and token doors, HTTP Basic and the terminal sign-in go through one throttled verify
- The operator makes a forge's first admin from a terminal, with a passkey or for a headless agent's token
- A pull from a fork gets its check: the gate fetches refs/pull/<n>/head when the head is not on a branch, and the preview skips forks
- src/web/pages/flow.ts drops the unused live and readQueues imports
- ci(check): observability breadcrumbs (no behavior change)
- docs: BACKLOG.md (Resend inherited secret + e2e friction)
- Fuzz the parsers and chaos the forge on a side instance: invariants proven by faults; body() no longer takes a JSON array as an object
- A pull's fast check tests the merge of the pull into its base; conflicts are red; a writer can ask for a check again
- A pull's check tier and timeout come from the base branch's forge.json
- test/themes.test.ts joins the gate
- Boot style follows data-theme so a theme toggle repaints the ground
- A crew reviewer's changes-requested queues the builder's follow-up: the reviewer's own run is not the run that hears it
- Two-tier gate: a fast tier judges every push, the full gate runs once on land
- Review is owed from the check's green; a lapsed head is sent once, late; the tick says why it skips
- Any one-line secret is a model key; a setup-token may go to a child under a budget
- The tell boxes on the feed dress like every other input
- A store call that never answers is given up at a deadline, and the next attempt opens a fresh request
- The snapshot store tries again: five attempts with doubling waits, and a failure names its key
- A kept clone's remotes are set right on every visit, not only when it is first made
- A crew clone's own exclude file keeps what is never the work out of every commit
- An agent's remotes carry the forge's public URL, and the sandbox is a boundary
- A check's children hold no cells of their own: the check's cell is the boundary
- A live page never reloads, and a serial check streams its shard
new above
offline