voxen

Chapter 8: The Failure Case

I stared at the empty space beside Expected until the word stopped looking like English.

Then I closed the test plan.

Not because I had an answer. Because writing down the first plausible one just to make the field look finished would have been worse than leaving it blank.

I opened the prototype on my laptop and loaded a synthetic patient record. No names, no clinic data—just the test entry I had made for this kind of review. The allergy section was complete. I could see its contents, the last synchronization time, and the status I had designed to tell a user the section was available.

I duplicated the record, then changed the test conditions. Instead of letting synchronization finish, I interrupted it halfway through.

The screen refreshed.

The allergy section appeared empty.

I leaned closer. There was a timestamp in the corner, but nothing beside the section itself to say its data had failed to arrive. It looked like a blank field. A busy person moving through a screen could read that blank as an answer.

I didn’t know whether anyone would make that mistake. The reviewer wasn’t saying anyone had. That was the point: I had built a situation I hadn’t tested, and the interface wasn’t telling me what it meant.

I tried again, this time stopping the connection at a different moment. The same section came back empty. I reconnected and waited for the record to update. It filled in. Then I repeated the interruption, reloaded the page, and watched the empty space appear again.

My stomach tightened.

A failure didn’t have to make the whole system crash. Sometimes it only had to make an incomplete thing look complete.

I opened the test plan again.

Under Observed behavior, I wrote: In the prototype, an interrupted synchronization can leave the allergy section unavailable while the interface displays an empty field.

I paused, then added: This is a synthetic-data test. No clinic record was involved.

The distinction mattered. So did not hiding behind it. The test did not prove that anyone had been misled, but it showed me a design gap I needed to understand before anyone considered relying on the prototype.

My phone buzzed beside the keyboard. A message from Mom showed on the lock screen: No pressure about the weekend. Let me know what you decide.

I turned the phone facedown.

That conversation could wait. This one couldn’t—not because Meridian had given me a deadline, but because I had found a question that deserved a careful answer.

I took a breath and searched through the prototype’s synchronization code. The record had an overall status, but each section didn’t have its own. I had assumed that if the record was marked available, its contents would be available too. That assumption had held for every test I’d run.

The interrupted-sync case broke it.

I followed the data flow from the point where a record arrived to the point where the screen decided what to show. The code was tidy enough to look reassuring. That made me more suspicious of it, not less.

A message from the project coordinator appeared in my inbox. The subject line read: Reviewer follow-up.

I opened it.

The reviewer had restated the question in different words: Could the interface distinguish information that was confirmed empty from information that had not arrived? If not, what change would be needed before a limited evaluation could even be discussed further?

There was no demand for an instant fix. No mention of a launch date. Just a clear question and a request for a responsible answer.

I started a reply, deleted it, and began again.

I have reproduced the display issue with synthetic records and an interrupted synchronization. The current interface does not reliably distinguish an empty section from an unavailable one. I’m reviewing the status model and will propose a test plan. I would not recommend using the current version in an evaluation involving clinic staff.

I read it over. The sentences felt too blunt and not blunt enough at the same time.

I sent it.

A few minutes later, the coordinator replied that an engineer familiar with the sync layer was available for a short technical discussion. Did I want to join?

I looked at the clock, then at the unfinished plan. I didn’t have to turn a conversation into a commitment. I could ask a question and keep the pilot proposal exactly where it was: a proposal, still unapproved, with no agreement from me to take on additional work.

I said yes to the discussion.

The engineer joined by video from a Meridian office. Her name was Priya, and she asked me to share my screen.

“Show me the test that produced the empty section,” she said.

I walked her through it without calling it a deployment issue or claiming it affected any clinic. I showed her the synthetic record, the interrupted transfer, and the screen after the refresh.

She leaned toward her monitor.

“Does the record-level status update before every section finishes?” she asked.

“I think it might.”

“Let’s see.”

We traced the sequence together. My prototype marked the record as received when the first part of the response arrived. The interface then drew the sections it had. If a later part didn’t arrive, an absent section had no separate status to tell the screen—or the user—what had happened.

Priya didn’t tell me the fix was obvious. She asked whether I had a record-level completeness flag, whether my test repeated after a reload, and what the interface should do if one section was current but another wasn’t.

I had answers for some of those questions. For the rest, I wrote them down.

We sketched a possible approach: track availability by section, and make an unavailable section visibly different from a confirmed empty one. If required data had not arrived, the interface should say so plainly and avoid presenting the record as complete. A timestamp could help users understand when available information was last received, but a timestamp alone would not solve the ambiguity.

“Even with that,” Priya said, “we’d need to test the behavior. Including what happens after reconnecting and refreshing. And we’d want review from the people who would use it.”

“I agree.”

“What would you make the expected result?”

I looked at the test plan.

“An interrupted transfer never renders unavailable allergy information as a confirmed blank,” I said. “The section stays visibly unavailable until the data is verified. And if the record is incomplete, the screen says that instead of letting the rest of the page imply it’s complete.”

“Good,” she said. “Now write tests that could prove you wrong.”

That sentence stayed with me after the call ended.

I wrote the first expected result, then made a list of conditions: interrupt before the section arrives; interrupt after some sections arrive; reconnect; reload; let the next synchronization fail; compare a confirmed empty section against one with missing data. I added a separate line for stale information, because a warning that disappeared too early could create a different kind of false confidence.

The plan was not a solution. It was a way to find out whether the proposed changes solved the problem without quietly creating another one.

I sent the draft to the coordinator and asked that any further review remain focused on the design and its limits. I didn’t want the graduation video folded into a project summary or used to tell some tidy story about the CEO rescuing me. My job was not a rescue. This work did not need a family spectacle attached to it to matter.

The coordinator replied that the boundary was noted.

I returned to the test plan. More than once, I caught myself reaching for a confident phrase where a careful one belonged. I changed fixed to proposed. I changed safe to not yet validated. The prototype could still be useful. It could also still be wrong in ways I had not found.

Near midday, I checked the onboarding email I had saved the day before. My start-date logistics remained as written in my signed agreement. The position was separate from the possible project. I read that twice, not because I doubted the email, but because my mind kept trying to make the two things one complicated bargain.

They weren’t.

I could tell Meridian the prototype needed more work without risking the job I had already earned. I could also decline extra work if the terms or timing didn’t make sense. Remembering that made it easier to be honest about the project.

My phone buzzed again. This time it was a message from Vanessa.

I saw the family text. I’m not asking you to answer me. I wanted you to know I meant what I told Dad.

I read it and set the phone down. I didn’t know what I wanted to say, so I didn’t pretend I did.

The test plan still needed work. The weekend invitation still had no answer. One honest decision did not make the rest of my life simple.

I added a final note to the document: No pilot testing or use with clinic records until the failure behavior is reviewed and the necessary approvals are in place.

Then I attached the plan to an email.

Before I could send it, another message came in from the coordinator. The internal reviewers had found time to meet. They wanted me to walk them through the issue and my proposed test approach.

The review was scheduled for the next morning.

I looked back at the cases I had listed. I had not run them all. I hadn’t even finished defining what the system should do when some sections were current and others were not.

May you like

I sent the plan anyway, clearly labeled draft.

On my screen, the word Expected no longer sat beside an empty space. It sat beside a test I still had to prove.

Related Stories

Other posts