Many proposals, one careful gate.
A fix upstream is not a fix in your fork until it merges. Device kernels fall 29 to 158 stable releases behind because every merge hits conflicts someone has to resolve by hand. Forkward resolves them the way a careful team would: several independent proposals, an agreement check, and a person for anything uncertain.
From upstream to your pull request
- 1
Merge on a new branch
Forkward merges upstream into a fresh forkward/sync branch. Your default branch is never touched.
- 2
Propose
Every conflict gets candidates from seven rules and three AI models, each written without seeing the others.
- 3
Vote
Identical candidates pool their votes. A classifier says separately whether the fix should keep your side, take upstream's or keep both.
- 4
Gate
A candidate applies on its own only if it wins the vote, a rule agrees with the models, the classifier agrees, and its confidence clears a bar measured for that model.
- 5
Pull request
Everything else waits for you in a draft pull request, one note per conflict, and your own CI checks the build.
- 6
Learn
What you merge is remembered. The same upstream change conflicting again reuses your fix.
Seven rules and three models
Rules are deterministic and need no model, so they cost nothing and cannot hallucinate. Models cover what rules cannot, like keeping both sides when code moved. A fix that a rule and the models reach independently is far more likely to be right.
Keep your fork
Your side stays as it is.
Take upstream
Upstream's side replaces yours.
Fork, then upstream
Both sides, yours first.
Upstream, then fork
Both sides, upstream's first.
Upstream's change on your side
Replays what upstream changed onto your lines.
Your change on upstream's side
Replays what you changed onto upstream's lines.
Delete the block
Neither side survives.
The three models
Fork-first. Protects what your team changed.
Fix-first. Makes sure upstream's fix lands.
Refactor-aware. Follows code that moved or was renamed.
Each is DeepSeek V4.1 Flash with a different brief, so they disagree for real reasons.
It only acts on what it can prove
3
checks every fix must pass: a clear vote, a rule that agrees, and a classifier that agrees.
59
accepted fixes with zero mistakes are needed to certify at most 5% wrong at 95% confidence. Our validation set has 45, so today every fix waits for you.
~300k
verified fixes would certify 1 wrong in 100,000. A shared service collects them: every team’s merges calibrate the gate for everyone.
The bar is set per model with a one-sided Clopper-Pearson bound on a held-out vendor, tested from the strictest threshold down. The guarantee is statistical and covers only what the gate accepts. Everything else goes to a person.
Graded against real kernel merges
The answer key is what each vendor’s engineers actually committed, and a fix only counts if it matches exactly. The strategy is tuned on one vendor, calibrated on a second and tested once on a third.
76% of Rockchip test conflicts matched (54 of 71), with DeepSeek V4.1 Flash. Always keeping your fork’s side scores 71.8%, so the gain is real but small.
| Split | Vendor fork | Conflicts |
|---|---|---|
| Train | NXP lf-6.6.y | 70 |
| Validation | ST v6.6-stm32mp | 45 |
| Test | Rockchip develop-6.6 | 71 |
What Forkward will never do
New branches only
Forkward pushes a new forkward/ branch and opens a pull request. It never pushes to your default branch or force-pushes.
Short-lived, scoped access
The GitHub App sees only the forks you pick, and each token expires within an hour.
Your CI decides
Builds run in your own CI, never on Forkward's servers.
A record anyone can check
Each sync's decisions are hashed and written to Solana devnet, so a resolution changed later no longer matches.
The stack
- Vultr
- Runs the app and serves DeepSeek V4.1 Flash through Serverless Inference.
- Tiger Data
- Postgres with row-level security per workspace. Run logs live in a TimescaleDB hypertable.
- Auth0
- Signs in coding assistants that connect over MCP.
- Solana
- Holds the tamper-evident record of every sync's decisions.
- Gemini API
- An optional resolver model, chosen per run.
- GoDaddy Registry
- mergesthat.work, on a .work domain.
See every decision of a real run, conflict by conflict.
See a real run