Firedancer
What Progressed In The Story
Tickoni closes M0 in this release.
V0.0 proved the event path. V0.37 hardens the runtime boundary around it.
The result is a trust foundation that is no longer just a replayable demo path. Tickoni now builds against the Firedancer substrate it actually reuses, exposes product-owned topologies instead of validator-shaped inheritance, and verifies that boundary through build and test lanes.
The user can now:
- point to a closed
M0milestone with both of its epics delivered, - build the Firedancer substrate Tickoni reuses without dragging in the validator product surface,
- build the Zig
tickoni-supervisorseparately from the Firedancer C libraries, - verify that Tickoni product topologies register Tickoni tile IDs rather than validator tiles,
- run build and integration lanes that exercise topology, workspace, and link boundaries,
- and treat the runtime proof as a product-owned foundation instead of an inherited prototype.
Want the changelog first? Skip the Tickoni story and jump to the release notes ↓
Chapter 2: Firedancer
The sea did not welcome Tickoni.
Without the Order’s mark, no gate opened at its approach. No ledger turned its pages. No marked current offered passage.
So Tickoni crossed the Ledger Sea the slow way, in a narrow black boat with a torn sail and a lantern that burned without oil.
Behind it stood the village with too many maps.
Ahead waited waters that did not care what anyone believed.
For one day, Tickoni sailed east.
By evening, the wind turned north.
By midnight, the current carried the boat west.
Tickoni adjusted the sail.
The sea adjusted first.
On the second night, clouds covered the stars. The lantern showed rope, wet wood, and Tickoni’s claws gripping the rail.
No path appeared beyond them.
The Council had taken the outer mark.
Something still burned inside Tickoni.
Something chosen.
But choice did not fill a sail.
Choice did not steer a boat.
Near midnight, the sea became still.
Not calm.
Still.
The waves flattened into black glass. Far ahead, a thin shore curved beneath the moon. One cedar tree stood on it. Beside the tree burned a red lamp.
Land.
Rest.
A place to fix the sail.
Tickoni turned toward it.
By dawn, the shore was no closer.
The water behind showed no wake.
Tickoni turned east.
The shore shifted north.
It turned north.
The shore slid west.
No monster attacked. No wave crushed the hull.
That made it worse.
There was no enemy to strike.
Only a shore that stayed almost reachable.
By the third evening, the sail had torn wider. Salt crusted the rail. Tickoni’s arms shook from rowing.
The red lamp glowed brighter.
Tickoni lowered the oar.
— I chose.
The sea remained still.
— I chose.
No current answered.
Then something tapped the water.
Tap.
A spark appeared far to the west.
Tap.
Another.
Tap.
A third.
Not lightning.
Footsteps.
No.
A dance.
A figure in black cloth spun across the Ledger Sea, heel on wave crest, toe on drowned timber. He kicked from a reef tooth, caught a floating chain, turned in the air, and landed on foam as if the sea had placed it there for him.
Each step flashed red.
Each step vanished.
He crossed in breaths what Tickoni had spent three nights failing to cross.
Then he reached the black shore.
The red lamp flickered.
The cedar bent.
The shore slid north.
The figure did not follow.
He stopped where it had been.
Black sand thinned into mist. Cedar folded into smoke. The lamp became a moon reflection trembling on water.
Then vanished.
Tickoni stared.
The figure had not been chasing the shore.
Five sparks later, he stood beside the boat.
— Are you one of the Order? — Tickoni asked.
The figure laughed so hard one heel slipped into the sea.
He yanked it back and glared down.
— The Order? No. The Order marches.
He bowed, one arm across his chest, the other raised like flame in wind.
— I dance.
— Then who are you?
— Kagari — Shiranui of the Ledger Sea! Crosser of the Nigemizu! Reaper of the Eightfold Serpent! Breaker of Yomi’s Stone!
He waited.
Tickoni said nothing.
Kagari sighed.
— Usually there is more reaction.
— You broke Yomi’s Stone?
Tickoni’s eyes narrowed.
A pause.
— Chipped it.
He sat on the rail, produced a pickled ume from his sleeve, and inspected the torn sail.
— And the serpent?
Tickoni waited.
Kagari looked away.
— Eightfold is a flexible term.
His face tightened.
He chewed anyway.
— You are lost.
— I am crossing the Ledger Sea.
— To where?
Tickoni looked east. No gate waited there. No old path answered.
But the vow remained.
— I am going to forge a contract no oni can break.
Kagari stopped chewing.
Then looked at Tickoni.
At the boat.
Back at Tickoni.
— You cannot forge a path through a puddle.
— This is not a puddle.
— That makes it worse.
He hopped onto the water.
Five ember footprints appeared.
One on a ripple.
One on a floating reed.
One on a dark stone beneath the surface.
One on the back of a passing fish.
The fifth on nothing.
Tickoni stared at the marks.
Kagari glanced back at the boat.
— An unbreakable contract...
He rolled the words around for a moment.
— Ambitious.
A grin.
— I like ambitious.
He turned away, muttering as he counted on his fingers.
— Shiranui... Nigemizu... Eightfold Serpent... Yomi...
A fifth finger rose.
— Lord of Vows Larger Than His Boat...
He paused.
— No. That one belongs to you.
Then he pointed at the first ember mark.
— Your turn.
Tickoni stepped onto the rail.
No gate opened.
No current rose.
It stepped onto the first mark.
Its foot punched through the ripple.
Cold water swallowed its leg.
Kagari caught its wrist before the sea took the rest.
— Heavy.
— I am not heavy.
— Your foot is.
Tickoni pulled itself up.
— I stepped where you stepped.
— You stepped where I had been.
Kagari tapped the ripple. Two small waves met, lifted each other for less than a breath, then separated.
— This held me when the waves met. Then it stopped being a step.
He pointed.
— The reed holds only between currents. The stone only where the pull is weak. The fish only if you wait.
He pointed to empty water.
— And this?
Tickoni saw nothing.
— Warm water. Cold water. They meet here.
Kagari placed one foot on the empty sea.
The water held.
— That is cheating.
— That is looking.
Again he crossed, this time clapping a rhythm.
Clap.
— Receive.
Ripple.
Clap.
— Carry.
Reed.
Clap.
— Check.
Stone.
Clap.
— Record.
Fish.
Clap.
— Stop.
Seam.
Tickoni narrowed its eyes.
— Those sound like rules.
— Good steps usually do.
Tickoni tried again.
The ripple held.
The reed dipped. Tickoni stiffened.
— Less statue!
It bent its knees.
The reed held.
The stone cut its foot.
— The stone bit me.
— The stone has standards.
The fish surfaced.
Tickoni hesitated.
The fish vanished.
Splash.
Kagari hauled Tickoni back up.
— Too slow? — Tickoni asked.
— Less thinky. More footy.
Tickoni stared at the five marks.
Then tried once more.
Ripple.
Receive.
Reed.
Carry.
Stone.
Check.
The fish surfaced.
Record.
Tickoni stepped before doubt could turn into thought.
Fish.
Then the last mark.
Nothing.
Stop.
Tickoni looked, not at where Kagari had stood, but at the water itself.
A faint seam trembled where two temperatures met.
It stepped.
For one breath, Tickoni stood on empty sea.
The chosen fire beneath its ribs answered the ember marks.
Not with a name.
Only heat.
Kagari nodded.
— There.
— I am standing on nothing.
— No. You are standing on what you finally noticed.
The seam moved.
Tickoni jumped back to the boat.
Almost gracefully.
Kagari allowed this to count.
Dawn paled the Ledger Sea. Ahead, black reefs rose like broken teeth.
Kagari pointed east.
— You know, your boat can pass there.
— The gap is too narrow.
— Stop staring at the gap.
— What should I watch?
Kagari tapped the rail.
— What touches the boat.
A wave struck the hull.
— What carries it.
The boat tilted with the current.
— What tests the way.
Foam covered a black reef tooth, then cleared.
— What mark remains.
Tickoni scratched a line into the rail.
Kagari’s grin faded.
— And when the sea lies.
Foam returned.
Tickoni almost turned the sail.
Almost.
Then stopped.
Waited.
The foam cleared again.
A narrow channel opened.
Tickoni adjusted the sail, not toward the vanished shore, but toward the seam between wind and current.
The boat turned.
Slowly.
Correctly.
First reef to port.
Second to starboard.
The third vanished under foam.
Tickoni waited.
Receive.
Carry.
Check.
The foam thinned.
Record.
The channel shifted.
Stop.
Tickoni held the tiller.
The sea opened.
The boat slipped through.
Behind it, the wake finally remained.
A thin black line held on the water where the boat had crossed.
Not long.
Long enough.
Ahead, Kagari stood on the last reef, wrapped in ember-red light.
— Better.
Tickoni looked at the wake.
— Is this your path?
— No.
— Mine?
— For now.
— Where does it lead?
Kagari smiled.
— Better question next time.
Then he spun east.
Three red turns.
One kick from the foam.
Gone.
Tickoni stood alone in the boat.
Something rolled against its foot.
The pickled ume. One bite missing.
Tickoni picked it up, stared at it, then looked toward the empty horizon.
— We won’t be needing this.
It tossed the fruit overboard.
Tickoni watched the fruit drift away.
Then it raised its eyes.
The Ledger Sea moved around the boat.
Still vast.
Still indifferent.
But no longer blank.
Beneath the wound where the fūin had been, five narrow lines warmed once and faded before Tickoni could name them.
Tickoni raised the torn sail.
This time, the boat did not chase the horizon.
It followed the water beneath it.
Release Notes
Release: M0: The Trust Foundation
M0 closes in this release.
Its two epics now ship together:
V0.0 established the deterministic event path: synthetic financial events can be framed, normalized, deduplicated, policy-checked, audited, replayed, and inspected without external effects.
V0.37 hardens the boundary around that proof: Tickoni now builds and tests against the Firedancer substrate it actually reuses, exposes Tickoni-owned product topologies, and keeps Solana validator concepts out of the Tickoni runtime surface.
V0.0: prove the deterministic event path
-> V0.37: harden the Firedancer boundary around it
-> M0: trust foundation closed
The operator now has a product-owned runtime foundation instead of a proof sitting too close to borrowed validator structure. This release still does not run agents, call models, connect to brokers, databases, or payment networks, move money, or place trades. It closes the trust foundation milestone those later flows must stand on.
Headline Features
1. M0 Closes With Exactly Two Epics
M0 now has its full intended shape:
V0.0delivered the deterministic runtime proof,- and
V0.37delivered the Firedancer integration boundary that makes that proof product-owned.
There are no additional hidden M0 epics. The milestone closes here.
2. Standalone Firedancer Substrate Build
Tickoni now has a cleaner build contract with its reused C substrate.
just build-fd builds the Firedancer libraries Tickoni actually reuses:
fd_tango,fd_util,fd_ballet,fd_disco,- and
fd_waltz.
That build path excludes the validator product surface: Solana validator tiles, RPC schemas, unrelated binaries, and other non-Tickoni artifacts do not define the Tickoni build story.
just build-tk then builds the Zig tickoni-supervisor against that substrate through Tickoni-owned wrappers.
3. Tickoni-Owned Product Topology
Tickoni's product topology is now explicit about being Tickoni's.
The product runtime registers Tickoni tile IDs such as:
tkings,tknorm,tkdedu,tkpoly,tkaudt,tkrepl,tkmetr,- and
tkdiag.
The declared investment workflow likewise uses Tickoni tile IDs such as tkcase, tkdisp, tkagnt, tkmodl, tktool, and tkadpt.
Validator tile identities are no longer the conceptual frame for the product runtime. Firedancer remains the infrastructure substrate, not the product vocabulary.
4. Boundary Verification In Build And Test
V0.37 adds evidence that the Firedancer boundary is real and maintained, not just described in docs.
The repository now has build and test lanes that verify the integration surface:
just build-fd,just build-tk,just test-unit-tk,- and
just test-integration-tk.
Those lanes exercise the product topology, Firedancer-backed link and workspace plumbing, and Tickoni-owned runtime wrappers without making Solana validator semantics part of the product contract.
5. Documentation And Boundary Clarity
The architecture, topology, build, and testing docs now tell the same story:
- Firedancer is the systems substrate,
- Tickoni is the product runtime,
- Solana validator semantics are excluded from Tickoni's product surface,
- and the active Tickoni runtime lives under
src/app/tickoni/andsrc/tickoni/.
This release is as much about precision of identity as about build output.
Governance and Safety
1. The Runtime Boundary Is Explicit
Tickoni now draws a clearer line between inherited substrate and owned product behavior.
Firedancer contributes queues, topology discipline, workspaces, lifecycle, metrics, diagnostics, and related systems primitives. Tickoni owns the product topology, tile identities, financial semantics, and runtime surface.
That separation reduces ambiguity for operators, reviewers, and later feature work.
2. Product Topology Does Not Inherit Validator Semantics
This release keeps Solana validator concepts out of Tickoni's product runtime shape.
The product topology is described in Tickoni tile IDs and Tickoni docs. Validator tile names and validator-only flows are not presented as the product runtime.
3. External Effects Still Stay Disabled
Closing M0 does not change the no-side-effects rule established by V0.0.
There is still no live model provider call, broker call, payment call, approved execution ledger mutation, trade placement, or money movement in this release.
V0.37 hardens the foundation. It does not widen authority.
4. Fail-Closed Integration Matters
Build isolation and topology clarity are not cosmetic.
They reduce the chance that Tickoni accidentally inherits unrelated protocol assumptions, toolchain requirements, or product semantics from the validator codebase it borrows infrastructure from.
Platform Work
1. tickoni_fd Build Scope
The Firedancer-side build is now explicitly scoped to what Tickoni reuses.
That scope narrows the C dependency surface and gives CI and developers a repo-facing contract that matches the product boundary.
2. Separate Build Recipes For Substrate And Product
The repo-facing command surface now clearly separates:
just build-fdfor the reused Firedancer substrate,- and
just build-tkfor the Tickoni runtime.
That makes it easier to reason about which layer changed, failed, or needs review.
3. Topology Definitions Live In Tickoni-Owned Code
The active product topologies are declared in src/app/tickoni/topologies.zig, not inferred from validator registration tables.
That keeps product identity and runtime wiring in the part of the tree Tickoni owns.
Demo
Run the M0 closure proof with:
just build-fd
just build-tk
just test-unit-tk
just test-integration-tkThe commands should prove that Tickoni's runtime foundation now has both halves of M0:
- the deterministic Tickoni runtime proof from
V0.0, - and the cleaned Firedancer integration boundary from
V0.37.
To inspect the active Tickoni topology surface:
zig build run -- statusWhat Comes Next: V1.1: Investment Intent To Paper Trade
V1.1 turns the runtime proof into the first consumer-finance demo: investment intent to paper trade.
The next release moves from foundation to product flow:
- plain-English investment thesis input,
- explainable basket construction,
- trade ticket preview,
- affordability and guardrail checks,
- paper-only placement or save-as-proposal behavior,
- and replayable evidence without live model, broker, market, payment, or execution effects.
