← Back to Blog
Building in Public

When 75% Turns Out to Mean 100%

christian crumlish•
A robot tortoise moving steadily forward, embodying the lesson that deliberate pace reaches full completion.
“…and we’re done.”

When 75% Turns Out to Mean 100%

October 5, 2025

Sunday morning at 7:39 AM, my Chief Architect started reviewing what needed to happen to finish GREAT-4. Intent classification was working — we had that much confirmed from GREAT-3’s plugin architecture completion the day before. But we needed comprehensive pattern coverage, proper documentation, universal enforcement.

We were committed to taking as long as it took to get it done.

By 9:00 PM — 13.5 hours later — GREAT-4 was functionally complete. All eight intent categories fully implemented. Pattern coverage at 92%. Performance validated at 120× to 909× better than targets. Cache efficiency at 50% hit rate with 10–30× latency reduction.

This wasn’t heroic effort or cutting corners. It was the infrastructure being better than we thought, the patterns we’d already built doing more than we realized, and systematic work revealing that sometimes “75% complete” actually meant “nearly 100% complete, really just needs the last 25% discovered and documented.”

The pattern that keeps recurring

Saturday’s GREAT-3 completion had taken three days to go from hardcoded imports to production-ready plugin architecture. The final metrics showed performance margins we hadn’t expected: 909× faster than target on concurrent operations, 120× better on overhead.

I was starting to feel kind of confident in my processes again.

Sunday morning started with similar assumptions: intent classification would need significant implementation work. We knew the categories existed (QUERY, CREATE, UPDATE, SEARCH, TEMPORAL, STATUS, PRIORITY, GUIDANCE). We knew the system could classify intents. But comprehensive pattern coverage? That would need building.

At 1:47 PM, the Lead Developer reported Phase 1 results from testing 25 canonical queries against the pattern matching system.

Pass rate: 24%.

Nineteen queries out of twenty-five were failing to match patterns. “What day is it?” returned no pattern match. “Show me high priority items” failed. “What’s my calendar look like?” no match.

The categories were implemented. The routing worked. The handlers existed. The tests proved the infrastructure was operational. But the patterns — the specific phrases and variations that real users would actually say — those were missing.

The architecture wasn’t wrong. We had just never yet yet systematically enumerated how people actually ask for temporal information, status updates, or priority filters.

Adding patterns, not rebuilding systems

The fix wasn’t architectural. It was systematic enumeration.

By 2:02 PM — just 15 minutes of Code agent work — we had 22 new patterns added:

  • TEMPORAL: 7 → 17 patterns
  • STATUS: 8 → 14 patterns
  • PRIORITY: 7 → 13 patterns

Testing the same 25 canonical queries: 92% pass rate (23/25).

The two remaining failures were edge cases requiring different handling, not actual patter ngaps. The 92% represented genuine coverage of how users would naturally phrase requests in those three categories.

Performance: sub-millisecond. All pattern matching happened in 0.10–0.17ms average. The overhead of checking 44 patterns across three categories was essentially free.

This is the “75% pattern” that keeps appearing in Piper Morgan’s development: the infrastructure exists, it’s solid, it works correctly. What’s missing is the last 25% of enumeration, documentation, and edge case handling. Somehow my bad personal habits of not always dotting the i or crossing the t were showing up in my team’s results.

The architectural clarity moment

Around 4:04 PM, we hit a question that we had never really thought through since long before GREAT-4 planning began.

The question: Do structured CLI commands need intent classification?

The initial assumption: Yes, everything should go through intent classification for consistency and monitoring.

By talking it through we realized: Structure IS intent.

When someone types piper issue create "Fix the bug", the command structure itself explicitly declares the intent. CREATE category, issue type, specific parameters. There's no ambiguity requiring classification.

Intent classification exists to handle ambiguous natural language input: “Can you help me with this bug?” or “I need to track this problem” or “Make a note about the login issue.” The system needs to figure out if that’s CREATE, UPDATE, SEARCH, or something else entirely.

But piper issue create has zero ambiguity. The structure already encodes all the information classification would provide.

This clarity prevented unnecessary work. No converting structured commands to go through classification. No forcing architectural consistency where it would add complexity without value. Just clear boundaries: natural language gets classified, structured commands express intent explicitly.

It is kind of fascinating how often these moments of architectural clarity —especially when you realize what you DON’T need to do — save time and energy.

We had to sort through another item thatwas confusing code, which was whether the personality enhancement layer needed to be applied to the user intent layer.

This one is a no-brainer. That layer is there to make Piper personable, not to help interpret users. Personality enhancement is for processing OUTPUT, not INPUT. The system has already determined intent and selected a response. Personality enhancement makes that response more natural. Likewise, it doesn’t need to classify the intent of the output — it already knows what the output is for.

The minutes we took discussing and clarifying this issue surely saved me hours of unnecessary implementation and future debugging.

The 100% coverage realization

By 4:30 PM, after investigating what appeared to be 16–20 bypass cases needing conversion to intent classification, we discovered something surprising:

Coverage was already at 100% for natural language input.

The “bypasses” that looked like gaps were:

  • Structured CLI commands (don’t need classification)
  • Output processing (personality enhancement)
  • Internal system calls (already using intent)

Every actual natural language entry point — web chat, Slack messages, conversational CLI — already routed through intent classification. The system we thought needed building was already operational.

What remained was enforcement: making sure new code couldn’t bypass intent classification accidentally. Not implementing coverage, but protecting coverage that already existed.

Performance validation beyond expectations

The afternoon’s GREAT-4D work included running actual benchmarks against the plugin system we’d built in GREAT-3. Sunday was the first time we measured real performance under realistic conditions.

It was architectural validation. The thin wrapper pattern we’d documented Saturday morning — where plugins are minimal adapters delegating to routers — turned out to cost essentially nothing while providing all the benefits of lifecycle management, discoverability, and configuration control.

The wrapper pattern overhead: 0.041 microseconds. Forty-one billionths of a second.

That’s not “we made it fast.” That’s “we picked abstractions that don’t cost anything.”

What systematic completion looks like

By 9:00 PM, GREAT-4 was functionally complete:

  • Pattern coverage: 24% → 92% for tested categories
  • All 8 intent categories fully implemented
  • Performance validated with massive safety margins
  • Universal enforcement architecture designed
  • Cache efficiency: 50% hit rate, 10–30× latency reduction
  • Zero timeout errors through graceful fallback

I was tired but exhilarated. On the one hand I had been able to oversee this work with minimal attention, checking in to approve things or paste in the next step from time to time. On the other was preoccupied and thinking about the challenges all day. It was a weekend day, not a work day, but it felt somewhere in the middle.

The work wasn’t dramatic. No last-minute heroics, no clever hacks that barely worked, no technical debt accepted “to ship faster.” Just systematic discovery of what already existed, enumeration of what was missing, and validation that it all held together.

The 13.5 hours included:

  • Pattern expansion (15 minutes of implementation)
  • Architectural clarity discussions (preventing unnecessary work)
  • Performance validation (confirming assumptions)
  • Documentation (capturing decisions)
  • Testing (142 query variants to verify coverage)

More time spent understanding than building. More effort on “what don’t we need to do” than “what should we build.” More validation than implementation.

The 75% pattern explained

This is the third or fourth time we’ve hit the “75% pattern” during Piper Morgan’s development:

The pattern works like this:

  1. Something appears to need significant work
  2. Investigation reveals infrastructure already 75% complete
  3. The missing 25% is enumeration/documentation/polish
  4. Systematic completion takes hours instead of days
  5. The result is production-ready because foundation was already solid

GREAT-3’s plugin architecture (completed Saturday) provided the foundation for GREAT-4’s intent classification. The registry system, lifecycle management, and configuration control patterns all transferred. We weren’t building from scratch — we were extending proven patterns.

GREAT-2’s integration cleanup had already established the router patterns that intent classification would coordinate. The routing infrastructure existed. Intent classification just needed to determine WHICH router to use.

Each completed epic makes the next one easier. Not just because code exists, but because patterns are proven, abstractions are validated, and the team (human and AI) understands how the system wants to work.

What Monday brings

Sunday evening’s completion of GREAT-4 sets up Monday’s work: multi-user support, comprehensive validation, and final polish before alpha release.

But sitting here Sunday night, what strikes me most is how undramatic the completion felt. No crisis averted, no brilliant insight that saved the day, no desperate debugging session.

Just systematic work discovering that the infrastructure was better than we thought, enumerating what remained, and validating that it all held together.

The methodology working exactly as designed. Which is, honestly, far more satisfying than dramatic rescues.

← Back to BlogAlso available on Medium