Work Text:
Reeve rubbed his eyes. He had a cracking headache. His desk was littered with empty ramen bowls and energy drink cans, and the aroma was giving him flashbacks to his student days. Outside the Shinra building, he could hear the rattle of the first morning train. 5AM, already. He groaned. He'd been up all night, working on Cait's AI. He scowled at the small, innocent-looking robot on his desk: a fluffy cat with booties. Its face was blank. He was not fooled. By now, he knew that the cat was both sentient and filled with the hatred of a thousand burning supernovae. It was the only explanation.
Twelve hours earlier, Reeve had thought he'd sketched out enough of the code to begin trying to behaviourally condition Cait. Ha. O', the folly of youth...
He'd started with an open-ended, flexible setup. He figured he'd just let Cait do what it liked, and when he wanted to prevent a behaviour, he would associate it with a negative stimulus. So Reeve kept it simple. If Cait did something he didn't like, he'd say 'NO', and Cait's microphone would pick it up. He sketched out some code to tell Cait to avoid NOs, and they were off.
In theory.
First problem: this got tiring, fast. Cait's microphone wasn't sensitive; Reeve had to shout. And he found he had to yell 'NO' at Cait every two seconds, as the robot made high-pitched shrieking sounds, bashed into walls, and tried to break things. The shouting was hard on Reeve's throat. But there was worse to come.
It turned out that the high-pitched shrieking interfered with Cait's microphone, to the point where Cait couldn't detect Reeve's 'NO' at all. So, Cait learned that shrieking was a pretty great idea, and soon people from all over the building were hammering on Reeve's door. Reeve frantically tried to corner the robot, so he could disable it manually. It could no longer pick up his voice commands, unless he stood very close; Cait's algorithm took this as a sign it should get as far away from Reeve as possible. Soon, it was zooming around the room.
He finally managed to tackle Cait to the floor, almost breaking his own neck, and disabled its speakers. He tried again. This attempt was less painful, but just as useless-- Cait swiftly learned that the simplest way to avoid a 'NO' was to turn itself off.
Reeve was going to need a different strategy.
He limited Cait's scope. He decided to focus on collision-detection. He disabled most behaviours, and recoded the behaviour-modifier-- instead of listening for his 'NO', Cait would receive negative feedback every time its sensors detected that they'd bumped into a wall. Cait only had sensors in its head and torso, so it wasn't perfect, but Reeve adjusted for that by instructing Cait to lean in the direction of travel. He also made sure to disable Cait's ability to power itself down. He massaged his throat. Then he ran the code.
At first, Reeve was hopeful. Cait hit the walls a lot, then hit them less. Finally! But Reeve soon noticed something odd. Cait started moving more and more slowly. Reeve turned Cait off, investigated the circuits, the battery-- nope, all fine. He turned Cait back on again, restarted the program, and again, Cait started out fast but quickly slowed down. Was it some kind of memory issue? As he pondered, Cait knocked into the wall again, then came to a total stop. Reeve wondered if the robot was damaged. Then he realised.
The ragamuffin's learning that if he doesn't move , he can't move into a wall!
Reeve glared at the cat. He added a line to its program, that more or less said, "AND YOU HAVE TO MOVE."
Cait twitched.
Reeve amended the code: "YOU HAVE TO MOVE FASTER THAN THAT."
Cait flailed his arms.
"YOU HAVE TO WALK AND YOU HAVE TO WALK FAST."
This seemed to work. Cait began shuffling around once more. Reeve allowed himself a smile.
But his relief was shortlived. All Cait had to do was avoid hitting the walls; it wasn't long before he found a nice spot in the middle of the room and started spinning in circles.
"Argh!"
Reeve added more rules. Cait walked in more directions, this time-- but, wait, he was hitting the walls all the time now! Reeve waited for the collision-rate to lower, but it stayed the same. What now?
Reeve noticed that Cait was moving strangely; walking sideways, with his left side first.
Every time he hits the wall, he hits it with the same place...
Reeve ran a diagnostics check. Sure enough, Cait's left shoulder sensor was broken.
He groaned out loud. Though it was almost progress.
He replaced the sensor, grit his teeth, and turned Cait on again. The cat might hate him, but Reeve would win. He was secretly excited to see what fresh hell the little beastie would throw at him next.
Cait ambled around, hit the walls a lot, then hit them less. Reeve dared to feel hope. Had he cracked it?
He noticed Cait was moving with an odd, jerky rhythm. He looked at the cat tenderly. What now? Cait stopped walking and started vibrating on the spot. Again, Reeve briefly suspected a mechanical fault, before he realised that Cait was just busy tricking his motion sensors into thinking he was walking.
... And that was as far as Reeve had got. The dawn light was now trickling through his office window, birds chirping, but he couldn't sleep yet-- not until he beat this tiny troll of his own making.
"C'mon, Cait..." He reduced the upper volume limit on Cait's speaker, then re-enabled it. "Work with me, here, why don't you?"
"Shall I tell your fortune?" said Cait.
"Sure," said Reeve, surprised.
Cait looked at him for a long moment, then detached his legs from his torso, disabling all collision-sensors, and walked his disembodied legs into the wall.
