Orbit Kanban · Three independent implementations

Compare change effort and authored source

The same board, task dependencies, blocking rules, editor, interactions, PostgreSQL persistence, 30-second server cache, mutation invalidation, and frontend cache in Acore, Flutter + Serverpod, and Next.js.

Counting rule: Final retained authored application source, configuration, manual template edits, and stack-specific tests. Generated files contribute zero. Exclude Acore dev-host.mjs, project setup, generated .axiom/Serverpod/.next output, dependencies, locks, unchanged scaffold content, binary assets, shared harnesses, documentation, and reports. Tokens use o200k_base; these are source tokens, not actual cumulative agent/API usage.

Open the applications

Normal links use independent saved boards. Comparison links use identical read-only transport data and isolated client storage.

After the dependency change: 9 viewports pass, with matched dialog/field/checkbox surface bounds and selected text tops within 0.5 CSS px. Full-pixel/native identity is not certified. The earlier Acore/Flutter nine-size checks and typography comparisons remain available. Native devices/simulators were not run. Next.js provides responsive web here; Acore and Flutter also retain Android/iOS application source. This is not a comparison of identical native platform scope.

View preview and typography evidencedependency-change/acore/preview-popup.pngdependency-change/flutter/preview-popup.pngdependency-change/nextjs/preview-popup.png

Making the same substantial change

Task dependencies with enforced blocking, cycle rejection, reopening/deletion rules, race-safe persistence, caching, card summaries and editor checkboxes. Three fresh agents; same model and effort.

Next.js used the fewest generated tokens in this run: 60.1% fewer generated tokens than Acore; 37.4% fewer generated tokens than Flutter + Serverpod. It also reached the first handoff fastest. All three passed the same independent graph journey after review. This is one observed run with the same GPT-6.1-Sol model and xhigh effort, not a general productivity guarantee.

Change benchmark metricAcoreFlutter + ServerpodNext.js
Initial ready for review7m 30s5m 03s2m 15s
Before first file edit (wall checkpoint)2m 14s1m 04s0m 54s
Separate review interval3m 28s0m 37s0m 00s
Initial + review intervals10m 58s5m 40s2m 15s
Actual generated output tokens35,12222,38914,019
Reasoning tokens (already included above)11,9217,8454,066
Other generated output tokens23,20114,5449,953
Generated output before first edit call5,7771,9861,377
Generated output during implementation/review29,34520,40312,642
Agent difficulty rating (1 easy – 5 hard)4/53/53/5
Authored files changed / added9 / 45 / 17 / 1
Retained added/replaced source tokens7,0634,4304,082
Retained added/replaced tokens, no tests5,2562,0532,217
Net retained source-token growth+5,318+4,144+3,508
Net application-token growth, no tests+3,511+1,776+1,643
Independent common graph checks44 passed44 passed44 passed
Real browser dependency journeyPassedPassedPassed

Runtime output_tokens is the primary actual-token metric and already includes reasoning_output_tokens. Other output includes code, tool arguments, messages and assessments, not just retained files. llms-full.txt is input and is never added to generated output or authored source. Raw input below includes repeated cached context and documentation; exact document-only input attribution is unavailable, so it is excluded from ranking. We do not fabricate a documentation-subtracted billed total. The phase split is operational (before first editing tool call), not a semantic separation of understanding and implementation thinking.

Times run from each agent’s first recorded UTC start to its own build/test handoff. Review intervals are recorded separately and added without the idle gap waiting for root. Acore’s review included investigating one initial HTTP504 and correcting UI issues. Warm reads and subsequent graph/cache tests passed; unrelated compiler jobs and high host load were observed. Build/test subprocess durations can overlap and are not summed as CPU time. No native simulator/device ran.

Raw input usage — includes documentation/context, not ranked
StackInputCached subsetInput + output
Acore7,524,9177,385,7287,560,039
Flutter + Serverpod2,482,2302,400,2562,504,619
Next.js628,543591,360642,562
Acore required the largest architectural change: the installed native storage codec could not map a public List<String> to persisted JSONB. The agent retained Acore UI/contracts/auth/cache and added counted Node/pg transport plus PostgreSQL graph triggers. It also corrected checkbox display, scrollbar gutter and scoped font loading after browser review. Flutter retained its existing ORM path, needed nullable collection compatibility and explicit database locks, then corrected three dialog gaps. Next.js extended its existing TypeScript/SQL/DOM path and needed no review source fix.

Root coordination, independent browser/shared tests, report writing, and setup are outside each child’s usage/time totals. One fresh child per stack ran on the same machine concurrently; shared load, toolchain caches, unequal internal security/native target scope, and Acore-only provided docs limit generalization. Difficulty is each agent’s subjective self-report. Retained edit/source metrics are distinct from runtime usage and exclude generated output, setup/host, docs, and binary assets.

Current full-application authored-source benchmark

MetricAcoreFlutter + ServerpodNext.js + PostgreSQL
Files with authored contributions131812
Authored physical lines8982,281706
Nonblank lines8742,232671
Authored characters58,83079,45045,254
Authored words6,9185,9115,516
Authored source tokens, including tests16,15215,21212,784
Source tokens without stack-specific tests14,34511,71210,919
Included stack-specific test tokens1,8073,5001,865

Included authored-test tokens: Acore 1,807; Flutter + Serverpod 3,500; Next.js + PostgreSQL 1,865. Use the without-tests row for the application-only subtotal. Full retained-source size is separate from the measured change-time/runtime usage section above. The original app-build conversation was not instrumented by stack.

Download the complete counted-file CSV. Complete files are encoded once; template contributions include only added/replaced lines against saved baselines.

BoundaryAcoreFlutter + ServerpodNext.js + PostgreSQL
Frontend9,233 tokens · 3 files11,040 tokens · 10 files8,892 tokens · 8 files
Backend5,447 tokens · 7 files4,077 tokens · 7 files3,694 tokens · 3 files
Database1,472 tokens · 3 files95 tokens · 1 files198 tokens · 1 files

Frontend

UI, fonts configuration, client repository/cache, shared TypeScript task types, dependency configuration, SVG, and any stack-specific tests or manual shell edits. Shared task types are counted once under frontend, even when imported by the server.

Acore

acore/
3 files
9,233 tokens
Exact relative pathTokens
frontend/AxiomDeps.tomlauthoredConfig74
frontend/assets/favicon.svgauthoredConfig71
frontend/main.acoreauthoredApp9,088

Flutter + Serverpod

flutter-serverpod/orbit/
10 files
11,040 tokens
Exact relative pathTokens
orbit_client/pubspec.yamlauthoredConfig35
orbit_flutter/android/app/src/main/AndroidManifest.xmlauthoredTemplateEdits
Show counted lines
    <uses-permission android:name="android.permission.INTERNET"/>
        android:label="Orbit"
        android:usesCleartextTraffic="true"
31
orbit_flutter/ios/Runner/Info.plistauthoredTemplateEdits
Show counted lines
	<key>NSAppTransportSecurity</key>
	<dict>
		<key>NSAllowsArbitraryLoads</key>
		<true/>
	</dict>
	<string>Orbit</string>
44
orbit_flutter/lib/board_repository.dartauthoredApp316
orbit_flutter/lib/main.dartauthoredApp9,005
orbit_flutter/pubspec.yamlauthoredConfig178
orbit_flutter/test/responsive_test.dartauthoredTests1,274
orbit_flutter/web/favicon.svgauthoredConfig71
orbit_flutter/web/flutter_bootstrap.jsauthoredIntegration58
orbit_flutter/web/index.htmlauthoredTemplateEdits
Show counted lines
  <link rel="icon" type="image/png" href="favicon.svg"/>
  <title>Orbit · Project board</title>
28

Next.js + PostgreSQL

nextjs/
8 files
8,892 tokens
Exact relative pathTokens
app/globals.cssauthoredApp4,859
app/layout.tsxauthoredApp93
app/page.tsxauthoredApp3,137
lib/board-repository.tsauthoredApp289
lib/task.tsauthoredApp215
public/assets/favicon.svgauthoredConfig71
package.jsonauthoredConfig222
tsconfig.jsonauthoredTemplateEdits
Show counted lines
    "strict": true,
6

Backend

Authored service logic, validation, HTTP handlers, caching, and service configuration. Generated transport, deployment output, protocols and helpers contribute zero.

Acore

acore/
7 files
5,447 tokens
Exact relative pathTokens
backend/AxiomDeps.tomlauthoredConfig16
backend/Task.acoreauthoredApp72
backend/application.acoreauthoredApp2,094
backend/main.acoreauthoredApp7
backend/serve.mjsauthoredApp1,410
backend/package.jsonauthoredConfig41
tests/dependencies.pyauthoredTests1,807

Flutter + Serverpod

flutter-serverpod/orbit/
7 files
4,077 tokens
Exact relative pathTokens
orbit_server/config/development.yamlauthoredConfig175
orbit_server/config/passwords.yamlauthoredConfig16
orbit_server/lib/server.dartauthoredApp54
orbit_server/lib/src/board/board_endpoint.dartauthoredApp1,524
orbit_server/lib/src/board/snapshot.spy.yamlauthoredApp12
orbit_server/pubspec.yamlauthoredConfig70
orbit_server/test/dependency_api_test.dartauthoredTests2,226

Next.js + PostgreSQL

nextjs/
3 files
3,694 tokens
Exact relative pathTokens
app/api/tasks/route.tsauthoredApp230
server/board.tsauthoredApp1,599
tests/dependencies.mjsauthoredTests1,865

Database

Authored Acore schema, Serverpod database model, and Next.js SQL DDL. Generated ORM and migrations contribute zero. Shared seed data and database preparation are outside app totals.

Acore

acore/
3 files
1,472 tokens
Exact relative pathTokens
database/AxiomDeps.tomlauthoredConfig10
database/schema.acoreauthoredApp438
database/dependencies.sqlauthoredApp1,024

Flutter + Serverpod

flutter-serverpod/orbit/
1 files
95 tokens
Exact relative pathTokens
orbit_server/lib/src/board/task.spy.yamlauthoredApp95

Next.js + PostgreSQL

nextjs/
1 files
198 tokens
Exact relative pathTokens
database/schema.sqlauthoredApp198

Developer assessment

Next.js was straightforward for this browser-first reproduction: it reuses the DOM/CSS design and standard input behavior directly. Its SQL driver requires explicit validation, queries, API handling, and race-safe cache invalidation; these are all counted. Flutter needs widget and text-paint adaptation to match browser rendering but shares its UI source with native targets. Acore concisely declares layouts and backend policies, but local compiler/host integration required more troubleshooting in the earlier work.

Acore now uses a counted Node/pg provider adapter and SQL graph enforcement alongside its typed boundary/UI/cache. It also declares tenant row security and principal-scoped cache policies that the shared-workspace Next.js and Serverpod demos do not reproduce. Serverpod generates transport and ORM from compact definitions; generated output is excluded. The token differences reflect this implementation, formatting, test scope, platform scope, and internal guarantees. They do not prove a general AI-token or productivity advantage.

Scope and audit

Authored configuration and SVG are included. Shared TypeScript types and the Next.js package manifest are attributed once to frontend. Next.js tsconfig.json was generated by Next; only the authored strict-mode change is counted against the saved 16.4.2 baseline. Flutter shell edits use saved 3.32.0 baselines. Binary font files are identical and excluded across stacks.

Shared seed, development hosts, database/service setup, API/cache checks, responsive fixture and report tooling are reported once as shared support outside all app totals. These tools and generated runtime files remain available to run the apps. Every counted contribution and its hash is recorded in evidence/authorship.json, metrics.json, and the matching inventories.