The Locked Folder
Zeth Mnguni - Genesis
Chapter 4: The Locked Folder
The tie stayed in the Polo.
Zeth stood in the parking basement the next morning with his hand on the car door and looked at it lying across the passenger seat like an old accusation.
Dark blue.
Slightly shiny at the knot from years of other men's fingers.
Folded once because he could not make himself throw it onto the seat like ordinary cloth.
He had worn the suit trousers again, because they were the best trousers he owned, but the jacket stayed on the back seat and the shirt collar stayed open. It made him feel unfinished. Exposed. Like he had walked out of the house halfway through becoming respectable.
The email had said casual.
Apex had meant casual the way rich people meant safe.
Chinos. Golfers. Clean sneakers that looked cheap only if a person had never had to check prices.
Engineers had meant something else entirely.
The day before, a man had walked past Zeth in cargo shorts, socks with sandals, and a hoodie with a faded logo for a conference in Berlin. Nobody had stopped him. Nobody had asked if he had lost a fight with a laundry basket. Nobody had checked whether his mother had tried harder.
He had access.
That was the thing.
A person could walk into the fifth floor dressed like he had given up on mirrors if the system loved his card.
Zeth looked at the temporary white card clipped to his belt.
MNGUNI, ZETH
SOFTWARE ENGINEERING
Plain black letters.
No wrong line.
No hidden class.
No ghost in the plastic.
He had checked it six times in the lift at Maboneng before leaving. Once in the car before starting the engine. Twice at red robots, which was stupid and dangerous, so he had forced himself to stop.
Temporary access.
That was all.
He closed the Polo and locked it.
The car chirped once.
The sound bounced around the basement.
A security camera in the corner turned slowly.
Zeth told himself it was not turning toward him.
That helped for almost three seconds.
By the time he reached reception, Apex was already awake.
The lobby did not look busy in a normal way. It looked choreographed. Coffee cups moved between hands. Shoes clicked over polished stone. A woman in a black dress spoke into a headset without changing expression. Two men in suits laughed at a private joke with the careful volume of people who wanted witnesses to know they were relaxed.
The turnstiles waited in a neat row.
Glass arms.
Black pads.
Green lights for the approved.
Red for the confused.
Zeth placed his card against the reader.
Green.
The gate opened.
No flicker.
He placed his finger on the scanner beside the second gate because the guard nodded toward it.
Green again.
Fast.
Too fast, but no faster than yesterday.
"Morning, Mr Mnguni," the guard said.
Zeth lifted his hand from the scanner.
"Morning."
The guard had not looked at his ID.
He had not checked a clipboard.
He had just known the name from the screen.
Reasonable.
Systems displayed names.
That was their job.
Zeth stepped through.
Ruan Bekker was waiting near the lifts with a paper cup in one hand and a pastry in the other, dressed like he had discovered a loophole in the idea of effort.
Loose jacket.
No tie.
Shirt open at the throat.
Hair arranged with the careless precision of money pretending it had not met a mirror.
"There he is," Ruan said. "The man has adapted."
Zeth looked down at his own shirt.
"I am still dressed."
"Progress is not always dramatic."
Ruan offered him the pastry.
Zeth looked at it.
"What is that?"
"Breakfast."
"It has icing."
"I said what I said."
Zeth took it because refusing food was disrespectful and because his stomach had been pretending discipline was nutrition since five.
The lift opened.
They stepped inside with a woman carrying three laptops, a man with a yoga mat under one arm, and an older accountant who wore a waistcoat like it contained moral authority.
Ruan leaned toward Zeth.
"For the record, if we see an engineer wearing shoes today, I will salute."
Zeth kept his face straight.
"You cannot salute in a lift."
"Of course you can. You just have to commit."
The woman with the laptops smiled at the floor.
The accountant did not.
On the third floor, most of yesterday's interns got out.
Lesedi waved as she moved toward the data science section with a notebook hugged to her chest. Priya walked beside Nandi Mthembu, already asking a question that contained three smaller questions inside it. Tumi was on her phone, laughing softly at something that did not sound funny enough to deserve it.
Arno glanced back at Zeth and Ruan.
"Good luck in the basement," he said.
"Fifth floor," Ruan said.
"Same spirit."
The lift doors closed before Ruan could answer.
He nodded slowly.
"I am beginning to think Arno was raised by motivational posters and unsecured loans."
Zeth bit into the pastry to hide the laugh.
The fifth floor opened into a different Apex.
The third floor had been glass and welcome speeches. The fifth had carpet tiles, whiteboards, screens, old coffee, low voices, and the restless hum of machines pretending not to work hard.
Nobody looked up properly when the lift opened.
That unsettled Zeth more than staring would have.
On the third floor, people had assessed him. Shoes. Shirt. Accent. Watch. Confidence. Which school. Which route in. Which people he knew.
On the fifth floor, people assessed screens.
A man in a Springbok jersey stood at a whiteboard drawing boxes inside boxes. A woman with silver headphones typed with both hands and one raised eyebrow. Someone laughed from behind a monitor and said, "No, if finance built it, the button is probably decorative." Two engineers argued about a server with the emotional intensity of family inheritance.
There were no motivational posters.
There was a laminated sign above the printer that read:
IF IT IS ON FIRE, LOG A TICKET BEFORE SCREAMING.
Zeth liked the fifth floor immediately.
Then he remembered the card.
He stopped liking anything.
A man rose from a desk near the far window.
He was not tall, but he carried stillness like height. Early forties, maybe. Tired face. Closely cut hair. Shirt sleeves rolled to the elbow. No tie. No jacket. A coffee mug in his hand that looked old enough to have a pension.
He looked at Ruan first, then Zeth.
Not shoes.
Not shirt.
Eyes.
"Bekker. Mnguni."
His voice was quiet enough that people had to listen properly.
"Yes, sir," Zeth said.
Ruan lifted the pastry. "Present and lightly sugared."
The man's gaze moved to the pastry.
Then back to Ruan.
"I am Sizwe Khumalo. For the next two weeks, I am your assigned supervisor. After that, if you survive me, someone with a nicer chair will decide where to put you."
Zeth straightened.
"Good morning, sir."
"Don't sir me unless there is a client in the room or you are about to confess."
Ruan pointed at Zeth with the pastry.
"He is going to struggle with that."
"I can see."
Sizwe turned and walked without checking if they followed.
They followed.
He took them past a row of desks where people had arranged their lives into small, defensive territories. Coffee mugs. Old rugby tickets. A toy robot. A photo of two children. A stack of manuals with folded corners. One desk had nothing on it except a keyboard, two monitors, and a single green apple.
Zeth tried not to look too hungry at the monitors.
At the far end of the floor, a glass door carried a small sign:
SECURE DEVELOPMENT
Under it, in smaller letters:
AUTHORISED PERSONNEL ONLY
Sizwe tapped his card.
Green.
The door unlocked.
He held it open.
"Cards," he said.
Ruan tapped first.
Green.
"Mr Provisional Intern," Sizwe said.
Ruan stepped through. "My family is very proud."
Zeth touched his card to the reader.
For one breath, his stomach went cold.
Green.
Nothing else.
The door clicked.
Zeth entered.
Inside, the air was colder. The desks were arranged in two long islands. A cabinet of old hardware stood against one wall: routers, access pads, broken card readers, barcode scanners, small black boxes with labels curling at the edges. On another wall, a screen showed status bars for systems with names that meant nothing to Zeth yet.
Green.
Green.
Yellow.
Green.
One red square blinked, then vanished.
Zeth looked away before his face could reveal that he wanted to know why.
"Rule one," Sizwe said, stopping beside two empty desks. "You are not here to impress me."
Ruan put a hand on his chest. "That is a personal blow."
"Rule two. You are not here to prove you belong."
Zeth did not move.
Sizwe looked at him for half a second longer than he had looked at Ruan.
"Rule three. If you can see something, it does not mean you should touch it."
Nandi's voice came back from yesterday.
If you can access something, that does not mean you are authorised to use it.
Zeth nodded.
"Yes, Si..."
He caught himself.
"Yes."
Sizwe's mouth did something that was not quite a smile.
"You learn fast."
"Only when threatened."
Ruan turned to him.
"There he is."
Sizwe pointed at the desks.
"Those are yours for now. Workstations are locked down. No external drives. No personal email. No software installs. No moving code out of the sandbox. No testing clever ideas on production systems. If you don't know whether something is production, assume it is and leave it alone."
He placed two thin folders on the nearest desk.
"Your login details are inside. Change the temporary password. Do not write your new one under the keyboard. Do not write it on a sticky note. Do not tell each other. Do not make it your surname plus the year. People with degrees do this every week and then act wounded when attacked by reality."
Ruan opened his folder.
"Can I make it Arno's surname plus the year?"
"Only if you want Arno to become your threat model."
"He already is."
Sizwe looked at Zeth.
"You are laughing inside. That counts as workplace integration."
Zeth looked down.
"I was not."
"Then we have bigger problems."
For the first time since entering Apex, Zeth felt the tension in his shoulders shift by a fraction.
Not gone.
Just moved.
A woman appeared behind Sizwe with a tablet in one hand and a black notebook tucked under her arm.
She was in her thirties, with sharp eyes, short natural hair, and a green cardigan over a plain black top. She wore no badge lanyard. Her access card was clipped to her waistband like a weapon she did not need to display.
"You started without me," she said.
"They survived the first four minutes," Sizwe said. "I was encouraged."
The woman looked at Ruan, then Zeth.
"Mira Naidoo."
Zeth stood.
Ruan half-stood, realised it looked strange, then committed and stood fully.
Mira watched this without expression.
"Sit," she said.
They sat.
"I handle security analysis for this unit. Some of what passes through these systems is sensitive. Some of it is boring and sensitive, which is worse, because people become careless when they are bored."
She placed the tablet on Zeth's desk, not gently.
"If you wander, we see it. If you test a door because you are curious, we see it. If you tell yourself you were only looking, we see that too."
Ruan glanced at Sizwe.
"Is this still orientation or have we entered the threat portion?"
"All orientation is threat," Mira said.
Ruan nodded.
"Efficient."
Mira did not smile.
Zeth liked her less than Sizwe and trusted her more than most people on the floor.
That made him uncomfortable.
Sizwe handed each of them a printed sheet.
"Low-risk tickets. Internal tool bugs. You will work in the development sandbox. Read the ticket. Reproduce the issue. Fix only the issue. Write a short note on what you changed and why. Commit to your training branch. Nothing clever."
He paused.
"Especially you."
Zeth looked up.
"I have not done anything."
"That is why I am catching you early."
Ruan whispered, "Reputation speedrun."
Zeth ignored him.
The workstation was older than he expected.
Not broken. Not bad.
Just ordinary.
A black Dell tower under the desk. Two monitors, both slightly different sizes. A keyboard with shiny spacebar edges. Windows 7 with a corporate login screen and a wallpaper of the Apex logo floating over blue light.
Zeth typed the temporary password from the folder.
The system made him change it.
He made the new password ugly enough to offend memory.
The desktop loaded slowly.
Icons appeared one by one.
Apex Dev Portal
SentinelDesk
SecureDocs
Sandbox Shell
Eclipse
SQL Client
Build Monitor
Zeth read the names without touching anything.
Ruan was already clicking.
Sizwe made a sound in his throat.
Ruan froze.
"I clicked the portal."
"Was that your ticket?"
"My ticket requires the portal."
"Read the whole ticket before your fingers become leadership."
Ruan removed his hand from the mouse with ceremony.
Zeth opened his ticket.
SD-18472
Training Sandbox: Asset Register Search Returns Duplicate Rows
Priority: Low.
Assigned to: Mnguni, Zeth.
Environment: Dev / Training.
Description:
When searching the internal asset register by partial serial number, duplicate records appear for retired access hardware. Expected behaviour: show the most recent active record only.
Do not modify production data.
Do not alter role filters.
Do not update records outside the training dataset.
Zeth read it twice.
Then a third time because Sizwe had said not to prove anything.
The bug was simple.
Too simple.
It smelled like a test.
He opened the dev portal. Slow login. A security banner. A second password prompt. Then a dashboard with grey tabs and too many acronyms.
Ruan leaned back in his chair.
"My ticket says the cafeteria voucher export crashes when the surname contains an apostrophe."
Zeth looked at him.
"That is not a software bug. That is a cultural crime."
Ruan placed a hand over his heart.
"On behalf of O'Neill, O'Connor, and O'Malley families everywhere, I accept your support."
"You are Afrikaans."
"International solidarity."
The first real laugh escaped Zeth before he could stop it.
It was small.
Still his.
Across the room, Mira looked up.
The laugh died.
Ruan lowered his voice.
"She has admin rights over joy."
Zeth shook his head, but his mouth tried to betray him.
He opened the code.
The asset register lived in a training branch of an internal Java application that looked as if three generations of developers had argued with it and all of them had lost. There were tidy files beside old files. Clear comments beside cursed ones. A function that did one thing. Another that did one thing, then five more things, then apologised in a comment from 2007.
Zeth forgot the room.
That was the dangerous part.
At first he was careful because he knew he was being watched.
Then the code began speaking.
Not beautifully.
Never that.
Code was not music. People who said that had never spent three hours looking for a missing semicolon in a language that pretended to be helpful.
But code had rhythm.
It had habit.
It had lies.
The duplicate rows were not coming from the search function. They came from a join against the access hardware table. Retired devices remained linked to their old personnel assignments, and the display layer was filtering active users but not active hardware.
He wrote down the path.
`AssetRegisterSearch.java`
`AccessHardwareRepository`
`status != RETIRED`
Then he stopped.
He made himself reproduce the bug first.
Search.
Duplicate rows.
Screenshot saved to the training issue system, not desktop.
He checked the test data.
He checked the query.
He changed one filter.
Then wrote a small test because Thabo had once said a kick you could not repeat was luck, not skill. Zeth had extended that logic to almost everything.
Run.
Fail.
Good.
Fix.
Run.
Pass.
Run the broader training suite.
Pass.
He looked at the time.
Forty-three minutes.
Too fast.
He sat back.
Ruan was staring at his own screen with an expression of cheerful offence.
"Apostrophe bug?" Zeth asked.
"Worse."
"How?"
"They fixed apostrophes by deleting apostrophes."
Zeth turned slowly.
Ruan pointed at a line of code.
There it was.
`surname.replace("'", "")`
Zeth stared.
"They made O'Connor into OConnor."
"They made Ndlovu-Mthembu into NdlovuMthembu too."
"That is not in your ticket."
"No. My ticket is the crash."
"Then fix the crash."
Ruan looked wounded.
"And leave the names disrespected?"
Zeth heard Sizwe without turning.
"Fix the ticket, Bekker."
Ruan closed his mouth.
Sizwe had not looked up from his desk.
Zeth faced his own monitor again.
He opened the commit window.
His fingers hovered.
The card line rose in his mind.
ARCHIVE / LEGACY
He closed the window.
Not because of the line.
Because something in the broader test output had moved when it should have stayed still.
He scrolled back.
Most of the logs were ordinary noise.
Build paths.
Warnings.
Deprecated libraries.
Test dataset resets.
Authentication stubs.
Role simulation.
Then a line he had not noticed the first time:
`WARN RoleResolver - inherited role not found in active profile: archive_legacy_reader`
Zeth stopped.
The cursor blinked.
The line sat in the log like it had been waiting for him to become quiet enough.
He did not touch the keyboard.
He read the line again.
`archive_legacy_reader`
Legacy.
Not the same words.
Close enough to make the skin at the back of his neck tighten.
He looked around.
Ruan was muttering at the apostrophe problem.
Sizwe was on the phone, turned toward the window, saying, "No, I understand what the client requested. I am saying the client requested nonsense with confidence."
Mira was not at her desk.
Zeth looked back at the screen.
The warning had occurred during setup for the test environment, before his ticket's query ran. It had nothing to do with duplicate asset records.
He knew that.
He also knew that logs were full of unrelated nonsense. Legacy systems complained the way old houses creaked. Not every sound was a message. Sometimes a warning was only a warning.
He moved the mouse to the scroll bar.
Stopped.
No exploring.
No wandering.
If you can see something, it does not mean you should touch it.
He copied nothing.
He opened his notebook.
On a clean line beneath the ticket notes, he wrote:
`RoleResolver - archive_legacy_reader`
Then under it:
`Why on intern sandbox?`
He stared at the question.
It looked too guilty.
He drew a box around it to make it look like ordinary technical curiosity.
That made it worse.
He turned the page.
"You finished?"
Mira's voice came from behind him.
Zeth's hand closed over the notebook.
Too fast.
He knew it as he did it.
Mira's eyes moved from his hand to the screen.
Not suspicious.
Worse.
Interested.
"The duplicate search issue?" she asked.
"Yes."
"Already?"
"It was a filter."
"Most things are. People still build careers around finding the wrong one."
She leaned past him, close enough that he smelled soap, coffee, and something like rain on wool.
"Show me."
Zeth opened the test run.
Showed the failing case.
Showed the filter.
Showed the passing result.
He kept his voice even. He did not rush. He did not overexplain. He did not look at the earlier log line.
Mira listened without nodding.
When he finished, she said, "Commit it."
He did.
The commit message was plain.
`SD-18472 filter retired access hardware from asset search`
He clicked submit.
The training branch accepted it.
Mira watched the screen until the green check appeared.
"Good."
She straightened.
Zeth breathed.
Then the left panel refreshed.
It should have stayed on the asset register project.
Instead, for less than a second, the project tree expanded by itself.
A folder appeared under the root.
Grey icon.
Locked symbol.
Partial label.
`CIVIC-BBX`
Below it, one subfolder loaded before the tree collapsed.
`media_flags`
Then a file name.
Only a fragment.
`R_NKOSI.watch`
The panel snapped back.
Asset register.
Training branch.
Ordinary folders.
Zeth's mouth went dry.
He had not clicked it.
He had not searched for it.
He had not done anything.
Mira had seen.
He knew because she had stopped breathing too.
Not much.
Mira Naidoo did not seem like a person who gave away whole reactions.
But there was a pause.
Small.
Sharp.
Then her hand reached past him and took the mouse.
"Move."
Zeth moved his chair back.
Ruan looked over.
"Everything okay?"
"Eyes on your ticket," Mira said.
Ruan's chair turned back immediately.
Mira clicked through the dev portal faster than Zeth could follow. Logs. Profile. Session. Role cache. Ticket link. Build trace. Her face did not change, but her fingers were angry.
Sizwe's phone call had gone quiet.
Zeth felt him looking from across the room.
Mira opened the issue queue.
The ticket Zeth had just completed sat at the top with a green status.
She selected it.
Deleted assignment.
Deleted training branch link.
Closed related logs.
The green check vanished from Zeth's queue.
The screen refreshed.
No active tickets assigned.
Zeth heard his own heartbeat.
"What was that folder?" he asked.
Mira did not look at him.
"A display artefact."
"It had a lock icon."
"Many artefacts are ambitious."
"It had a label."
Now she looked at him.
Her eyes were not angry.
That was the frightening thing.
They were measuring him.
"What did you click?"
"Nothing."
"Don't answer quickly."
Zeth swallowed.
"I ran the test suite for the ticket. I committed the fix. The project panel refreshed by itself."
"Did you search for that label?"
"No."
"Did you access a restricted directory?"
"No."
"Did you write anything down?"
His hand was still half over the notebook.
He moved it away.
Not because hiding was useless.
Because hiding badly was worse.
Mira saw the line.
`RoleResolver - archive_legacy_reader`
Her expression closed.
"That was in the log," Zeth said.
"I can read."
"Then you know I did not invent it."
The sentence left his mouth before discipline could catch it.
Across the room, Sizwe lowered the phone from his ear.
Mira did not blink.
"Mr Mnguni."
The formal address hit harder than shouting.
"This is not university. This is not a puzzle room. This is not a dojo where the smartest person wins because he sees the opening first."
Zeth's jaw tightened.
Dojo.
It was not a random word.
He was sure of that.
Mira continued.
"You are an intern in a secure development environment. Your responsibility is to complete assigned work and report anomalies through your supervisor. You do not collect strange strings. You do not build private theories. You do not turn curiosity into evidence."
Ruan had gone very still at his desk.
The whole room had not stopped, but Zeth could feel the small circle around him changing pressure.
He placed both hands flat on the desk.
"I saw a permissions warning after an access-card anomaly yesterday."
Mira's face sharpened.
Sizwe's did not move.
Zeth knew, immediately, that he had said too much.
But the words were out.
And because they were out, pride tried to dress them as strategy.
"My card displayed an access class for less than a second during activation," he said. "Archive slash legacy. Then today the logs referenced archive legacy reader. Then a locked folder appeared in my project tree. I did not access it. I wrote down the warning because it is a pattern."
Silence.
Not the whole floor.
Just the part of the world that had become Zeth's desk.
Mira looked at Sizwe.
He looked back.
Something passed between them.
Not surprise.
Recognition.
That was worse.
Mira closed Zeth's notebook.
"You will not write that string again."
"It already appeared."
"And now it is handled."
"By deleting my ticket?"
"By removing a bad training assignment."
"The bug was real."
"Many real things are still not yours."
Zeth looked at the screen.
No active tickets assigned.
Clean.
As if he had done nothing.
That bothered him more than the warning.
"Do I get a new ticket?"
Mira's mouth almost softened.
Almost.
"No."
Ruan made a small sound, then pretended to cough.
Mira turned to him.
"Mr Bekker."
"Yes."
"How is the apostrophe issue?"
"Respectfully, still rude."
"Fix only the crash."
"Understood."
She turned back to Zeth.
"You will spend the rest of the morning reading the secure development guidelines."
"I read them yesterday."
"Then today you will enjoy the sequel."
She took the mouse again and opened a document from the desktop.
Apex Sentinel Secure Development Guidelines
Version 4.7.
Two hundred and thirty-one pages.
Zeth stared at it.
Ruan turned his face away so completely that his shoulders shook.
Mira leaned closer, voice lower.
"Listen carefully."
Zeth looked at her.
"If you see a strange folder, you report it. If you see a strange role, you report it. If a door opens that should not open, you do not step through to prove you are observant. You step back."
"I stepped back."
"Good."
She straightened.
"Keep doing that."
For a second, he thought she was finished.
Then she added:
"And forget what you saw."
The words landed too neatly.
Not advice.
Not a warning.
A practiced sentence.
Mira walked away with his ticket gone and his notebook line still alive under the cover.
Zeth looked at the secure development guidelines.
Page one explained the purpose of access control.
He did not read it.
On the other side of the desk island, Sizwe Khumalo lifted his old coffee mug and took a sip without looking away from him.
Ruan waited until Mira was far enough.
Then he rolled his chair closer by two quiet pushes.
"I have questions," he whispered.
Zeth did not turn.
"Don't."
"I said I have them. I did not say I was brave enough to ask."
Zeth kept his eyes on the screen.
The document blurred.
Two hundred and thirty-one pages of policy sat in front of him, explaining the difference between access and permission.
His completed ticket was gone.
His branch link was gone.
The log view was gone.
The folder was gone.
But in his notebook, under the closed cover, the wrong line waited.
In his head, another line sat beside it.
`CIVIC-BBX`
The locked folder had disappeared.
It had still looked back.