Productizer is an open-source Claude Code plugin that makes the agreement the artifact. It runs locally in your own repo — no account, no server, no hosted control plane, no telemetry — and keeps one living spec per product at .claude/productizer/spec.md: EARS requirements with permanent ids that are never reused and never renumbered, a constitution of P-numbered principles above them, and a classification of every new intent against the whole spec — extend, refine, duplicate or contradict. A contradiction halts the work pending a human ruling. Around that sit nine linear stages (Plan, Design, Build, Test, Check, Deploy, Document, Announce, Maintain), declared checks in a committed checks.yaml where a check that exits clean having examined less than it declared is “hollow” and blocks, human gates on deploy and publish as PreToolUse hooks, a backlog with permanent B-ids where order is priority, and generated read-only views that are output only, never an input back into the files.
Entire is a serious, well-engineered product, and this page is an honest architecture-level comparison rather than a hit piece. Founded by Thomas Dohmke, GitHub’s CEO from 2021 to August 2025, Entire (entire.io, GitHub org entireio) raised a $60M seed at a $300M valuation in February 2026 — reported as the largest dev-tool seed round — led by Felicis with Madrona, M12, Basis Set and 20VC among others. Its CLI is MIT-licensed Go, around 5,000 GitHub stars, shipping v0.10.3 plus daily nightlies. It hooks Git and your coding agent — it supports Claude Code, Codex, Gemini, Cursor, OpenCode, Copilot CLI, Factory Droid and Pi — captures each agent session (transcript, prompts, tool calls, token usage, files touched), redacts it through a multi-layer secret and PII pipeline, and commits it to a separate entire/checkpoints/v1 branch linked to your commit by an Entire-Checkpoint: trailer, so your working branch never receives an Entire commit. On 20 July 2026, at the WeAreDevelopers World Congress in Berlin, Dohmke publicly launched and live-demoed trails, checkpoints and gates. On provenance depth, redaction, agent breadth and in-repo scored merge gates, Entire leads outright, and those rows are marked in its favour below rather than buried.
The two products agree on the problem and answer it at different layers. Dohmke’s own framing is remarkably close to Productizer’s: the bottleneck has moved to “capturing intent, reviewing the intent, defining the evals, and proving that the loop did what it was asked to do”, and he asks “how do we make the intent survive the loop?” (WeAreDevelopers keynote, 20 July 2026) Entire answers that per change: a trail is written before the diff exists, and gates score the resulting change on every push. Productizer answers it across changes: a standing spec with permanent ids and a constitution that predate the change and outlive it. That is a difference in kind, not in quality — and everywhere else the two compose more than they compete, because one records what happened while the other decides what should.
| Productizer | Entire | |
|---|---|---|
| Primary artifact | A declared living spec — one per product, at .claude/productizer/spec.md | A per-change trail plus captured session checkpoints on an entire/checkpoints/v1 branch |
| Intent captured before the work starts | ✓ Classified into the spec before the agent builds | ✓ A trail is written before the diff exists, then handed to the agent |
| Durable cross-change requirement ids | ✓ EARS syntax, permanent ids, never reused, never renumbered | ✗ Trail intent is free text, scoped to its own change |
| New intent classified against every prior agreement | ✓ Extend / refine / duplicate / contradict, against the whole spec | ✗ No standing artifact to compare a new intent against |
| Contradiction handling | Halts the work pending a human ruling; symbolic cross-check: 1.00/0.70 on our first 21 cases, 0.67/0.12 on a harder 26; end-to-end unmeasured | ✗ |
| Principles layer above requirements | ✓ A constitution of P-numbered principles, checked before classification | ✗ |
| Supersession | A superseded requirement keeps its original text rather than being deleted or rewritten | History is preserved as trails and checkpoints, not as superseded agreements |
| Lifecycle stages | ✓ Nine linear stages, Plan through Maintain | ✗ Not a lifecycle model |
| In-repo declarative check configuration | ✓ Committed checks.yaml; a check that examined less than it declared is hollow and blocks. Since v4.2.0, on the same fail-closed terms Entire uses for scanner selection: a team-level setting is honoured only from the committed file, a local override is ignored with a warning naming it, and switching every check off is a load error | ✓ Gate runners — “a configuration file that lives in your repo”, telling the agent what to check and how to score it |
| What the checks are measured against | A declared spec and constitution that predate the change | The change itself — confidence, risk, drift, security scored on the diff |
| Scored merge gates that rerun on every push | ✗ Checks run in the lifecycle, not as merge criteria. v4.2.0 ships the runner format — templates/runners/*.json, three of them, each with an agent, a timeout, a sandbox and permission scope, anchored 0–100 bands and an output contract that reads the verdict off the last JSON line — and scripts/score.sh beside it. There is no executor: nothing in the repository runs a runner, and the scorer runs when you invoke it, not on a push. A format is not a gate | ✓ Runners rerun and reevaluate on every push; results usable as merge criteria |
| Human gate before the change lands | ✓ PreToolUse hooks on deploy and publish | ✓ Merge requires findings resolved, checks passed and a teammate’s approval |
| Line-level provenance | ✗ Nothing at this granularity. v4.2.0 added a Productizer-Req: commit trailer — provenance at the commit, queryable with git log --grep, with orphan detection in both directions. That is a narrower thing than a line mapped to the prompt that wrote it, and it is a claim rather than evidence: nothing checks that a commit citing R14 has anything to do with R14 |
✓ entire blame <file> and entire why <file>:<line> map a live line back to its prompt |
| Redaction pipeline | ✗ None at all | ✓ ~2,700 lines of tested Go, nine layers, entropy scoring, two pluggable engines, optional PII |
| Session capture (transcript, tool calls, tokens, files touched) | ✗ | ✓ Checkpoints per agent commit, linked by an Entire-Checkpoint: trailer |
| Coding agents supported | ✗ Claude Code only | ✓ Claude Code, Codex, Gemini, Cursor, OpenCode, Copilot CLI, Factory Droid, Pi |
| Extras beyond the core | Backlog with permanent B-ids, order-is-priority, read-only Jira links | ✓ Cross-agent skills pack, local tree-sitter code-graph plugin, experimental multi-agent entire review, decentralized Git backend |
| Where the work runs | Locally, in your own repo | CLI locally; gate runners and trail work use cloud-sandboxed AI runners in Entire’s sandbox |
| Account / control plane | ✓ None — no account, no server, no hosted control plane | Device-auth login against a control plane for the platform |
| Telemetry | ✓ None | On by default |
| Licence | ✓ Open source — github.com/gitayg/productizer | ✓ CLI is MIT-licensed Go; Dohmke says of the Git backend, “we are open-sourcing it all” |
| Pricing | Free, local, no tier to buy | No published pricing and no publicly confirmable paid tier at the time of writing |
| What lands in your repository | Small text artifacts you author: spec.md, checks.yaml, the backlog | Gate runner configs, plus redacted transcripts on a checkpoint branch — their docs warn about public repos (see below) |
| Views | ✓ Generated read-only dashboard — Overview/stats/kanban, Stages, Files, Backlog, Releases; output only | ✓ blame / why on the CLI; on entire.io, the prompts, tool calls, model responses and files changed |
| Engineering maturity, scale and funding | Single open-source plugin; lifecycle not yet exercised end to end through CI | ✓✓ ~5,000 stars, v0.10.3 plus nightlies, $60M seed at a $300M valuation, multi-region Git backend |
| What you install | Nothing native. A Claude Code plugin (/plugin install); the spec, checks and gates are files in your own repo |
A native Go CLI on your machine, plus a device-auth login against their control plane |
| Native harness work on your machine | Repo-local only — PreToolUse hook scripts you opt into via your project’s .claude/settings.json. No binary, no daemon, no login |
entire enable installs git hooks and, in Dohmke’s own words, “sets hooks in my agent” so every session is collected and pushed. Gate runners execute in Entire’s cloud sandbox |
A trail is written before the diff exists: the user records their intent, hands the trail to the agent, and the trail becomes “the thread connecting everything, including my idea, the plan, the agent’s work, the generated code, and ultimately the merge” (keynote). Every agent commit saves a checkpoint of the work at that moment, and on entire.io you can see “the prompts, tool calls, model responses, and files changed”. Gates are review signals that “indicate confidence, risk, drift, security”, and behind each gate is a runner — “a configuration file that lives in your repo. Think of it like a CI/CD workflow, but this tells the agent what to check and how to score it. Runners rerun and reevaluate on every push.” Those scores are usable as merge criteria, and merging still needs findings resolved, checks passed and a teammate’s approval — so there is a real human gate. The pitch is “shipping confidently without reviewing code meticulously line by line” and “a world where ‘looks good to me’ actually means something”. Also announced: a decentralized Git backend with nodes in the US, EU and Australia, repos pinnable or multi-region, GitHub mirroring, and a claimed 2.1 million pushes per hour on a single repo — their figure, unaudited, reported here as their claim.
Gates are Entire’s strongest answer to the same problem Productizer solves, and the fair comparison says so. Both put a scored, declarative, in-repo configuration between the agent and the merge. The honest distinction is what is being checked. Entire’s runners score a change — risk, security, drift and confidence on a diff, recomputed on every push. Productizer’s declared checks and its classifier test a change against a spec and constitution that predate it and that other changes were also tested against. Neither is the better mechanism in the abstract; they are answers at different layers, and only one of them survives across a year of unrelated changes.
Provenance depth is their clear win, and it is not close. entire blame <file> and entire why <file>:<line> take a live line of code and map it back to the prompt that produced it. Productizer has nothing at that granularity. v4.2.0 narrowed the gap rather than closing it: a Productizer-Req: trailer on the commit makes “which commits built R14” answerable with git log --grep on a machine that has never heard of this tooling, and a COV_ id quoting the requirement id verbatim makes an orphan detectable in both directions. That is provenance at the commit, and it is a claim, not evidence — nothing checks that a commit citing R14 has anything to do with R14, and the coverage scan is textual, so a document that merely mentions a coverage id registers as coverage. Entire maps a line to the prompt that emitted it, which is a different order of thing. Redaction is their other clear win: roughly 2,700 lines of tested Go across nine layers, entropy scoring, two pluggable scanner engines and optional PII detection. Productizer has no redaction layer at all, and no equivalent is planned or claimed. Add to that eight supported coding agents to Productizer’s one, scored merge gates that rerun on every push, a cross-agent skills pack, a local tree-sitter code-graph plugin, an experimental multi-agent entire review, and a multi-region Git backend.
Their fail-closed governance is good engineering and deserves the credit. Scanner selection is honoured only from the committed .entire/settings.json; a settings.local.json override is ignored with a logged warning — in their own words, “because the choice affects everyone who reads the repo’s checkpoints, not just the developer who set it” (entire docs). Disabling every scanner is a settings load error, and if the sole enabled engine fails at runtime the transcript write fails closed rather than persisting under-scanned data. That is the same instinct behind Productizer’s hollow-check rule, applied to a different problem, and applied well — and v4.2.0 borrowed it outright. Team-level settings in checks.yaml — anything deciding what is examined or whether the run blocks — are now honoured only from the committed file; a local override is ignored with a warning naming it, on their reasoning exactly, that the choice affects everyone who later reads the result; and a configuration switching every check off is a load error rather than the largest hollow pass available. The idea is theirs. It is here because it was right.
The agreement, before the work, as a durable cross-change structure. A trail captures intent per change, in free text, at the moment of the change. Productizer holds one spec per product with permanent requirement ids that are never reused and never renumbered, a constitution of P-numbered principles above them, supersession that keeps the superseded text, and a classification step that measures every new intent against the entire spec before anything is built. When the new intent contradicts an existing agreement, the work halts and a human rules. Around that: nine linear stages, declared checks in a committed checks.yaml that block when a check examined less than it declared, human gates on deploy and publish, a backlog with permanent B-ids where order is priority, and read-only generated views that never feed back into the files. A small discipline that says a lot about the rest: a value that could not be measured is never rendered as zero.
This is the part that is hard to reach from the change side. A gate can score the diff in front of it, and a trail can say what this change was for; neither can tell you that today’s request contradicts a decision taken four months ago, because there is no standing decision to compare against — no requirement id, no supersession, no constitution. Answering “how do we make the intent survive the loop?” per change is a real answer. Making it survive across changes is a different one.
Contradiction detection is the mechanism this page rests on, and its accuracy is only partly measured. The symbolic cross-check scores 1.00 precision and 0.70 recall on the 21 cases we first wrote, and 0.67 / 0.12 on a harder 26-case corpus; the end-to-end system’s recall is unmeasured. We state the sample size rather than the bare number, because a figure from a self-authored corpus of 21 is not the same claim as a benchmark. Productizer is Claude Code only, where Entire covers eight named agents. Its lifecycle has not yet been exercised end to end through CI, and its eval corpus has never been graded — 26 cases load, but claude plugin eval is early-access gated and no case has been scored by a model. It has no redaction layer at all, nothing comparable to Entire’s provenance depth, and no scored merge gate: the runner format ships and nothing in the repository executes one, so it is a contract without a runtime, and the scorer beside it runs on demand rather than on every push. If your problem is “which prompt wrote this line, does the record leak secrets, and can the diff be scored before it merges”, Productizer is the wrong tool and Entire is the right one.
Because transcripts land on a branch inside your repository, their own documentation warns that “If your repository is public, this data is visible to the entire internet” (entire docs), and shadow-branch code snapshots are written unredacted. That is reported here as their own documented caveat, not as an accusation — it is the honest trade of storing rich history where the code lives, and they say so in the open.
The verdict — they compose more than they compete. One records what happened and scores it at the merge; the other decides what should happen and holds it across every later change. Run Entire when you need line-level provenance across many agents, a serious redaction pipeline before any of it is written down, and in-repo gate runners scoring risk, drift and security on every push. Run Productizer when the thing you are missing is a standing agreement — permanent requirement ids, principles above them, and a classifier that stops the work when a new intent contradicts an old one — held locally in your own repo with no account, no control plane and no telemetry. Nothing about running one rules out the other, and pretending they are rivals on every row would be less credible than saying that plainly.
Entire capabilities are mapped from the public entireio repository, Entire’s own documentation, reporting on their February 2026 seed round, and Thomas Dohmke’s WeAreDevelopers World Congress keynote of 20 July 2026, as of 2026; quoted phrases are theirs. The 2.1 million pushes per hour figure is Entire’s own claim and is unaudited here. Funding and founder details are stated as facts, not as insinuation. “No publicly confirmable paid tier” means exactly that — not an assertion about their customers, which is unknown. Productizer marks reflect shipped capability in github.com/gitayg/productizer; the recall figures are our own, measured only on the symbolic cross-check: 0.70 against the 21 cases we first authored, 0.12 against a harder 26-case corpus; the end-to-end system is unmeasured. Entire is a trademark of its owner; this is an independent capability comparison, and this page is not affiliated with, endorsed by, or partnered with Entire. Both products evolve — verify specifics against current documentation.