In developmentWaitlist open

Broken at 2:14 AM.Fixed by 2:43 AM.

It catches the first error in production, wakes the engineer who wrote that code, fixes it and tests it like a customer. Built so nothing ships until a person says yes.

The night in seven frames, in a demo shop. At 2:14 AM checkout starts failing for customers using a $5-off coupon: every payment they try returns a server error, and it is judged Critical. Within half a minute three checkouts have failed, $108 in orders. It messages Divyam Talwar, who built Coupons, on Slack, iMessage and WhatsApp, and calls. At 2:15 seven AI agents reproduce, fix and test it while three reviewer agents check the work. At 2:38 pull request 1291, the fix waiting for a yes, arrives with three screenshots, all green. Divyam approves at 2:41. It goes live at 2:43, and by 3:13 it has held for 30 minutes with zero errors.

We’ve raised 446 pull requests across 70 open-source projects.

See every pull request

6:42 PM. It already knows your code.

Dawnmend is built to read your code and its history and map every feature: its code, who built it, what changed last. Every approved change redraws the map. Nobody maintains it.

  • Feature
  • Its code
  • Who built it
  • What changed

Feature · code · who built it · what changed

main
Divyam added $5-off couponsfeat(coupons): add $5-off coupons #1287Divyam Talwar merged feat/fall5-coupon → main · 6:42 PMMerged a3f9c2e · 4 files · +126 −9 · checks passed

Map updated 6:43 PM38 s after the merge

What it learned from #1287

What changed
$5-off coupons, by Divyam, at 6:42 PM
What it touches
Coupons, and Checkout, which uses it
Who knows it best
Divyam Talwar, who built both

So at 2 AM, it already knows what broke, and who to wake.

Final frame: a map of Fernway’s eight features, each with its code and the engineer who built it. Divyam Talwar’s pull request #1287, “feat(coupons): add $5-off coupons”, merged from feat/fall5-coupon into main at 6:42 PM as commit a3f9c2e, 4 files changed, checks passed. Coupons is marked changed, and Checkout is marked as using Coupons. The map updated itself at 6:43 PM, 38 seconds after the merge, with nobody touching it. What it learned: $5-off coupons by Divyam; it touches Coupons and Checkout; Divyam Talwar knows it best. So at 2 AM, it already knows what broke, and who to wake.

2:14 AM. Caught in 12 seconds.

Every FALL5 checkout starts failing. It reads the tools the team already uses, finds the cause, counts the cost and calls it Critical.

Built to read Sentry, Datadog, Grafana, AWS CloudWatch and New Relic.

8:14 AM in Lyon. Try the sale.

It’s 2:14 AM at Fernway.

FernwayCheckout

Ethiopia Guji · 1 bag$18.00

FALL5 applied−$5.00

Total$13.00

Live logs · fernway/shopSentry
02:13:52infostorefrontGET /coffee/ethiopia-guji 200 · 44 ms
02:13:58infosubscriptionsrenewal charged · sub_8841 · $24.00
02:14:05infocheckoutPOST /api/checkout 200 · 191 ms · order #48211
02:14:07errorcheckoutPOST /api/checkout 500 · 38 ms · TypeError: Cannot read properties of undefined (reading 'percent') · coupon.ts:88×7
PAY-412Critical

Checkout 500s on FALL5 orders

Customers using the FALL5 coupon can’t pay. Everyone else still can.

First seen 2:14:07 AM · Sentry7 errors in 12 s · 2 customers

Error 2:14:07Judged Critical 2:14:19 · 12 s

Estimated at risk: about 3 orders and $100 every minute.

Cause
The 6:42 PM change added $5-off coupons. The price math still expects a percentage.coupon.rule is undefined for FALL5; coupon.ts:88 reads .percent#1287 (a3f9c2e) added them; line 88 and its tests were not updated
Next
Wake Divyam Talwar, who built Coupons, and start 7 agents on a fix.
Full root cause (5)
Error
POST /api/checkout → 500 in 38 ms · trace 4bf92fTypeError: Cannot read properties of undefined (reading 'percent')at applyCoupon (coupons/coupon.ts:88:51)at priceCart (checkout/total.ts:42:18)at createPayment (checkout/pay.ts:27:22)Sentry SHOP-4C7 · production · shop@c81d4a9
Error and stack trace (3 frames)POST /api/checkout → 500 in 38 ms · trace 4bf92fTypeError: Cannot read properties of undefined (reading 'percent')at applyCoupon (coupons/coupon.ts:88:51)at priceCart (checkout/total.ts:42:18)at createPayment (checkout/pay.ts:27:22)Sentry SHOP-4C7 · production · shop@c81d4a9
Why now
The FALL5 sale email began reaching European customers at 2:10 AM. The first one to use the coupon tried to pay at 2:14:07.
Impact
No customer is charged for a failed order. Other orders still go through, percent-off coupons included.

Also in Datadog · POST /api/checkout 500s

Why Critical
Money path: customers can’t payEvery FALL5 checkout failsSale traffic is 5× normal
Rollback?
No. Undoing the 6:42 PM change ends the sale, so it fixes the code.

Beside it, a Fernway checkout as a customer in Lyon sees it: Ethiopia Guji, FALL5 applied, $13.00 to pay. Paying fails with “Something went wrong. Your card was not charged.” Final frame: a live production log from the demo Fernway shop, read through Sentry. At 2:14:01 the email service warns that an old mail API is deprecated; no email failed, so it is marked Low: one quiet Slack message to Jonah, saved for Monday’s report. At 2:14:07 Sentry catches checkout requests failing with server error 500, issue SHOP-4C7, 7 times in 12 seconds, as 2 customers tapped Pay again and again. 12 seconds later it becomes incident PAY-412, Checkout 500s on FALL5 orders, judged Critical. Cause: pull request 1287, commit a3f9c2e, merged at 6:42 PM, added $5-off coupons, but line 88 of coupon.ts still expects every coupon to have a percentage, and no test tried one. The FALL5 sale email began reaching Europe at 2:10 AM, so checkout traffic is 5 times normal and every FALL5 checkout fails. No customer is charged for a failed order, and other orders still go through. It estimates about 3 orders and $100 every minute at risk. Datadog APM shows the checkout error rate going from 0 to 70% in those 12 seconds: 7 of the last 10 checkout requests failed. Rolling back 1287 would cancel the sale, so it fixes the code. Next, it wakes Divyam Talwar and starts seven agents on a fix.

2:14 AM. It calls one person. The right one.

Not whoever is on call: the person who wrote the code that broke. Tonight, that is Divyam.

The alarm matches the damage

Built to stay quiet at night. Only Critical calls.

Divyam Talwar wrote 41 of the 52 changes to Coupons, the code that broke. Newest: #1287 · Oct 12

Counted from git history.

Tuesday, October 13

2:16

Sleep Focus

Phone call · DawnmendAnswered 2:14 AM · 0:15
Divyam

Awake. Ping me when it’s ready. 2:16

Dawnmend

Will do. Go back to sleep if you can. 2:16

Sample voice. Sound plays only when you tap.

2:14:31 AM · what went out

  • #checkout

    DawnmendAPP2:14 AM

    @Divyam Talwar, PAY-412 is in Coupons, which you own. Every FALL5 checkout fails with a server error (500); no customer is charged. Cause #1287 (6:42 PM). 7 agents are working on the fix; updates in thread.

  • Transcript

    1. Hey Divyam, I know it’s very late for you,
    2. but it’s urgent.
    3. Checkout is failing for every FALL5 coupon order,
    4. about $100 a minute.
    5. Our agents already found the cause,
    6. pull request #1287,
    7. and we’re working on the fix.
  • WhatsAppDivyam repliedAwake. Ping me when it’s ready.
Final frame: PAY-412 is Critical. Divyam Talwar wrote 41 of the 52 changes to Coupons, so Dawnmend messages Divyam on Slack, iMessage and WhatsApp, which arrive silently, tags Divyam in #checkout, and calls. Divyam answers at 2:14 AM and hears a 15-second briefing: Hey Divyam, I know it’s very late for you, but it’s urgent. Checkout is failing for every FALL5 coupon order, about $100 a minute. Our agents already found the cause, pull request #1287, and we’re working on the fix. At 2:16 AM Divyam replies “Awake. Ping me when it’s ready.”

2:15 AM. Seven AI agents fix it. Three try to break it.

Two make the bug happen again, three write the fix, two pay like a real customer. Reviewer agents send it back until it’s right.

Dawnmend workspace · PAY-412 · 7 agentsDawnmend workspace · PAY-412All green
PAY-412Checkout 500s on FALL5 ordersCritical64 checkouts failed · $2,304 at risk · 2:38

Working from the code map: Coupons + Checkout, which uses it

Reproduce

    1. Open preview.dawnmend.com/checkout
    2. Add Ethiopia Guji, apply FALL5: −$5.00
    3. Pay: POST /api/checkout → 500
    4. TypeError at coupon.ts:88 · 2:19 AM
    1. Open checkout in Safari on an iPhone
    2. Add Ethiopia Guji, 1 bag, apply FALL5
    3. Pay in Safari: same 500, same line
    4. Reproduced at 2:19 AM

Fix

    1. Read #1287 (a3f9c2e) and 3 past coupon fixes
    2. #1287 added $5-off coupons with no rule
    3. coupon.ts:88 still reads rule.percent
    4. No test used a coupon with no percentage
    1. Use amountOffCents for $5-off coupons
    2. Leave percent coupons unchanged
    3. Round 2: stop at $0.00, skip $0 charges
    4. 3 files · +24 −4
    1. Write a test: FALL5 on an $18.00 cart
    2. It fails on today’s code
    3. It passes with the fix
    4. 1,284 tests pass

Browser test

    1. Open preview.dawnmend.com/checkout
    2. Apply FALL5: −$5.00, screenshot
    3. Pay with Stripe test card 4242
    4. Payment accepted, screenshot
    1. Open checkout in Safari on an iPhone
    2. Apply FALL5 and pay $13.00
    3. Test order T‑1043 confirmed
    4. Screenshot taken

ReviewersRound 2

01 Reproduce 2:15 to 2:19 AM

02 Fix 2:19 to 2:26 AM

Before:Checkout assumed every coupon was a percentage, and no test said otherwise.
After:$5-off coupons work too, and a test guards it.
3 files · +24 −4
See the code
@@ -87,4 +87,6 @@ export function applyCoupon(totalCents: number, coupon: Coupon) {   if (!coupon.active) return totalCents;Removed: -  const off = Math.round(totalCents * coupon.rule.percent / 100);Removed: -  return totalCents - off;Added: +  const off = coupon.kind === "amount"Added: +    ? coupon.amountOffCentsAdded: +    : Math.round(totalCents * coupon.rule.percent / 100);Added: +  return Math.max(totalCents - off, 0); }
Guard testFails beforePasses after1,284 tests pass

03 Test in a real browser 2:26 to 2:29 AM

On the preview · Stripe test card 4242

Screenshots 3 of 3

04 Review 2:30 to 2:38 AM

Round 1

FernwaySent back: $5 off a $4 order made −$1.00Fixed: totals stop at $0.00
What if: a $4 sample pack$4.00
FALL5−$5.00
Total−$1.00$0.00

Round 2

FernwaySent back: $5 off a $4 order made −$1.00Fixed: totals stop at $0.00
What if: a $4 sample pack$4.00
FALL5−$5.00
Total−$1.00$0.00

Round 2 · Write the fix

coupon.tsRemoved: - return totalCents - off;Added: + return Math.max(totalCents - off, 0);

All green after 2 rounds

Sent to Divyam for a yes · 2:38 AM

Final frame: in the Dawnmend workspace, seven AI agents with code references made PAY-412 happen again in Chrome and Safari, confirmed the cause on line 88 of coupon.ts, fixed it so $5-off coupons work, checked it with a guard test and 1,284 passing tests, then paid like a customer on the preview site with a test card and took three screenshots. Three reviewer agents caught one mistake in round 1: a $5 coupon on a $4 sample pack made the total minus $1.00. The fix now stops totals at $0.00, a $0.00 order skips the card charge, and round 2 is all green. At 2:38 AM it goes to Divyam for a yes, with three screenshots.

2:38 AM. The fix waits for Divyam’s yes.

It arrives as a pull request: the change, with screenshots of it working on the preview site. Nothing merges until the person who built Coupons says yes.

Dawnmend pings Divyam Talwar on WhatsApp and in #checkout at 2:38 AM. Pull request 1291, the fix with three screenshots from the browser test on the preview site, waits for Divyam. Divyam approves it at 2:41 AM; nothing ships before that.

WhatsApp · Dawnmend2:38PR #1291 is ready. 3 screenshots, all green. Approve?Approved · 2:41
Slack · #checkout2:38@Divyam Talwar PR #1291 needs your approval.
fernway/shop · Pull request #1291Waiting for DivyamApproved

fix(coupons): handle $5-off coupons

fix/pay-412-coupons → main · opened by Dawnmend at 2:38 AM · fixes PAY-412 · 3 files, +24 −4

Since 2:14 AM every FALL5 checkout has failed with a 500, 64 so far: #1287 added $5-off coupons, but coupon.ts:88 still expects a percentage. Both kinds now work, a total never drops below $0.00, and a $0.00 order skips the card charge.

  • Reproduced in Chrome and Safari
  • Guard test + 1,284 tests pass
  • Paid on the preview site
  • 3 reviewers, 2 rounds

Divyam Talwar built Coupons, so only Divyam can approve this.Updated · Approve the new versionYour turn. You’re Divyam tonight. Approve it or send it back.

Approved by Divyam Talwar · 2:41 AM

2:41

Tuesday, October 13

2:41

WhatsApp · Dawnmend2:38PR #1291 is ready. 3 screenshots, all green. Approve?Approved · 2:41
Slack · #checkout2:38@Divyam Talwar PR #1291 needs your approval.
WhatsApp · Dawnmend2:38PR #1291 is ready. 3 screenshots, all green. Approve?Approved · 2:41

2:43 AM. Live. Then thirty quiet minutes.

Once Divyam approves, it puts the fix live and watches the same logs for 30 minutes to confirm it holds.

PAY-412#1291fix(coupons): handle $5-off coupons
  1. Approved by Divyam2:41
  2. Merged 7d41b0c2:42Code map updated · by itself
  3. Live in production2:43

Checkout errors per minute (HTTP 500)

Before the fix: about 9 a minute · 70% of requests

Fix holds · 3:13 AM
Live logs · fernway/shopDatadog APM · shop@7d41b0c
02:58:44infocheckoutPOST /api/checkout 200 · 211 ms · order #48426 · FALL5
03:02:19infocheckoutPOST /api/checkout 200 · 188 ms · order #48449 · FALL5
03:06:40infocheckoutPOST /api/checkout 200 · 197 ms · order #48477 · FALL5
03:10:57infocheckoutPOST /api/checkout 200 · 182 ms · order #48505 · FALL5

Watching30:00 / 30:00

FALL5 orders0 errors after the fix, 86 FALL5 orders paid by 3:13 AM

Watching30:00 / 30:00

DawnmendWhatsApp · 3:13 AM

Fix for PAY-412 held 30 min: 0 errors, 86 FALL5 orders paid. Closed.

Divyam · 3:14 AM

Thanks. Back to sleep.

Fixed in 29 minutes. Not at 9 AM.

  • 29 min, broken to fixed
  • 5 min, of Divyam’s night, on a phone
  • $39,000, in failed orders if nobody looked until 9 AM (estimate)

78 checkouts failed before the fix. None after it.

Dawnmend is in development.

Final frame: approved by Divyam at 2:41, merged at 2:42 as commit 7d41b0c with the code map updating by itself, live at 2:43. Checkout server errors drop from about 9 a minute to zero and stay flat for 30 minutes while 86 FALL5 orders are paid. Between 2:14 and 2:43 there were 273 errors and 78 checkouts had failed, 41% of all checkouts in that time, about $2,800 in orders. Divyam spent about five minutes on a phone. At 3:13 the fix holds; Dawnmend tells Divyam on WhatsApp that PAY-412 is closed and Divyam replies “Thanks. Back to sleep.” Fixed in 29 minutes, not at 9 AM: five minutes of Divyam’s night, on a phone. Left unwatched until 9 AM, about $39,000 in orders would have failed (estimate). 78 checkouts failed before the fix and none after it.

Wednesday, Day 10. It finds what nobody uses.

For ten days it watches how Fernway is used. Features nobody uses, screens nobody reaches and endpoints nobody calls are dead code. The people who built them decide what goes, so less can break at 2 AM.

Four checks on every piece of code

  1. Used? Real traffic in production, every day.
  2. Reachable? Does any link or button lead to it?
  3. Run by a job? Is it on a schedule, like month-end?
  4. Called by other code? Does anything still depend on it?

It proposes a removal only when nobody uses it and no job or code still needs it.

SlackDawnmend → Theo Park
DawnmendAPPWed, Oct 14

Theo, nothing has called the old PDF invoice endpoint since Oct 5. A month-end job could still need it, so I’m asking: remove its 640 lines?

Theo ParkWed, Oct 14

Remove it. Month-end uses the new one.

DawnmendAPPWed, Oct 14

Thanks. The removal is now in #1296 for your approval.

Dead code · Fernway

Watching production since Mon, Oct 5 · Last used: not once since Oct 5

Watched 10 days · Oct 5–14

Scanning daily · last scan today

  1. Feature nobody uses

    Gift wrap

    Theo Park

    gift-wrap.ts · 420 lines

    Offered at about 19,000 checkouts in 10 days. Nobody added it.

    Used in 10 days
    0 uses in 10 days
    Reachable
    Yes, at checkout
    Run by a job
    No
    Called by code
    Only checkout, goes too
    Dead code

    Proposed for removal

  2. Screen nobody reaches

    Pause survey

    Jonah Reed

    /subscription/pause/survey · 180 lines

    Customers paused 212 times. No link or button leads here.

    Used in 10 days
    0 opens in 10 days
    Reachable
    No, nothing links here
    Run by a job
    No
    Called by code
    No
    Dead code

    Proposed for removal

  3. Endpoint nobody calls

    Old PDF invoices

    Theo Park

    GET /api/invoices/:id/pdf/v1 · 640 lines

    About 960 uses of Invoices, all through the new code. Nothing called this one.

    Used in 10 days
    0 calls in 10 days
    Reachable
    No, no screen calls it
    Run by a job
    None seenNo month-end since Oct 5
    Called by code
    No
    Dead code

    Theo said remove it

  4. Rare isn’t dead

    Holiday banner

    Jonah Reed

    holiday-banner.tsx

    0 views in 10 days, because it is scheduled to turn on Dec 1.

    Used in 10 days
    0 views in 10 days
    Reachable
    From Dec 1
    Run by a job
    Yes, turns on Dec 1
    Called by code
    Yes
    Kept · turns on Dec 1

    Checked again Dec 2

One pull request removes them.

#1296Opened Wed, Oct 14

chore: remove unused gift wrap, pause survey and v1 PDF endpoint

  • −1,240 lines
  • 3 pieces of dead code
  • One revert brings it back

Waiting for Theo and Jonah

Nothing is removed until they approve.

Day 10, Wednesday, October 14. After ten days watching how customers use Fernway, Dawnmend checks every piece of code four ways: use in production, links that reach it, scheduled jobs and other code that calls it. It finds three pieces of dead code: Gift wrap, a feature added in 0 of about 19,000 checkouts in 10 days; the Pause survey, a screen no link leads to; and the old PDF invoice endpoint, with 0 calls. No month-end has passed since Oct 5, so it asks Theo Park, who says to remove it. It keeps the Holiday banner, which turns on December 1. Pull request 1296 removes the three, 1,240 lines, waiting for Theo and Jonah to approve.

Thursday. Asked at 4:12 PM. Live at 4:55.

Tag it in Slack, or text it on WhatsApp or iMessage. It builds the feature, tests it in a real browser, and sends you the change with screenshots to approve.

FernwayChannels
  • # checkout
  • # dawnmend-features
  • # engineering
Direct messages
  • Dawnmend
# dawnmend-features
Divyam Talwar4:12 PM

@Dawnmend add CSV export to Invoices. Our accountant wants one file a month: date, invoice, customer, amount, tax and status. Totals must match the page to the cent.

DawnmendAPP4:12 PM

On it. Theo built Invoices, so Theo reviews the code. The PR comes to you.

  1. Built the export
  2. Tested it in a real browser
  3. Took 3 screenshots
  4. Opened PR #1302
DawnmendAPP4:41 PM

@Divyam Talwar PR #1302 is ready for you, with 3 screenshots.

fernway/shop · Pull request #1302

feat(invoices): export invoices as CSV

feat/invoice-csv-export → main4 files, +142 −3checks passed

  • Export CSV button
  • Down­load­ing
  • Opened in a spreadsheet
Dawnmend, 4:41 PM:
  • Built: Export CSV on Invoices, one file a month (invoices-october.csv)
  • File: date, invoice, customer, amount, tax, status; totals match to the cent
  • Tests: 5 new, one checks the file’s total against the page; all pass
  • Code: invoices/export.ts and the Invoices page · fernway/shop#1302
Divyam Talwar4:52 PM

Theo approved the code. Approved on my side too.

DawnmendAPP4:55 PM

Shipped. #1302 is merged as e58a19d and live on the Invoices page.

Ask as Divyam:
preview.dawnmend.com/invoicesPreview
Fernway

Invoices

OctoberExport CSV
Oct 15Ethiopia Guji · 1 bag$18.00Paid
Oct 8Colombia Huila · 2 bags$34.00Paid
Oct 1Ethiopia Guji · 1 bag$18.00Paid
invoices-october.csv
Dawnmend tries the change in Chrome on a preview first.
Final frame: in Fernway’s Slack channel #dawnmend-features on Thursday at 4:12 PM, Divyam Talwar tags Dawnmend: add CSV export to Invoices. Our accountant wants one file a month: date, invoice, customer, amount, tax and status. Totals must match the page to the cent. Dawnmend replies that Theo built Invoices, so Theo reviews the code, and the pull request comes to Divyam. It built the export by 4:29 PM, tested it in a real browser by 4:36 PM and took three screenshots by 4:38 PM. At 4:41 PM it opened pull request 1302, “feat(invoices): export invoices as CSV”, from feat/invoice-csv-export into main, 4 files changed, checks passed, and shared it with Divyam with the three screenshots and a summary: an Export CSV button on Invoices downloads one file per month, invoices-october.csv; the columns are date, invoice, customer, amount, tax and status, and totals match the page to the cent; 5 new tests, one checking the file’s total against the page, and all tests pass; the code is in invoices/export.ts and the Invoices page. At 4:52 PM Divyam writes that Theo approved the code and approves too. At 4:55 PM Dawnmend merges it and it is live. Beside the chat, Dawnmend’s browser test on the preview at preview.dawnmend.com/invoices shows the new Export CSV button and the downloaded file invoices-october.csv.

Monday, 9:00 AM. The week in one message.

Every Monday, one Slack message anyone can read in a minute. It covers the week’s incidents and fixes, new features, and anything still waiting for a yes.

Monday, October 19, 9:00 AM, in the Slack channel #engineering: Dawnmend posts Fernway’s report for the week of October 12 to 18. Checkout broke Tuesday at 2:14 AM and was fixed in 29 minutes: PAY-412, 78 failed checkouts, about $2,800, pull request 1291, approved by Divyam. 16 issues seen, 11 fixed, 3 still open, 2 noted; 12 changes shipped, 11 fixes and 1 new feature, each approved by a person; 2 waiting for a yes. Wednesday, a cleanup of three pieces of dead code, 1,240 lines, waiting for Theo and Jonah. Thursday, invoices export as CSV. Friday, a fix for the pause button, waiting for Jonah. 16 seen, 11 fixed, and one person woken, at 2:14 AM.
FernwayChannels
  • # checkout
  • # dawnmend-features
  • # engineering
Direct messages
  • Dawnmend
# engineering

Today

DawnmendAPPMon 9:00 AM

Fernway · week of Oct 12–18

Checkout broke Tuesday at 2:14 AM. Fixed in 29 minutes.

issues seen
161 Critical · 3 High · 8 Medium · 4 Low
fixed
113 still open · 2 noted, no action
changes shipped
1211 fixes, 1 feature · each approved
waiting for a yes
2a fix (#1299) and a cleanup (#1296)

Every issue, day by day

Tue 2:14 AM · Checkout failing on $5-off coupon orders

Fixed 2:43 AM · 29 min

PAY-412 · 78 failed checkouts (~$2,800) · 0 after

Back to the night ↑

Built this week, and waiting for a yes

  • WaitingWedRemove a feature, a screen and an endpoint nobody uses: 1,240 lines.#1296 · waiting for Theo and JonahBack to the cleanup ↑
  • BuiltThuInvoices now export as CSV, as Divyam asked in #dawnmend-features.#1302 · approved by Divyam · liveBack to the build ↑
  • WaitingFriA fix for the pause button on small phones.SUB-207 · PR #1299 · waiting for Jonah

16 seen · 11 fixed · 1 person woken at 2:14 AM

Every job, one loop. One person says yes.

Dawnmend is being built as one loop of nine steps: it knows the code and who owns it, sees the error, tells the right person, fixes it with seven agents, asks a person, ships and watches the fix, finds code nobody uses, builds what you ask for and reports every Monday. Between Asks and Ships, a person approves: every change waits there, the fix, the cleanup and the build alike, and nothing ships without that yes. Then the loop starts again.

Dawnmend is built to run every step on its own, day and night, except one: nothing ships until the right person says yes.

  1. 1. Knows: Maps every feature to its owner. 6:43 PM · #1287 mapped. 6:42 PM. Divyam merged #1287, $5-off coupons. The map redrew itself.
  2. 2. Sees: Catches errors as they start. 2:14 AM · caught in 12 s. 2:14 AM. FALL5 checkouts began failing. Judged Critical in 12 s.
  3. 3. Tells: Alerts the right person. 2:14 AM · called Divyam. Critical, so it called Divyam, who built Coupons, with a briefing.
  4. 4. Fixes: Agents write and test the fix. 2:15 AM · 7 agents. Seven agents reproduced and fixed it. Three more tried to break it.
  5. 5. Asks: Brings the fix to a person. 2:41 AM · Divyam said yes. The fix came to Divyam with its evidence. 2:41 AM: yes.
  6. Gate: A person approves. Every change waits here, cleanups and builds too. Divyam said yes to the fix at 2:41 AM. Divyam Talwar, who approved the PAY-412 fix, Theo Park and Jonah Reed.
  7. 6. Ships: Puts it live, watches it hold. 2:43 AM · held 30 min. Live at 2:43 AM. It watched checkout for 30 minutes. Closed.
  8. 7. Cleans: Finds code nobody uses. Wed · #1296 awaits a yes. Wednesday. Found a feature, a screen and an endpoint nobody uses.
  9. 8. Builds: Builds what you ask for. Thu · Divyam said yes. Thursday. Divyam asked for a CSV export at 4:12 PM. Live at 4:55.
  10. 9. Reports: Sums up your week. Mon 9:00 AM · 11 fixed. Monday 9:00 AM in #engineering: 16 seen, 11 fixed, 2 await a yes.

Then it starts again.

Then it starts again.

Broken at 2:14 AM. Fixed by 2:43 AM. Mended before dawn.

Hand it the night shift. Keep the final say.

Dawnmend is in development. Leave your work email and we’ll bring your team in as early access opens.

We’ve raised 446 pull requests across 70 open-source projects.

See every pull request, public GitHub data from 26 Oct 2026

Dawnmend is in development, and nothing on this page is live for customers yet. Fernway, its team and this night are fictional. Divyam is played by our founder, Divyam Talwar.

Request early access

Dawnmend is in development. Leave your work email and we’ll bring your team in as early access opens.

Your email will be used for early-access updates.