Stepo already answers who was with a journey. This board answers the per-step question, and it takes one stance: everyone can remember who was there, and only the owner can inspect how they showed up. There is one sheet now, one room with the same sections and the same person rows for owner and visitor. Privacy removes ink, never the room: the owner sees act glyphs and timing layered on the rows, a visitor sees the same rows without them. Three layers, each answering a different question. A memory anyone can revisit, never a leaderboard.
A past trails step, its window long closed. The interaction bar keeps its three public counts, and beneath it sits the presence line: faces, a sentence, a chevron. It is the same line for the owner and for a visitor now, and it is tappable for both. It renders only when the viewer's visible set of window step-withs is non-empty.


Maya, Linh and 3 others were here.
Tapping a count number still does nothing. The presence line is the way in, and it is no longer owner-only. Every eligible viewer's tap opens the same guest book, the one sheet behind it. The line renders only when the viewer's visible set is non-empty, so a quiet step simply stays quiet.
The line counts window step-withs from the viewer's visible set, the same set the "While it was on air" section is built from, so the line and the sheet always agree.
The same guest book, rendered for two viewers. Same title, same context, same
two sections, the same person rows in the same room. While it was on air, then, now
public, After it aired. A visitor reads plain face-and-name rows, shuffled. The owner
reads the identical layout with the audit ink added: act glyphs and 1h in captions,
in chronological order. One interface; the difference is ink, not architecture.







One interface. The two sheets are the same composition, top to bottom: same title, same context, same While it was on air and After it aired sections, the same seven rows. Privacy removes ink, never the room. The visitor loses the glyphs, the times, and the chronological order; the room is unchanged.
The After section is public now. Late comments were already publicly attributed, so hiding late hearters protected little while making the visitor's book disagree with the heart count. The visible After section reconciles the two: five were here, six hearts, both honest and now both visible. Late rows are memory, never step-with.
The law behind the two densities, and its application here. There is no owner-only screen anymore. The owner and the visitor open the same sheet; ownership adds a private module of ink on the shared rows, never a different room.
1h in time captions, and future moderation affordances are the owner's private module, painted onto the shared rows, not a separate surface.One viewer-aware contract. A single endpoint per surface returns the sheet; the owner-only fields (act flags, timestamps, module data) are simply null for visitors. One contract, one widget, density graded by viewer.
The live step, 6 hours left. The presence line reads present tense, and it has two dresses: the owner's "stepping with you" and a visitor's "stepping with this." Behind either tap the same sheet is on, titled People stepping with this, growing as people step with. It shows the one open section, While it's on air, and no After section yet: the window has not closed.


Maya and 2 others are stepping with you.


Maya and 2 others are stepping with this.



Live, the line reads "are stepping with"; once the 24 hours close it becomes "were here." The window everyone knows from the feed does the grammar, and only the trailing word ("you" for the owner, "this" for a visitor) differs.
The live sheet is the party made visible to the whole audience. Watching it fill is now everyone's delight, not just the owner's.
The model in one table. Each layer answers a different question about the same person, and each has its own audience. Two layers are public; only the third can audit.
A visitor's rows are deliberately flat. Everything a social app would reach for here is cut from them, because each would re-rank a crowd the rows exist to equalize, or expose a third party who never asked to be audited. Late support, by contrast, is not hidden: it is public in its own After section, never counted or labeled as step-with.
Same visible set, both directions. Step and journey must be visible to the viewer. Blocked either direction, private-to-strangers, and under-18 participants are excluded from stranger-facing lists. The line number, the facepile and the sheet all compute from that one visible set, so two viewers may honestly see different counts.
Everyone can remember who was there. Only the owner can inspect how they showed up.
journey-people.html, who became part of a
whole journey, with roles) is the sibling answer to "who was with this". The three public
counts reconcile with the step conversation on step.html: 6 hearts, 2
comments, 1 share, of which five were window step-withs and the sixth heart is the public
After row. Source of truth: DESIGN.md "The step guest book opens (PO ruling,
2026-07-15)" and its same-day refinement "One interface: ownership is a module."