Chapter 6
Flag
Ch6 〈Flag〉
Lumen Pulse notifications sound different from Slack.
Slack is dry. One ping, like someone tapping lightly on a desk. Pulse is shorter, goes deeper, like a small question that ends before it’s finished. I heard it about half an hour after standup ended — I’d just pushed yesterday’s branch, was opening #feelings-check-in to pick today’s weather emoji — when I heard that sound.
A notification banner appeared in the corner of my screen:
Lumen Pulse: You have a new Flag.
My hand hovered over ☀️. I didn’t press it.
The banner sat there a few seconds, then disappeared. I turned my phone over, opened the Pulse app, tapped in.
It was the third day after the offsite. Thursday morning. Outside the Nangang windows the sky was that kind of thin blue, the glass curtain walls of the office towers cutting the light into sections, falling across the row of desks by the windows on the engineering side. White noise from the AC. Occasional keyboard sounds. Slack pinged — someone else’s, nothing to do with me, coming from somewhere off to the side.
The card in Pulse had an off-white background, a very thin border, a calm design, like the envelope of a letter waiting to be opened. Gray text at the top: “From an anonymous colleague.” Two fields below:
Observation: You seem to hold back in some discussions. I’m curious whether you have more thoughts you could share.
What I’d like to understand: If there are situations where you feel hesitant, I’d love to talk further.
I read it once.
Then I closed the app.
Then I opened #feelings-check-in, hovered between ☀️ and 🌤 for a few seconds, finally pressed ☀️, sent it.
Then I opened Pulse again and read the card again.
“You seem to hold back in some discussions.”
Which discussion. Which specific discussion. I ran through the past two weeks in my head — standups, Code Reviews, Retros — and nothing stood out as a moment where I’d felt particularly reserved. Or rather, I held back in every conversation. That’s how I talk. It always has been. So which instance had made someone decide that the level of holding back was worth writing a Flag about?
And who.
That “anonymous colleague” was sitting somewhere in this office right now, maybe within my line of sight, maybe remote. They knew they’d written it. They knew I could see this card. But they didn’t know I was looking at it now. That asymmetry existed in this moment, making my skin feel slightly tight, like the temperature at the back of my neck had dropped a fraction.
I placed my phone face-down at the edge of my desk.
Opened the code editor. Went back to the auth service branch I hadn’t finished yesterday. Moved the cursor to where I’d stopped. Let my fingers find the keyboard.
About half an hour later, I turned the phone over, opened Pulse, looked at the card again, closed it, went back to writing code.
A little while after that, I turned the phone over, opened Pulse. The card was still there. Closed it. Placed the phone face-down again.
I recognized the shape of this loop. It was the same shape as the old habit of opening my notes app to confirm that those words were still there. I was confirming it still existed. Confirming the thing was still real. Confirming I hadn’t misread it.
Then Jasper said from the adjacent desk, “You eat lunch yet?” I said no. He said, “That place downstairs changed chefs recently.” I said, “Sure, just a minute.” I wrote ten more lines of code. He stood up. I grabbed my laptop and we went downstairs. I had a bowl of clam noodles. The noodles were ordinary. The clams had opened perfectly.
When we got back, I spent the rest of the afternoon finishing the whole branch, pushed it, and @ Felix in Slack to say it was ready for review. Felix sent back a ✅. An hour later he left three comments, precise in phrasing, then said, “Thanks, I’ve looked through it, no issues, go ahead and merge.”
After six I left the office. Took the MRT back to Da’an. Didn’t open Pulse the whole way. Just checked my phone for other messages in the elevator. Nothing.
The 1-on-1 was Thursday at three, in Clarity, the glass-walled meeting room.
Deanna was already inside. Paper notebook on the table, pen beside it, cap on. She was wearing a deep orange top today. Sunlight came in at an angle through the glass, landing on her right shoulder; she hadn’t noticed, was turning to a page in her notebook, head slightly lowered. I paused at the doorway for about a second. Then pushed in and let the door close behind me.
“Hi,” she said, looking up, her gaze holding its characteristic quality — the texture of I am genuinely listening — calm and steady at this temperature.
I sat down across from her. No laptop. Hands on the table, folded together, the default position my hands go to when I don’t have a computer.
“How’s work going lately?” she said, tone light, like she was checking a temperature, not administering a test.
“Fine,” I said. “The auth service has a token management refactor. The architecture is a bit more complex than I expected, but the direction is right. Felix reviewed it today, it can go into the next sprint.”
She nodded — a solid nod, like she’d actually registered it. She picked up her pen and wrote something in the notebook. From across the table I couldn’t see what, only her hand moving.
“That error-handling thing from last sprint — did you end up checking the architecture?” she asked.
“Yes. Felix said it’s fundamentally sound,” I said. “He used the phrase ‘learning moment.’”
She heard that, and the corner of her mouth moved slightly — the subtle response of someone who has long since made peace with a familiar pattern. “He means it,” she said. “For him, that phrase is a genuine assessment.”
I said, “I know,” and that was true. Felix had never said “learning moment” with condescension. That was what made it harder to deal with.
She wrote a bit more in the notebook, then put the pen down, turned a page. There was text on it, but from my angle I couldn’t read any of it.
“I saw you recently received a Flag,” she said. Her tone didn’t adjust — the weight was the same as when she talked about technical issues. “What’s your read on it?”
This question had been waiting for me since Thursday morning, from the moment that card appeared in Pulse. But when I heard it spoken out loud, there was still a one-second pause. Something in me went still, my body moving faster than my thinking.
“Maybe a little,” I said.
The moment those words were out, I noticed how quickly I’d said them. Fast enough that they didn’t sound like something I’d worked out in that moment. More like something retrieved from a place that had been ready. Maybe I’d been preparing since yesterday morning — keeping that answer somewhere accessible, knowing Deanna would bring this up.
Deanna didn’t respond immediately. She let those words sit on the table for a moment, as if gauging their weight, confirming whether they were real, whether this was the answer I was giving her or the answer I thought I ought to give.
“I appreciate your honesty,” she said.
The words were precise, unembellished — she placed the evaluation directly on the table, like setting down something that amounted to a confirmation. The paper notebook was beside her. She picked up the pen, wrote something in it, put it back down.
“This Flag says you hold back in discussions,” she said, slowing her pace slightly. “I want you to know: if there’s something you want to say, this is your space.”
She gave a small nod toward the notebook. “This is my personal notebook. Nothing goes on the record.”
I said, “Thank you.” Not fast, not slow. Just said it.
She nodded, then moved on — next month’s OKR review, a new tool the engineering team was evaluating, a task I might take on next sprint. I followed the conversation, my rhythm returning, whatever had briefly opened quietly settling back into place. The remaining half hour was concrete things, plannable things, trackable things.
Leaving Clarity, I took a step into the hallway and stopped.
I had just confirmed something I wasn’t sure was true.
What the Flag said — “you seem to hold back in some discussions” — I didn’t know if it was true, or accurate, or fair, or a meaningful observation, or just one person’s impression formed in one specific context. It didn’t necessarily represent every situation, didn’t necessarily represent me. But I’d said “maybe a little.” Those words had been spoken now. Deanna had heard them. She’d written them into the notebook she said wouldn’t enter the system. She’d validated them with “I appreciate your honesty.” The Flag’s outline had shifted from an observation by someone I didn’t know into something I’d confirmed with my own words.
I let that weight sit there. Started walking back toward my desk.
Later that same afternoon, close to five, Slack popped a DM notification.
Wen-Kai: Got a minute?
I glanced over. His desk was diagonally behind me. He wasn’t looking at me — eyes on his screen, waiting.
I replied: Sure, where
Break room
I got up, pocketed my phone, navigated around the desks, turned the corner, headed to the break room. Same floor, through the corridor, turn right — coffee machine on the right, counter on the left, daylight coming in from the windows on the corridor side, angled westward at this hour, slightly orange.
Wen-Kai was already there, leaning against the counter, no cup, the indoor lighting leaving faint reflections on his glasses, a small glint in the corner of the right lens. He occupied exactly as much space as he needed, just standing there, letting time pass.
I came closer. He didn’t turn his head, just let his gaze drift a little toward me.
“That Flag,” he said. No preamble — he started there. “Was it you who flagged me?”
“No,” I said.
He nodded once. Pushed his glasses up.
“Okay,” he said. “I’m not upset. I just wanted to know.”
“I know.”
Silence sat there for two or three seconds. It was his silence; he was used to letting it exist, not filling it with anything. I looked at his profile. His gaze rested on the white wall across from the counter. There was a small screw hole in it that hadn’t been covered up, bare, ordinary.
“That one—” he said. Didn’t continue.
He paused. Pushed his glasses up again. Paused more. Finally left the sentence unfinished.
“I got one too,” I said.
His head made a small movement, barely a nod, then his gaze returned to the white wall.
“Right,” he said, very quiet. Almost talking to himself.
Then he pushed off from the counter and walked back toward the desks. His footsteps were his own — unhurried, steady, nothing added, nothing missing. He turned the corner at the corridor and was gone.
I stood in the break room. Hands in my pockets. My phone hard in my palm.
He was looking for who wrote it. I was looking for who wrote it. That “I just wanted to know” tone — the way he’d put the question directly out there — I recognized what was underneath it. He was standing in the same anonymous question I was. He also wanted a face to put to it, wanted to give back that observation from nowhere to the address it belonged to.
We were doing the same thing. Standing in the same break room. That close. Said a few short sentences. Then he left.
I didn’t like this.
That “didn’t like” was quiet. Nothing erupted. Just a flat, tired disliking, placed somewhere, staying there.
After that, I started watching people.
I didn’t decide to do it. At some point I realized I’d been doing it all along.
Theo left a comment in a Code Review asking about “the decision logic at edge cases,” phrasing that was slightly formal, including the word “transparency” — which made me pause internally. That wasn’t his usual vocabulary. Theo normally used more direct technical language, said “how do you handle this case” rather than “decision transparency.” I looked at that comment an extra beat, wondering where he’d come across that word, then kept scrolling.
Jasper was giving his standup update when he skipped a detail — naturally, just moved past it, kept talking. But I caught the gap. The detail was about a conversation he’d had with another team, and he didn’t say how it had gone, just kept going with other things. I paused at that unsaid part and wondered what had made him decide not to say it here.
Clio posted a comment in #eng-general. Someone replied. She read it within three minutes — but didn’t respond for over thirty. I noticed the gap in the middle, the kind most people wouldn’t track, but I tracked it. I found myself wondering what decision she’d made in those thirty minutes that made her wait.
Then there was a Slack message from Felix.
He’d posted a PR comment in #eng-code-review — standard technical feedback: “This error case handling logic could be pulled up a level, so the caller doesn’t need to know this detail.” Followed by an emoji: 🌱.
That 🌱 sat there at the end of a technical comment. The generic growth symbol. Not pointed at anything in particular, just there.
I looked at that 🌱 and thought: does he actually mean that.
What the 🌱 made me think was: does he actually mean it — did he use that symbol because in that moment he genuinely felt “this is a review worth growing from,” or because that symbol was an appropriate choice, suitable in that kind of context, so he put it there without much thought.
I moved my hands off the keyboard, leaned back in my chair, looked up at the edge of the LED lights on the office ceiling.
Then I realized what I’d just been doing.
I’d been analyzing Felix’s emoji.
I’d been taking everyone’s Slack behavior, the phrasing in their Code Review comments, the way they spoke in standups, their message read times and response times, and organizing it all into data points I could reverse-engineer. Looking for a matchable pattern. Looking for the profile of “someone sensitive to this kind of thing who would also put it in a Flag.” Looking for the silhouette of the person who’d written “you seem to hold back.”
What I was doing — this systematic observation and analysis — was exactly what Lumen Pulse was designed to encourage. Watch your colleagues. Form a judgment. Use the channel the system provides to say it. I hadn’t opened Pulse. I wasn’t planning to write anything. But what I was doing ran on the same internal logic as that design.
I stayed leaned back in my chair for about thirty seconds, looking at the ceiling lights.
Then I sat up and kept analyzing.
The pause had existed. I’d registered what I was doing. Then I’d continued anyway. The reason for continuing never clarified into a sentence — it was just a continuing. A motion of hands returning to keyboard. A motion of fingers still searching in a text field. Tired. Like doing something you don’t want to do but haven’t stopped doing.
Friday morning. Yolanda’s message appeared in #general.
The format was a blue block with white text — her style for important announcements, the same as the day Pulse went live.
Salary Transparency — First Launch 🌱
Lumenra today officially launches its salary transparency initiative. All current employees’ job levels, salary bands, dates of last adjustment, and quarterly adjustment percentages are now viewable on Notion. Everyone can see their own complete information and also see the overall distribution.
(Notion link attached)
Clio replied below: “This moment finally arrived 💚 Thank you to everyone who pushed for salary transparency!”
Theo gave a ✅.
Felix also gave a ✅, right below Theo’s. Two ✅s lined up together, like the most compressed version of consensus.
I clicked the link.
The Notion page loaded. Table format. Clean. Each row a job level, each column a level code, title, salary band (monthly, NT$), date of last adjustment, quarterly adjustment percentage. Level codes ran E1 to E6 for the engineering track and M1 to M4 for management. No names, but at a company this size, the mapping between level and person was something most people already knew.
I found my row. E3, mid-to-senior backend engineer, NT$80,000–110,000, last adjusted three months ago, quarterly adjustment 0–8%.
I looked at that number. Confirmed it was the number I knew. Then moved my gaze down.
E4. Senior engineer. NT$110,000–155,000. Theo’s level — he’d been here longer than me, which made sense.
Further down. E5. Senior data engineer. NT$155,000–210,000. Felix was probably here — he’d been at Lumenra more than five years. E5 or E6, somewhere in that range.
I scrolled back up to E2 — new engineer level, NT$65,000–85,000. Wen-Kai had just joined; he was probably at E2.
Scrolled down to the M track. M2 was NT$130,000–180,000, M3 was NT$180,000–240,000. Deanna was a manager; I didn’t know her exact level, but she had a management title — probably somewhere between M2 and M3.
I paused mid-scroll.
I was looking.
The fact itself — that I was looking at other people’s numbers — I hadn’t been asked to do this. I could close the Notion page right now, confirm only my own row, and get on with the day. But I didn’t close it. I let the cursor keep moving through the page, let those band numbers pass through my eyes.
There was a faint sense of usefulness in doing this. Knowing where everyone else sat gave me an anchor point. When raise time came around, there’d be something to compare to. I’d know whether what I was asking for was reasonable. I’d know roughly where the ceiling was in this system. That sense of usefulness was real. It was what kept me scrolling.
I closed the Notion page. Closed the Slack channel.
Pulse was other people looking at me. The salary wall was me looking at other people.
The paperclip on the right side of my desk was still in its place. I glanced at it. It was just there. Nobody had moved it. No reason to move it. Just there.
The bathroom was at the far end of the work area, past a turn, dark gray door, metal handle, full-height, visible from the corridor when you turned in.
I pushed through and let the door close behind me.
The sound of the latch was metal catching metal. Small. Certain.
The office white noise — keyboards, Slack pings, footsteps in the corridor, the background hum of AC cycling — filtered out the moment the door closed, leaving a very thin layer coming through the wall from the other side, barely perceptible.
The exhaust fan ran overhead. That fixed low frequency, continuous, there regardless of conditions.
I walked to the sink, turned the faucet, let the water run, put my hands in. Cool. The hand soap was orange-scented, I pumped once, worked it in, and the smell came up — familiar, this bathroom had always smelled like this, since my first week, my nose had long since stopped registering it specially. But today I noticed it. The orange scent was light, not very sweet, stayed briefly and dispersed.
Water rinsed clean. Paper towel. Dried.
Then I raised my head. Looked at the mirror.
LED white light coming straight down from above, no color cast, no shadow, everything even, every detail visible. The mirror held me. Dark under my eyes — had that come in today or was it older than today, I couldn’t tell from the mirror, I just knew it was there. The lines of my forehead heavier than the version I usually pictured when I thought “my face.” A crease between my brows, faint, not from today’s frowning. The corners of my mouth angled down — that was their resting position, where they settled when I wasn’t doing anything.
That wasn’t today’s tiredness.
I couldn’t calculate how long it had been there.
Used paper towel went in the bin. My hands came down. Hung at my sides.
My feet didn’t move.
My hands didn’t reach for my phone, didn’t go to my pockets — they just hung there. The next action after finishing at the sink didn’t happen. My body chose to stay here.
The exhaust fan kept running overhead.
The light kept on.
The person in the mirror: still.
Outside there was a language used for speaking — praise and observations, 1-on-1s and Retros, Feelings Wheel and Pulse, the question of which weather emoji to pick, sentences like “you seem to hold back in discussions,” sentences like “I appreciate your honesty,” Notion spreadsheets and salary bands and level codes, read-times and response-times, a complete set of formats for watching and being watched. That language lived on the other side of the door. On this side, only the exhaust fan and orange soap and a metal handle and one of me.
No one could see in here.
The thought arrived flatly — a confirmation: the bathroom was the only non-transparent space in the office. That fact, on this Friday afternoon, came to me in exactly this way. Glass meeting rooms: transparent. Open desks: transparent. The break room: transparent. Even Slack message read times: transparent. Behind this door was the place without format. Just a space of white light and an exhaust fan and orange soap.
The eyes in the mirror stayed where they were.
Something in my chest rose very slightly, like something about to speak — then didn’t finish rising. Settled back.
He stood there. For a while. The exhaust fan ran. The light stayed on. Sound came through from the other side of the wall, thin, almost absent but not entirely absent. The stillness continued, continued to a point that wasn’t calculated.
Then a hand moved. The door opened. He walked out.
Back at the desk. Sat down in the chair, let the backrest take some weight.
The screen was on. Code editor sitting on the branch from the afternoon, cursor blinking at where I’d stopped, waiting. I looked at the characters. Didn’t immediately continue.
The light outside the window was that Friday-afternoon orange. The glass curtain walls of the office building across the way caught it and reflected it back, and the whole workspace was tinted faintly warm — not obvious, but there.
I didn’t open Pulse.
I picked my phone up from the desk edge, opened the notes app.
Twelve entries, spaced across different points since I’d joined. Some just one line, some a few. All quiet observations, sitting there. I scrolled to the top — to the space before the first entry, where the one I’d written in that first month and deleted late one night had been. The gap it left was still a gap. Just a cursor waiting in blank space.
I long-pressed the ”+” in the top right. New note.
The cursor blinked in an empty page.
I typed those four things. No hesitation, no rushing. One word at a time, letting them come out from somewhere they’d always been kept, placing them somewhere they could be seen.
I knew who altered the quarterly report at my previous company. I saw the original version. I didn’t speak up. I chose to leave.
That was two years ago. Eleventh floor of an office building in Neihu, three in the afternoon. That person in his office, screen angled away from where I could see it. His back. Him saying, “Let’s use this version for now.” The numbers in that version. Knowing what the original numbers had been. The distance between those two numbers. The meaning of that distance.
I hadn’t asked. I went back to my work. Some time later I wrote a resignation letter: “Seeking personal growth opportunities, deeply grateful for the company’s support over this time.” That was true. It wasn’t the whole truth.
I read those four sentences back once.
That was how it was. Knew. Saw. Didn’t speak. Left. The sequence was accurate. The structure was clear. Nothing needed explaining. I’d placed it here. Let it stay here.
I didn’t delete it.
Flipped the phone face-down at the edge of the desk.
Put my hands back on the keyboard. Went back to the branch, cursor picking up from where it had sat, moving forward, line by line, until before the end of the day I’d written the rest, pushed it, closed the code editor.
Cleared the desk, stood up, shouldered my backpack, walked toward the elevators.
The elevator door opened, I stepped in, the mirrors returned my profile, the floor numbers descending. Lobby of the office building, the security desk, glass doors, pushed out. Outside was Nangang on a Friday evening — a little cool, people on the street, a street stall setting up, ordinary, regular.
MRT station. Platform.
The train came. Doors opened. I found a seat, set my backpack on my lap, let its weight settle against my legs. That weight was solid. The kind you can calculate.
I didn’t take out my phone.
Left it face-down beside my backpack. Let those words stay where they were. Let the train move toward Da’an. Let the station names come one by one. Let this Thursday-into-Friday close out from my side of things.
Loading comments…