CurisTech
Energy & utilities software for meter reading and usage billing, working incident INC-453 (Ticket TICKET-3887) in #inc-energy.
Energy & utilities software for meter reading and usage billing, working incident INC-453 (Ticket TICKET-3887) in #inc-energy.
Real Slack Data
A production outage unfolds in real-time through the engineering Slack channel. Every world includes synthetic Slack conversations grounded in the injected bug.
Mission
The task an agent is graded on: fix the injected defect so the gating tests pass.
usageDelta() subtracts the previous register reading from the current one with no wraparound handling. When the meter passes its maximum and returns to zero, the delta goes sharply negative, and the billing run either credits the customer or rejects the read. Fix by detecting the wrap and adding the rollover span.
node --test tests/bug.test.js · 3/3 fail before → 3/3 pass after
Ground Truth
The exact unified diff that resolves the injected defect, shipped alongside every world so the fix can be verified mechanically.
diff --git a/src/handler.js b/src/handler.js --- a/src/handler.js +++ b/src/handler.js @@ -1,8 +1,9 @@ // Enterprise Component: CurisTech | Ticket: TICKET-3887 | Trace: INC-453 function usageDelta(previousReading, currentReading, meterMax) { - // BUG: a mechanical register wraps to zero at meterMax. Subtracting - // directly yields a large negative delta for the billing period - // that spans the rollover. - return currentReading - previousReading; + // FIX: detect the wrap and account for the register rolling over. + if (currentReading >= previousReading) { + return currentReading - previousReading; + } + return (meterMax - previousReading) + currentReading + 1; } module.exports = { usageDelta };
Bug Injection
Every world includes deliberately injected bugs in production code. AI agents must find, diagnose, and fix them — just like real incident response.
// Enterprise Component: CurisTech | Ticket: TICKET-3887 | Trace: INC-453 function usageDelta(previousReading, currentReading, meterMax) { // BUG: a mechanical register wraps to zero at meterMax. Subtracting // directly yields a large negative delta for the billing period // that spans the rollover. return currentReading - previousReading; } module.exports = { usageDelta };
Bug: usageDelta() doesn't handle register rollover — subtraction goes sharply negative when the meter passes its max and wraps back to zero, so the billing run credits the customer or rejects the read.
// Enterprise Component: CurisTech | Ticket: TICKET-3887 | Trace: INC-453 function usageDelta(previousReading, currentReading, meterMax) { // FIX: detect the wrap and account for the register rolling over. if (currentReading >= previousReading) { return currentReading - previousReading; } return (meterMax - previousReading) + currentReading + 1; } module.exports = { usageDelta };
Resolution: Detect the counter wraparound in usageDelta() and add the rollover span, so usage deltas across a meter reset are always positive. 3/3 gating tests pass after the patch.
From free samples to enterprise-wide deployment. All editions include full Commercial Training License.
| Feature | Evaluation | Research | Professional | Enterprise |
|---|---|---|---|---|
| 5 Preview Worlds | ✓ | ✓ | ✓ | ✓ |
| 1,000 Worlds | — | ✓ | ✓ | ✓ |
| 5,000 Worlds | — | — | ✓ | ✓ |
| Full 24,316 Worlds | — | — | — | ✓ |
| Commercial License | — | ✓ | ✓ | ✓ |
| QA Report | ✓ | ✓ | ✓ | ✓ |
| Dataset Updates | — | 6 months | 12 months | Ongoing |
| Priority Support | — | — | ✓ | ✓ |