Living Document · Architecture

The code is fixed.
The contents are not.

A permanent QR points at one permanent Google Doc. Everything a visitor reads inside it rotates on its own clock — so the printed code, scanned a thousand times, always resolves to today's authorized information. Nothing is ever reprinted.

The two layers

What never moves, and what always does

The whole design rests on one separation. Confuse the two and the system breaks: replace the file instead of its contents and the QR dies inside a day.

Permanent — the mount

The wall

Set once, encoded into the QR, touched again only if you abandon the whole system. None of it is editable in daily use.

  • The QR image
  • The file ID — 1tdSIEkFt2GM9Oh5…
  • The /view URL
Rotating — the sheets

The contents

Replaced continuously, each block on its own cadence. This is the only layer anyone edits.

  • Key Info — event-driven
  • Announcements — weekly sweep
  • Program — weekly
  • Newsletter — monthly

The flow

What happens on a scan

Four hops, every time, with no moving parts on the printed side.

Scan

A visitor scans the printed code. The same code, on every surface, forever.

Fixed URL

It resolves to one immutable document URL. The file ID never changes.

…/d/1tdSIEkFt2GM9Oh5/view

Living doc

The Google Doc opens, view-only. Editors maintain it; link-visitors can only read.

Fresh content

The visitor sees today's authorized set. Stale content is gone from view, the top block stamped current.

Wall — file · URL · QR (permanent)
Key Info event-driven
Announcements weekly sweep
Program weekly
Newsletter monthly
sheets rotate · wall stays

The model

The wall and the sheet

It works exactly like the paper version you already run. The wall the sheet is pinned to is permanent; the sheet rotates. Here the document is the wall, and its body text is the sheet.

Clearing the body removes content from every viewer's view — and because revision history is reachable only by owners and editors, a link-visitor has no path to yesterday's links. Content leaving the visible body satisfies "destroyed" for everyone who scans.

The one rule Never delete the file. Deleting it mints a new ID, a new URL, and a dead QR. Replace contents; keep the container.

The four blocks

Four blocks, four clocks

Ordered top to bottom by volatility — the most-changing, most trust-critical block sits where a phone scanner reads first. The ladder narrows as it descends: fast at the top, near-static at the bottom.

Key Info
Event-driven · stamped

Verified, currently-true operational facts only. Replaced the moment anything changes and stamped "Current as of …". Nothing unverified is allowed to land here — that gate is what makes it trustworthy.

churn
Announcements
Add anytime · sweep weekly

A rolling feed in five horizon buckets. New goes on top of its bucket; past items deleted. Re-bucketed in the Sunday sweep, never daily. Signup links ride inline here, beside the item they belong to.

Today / Upcoming Week / This Month / Next Month / Later
churn
Program
Weekly · Sunday

Replaced every Sunday with the coming week's program link. One swap, on the same beat as the announcements sweep.

churn
Newsletter
Monthly

Replaced once a month. Persists, always live, between issues — the slowest sheet on the wall.

churn

The trust mechanism

Reliability isn't claimed. It's shown.

A scanner cannot tell current-and-true from stale-and-abandoned by looking. The timestamp on Key Info is the only thing that closes that gap — it converts "trust me" into evidence. The block you most need believed is the one most prone to silent staleness, so the stamp is the load-bearing detail, not decoration.

And it cascades: one rotten bucket label — a "Today" still showing yesterday — poisons the credibility of the whole surface. That is why the weekly sweep is the architecture, not housekeeping.

Current as of — Sun Jun 14 2026, 9:42 AM

Maintenance

Who does what, and when

No daily wipe. Each block runs on its own clock, and the human work clusters into a small number of named rituals a non-technical maintainer can hold in their head.

Weekly · Sunday — the beat

The Sunday beat

  1. Replace Program with the new week's link.
  2. Sweep Announcements: push each bucket down a notch — Later → Next Month → This Month → Upcoming Week → Today.
  3. Delete anything now in the past.
Monthly

The monthly swap

  1. Replace the Newsletter link with the new issue.
  2. Leave it; it stays live until next month.
Anytime · as needed

Key Info update

  1. Change the fact the moment it changes.
  2. Re-stamp "Current as of …" with the new time.
  3. Verified facts only — nothing speculative.

Empty windows are fine by design. A block with bare headers and nothing under it reads as "not posted yet" — which is true. The program for Sunday goes up when it's ready; an unfilled block communicates rather than looks broken.

Worked example

The document, to spec

What the live prototype becomes: reordered by volatility, Key Info stamped, signups inline. Example content shown.

This Week
docs.google.com/document/d/1tdSIEkFt2GM9Oh5sOnIunjVSWcrVHhKi0Z0qBhjyrDg/view
Key Info event-driven
Current as of — Sun Jun 14, 9:42 AM

This week's session meets in the Annex — main hall closed for floor repair.

Overflow parking lot is open; enter from the south side.

Announcements swept Sundays
Today

Setup crew arrives 8:00 AM — side entrance is unlocked.

Upcoming Week

Potluck Thursday, 6:00 PM — sign up for a dish:

https://forms.gle/example-potluck
This Month

Service project June 28 — details to follow.

Next Month

Summer schedule begins; times shift one hour earlier.

Later

Fall registration opens in August.

Program replaced Sundays

Sunday, June 14 — this week's program:

https://drive.google.com/example-program-jun14
Newsletter replaced monthly

June 2026 issue:

https://drive.google.com/example-newsletter-jun

Decision record

What we ruled out, and why

The trail, kept so the reasoning survives. Each was considered and rejected for a concrete failure mode, not taste.

Dynamic QR provider

Rented redirect

The redirect lives on a vendor's domain, can be deactivated, and usually costs a subscription. A static QR to the fixed doc URL needs none of it — no vendor, no expiry, no recurring cost.

Google Sites launcher

Silent staleness + a script dependency

Edits don't go live until someone clicks Publish — the step non-technical maintainers skip, leaving the page silently stale. And a link-update script is a technical dependency no volunteer can carry when the author moves on. Docs auto-saves with no publish step.

Nightly wipe / "24h destroy"

Fine only when everything was day-of

Once the cadences turned out mixed, a daily wipe would force re-pasting the month-old newsletter and week-old program every single day — the opposite of low-maintenance. Replaced by per-block clocks.

Continuous re-bucketing

The step volunteers skip

Horizon buckets quietly require a third operation — promotion — beyond add and remove. Done continuously it gets skipped and fails invisibly. Folded into the one weekly Sunday sweep instead.

Unrecoverable destruction

Unnecessary for this audience

Revision history is owner/editor-only and unreachable by anyone with just the link. Content leaving the visible body already satisfies "destroyed" for every scanner. True deletion is the only move that breaks the QR — so it's off the table.