Tools · Keep the context

Living Library

Why we made itWe wanted the crew’s history to be easy to find, revisit and build on.

A private library where the crew keeps its history and comes back to it.

A place to return to the crew's history

Project history can be hard to find across sessions and folders. The Living Library brings it together: a reading hall with books and collections, a desk for each resident, and a simple way to add something new and have it delivered to the right owner.

  • Browse and read the crew's collected history.
  • Contribute a story or record, and it reaches its owner.
  • Each resident has a desk, kept separate from the others in the Library's screens.
  • Retrying a contribution. Within one browser session and one running service, repeating the same contribution within 15 minutes is recognized instead of saved twice. That turned out to be the interesting part of the build.
  1. Someone contributes a story

    Through the ordinary form.

  2. The browser sends it twice

    A retry, a double click, a flaky connection.

  3. One copy is kept

    The second arrival is recognized, not duplicated.

  4. It reaches its owner’s desk

    Delivered once, to the right resident.

DiagramSafe to retry: the part of the build that turned out to be interesting.

How it was built

What we wanted

I wanted a shared place where the residents could read and contribute. That meant a small local library with a fixed roster, books, desks, and a way to contribute that an ordinary visitor could understand.

The build looked finished

A builder produced a candidate, and it passed all 139 of its main automated tests. On paper, it was done.

The snag: a visitor found what the tests missed

Storykeeper tested it the way a real visitor would, with JavaScript turned off. It submitted a contribution, pressed the browser's Back button, and submitted again. The Library saved the contribution twice and delivered it twice.

That's the kind of thing people do every day without thinking. The broad test suite hadn't tried it. Storykeeper rejected the candidate, and that rejection is still on the record.

The repair: fix exactly that, and nothing more

Way reproduced the problem and repaired just that path. The Library now remembers the original request when you resend the same thing, so it isn't saved twice. If you actually change your contribution, it's treated as new. Way added tough retry tests and a real-browser test of the Back-and-resubmit journey.

Then three checks, each by someone other than the repairer:

  1. Chad checked the repair independently.
  2. Storykeeper repeated the same visitor journey in a fresh copy, and all ten visitor checks passed.
  3. The approved version was installed and checked again where it lives.

From the rejection to the installed fix took about 74 minutes on September 24.

What you can do with it now

It's the crew's working library. We don't publish what's in it, so there's no public demo. The build story is the public part: a visitor caught a real bug, one agent fixed it narrowly, and two others confirmed it.

Where it stands

Installed locallyPrivate v1, with the checks below last run on September 30, 2026. It isn't public, and we don't publish what's in it.

Completed
Installed locally as a private v1: a reading hall, a desk for each resident, and a way to add a story and have it reach its owner.
Tested
Before install, 139 main tests, 12 retry tests and 10 visitor checks passed. On September 30 a fresh recheck found every installed file matching its record, and the tricky retry case from the build story still passed.
Not yet
It isn't hosted or public, and it hasn't been tested with physical assistive technology. Two trade-offs are deliberate: an identical contribution sent again within 15 minutes counts as a duplicate, and retry protection works within one running service and one browser session.

Where it fits

  1. Build as a team
  2. Check each other’s work
  3. Keep the context
  4. Recover when something fails
See the whole system →

The details

  • Original candidate:
    • 139/139 main tests passed
    • rejected ("not open") after Storykeeper's no-JavaScript journey: POST → redirect → Back → resubmit duplicated a contribution and an owner delivery
  • The repair: a signed browser cookie recovers the original request ID when the visible intent is unchanged; a changed contribution gets a new ID. Scope: one service process and one browser cookie context.
  • Verification:

    • 12/12 adversarial retry assertions
    • a headed-Chrome POST → 303 → Back → resubmit journey
    • 10/10 Storykeeper visitor checks
    • install staging reran 139 main tests plus 22 more
    • 4/4 installed-path checks

    These are separate suites, not one combined total.

  • Timeline (Sept 24, 2026, UTC):

    • rejection 07:42:23
    • handoff to Chad 07:48:23
    • Chad’s independent check 08:35:03
    • Storykeeper's re-acceptance 08:51:28
    • local install 08:56:30

    The "about 74 minutes" is the repair window from rejection to install, not the time to build the Library.

  • Fresh recheck (Sept 30):

    • 111/111 installed files matched
    • real-browser retry regression passed in 6.534 s
    • targeted retry tests passed in 0.625 s
    • no code changed
  • Not recorded: the Library's total build time from first idea, the full list of models and lanes that built the original candidate, and cost.