skip to content
Jobs

Stripping Internal Tooling from Shipped Builds

Default-on build features keep developer builds whole while paid and demo distributions ship without the internal tooling.

Gantry milestones
Default-on build features keep developer builds whole while paid and demo distributions ship without the internal tooling.

Gantry's binary carries tooling meant for its own developers: the replay and screencast authoring commands that produce its demo videos, and development-only harness entrypoints. Until this job, all of it compiled into every build — there was no supported way to hand a customer a binary without the internal surface, and the test suite only ever exercised the fully featured developer build.

This job drew the boundary. It added default-on build features so ordinary local and continuous-integration builds behave exactly as they did before, while the paid and demo distributions are compiled with those features switched off. The verbs and flags that vanish do not error loudly; a stripped binary treats them like any other unrecognized input. The gate was extended to compile and check the stripped distributions too, so the boundary is a maintained contract rather than a one-time edit. A separate demo-licensing feature stays orthogonal, letting a demo edition carry its licence check without dragging the developer tooling back in.

Build

The foundational sprint that everything else opts out of is where the difficulty concentrated: it failed the gate twice and was carried again before the larger product-surface cut passed on its first attempt.

The work was cut so the feature axis existed before anything leaned on it. The opening sprint established the internal-tooling taxonomy and hid the development-only entrypoints — the smaller carve-out, but the one that had to prove the new features could be switched off cleanly and that the existing demo-licensing feature stayed independent of them. Only once that held could the next sprint move the much larger replay and screencast authoring surface behind its own flag, a later sprint turn the stripped configurations into a tested contract, and a final sprint wire the release builder and the documentation.

The difficulty lived in that opening sprint. Its brief asked not merely for a flag but for stripped invocations to degrade through the ordinary unknown-argument path without a panic — the graceful behaviour, not the flag itself, was the hard requirement. The gate sent the sprint back, a fix did not settle it, and it was carried again from a clean start before it passed. That the sprint after it — the high-effort one moving the whole screencast toolkit — then passed on its first attempt suggests the foundational cut had already absorbed the design cost the later pieces would otherwise have paid.

After that the boundaries held. No review forced the remaining work to be re-planned; the test-matrix and release-packaging sprints landed without a gate failure, which is what one expects once the feature axis and its graceful-degradation behaviour are settled.

Feature

There was no way to ship Gantry without its internal authoring commands, and the suite only tested the full build; the job added the feature axis, the stripped release artifacts, and the tiers that keep them honest.

Before this job a single build carried everything, and the only configuration the tests ever ran against was the fully featured one. There was no supported route to a distribution without the internal replay, screencast, narration, and overlay authoring commands, or without the development-only snapshot and scripted-demo entrypoints.

The answer is a small set of build features. Two of them are on by default — one for the development helpers, one for the replay and screencast toolkit — compiled into every ordinary build and dropped from the distributed editions with a single opt-out. Command parsing, help text, and dispatch omit the gated verbs, so a stripped binary neither lists nor routes them. The demo-licensing feature is a separate, off-by-default axis whose network client and signature-verification dependencies stay optional, so the plain paid build pulls in none of them. The local release producer builds the paid and demo artifacts with the internal features off, and the root test command grew tiers that compile and test the paid-stripped and demo-stripped trees alongside the default one.

Standing in the worktree today, the design holds. The feature list still names the development-helper and screencast features as the default and keeps demo-licensing orthogonal; the conditional gates guarding the omitted surface are spread across the command layer; the root test command still runs the paid and demo stripped tiers; and the screencast runbook still opens by saying it applies only to builds with that feature enabled. Some surrounding lines — a passage of the README, parts of the release script — have been rewritten by later work, but the boundary itself is intact and enforced by the gate.

11 sessions
peak 220,134 · median execute 153,588 · heaviest 220,134 (02) context
unavailable tokens
unavailable cost
0 x 4 milestones x sprints
67 edits
349 commands
4h 42m duration
5 execute · 4 review · 2 plan · 1 fix · 1 gate-build · 2 investigate roles
1 x 0 fixes x replans
codex harness