The console waited.
It pulsed faintly beneath the translucent geometry, its interface a stitched mess of flickering components. Some pieces resembled old debug overlay tools—scan buffers, memory logs, window anchors. But others were unlabelled. Orphaned fragments of something that had once been cohesive. I leaned in, watching how the data curled around itself like code folding back on memory that no longer existed.
[dev_null >> prompt/]
I hesitated.
Fingers twitching above the field.
There was no keyboard.
No text box.
Just the implied input. A shell window running in dream logic—something the system recognized, even if it couldn't fully visualize.
"Okay," I muttered. "Let's not break anything we can't fix."
Patch didn't move, but her gaze never left the console.
"Be careful," she said.
"Always."
I thought the first line.
Not a command.
A query.
[list_functions()]
For a moment, the interface didn't react.
Then a vertical string of gibberish unfolded across the console—half-formed function names, some blanked out with square brackets, others trailing off in corrupted variables. Most of it meant nothing to me.
But one segment pulsed brighter:
[class.bind_template(NULLPTR)]
[observer.attach(log.ghost)]
[thread_override = FALSE]
[manual_return = TRUE]
[prompt_stability: TEMPORARY]
"Holy shit," I breathed.
These weren't commands players were ever meant to see. These were scaffolding hooks—functions from the early builds, when internal testers had to bind themselves to live logic to simulate event trees.
I remembered them from buried dev notes.
Half of these functions never made it to the public interface. Some were probably deprecated before the system even launched.
Patch moved beside me now, closer. "You're not just seeing echoes," she said.
"I'm inside the bones," I whispered.
Another prompt appeared. This one flashing red:
[STABILITY WARNING // CONTEXT UNLOCK EXCEEDS SAFETY BOUNDS]
[USER 'dev_null' LACKS CLASS SAFEGUARDS]
[CONTINUE ANYWAY? Y/N]
I didn't answer. Not right away.
I looked at Patch. "This… might do something real. I don't know what it'll trigger."
She didn't blink. "The system already considers you a fracture. What difference will another make?"
I almost smiled.
Almost.
I looked back at the warning.
It didn't blink again. Didn't reinforce itself like a regular prompt might. The system had shown it once, and now it simply waited.
Silent.
Observing.
[CONTINUE ANYWAY? Y/N]
I thought: Yes.
There was no flare of light. No confirmation tone. Just a soft recalibration. The console dimmed for a second, then redrew its surface layer—this time with cleaner edge definition. The flickering stabilised slightly.
The command line persisted:
[dev_null >> prompt/]
I ran another query—safe, or so I hoped.
[ghost.log(overlay_history)]
The screen populated.
Rows and rows of timestamped entries. My movement through Nullspace. Fragments I'd approached. Overlays I'd triggered. System nodes flagged as phantom unstable or memory bleed linked. I even saw entries tied to the controller still holstered at my side—the same one that had saved me in that first tutorial shell.
Patch leaned over the edge, glancing sideways. "It's catalogued you," she said softly. "You're being indexed like a bug report."
"That tracks," I muttered. "I am a bug."
Another line appeared—unprompted.
[ANCHOR LINK: PATCH_001_N // TETHER VALID]
[INTERFACE CLEANUP: DEFERRED]
[SUBROUTINE: MIRROR_STATE_POLLING ACTIVE]
The screen distorted. Then the top third folded back on itself. Another field opened. No title. Just raw field inputs and toggles. I didn't recognize half of them.
But one line caught my eye:
[OVERRIDE: NULLPOINTER // REASSIGNABLE? Y/N]
I stared at it.
It wasn't asking if I could assign someone else.
It was asking if the name itself—the identity—could be tethered formally. Not just observed. Not just tracked.
Recognised.
Patch sat beside me in silence. Her body language had tightened. Not afraid. Tense. Like she knew we were no longer alone in the code.
"Something's watching this," I whispered.
"I know."
"You feel it too?"
"No," she said. "But it's how you're breathing."
I hesitated. Then typed the next line.
[REASSIGNABLE = FALSE]
[LOCK TO INSTANCE]
The console accepted it.
No fanfare.
Just a finalisation prompt:
[dev_null >> Identity Assertion: TRUE]
[Limited Access Bound // Duration: Unknown]
The console held steady for another breath.
Then the light shifted—just slightly. The edges of the input field began to blur, like heat warping glass. One line flickered orange, stuttering half a dozen unreadable characters before cutting off mid-frame.
[Monitor State: Passive]
That word didn't sit right.
Passive didn't mean absent.
It meant aware.
Watching.
Waiting to decide.
Patch had moved closer without sound. Her flank brushed my knee. Her eyes narrowed.
"It knows," she said.
I nodded slowly. "Yeah. It definitely knows."
I took one last look at the console. Its interface had started to unravel at the edges, folding in on itself like a recalled subroutine. Not crashing.
Retracting.
Testing window closed.
Evaluation period ended.
Still—one message remained, burned into the centre like a watermark:
[dev_null // profile cache stored]
[access delayed // sync incomplete]
[RETURN TO STABLE ENVIRONMENT TO CONTINUE]
I stood, slowly. My legs ached. Muscles along my back screamed. I didn't care.
The dev console shrank as I rose, retreating into the floor like it had never existed.
Patch stood beside me.
The air cooled.
Then stilled.
And behind us—across the smooth, grey horizon of unfinished Nullspace—a vertical ripple split through the shadows.
Not a door.
Not a portal.
Just a seam.
Like someone had cut the geometry with a scalpel and waited for me to notice.
Patch hissed low in her throat.
"No exposure warning," I whispered.
"It isn't emitting," she said.
"Then what is it?"
Patch turned slowly toward the rift. Her voice was quieter now.
"A witness."