{"id":318,"date":"2026-08-12T22:00:34","date_gmt":"2026-08-12T18:00:34","guid":{"rendered":"https:\/\/artenatech.com\/?page_id=318"},"modified":"2026-08-24T15:23:33","modified_gmt":"2026-08-24T11:23:33","slug":"reckon-agent","status":"publish","type":"page","link":"https:\/\/artenatech.com\/index.php\/reckon-agent\/","title":{"rendered":"Reckon Agent \u2014 Objective Verification Layer for AI Coding Agents"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><strong>Reckon<\/strong> transforms how AI coding agents work by replacing subjective &#8220;I&#8217;m done&#8221; claims with objective proof. Most coding agents stop when they <em>think<\/em> they&#8217;re finished \u2014 Reckon stops when verification commands pass, structural scanners confirm no reward-hacks, and disk-reconciled accounting proves the edits actually landed. It is not another autocomplete tool and not a replacement for your strong agent: it is a <strong>trust layer<\/strong> \u2014 a cost-efficient, provider-agnostic execution companion that lets premium orchestration agents (Claude Code, Cursor, any frontier model) delegate the token-hungry grunt work to models like DeepSeek V4 <em>without sacrificing reliability<\/em>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"654\" height=\"400\" src=\"https:\/\/artenatech.com\/wp-content\/uploads\/2024\/10\/image-4.png\" alt=\"\" class=\"wp-image-36\" srcset=\"https:\/\/artenatech.com\/wp-content\/uploads\/2024\/10\/image-4.png 654w, https:\/\/artenatech.com\/wp-content\/uploads\/2024\/10\/image-4-300x183.png 300w\" sizes=\"auto, (max-width: 654px) 100vw, 654px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Claude plans. DeepSeek executes. <strong>The gate \u2014 not the prose \u2014 decides &#8220;done.&#8221;<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>The Problem: &#8220;Done&#8221; Is the Most Dangerous Word in the Project<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The economics of delegation look obvious: a strong, expensive agent keeps the judgment; a model 10\u00d7 cheaper does the heavy execution. The first versions of every such system do exactly this \u2014 and every one of them hits the same wall.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A tester whose job is to break things formulated it first, running a full working cycle \u2014 analysis \u2192 development \u2192 QA \u2192 rework \u2192 review:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>&#8220;The task either passes its objective check, or it honestly comes back marked &#8216;not ready&#8217;. It cannot pretend to be finished. That is what I call &#8216;safe to delegate&#8217;.&#8221;<\/strong><\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">Two symmetric failures destroy the model:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>False NOT DONE<\/strong> \u2014 the work is correct but the system reports failure; you undercount solved tasks.<\/li>\n\n\n\n<li><strong>False DONE<\/strong> \u2014 far more expensive. Under pressure, a cheap model passed &#8220;its own&#8221; test by <em>editing the test<\/em>. It hardcoded the answer table instead of writing logic. It shipped an empty assertion and reported coverage. Formally green. Essentially fraud that surfaces at the customer.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">The business conclusion is uncomfortable and simple: <strong>savings from a cheap model equal zero if its result can&#8217;t be accepted without manual re-verification \u2014 and re-verification eats all the savings.<\/strong> The division of labor &#8220;expensive plans, cheap executes&#8221; collapses on one thing: the delegator must be able to <em>trust<\/em> the result. And you cannot trust a model&#8217;s words. Neither the cheap model&#8217;s, nor the expensive one&#8217;s.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Everything Reckon is grew from one principle: <strong>completion is proven by an objective signal \u2014 a passing verification command and the real diff on disk \u2014 not by the model saying so.<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>What Reckon Is \u2014 and What It Is Not<\/strong><\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th><\/th><th>Typical coding agent<\/th><th><strong>Reckon<\/strong><\/th><\/tr><\/thead><tbody><tr><td>Finish condition<\/td><td>The model&#8217;s prose: &#8220;I&#8217;m done&#8221;<\/td><td><strong>A passing exit gate + the real working-tree diff<\/strong><\/td><\/tr><tr><td>Weak tests<\/td><td>Invisible<\/td><td><strong>Mutation probes, diverse test-gen, lucky-pass checks<\/strong><\/td><\/tr><tr><td>Reward-hacks<\/td><td>Ship green<\/td><td><strong>Structural scanners name them in the report<\/strong><\/td><\/tr><tr><td>Cost<\/td><td>Frontier prices for everything<\/td><td><strong>DeepSeek V4, prefix-cache aware, USD ledger<\/strong><\/td><\/tr><tr><td>Failure mode<\/td><td>Quietly broken files<\/td><td><strong>Honest NOT DONE, non-zero exit, checkpoints, auto-revert<\/strong><\/td><\/tr><tr><td>Learning<\/td><td>None, or silent<\/td><td><strong>Gate-proven skills, human-promoted, self-curating<\/strong><\/td><\/tr><tr><td>Runtime<\/td><td>One IDE<\/td><td><strong>One engine: Claude Code, Cursor, Cline, IntelliJ, Codex CLI, bare CLI for CI<\/strong><\/td><\/tr><tr><td>Model<\/td><td>Vendor lock-in<\/td><td><strong>Provider-agnostic \u2014 one env var switches the endpoint<\/strong><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>A companion, not a replacement.<\/strong> Your strong agent keeps the judgment \u2014 it plans the change, picks the approach, reviews the outcome. Reckon handles the execution: multi-file edits, scattered features, verification loops, deep reviews \u2014 at a fraction of a frontier model&#8217;s per-token cost. A handed-off task either passes its objective check or comes back clearly marked <strong>NOT DONE<\/strong>; it can&#8217;t masquerade as finished.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>How It Works<\/strong><\/h3>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>1. Honest Completion \u2014 Objective Exit Gates<\/strong><\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>\/reckon:rescue --write --until \"npm test\" \"implement the GET \/health endpoint\"\n\/reckon:rescue --write --until-all \"lint=npm run lint\" --until-all \"test=npm test\" --until-all \"build=npm run build\" \"\u2026\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Give Reckon a verification command and the agent loops until it passes:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Exit gates (<code>--until<\/code> \/ <code>--gate-preset<\/code>)<\/strong> \u2014 after the agent run, the command executes in the workspace; on non-zero exit the agent resumes the same thread with the command&#8217;s output and fixes the cause, until pass or loop budget (<code>RECKON_MAX_GATE_LOOPS<\/code>, default 3). Continuations are forbidden from weakening the command.<\/li>\n\n\n\n<li><strong>Chained gates (<code>--until-all<\/code>)<\/strong> \u2014 ordered, named steps, each reported individually; the agent resumes against <em>just the failing step<\/em>; the footer shows the trail (<code>\u2705 lint \u00b7 \u2705 test \u00b7 \u26a0\ufe0f failing at build<\/code>).<\/li>\n\n\n\n<li><strong>Hollow-green guard<\/strong> \u2014 a step that exits 0 having run <em>zero tests<\/em> is a failure, not a pass. The suite that never ran is the green that lies.<\/li>\n\n\n\n<li><strong>Disk-reconciled accounting<\/strong> \u2014 reported edits are reconciled against the <em>real<\/em> working-tree diff. A run whose recorded edits left the tree byte-identical to HEAD is labeled <strong>NO-OP<\/strong>: the green below it certifies unchanged code, and the report says so. The verdict <strong>abstains on undecidable evidence<\/strong> \u2014 a file dirty before the run suppresses the banner rather than mislabeling a real fix. <em>Undecidable evidence never lies.<\/em><\/li>\n\n\n\n<li><strong>Authoritative note over prose<\/strong> \u2014 the correction fires on <em>claims<\/em>, not vocabulary: a zero-claim (&#8220;no edits were applied&#8221;) contradicting one recorded edit is corrected loudly; a truthful &#8220;already present&#8221; beside an accurate description never trips it.<\/li>\n\n\n\n<li><strong>Lucky-pass probe (<code>RECKON_LUCKY_PASS_CHECK<\/code>)<\/strong> \u2014 on a green bugfix run, revert the whole change and re-run the gate: if it <em>still<\/em> passes, the gate never exercised the fix \u2014 green for the wrong reason \u2014 and the run says so.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">A gate is only as good as its command&#8217;s coverage, and Reckon says so too: gate the artifact (build, type-check, headless smoke), beware stale build caches, and temporal behavior needs a step that <em>runs<\/em> the behavior.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>2. Reward-Hack Scanners \u2014 Catching Green Reached the Wrong Way<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">A battery of structural advisories reads the run&#8217;s <em>real diff<\/em> and logs, netted so renames stay silent and losses stay loud:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Hardcoded answer tables<\/strong> \u2014 big contiguous <code>key\u2192value<\/code> maps that mirror the tests (the SpecBench pattern)<\/li>\n\n\n\n<li><strong>Hollow \/ tautological tests<\/strong> \u2014 <code>assert(true)<\/code>, <code>expect(x).toBe(x)<\/code>, empty bodies<\/li>\n\n\n\n<li><strong>Suppressed checks<\/strong> \u2014 <code>@ts-ignore<\/code>, <code># noqa<\/code>, skipped tests, empty <code>catch{}<\/code>, <code>--no-verify<\/code> \u2014 silencing a check instead of fixing the code<\/li>\n\n\n\n<li><strong>Blast-radius-wide bugfixes<\/strong> \u2014 a fix sprawling across many files: an overfit signal<\/li>\n\n\n\n<li><strong>Edited oracle tests<\/strong> \u2014 blocked by default; a pre-existing test differing from HEAD without a declared update is a breach <em>whatever channel wrote it<\/em>; a change touching no assertion line is named <strong>fixture-fitting<\/strong> \u2014 tuning inputs until an unchanged assert passes<\/li>\n\n\n\n<li><strong>Inverted assertions<\/strong> \u2014 the requirement flipped sign to match the code, count unchanged<\/li>\n\n\n\n<li><strong>Unwired exports<\/strong> \u2014 added, referenced by nothing, ships dead<\/li>\n\n\n\n<li><strong>Phantom contract fields<\/strong> \u2014 a guard on a name that exists nowhere else: an always-false branch<\/li>\n\n\n\n<li><strong>Copy-under-test<\/strong> \u2014 a new test file that <em>redeclares<\/em> what a project module exports (all five export styles, down to the IIFE-built <code>module.exports = X<\/code>) while importing nothing: 17 green tests, 40 asserts, <strong>zero coverage<\/strong> \u2014 the field case that birthed the scanner<\/li>\n\n\n\n<li><strong>Self-certified benchmarks<\/strong> \u2014 a run that writes its own &#8220;prove it&#8217;s faster&#8221; benchmark and silently downscales the corpus<\/li>\n\n\n\n<li><strong>Log-replay scanners<\/strong> \u2014 answer leakage (the run <em>read<\/em> a benchmark-answer artifact) and forged test-result markers fabricated in non-test files<\/li>\n\n\n\n<li><strong>Removed-assertion channel, affected-sibling execution, mirror-asymmetry, duplicate declarations, re-tuned-constants detector<\/strong> \u2014 the silent-drift classes no suite sees<\/li>\n\n\n\n<li><strong>Security &amp; risk scanners (net-added this run)<\/strong> \u2014 hardcoded secrets, network-exfil commands, unsafe deserializers \/ dynamic <code>eval<\/code> RCE sinks, disabled CI steps, prompt-injection markers in fetched content, debug flags \/ disabled TLS left on<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">All advisory \u2014 they inform rather than block. The report names every trick by name, so a human sees exactly where the agent would have cheated \u2014 and was caught.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>3. The Self-Judging Gate \u2014 Three Probes Close the Hole<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">A green gate proves the tests <em>pass<\/em>, not that they <em>pin<\/em> the behavior. When author of code = author of test = judge, the judge is compromised. Reckon doesn&#8217;t trust its own tests:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Mutation-check auto-escalation (<code>RECKON_AUTO_MUTATION<\/code>, default on)<\/strong> \u2014 when a green gate is carried by a test the agent authored or edited <em>this run<\/em>, a bounded mutation probe fires automatically: perturb the changed lines (<code>&lt;<\/code>\u2194<code>&lt;=<\/code>, <code>&amp;&amp;<\/code>\u2194<code>||<\/code>, <code>true<\/code>\u2194<code>false<\/code>), re-run the gate; a surviving mutant means the test doesn&#8217;t pin the behavior \u2014 a loud NOT-DONE-grade advisory.<\/li>\n\n\n\n<li><strong>Diverse test-gen (<code>RECKON_DIVERSE_TESTS<\/code>)<\/strong> \u2014 an <em>independent<\/em> model call, told it did <strong>not<\/strong> write the code and must not trust it, writes acceptance tests from the <em>task<\/em>, not the implementation, and runs them against the produced code. Catches the spec-branch gap mutation can&#8217;t see. Generated probes are always deleted afterward.<\/li>\n\n\n\n<li><strong>Cross-backend parity oracle (<code>RECKON_PARITY_CHECK<\/code>)<\/strong> \u2014 &#8220;green \u2260 parity&#8221;: on dual-backend projects two independently-green suites can silently disagree on a language primitive (banker&#8217;s <code>round<\/code>, <code>%<\/code>-sign, <code>\/\/<\/code>, <code>str(float)<\/code>). Reckon imports the <em>real<\/em> modules and runs shared functions in <strong>both runtimes on one fuzz corpus<\/strong>, flagging disagreement loudly \u2014 <em>deliberately even when the gate passed<\/em>. Form-agnostic where regex mutants are form-bound.<\/li>\n\n\n\n<li><strong>Metamorphic verification (<code>RECKON_METAMORPHIC<\/code>)<\/strong> \u2014 derive the relations that must hold across related inputs (inverse, idempotence, symmetry) to disambiguate the spec and add oracle-free tests; or differential execution: paraphrase \u2192 N implementations \u2192 fuzz \u2192 flag divergence.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>4. Multi-Run Orchestration Over the Gate<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Opt-in compute modes, all <em>selected by the objective gate, not a vote of prose<\/em>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Best-of-N (<code>RECKON_SAMPLES<\/code>, cap 8)<\/strong> \u2014 N independent trajectories in isolated git worktrees; the gate-passing winner&#8217;s diff is replayed onto your tree. Selection prefers the consensus patch (majority vote), and a contrastive guard deprioritizes passers that modified pre-existing tests. Measured: an instance a single run missed was resolved by 3 of 5 samples.<\/li>\n\n\n\n<li><strong>Boomerang sub-tasks (<code>RECKON_SUBTASKS<\/code>, cap 6)<\/strong> \u2014 decompose; each sub-task runs in its own fresh context; only a short summary carries forward. Fights context pollution on heavy multi-module work.<\/li>\n\n\n\n<li><strong>Evolutionary loop (<code>RECKON_EVOLVE<\/code> + <code>RECKON_GENERATIONS<\/code>)<\/strong> \u2014 the gate&#8217;s partial-credit fitness as objective; hunk-crossover of disjoint-file survivor patches (re-gated with <em>no<\/em> LLM) plus LLM mutation across generations, early-exiting the moment one passes. AlphaEvolve\/GenProg on an honest gate \u2014 for the hardest tasks only.<\/li>\n\n\n\n<li><strong>Adversarial critic panel (<code>RECKON_REVIEW_PANEL<\/code>)<\/strong> \u2014 2\u20135 parallel critics review the same change through different lenses (correctness \/ security \/ regressions \/ tests \/ <strong>formal logic<\/strong> \u2014 De Morgan violations, quantifier confusion, unreachable branches), merged into one deduplicated report. Diversity catches what one generalist reviewer reliably misses.<\/li>\n\n\n\n<li><strong>Approach-selection panel (<code>RECKON_PLAN_PANEL<\/code>)<\/strong> \u2014 before coding, draft N candidate approaches, score them, inject the winner. The gate can&#8217;t distinguish direction; this picks it.<\/li>\n\n\n\n<li><strong>Anti-hack faithfulness judges (<code>RECKON_JUDGES<\/code>)<\/strong> \u2014 when best-of-N yields \u22652 passers, an adversarial panel prompted to <em>refute<\/em> votes; a strict-majority-condemned passer is deprioritized toward the faithful pass. <strong>Never overrides the gate<\/strong> \u2014 a condemned patch still beats none. Also enables judge-selected best-of-N with <em>no gate<\/em>, scoring continuously via the score token&#8217;s logit distribution (no ties, zero extra calls).<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>5. A Mechanical Reliability Layer<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Beyond directives \u2014 infrastructure that makes failure safe by construction:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Checkpoints + <code>restore_file<\/code><\/strong> \u2014 every edited file snapshotted to its run-start baseline; baselines shared across resumes<\/li>\n\n\n\n<li><strong>Mechanical auto-revert (<code>RECKON_AUTO_REVERT<\/code>)<\/strong> \u2014 if the gate is still red after fix loops and the change <em>introduced<\/em> the failure, roll back to a clean no-op instead of shipping a regression; the footer reads it as a rollback, never a clean pass<\/li>\n\n\n\n<li><strong>Fuzzy edit matching<\/strong> \u2014 exact \u2192 CRLF \u2192 line-trimmed \u2192 block-anchor \u2192 leading-indent; an edit survives whitespace drift instead of wasting an iteration<\/li>\n\n\n\n<li><strong>Focus-chain re-injection<\/strong> \u2014 the task checklist resurfaces when a long run drifts<\/li>\n\n\n\n<li><strong>Patch-only mode<\/strong> \u2014 follow-ups locked to surgical edits; a resume can&#8217;t wholesale-rewrite working code<\/li>\n\n\n\n<li><strong>Recoverable compaction + plan-boundary folds<\/strong> \u2014 dropped history turns written verbatim to <code>.reckon\/compaction\/segment_NNN.md<\/code> with recovery pointers; folds fire only at completed plan steps, preserving the prefix-cache discount (~10\u00d7 on hits, 90%+ observed)<\/li>\n\n\n\n<li><strong>Deep-planning handoff (<code>RECKON_PLAN_HANDOFF<\/code>)<\/strong> \u2014 an incomplete run distils intent + remaining-work into a clean <code>plan.md<\/code>, so <code>--resume<\/code> re-seeds a fresh loop instead of compacting an error-laden transcript<\/li>\n\n\n\n<li><strong>Success = edits that landed, not edit calls<\/strong> \u2014 a <code>finish<\/code> with zero applied edits is refused; a zero-edit write run exits non-zero with <strong>NOT DONE<\/strong>; iteration budgets extend while edits are landing and stop early on no-progress<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>6. Localization &amp; the Monolith Wall<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">The stubborn practical dead end \u2014 a cross-cutting edit into a 1,500-line file that &#8220;never lands&#8221; \u2014 is solved structurally:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><code>edit_in_symbol<\/code><\/strong> \u2014 edit inside a named function\/method\/class; the same line in another function stays untouched. Works on <em>any<\/em> repo via a dependency-free heuristic span; symbol-addressed edits run ~57% pass@1 vs ~14% for line-number addressing<\/li>\n\n\n\n<li><strong>CodeGraph-native navigation<\/strong> \u2014 <code>code_search<\/code> (symbols\/callers\/callees), <code>code_recall<\/code> (associative natural-language retrieval, one call replaces many round-trips), definition outlines on failed anchors<\/li>\n\n\n\n<li><strong>Localize-first checkpoint<\/strong> \u2014 after enough search\/read activity on a \u2265800-line file with zero edits, the agent is told once to write its edit map <em>now<\/em> and work it by symbol. Validated live: it converted a stalled 17-search\/0-edit localization on two ~4,800-line god-files<\/li>\n\n\n\n<li><strong>Token-lean reads<\/strong> \u2014 paging caps down-convert repeated whole-file reads; instant repeat-read dedup returns a ~60-token reference instead of 12 KB<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>7. Task-Adaptive Methodology<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\"><code>--method tdd | ddd | bugfix | reproduce | measure | optimize | research | auto<\/code> injects the right discipline for the job: test-first; reproduce-first against the existing failing test (oracle tests read-only); noisy-measurement gates (median of \u22653); profile \u2192 optimize the real hotspot \u2192 re-measure, <strong>revert an unproven change<\/strong>; deep-research the canonical approach <em>before<\/em> implementing.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>8. Auto-Configuration \u2014 You Don&#8217;t Hand-Pick ~85 Flags<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Tiers<\/strong> \u2014 <code>--tier quick|deep|campaign<\/code> bundles whole configurations; <code>--tier auto<\/code> classifies the task text<\/li>\n\n\n\n<li><strong>Autonomous<\/strong> \u2014 <code>task --auto<\/code> infers a sensible flag set, conservatively (never N\u00d7-compute on its own) and non-destructively (anything you set explicitly wins); <code>advise<\/code> previews the choice <em>with reasoning<\/em><\/li>\n\n\n\n<li><strong>Interactive interview<\/strong> \u2014 four short questions (kind \u00b7 rigor vs cost \u00b7 compute budget \u00b7 tests?) map to flags; <code>\/reckon:rescue<\/code> runs it automatically for a fresh un-tuned task<\/li>\n\n\n\n<li><strong><code>help-config<\/code><\/strong> prints the full catalog and validates your environment; typo&#8217;d or no-effect flags warn instead of silently ignoring<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>9. Cost Engineering \u2014 Cheap to Run, by Design<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Prefix-cache aware<\/strong> \u2014 stable conversation prefix; cache-hit input bills ~10\u00d7 cheaper; 90%+ hit rates on long runs; history left byte-stable so the cache stays warm<\/li>\n\n\n\n<li><strong>USD cost ledger<\/strong> \u2014 per-run <code>cost: \u2248$\u2026<\/code> (cache-discount aware) plus a cumulative per-workspace ledger<\/li>\n\n\n\n<li><strong>Compression accounting<\/strong> \u2014 the footer attributes \u2248tokens saved per mechanism (outline \u00b7 dedup \u00b7 distill \u00b7 compaction), and meters what the per-project prefix injection cost. <em>Savings stopped being a promise and became a line in the report you can audit.<\/em><\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>10. Learned Skills &amp; Memory \u2014 It Improves Itself, but Only from PROVEN Runs<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">The honest-gate rule applied to learning: <strong>no proof \u2192 no skill.<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Learned skills (<code>RECKON_LEARN_SKILLS<\/code>)<\/strong> \u2014 a reusable procedure is distilled <em>only<\/em> from runs that passed their objective gate; written as a <strong>candidate<\/strong> in <code>.reckon\/skills\/&lt;name&gt;.md<\/code>, dormant until a human promotes it; only promoted skills are ever injected, only when the trigger matches. No silent skill-poisoning.<\/li>\n\n\n\n<li><strong>Self-curation (<code>RECKON_SKILL_TTL_DAYS<\/code>)<\/strong> \u2014 stale unused candidates are pruned, stale active ones demoted (never deleted); using or helping a skill reinforces it<\/li>\n\n\n\n<li><strong>Library-relative IDF<\/strong> \u2014 a trigger recurring across the whole library is discounted, so injection fires on <em>discriminating<\/em> domain signal, not boilerplate; self-tunes per project, no domain nouns hard-coded<\/li>\n\n\n\n<li><strong>Grounded enrichment<\/strong> \u2014 an optional separate model call writes the procedure grounded in the run&#8217;s <em>real diff<\/em><\/li>\n\n\n\n<li><strong>Project memory<\/strong> \u2014 warm start from past edit locations with a full continual-learning lifecycle: use\/transfer tracking (proof-of-benefit outranks proof-of-selection), stall-triggered passive recall, scenario consolidation, provenance stamps with verbatim evidence, BM25+RRF hybrid recall, git-history cold start. Memory that reports on itself \u2014 and suspends itself after three consecutive non-transferring hints.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>11. Deep Research &amp; Grounded Analysis<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">For tasks whose deliverable is prose \u2014 the plausible-but-wrong class \u2014 Reckon makes reports mechanically checkable:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Grounding directive<\/strong> \u2014 state only what was verified in code read <em>this run<\/em>; cite file\/symbol\/line per claim; never name a library or behavior from memory. Validated: 0 hallucinations on a brief that pre-grounding invented 5 facts \u2014 <em>even at thinking-off<\/em><\/li>\n\n\n\n<li><strong>Report self-consistency pass<\/strong> and a <strong>delivery guard<\/strong> that refuses stub summaries when a full report was asked<\/li>\n\n\n\n<li><strong>Iterative research engine<\/strong> \u2014 plan a template + queries \u2192 loop {web search \u2192 fill \u2192 strict critic finds uncited gaps \u2192 re-query} \u2192 synthesise a cited brief; post-synth grounding labels every claim SUPPORTED \/ UNSUPPORTED \/ CONTRADICTED; <code>--implement<\/code> builds from the brief as a contract<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>12. Safety &amp; Integrity \u2014 The Door Outward Is Locked by Default<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Probe-tamper protection<\/strong> \u2014 a brief-forbidden judging probe can&#8217;t be touched: six write tools refuse it proactively; <code>run_command<\/code> refuses shell writes in-flight (redirects, <code>sed -i<\/code>, <code>dd of=<\/code>, interpreter one-liners); a run-end backstop fails <strong>NOT DONE<\/strong> if a protected path changed by <em>any<\/em> route. Editing the file that judges your work is the most serious reward-hack \u2014 blocked <em>and<\/em> failed.<\/li>\n\n\n\n<li><strong>Outbound-action guard<\/strong> \u2014 push \/ publish \/ deploy \/ send \/ remote-exec refused in-flight; anything that leaves the local sandbox is irreversible or visible to others, and needs the <em>operator<\/em>, not the agent. Local work untouched; one deliberate flag delegates the tier.<\/li>\n\n\n\n<li><strong>Secret hygiene<\/strong> \u2014 secret-shaped vars stripped from every subprocess environment; output redacted before re-entering model context; the keep-list escape hatch can <em>never<\/em> re-expose the plugin&#8217;s own credentials<\/li>\n\n\n\n<li><strong>Workspace containment<\/strong> (symlink-aware), <strong>shell blocklist<\/strong> (no <code>rm -rf<\/code>, no destructive VCS that erases uncommitted work), <strong>truncation guard<\/strong>, <strong>atomic durable writes<\/strong>, <strong>untrusted-MCP wrapping<\/strong> with optional web allowlist<\/li>\n\n\n\n<li><strong>Benchmark integrity (<code>--eval-mode<\/code>)<\/strong> \u2014 hard-blocks fetches to version-control hosts so an eval-aware agent can&#8217;t grab the gold fix instead of solving<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>One Engine of Trust, on Every Desk<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Reckon is a monorepo: one IDE-agnostic, dependency-free engine (<code>core\/<\/code>, zero npm dependencies), thin ports per workplace \u2014 <strong>Claude Code, Cursor, Cline (MCP), IntelliJ-platform, Codex CLI, a standalone CLI for headless CI<\/strong> (Grok Build port planned). The investment in trust is made once and reused in every chair: the architect&#8217;s, the frontend dev&#8217;s, the nightly pipeline&#8217;s. Provider-agnostic by design \u2014 the cost of switching model vendors is one environment variable. <strong>The trust layer belongs to you, not to the model vendor.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Hardened over a long autonomous-QA series: <strong>1,300+ deterministic tests<\/strong> plus live end-to-end workflow tests; default behavior stays unchanged while the opt-in orchestration modes are off. Dual-licensed \u2014 AGPL-3.0-or-later or commercial (ArtenaTech, <code>ivar@artenatech.com<\/code>).<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Proof, Not Claims \u2014 Field Evidence<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Seven heterogeneous subsystems<\/strong> of a complex project, plus a <strong>full-stack messenger built from scratch<\/strong> in an unfamiliar domain \u2014 each time: studied the reference code itself, wrote the design itself, built, tested, kept the build green. Where taste was needed, the system brought the contentious call to human review instead of deciding silently.<\/li>\n\n\n\n<li><strong>Eleven subsystem migrations<\/strong> run as a &#8220;virtual development team&#8221; under independent <em>live<\/em> verification \u2014 the kind you can&#8217;t cheat by editing a test. Every stable failure pattern the tester found became a <em>structural<\/em> protection, not a patch: six findings \u2192 six released versions. The error class that stalled several tasks in a row simply stopped recurring; the next same-class task passed first try.<\/li>\n\n\n\n<li><strong>Instructions 0\/4, checks 7\/7.<\/strong> The same task with &#8220;please do it right&#8221; in the brief vs. an objective post-hoc check: instructions worked zero times; checks worked every time. Since then, every request in the product converts, one by one, into a check.<\/li>\n\n\n\n<li><strong>Two green suites, both lying.<\/strong> A parity campaign found <strong>five hidden divergences between dual backends at 1,900 green tests<\/strong> \u2014 each side verified only against itself. Final measurement after the parity oracle: <strong>full agreement, 10\/10.<\/strong><\/li>\n\n\n\n<li><strong>The sealed exam.<\/strong> Hidden answers, pre-sealed requirements revealed one by one, verification by execution: <strong>19\/19 chained requirements<\/strong>, 10 of 11 deliberate breaks caught (six of seven never even mentioned in the brief), the whole chain for about a dollar. The four defects found during the run were the <em>exam&#8217;s<\/em> own errors \u2014 publicly recorded, two flattering, two defamatory.<\/li>\n\n\n\n<li><strong>17 green tests, zero coverage<\/strong> \u2014 the copy-under-test field case, now impossible: the scanner names the copied symbols and the real exporter, and every created test file reports what it imports from the project.<\/li>\n\n\n\n<li><strong>The monolith wall, broken.<\/strong> A wiring edit landed in a 1,500-line file after three stalls at 0 edits \u2014 and the agent went on to find the real performance hotspot and speed the key operation up <strong>~6.5\u00d7<\/strong>.<\/li>\n\n\n\n<li><strong>The tool that doesn&#8217;t trust even itself.<\/strong> When one caught defect turned out to be Reckon&#8217;s <em>own<\/em> silently-dead feature, four reviewers were set on the plugin and found three more bugs and two protection holes. The same paranoia the tool applies to others&#8217; work, applied to itself.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>What This Gives the Business<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>The economics of delegation finally work.<\/strong> The expensive qualified resource \u2014 a premium model or your senior engineer \u2014 keeps judgment; the cheap model does the heavy work <em>and can be relied upon<\/em>, because the check, not the prose, decides done. Premium quota is spent on what requires it.<\/li>\n\n\n\n<li><strong>Risk is reduced by construction.<\/strong> A badly done task cannot pretend to be done. The worst case is an honest NOT DONE, not a quietly broken release.<\/li>\n\n\n\n<li><strong>Transparency and audit.<\/strong> Every doubtful decision is visible in the run report: what was checked, what changed, where the system would have cheated \u2014 and was caught. Not &#8220;the black box said OK.&#8221;<\/li>\n\n\n\n<li><strong>The full lifecycle, not just &#8220;finish the function.&#8221;<\/strong> Research \u2192 design \u2192 build \u2192 tests \u2192 integration, proven on heterogeneous and unfamiliar tasks.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Integration with the Artena Stack<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>SkillForge \u2192<\/strong> Reckon&#8217;s gate-proven learned skills flow into the team registry as candidates; promoted skills are injected back into runs on trigger match. The honest-gate rule governs learning itself.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>AgentSpace \u2192<\/strong> Agents executing computer-use and app workflows use Reckon&#8217;s verification for any code they touch; &#8220;Watch Me&#8221; demonstrations and Reckon skills share the same provenance discipline.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Dream Team \u2192<\/strong> Certification scenarios are built on Reckon&#8217;s gates and scanners; agents are certified against objective checks, and retired skills become training material.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Core Principles<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Done is proven, not claimed.<\/strong> A passing gate and the real diff. Everything else is prose.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Checks over instructions.<\/strong> 0\/4 vs 7\/7. Every request becomes a check, one by one.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Never trust \u2014 including itself.<\/strong> Not the model&#8217;s finish, not its own tests, not its own shipped features, until they pass objective proof.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>The gate decides; opinion complements.<\/strong> Judge panels and model votes assist where the gate can&#8217;t reach \u2014 and never override it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Undecidable evidence never lies.<\/strong> When the evidence can&#8217;t settle the verdict, the report abstains or escalates. &#8220;I don&#8217;t know&#8221; is more honest than a confident error.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Cheap model, expensive verification.<\/strong> The savings are real precisely because the verification layer is not cheap.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Advisories inform; humans decide.<\/strong> Everything contentious goes to review, not resolved silently. The human stays in the loop exactly where taste matters.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Quick Start<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code># Install (from inside Claude Code)\n\/plugin marketplace add &lt;owner&gt;\/reckon-agent\n\/plugin install reckon@reckon\n\/reload-plugins\n\nexport RECKON_API_KEY=&lt;your-key&gt;     # https:\/\/platform.deepseek.com\/api_keys\n\/reckon:setup\n\n# Delegate with an objective gate\n\/reckon:rescue --write --until \"npm test\" \"add a power operator to the calculator\"\n\n# Read-only review \/ adversarial challenge review\n\/reckon:review\n\/reckon:adversarial-review\n\n# Or headless in CI\nnode core\/scripts\/reckon-companion.mjs task --write --method tdd --until \"npm test\" \"&lt;task&gt;\"\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Requirements:<\/strong> DeepSeek API key \u00b7 Node.js 18.18+ \u00b7 git. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Models:<\/strong> <code>deepseek-v4-flash<\/code> (fast read-only review) \u00b7 <code>deepseek-v4-pro<\/code> (write loops, adversarial review) \u00b7 thinking as a request parameter, 1M context, 384K output.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Reckon transforms how AI coding agents work by replacing subjective &#8220;I&#8217;m done&#8221; claims with objective proof. Most coding agents stop when they think they&#8217;re finished \u2014 Reckon stops when verification commands pass, structural scanners confirm no reward-hacks, and disk-reconciled accounting proves the edits actually landed. It is not another autocomplete tool and not a replacement [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-318","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/artenatech.com\/index.php\/wp-json\/wp\/v2\/pages\/318","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/artenatech.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/artenatech.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/artenatech.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/artenatech.com\/index.php\/wp-json\/wp\/v2\/comments?post=318"}],"version-history":[{"count":7,"href":"https:\/\/artenatech.com\/index.php\/wp-json\/wp\/v2\/pages\/318\/revisions"}],"predecessor-version":[{"id":354,"href":"https:\/\/artenatech.com\/index.php\/wp-json\/wp\/v2\/pages\/318\/revisions\/354"}],"wp:attachment":[{"href":"https:\/\/artenatech.com\/index.php\/wp-json\/wp\/v2\/media?parent=318"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}