Smoke led her into the next trial.
Two fishing boats shouldered along the seawall towing braziers. Flames roared, red bowls spitting embers into drizzle. The smell of burnt lotus root and ash clung like oil. The lane between boats and crowd wasn't meant for her, but she took it. Stone slick with residue, rain making mud of prayer ash. She kept her knees bent, boots choosing honest geometry.
A red string sagged low across the lane, ward line turned trap by weather. She didn't see it until the pack tapped her shoulder twice — pam-pam. She bent instinctively. The string brushed her hair instead of her throat. A volunteer behind her took it in the teeth and cursed himself unlucky. The kitten purred smug against her back.
A volunteer on the barge smacked a joss stick bundle against the speaker grille. Smoke curled in damp spirals, and the amplified chant doubled until it sounded like two voices arguing. Her gaze snagged on Iris for a beat too long before she bent to press another charm flat against the metal, as if repetition might make it behave.
The lane spat her into the Blessing Arch. Bamboo frame braced with lanterns, charms pinned so thick they rustled against one another. Families queued to walk beneath it properly, heads bowed, phones up. Even impatience learned patience there.
Iris slid to the side. An auntie in a yellow poncho intercepted her, pressed joss paper to her temple, tapped twice. "For luck," she said, with the authority of someone who had wrung bargains from gods before.
Iris tucked the paper behind her ear like a cigarette. The crowd softened, parting enough. She walked through. The bells on the arch chimed without wind. Drones above arranged a dragon that dipped a fraction lower than scripted. The cheer rolled like thunder.
Beyond the arch, the festival resolved into food. Squid crackling in shallow oil, sugarcane presses whining, woks roaring on illegal generators. Steam made slick of everything. Iris mapped the ground at a glance: drain grate, crate, the seam between two slabs.
A ladle cut the air toward her head. Pam. She leaned inside its arc. The wind of it kissed her cheek. Without slowing she flicked a coin. It landed in the tip bowl at the exact moment the auntie opened her mouth to curse, turning her syllable into thanks instead.
Oil spread underfoot, rainbow film across concrete. A boy slipped, flailed, recovered. Iris took the line of the drain grate, boot edges biting iron teeth. The kitten wriggled its nose out of the pack, eyes violet in lantern light. It sneezed. A fairy string of holograms above them stuttered, then flared brighter in sync with a drumbeat. Children squealed in delight.
The last stallholder stepped to block her, apron plastic armour, belly a barricade. He began: "Miss, cannot—" Then her face tilted the air, and the word withered in his mouth. He shifted, nodded, as if he'd meant to open the way all along.
Past the stalls, the forecourt of Harbourfront Tower loomed, AR carpet glowing wet, scanner pylons humming. NO ENTRY scrolled in six languages. Gate 6 glared white.
She paused under a broken canopy, lit another stick, smoke curling into rain. The parade above built toward its climax, drones folding into glyphs and dragons, koi vaulting in showers of petals. The joss paper behind her ear clung damp to hair.
"Almost there," she told the envelope, the crowd, the gods of small errands.
And stepped into the light.
Harbourfront Tower pretended to be clean. The forecourt glistened with rain-polished AR carpet, programmed to shimmer like jade underfoot. Scanner pylons hummed like bored saints, waiting for something to disapprove of. Guards in immaculate jackets stood at ease with faces that hated the weather more than the work.
Gate 6 was a bright rectangle of permission, carved out of hardlight and pretending to be ceremonial. Everything beyond was glass and money. Everything before was bodies and mud. Iris cut across the seam, the heat-shielded envelope tight against her ribs, the joss slip damp against her temple like a paper crown.
The scanner pylons stuttered as she crossed their invisible line, hiccupped once as if deciding between blessing and expulsion. Her outline skated across the guard's tablet, resolving, breaking, resolving again, until the machine gave up and declared PASS in a shade of green that had never seen dirt. The guard's eyes met her face for half a breath and then chose the safer option of not meeting it again. He stepped aside.
She walked into the shadow beside a maintenance door. The corporate attaché was already waiting there, coat too dry for the weather. Expression politely unreadable. He didn't ask her name. He didn't ask about the run. He didn't even look directly at her. His hand came out, palm empty.
She gave him the envelope.
He weighed it in his fingers as though gravity might have changed in transit, then slipped it into his coat with the precision of a man filing paper. Only then did he speak. One line, no excess:
"It is done. We'll get in touch."
His voice had the weight of a stamp on a ledger. He turned, vanished through the door. The shadow held its shape like he had never been there. Only then Iris muttered under her nose. "Please don't."
She leaned against the wall, pulled smoke into her lungs until the ember glowed. The kitten shifted in the pack, restless, claws drumming once. Pam. She tapped ash onto the AR carpet and watched the stain ripple wrong before the program corrected it.
Above, the parade reached its climax. Drones stitched themselves into a single serpent that split and reformed into a lotus bloom. Holographic koi vaulted in arcs that made the harbour gasp, scales scattering petals of light that dissolved against rain. Fireworks punctured the sky, real powder and flame, thunder rolling across the bay like a debt collector. The crowd roared as if worshipping itself.
Iris exhaled violet smoke and muttered, "All that for someone else's errand. Getting tired of it."
The kitten nosed the pack's zipper open, stuck its head out. Its eyes burned faint violet in the lantern glow. It sneezed. Sparks jumped. For a heartbeat every koi projection overhead froze mid-leap, then dipped—just a fraction, just enough—as if bowing.
The crowd screamed delight. Children jumped, grabbing at petals. Phones filmed proof they would never believe later. Everyone thought it was part of the show.
Iris knew better.
She tugged the zip shut again, breathed smoke through her nose, and stepped back into the crush. The parade swallowed her as if she'd never left it. Lanterns swung, incense smoked, fireworks cracked. No one stopped her. No one saw her.
The joss slip clung wet against her hair, half-burned, half-blessing. She peeled it free, crumpled it, and let it drop into the gutter. The water carried it off, red ink bleeding like a wound.
The city cheered its own resilience. Iris lit another smoke and thought: resilience was just another word for stubborn ghosts. And ghosts never stayed quiet for long.