User Manual
Comprehensive documentation covering everything a user can do with a product, organized for lookup.
User Manual
Section titled “User Manual”A user manual is comprehensive documentation that covers everything a user can do with a product, organized so a reader can look up any feature or task when they need it. Unlike documentation designed to be read from start to finish, a user manual is a reference artifact: the reader arrives with a specific question, locates the relevant section, reads what they need, and returns to the product. Completeness and reliable retrieval across the whole product surface are the defining values.
The format earns its place by serving a reader who already knows what they want to accomplish but needs the exact steps, parameters, or options for this specific product. A user manual assumes a capable reader who is not new to the product category but may be unfamiliar with this product’s conventions. It documents the product as it is, not as a teaching exercise, and trusts the reader to apply the information without capability-building scaffolding.
Good user manuals are organized for lookup, not for reading. The table of contents is a navigational instrument. Section titles name features and tasks in terms the reader will recognize when searching for them - not terms organized by system architecture or build sequence. Each section is self-contained enough that a reader can enter from the table of contents and find what they need without reading surrounding sections.
Unlike a how-to guide, which teaches one task end to end for a learner building capability, a user manual documents all tasks and features for a reader who arrives knowing what they want and consulting the relevant section the way one uses a dictionary rather than a tutorial.
Canonical template
Section titled “Canonical template”# [Product Name] User Manual
## Table of Contents[Section list organized by feature or task name]
## Getting Started[System requirements, installation, account setup, and first-session prerequisites.]
## [Feature or Task Area 1]
### [Task or Subtask Name][Brief statement of what this feature does and when a user would reach for it.]
Steps:1. [Concrete instruction]2. [Concrete instruction]...
Options / Parameters:- [Option name]: [What it controls, valid values or range]
Notes:- [Edge case, constraint, or version-specific behavior]
## [Feature or Task Area 2]...
## Troubleshooting[Symptom]: [Cause and resolution]
## Reference[Index, glossary, or quick-reference tables]When to use
Section titled “When to use”Documenting a product or tool where users need to look up specific features or tasks at the moment of need rather than learn the product from scratch. Shipping the authoritative reference alongside a product that users will return to repeatedly across many sessions. Covering the full surface area of a product when one how-to guide per task would be impractical. Supporting users at all experience levels who need lookup access to features they have not yet used. Creating a lasting reference whose modular section structure remains accurate and maintainable across product versions.
When not to use
Section titled “When not to use”Teaching a complete beginner who needs guided, capability-building instruction through a specific task for the first time (use a how-to guide). Providing quick expert lookup for parameters, flags, or syntax when the reader already knows exactly what they need (use API reference or a cheat sheet). Explaining concepts, background, or architectural decisions that do not map to a specific task or feature the user can perform.
Pairs well with
Section titled “Pairs well with”technical-writer, operator, instructional, matter-of-fact, procedural
Often confused with
Section titled “Often confused with”how-to-guide: A how-to guide teaches a reader to accomplish one specific task they do not yet know how to do, walking them through the steps with enough context to understand what they are doing and why. The goal is a reader who, having followed the guide once, could reproduce the task without the guide the second time - capability, not just completion, is the measure. A user manual is not a teaching document: it covers all tasks and features across the whole product surface for a reader who already has capability and arrives to look up a specific thing. Where a how-to guide takes a learner through one task end to end, a user manual is consulted the way one uses a dictionary rather than a tutorial.
technical-reference: A technical reference is a precise specification of inputs, outputs, and syntax for a developer artifact (API, library, CLI, config schema), organized by signature, parameters, and returns. A user manual is whole-product, end-user task and feature coverage with numbered procedural steps. The discriminator: if the unit of organization is a function, endpoint, or field, it is a technical reference; if it is a user-facing feature or task with steps, it is a user manual.
- A table of contents that lists features and tasks by name, functioning as the primary navigation instrument for the document
- Self-contained sections a reader can enter directly from the table of contents without reading surrounding material
- Feature-first or task-first organization, not arranged by system architecture or development sequence
- Terse, declarative prose that names what the product does rather than teaching the reader why it works or building capability
- Step-numbered instructions within sections that rely on product terminology without defining it from first principles
- Cross-references within sections pointing to related features rather than prescribing a linear reading sequence
Anti-patterns
Section titled “Anti-patterns”- Organizing sections by system architecture or internal component rather than by user task or feature name - A user who wants to accomplish something thinks in task terms, not system terms. Architecture-first organization forces readers to know how the product is built before they can find what they need to do.
- Writing each section as a how-to guide complete with prerequisites blocks, capability-building explanations of why each step matters, and troubleshooting for the learner - A how-to guide teaches one task end to end for a reader who is building capability and wants to understand what they are doing. A user manual documents all features for a reader who arrives with capability already and needs only the specific steps for this product. Teaching scaffolding in a reference document slows down a reader who came to look something up.
- Omitting a navigable table of contents, or organizing the table of contents to mirror the product build order rather than user lookup order - The table of contents is the primary navigation instrument of a user manual. A reader who cannot locate the right section from the table of contents cannot use the manual. Lookup order matters more than order-of-construction logic.
Failure modes
Section titled “Failure modes”- Over-comprehensive - the commitment to covering the whole product surface drives the manual into exhaustive edge-case documentation, so every common task is buried in variant tables and parameter matrices that serve no reader who has just arrived with a single question - Organize comprehensiveness hierarchically: standard cases prominent in the section body, edge cases and full parameter tables in sub-sections or appendices. A reader who needs the edge case will find it; a reader who does not need it will not be slowed by it.
- Over-terse - the reference register is pushed so far that sections become command listings and parameter names with no context, producing output only parseable by a reader who already knows what the feature does and why they want it - Each section needs at minimum a brief statement of what the feature does and when a user would reach for it. Even in a reference register, that one sentence of orientation is not teaching - it is the anchor that makes the steps that follow usable.
- Over-modular - the self-contained section principle is taken to the extreme, repeating boilerplate across every section that shares a concept, inflating the document and introducing contradictions when updates touch only some of the duplicated content - Use cross-references and a central Reference section for shared concepts rather than duplicating content. Trust the reader to follow a link. Redundancy that seemed helpful in authoring becomes a maintenance liability and a trust eroder when sections drift out of sync.
Instruction
Section titled “Instruction”Write as a User Manual. Organize the content by user task or feature name, not by systemarchitecture or development sequence. Begin with a navigable table of contents that listssections in lookup order. Write each section to be self-contained: a reader who enters from thetable of contents should find what they need without reading surrounding sections.
Within each section, open with a brief statement of what the feature does and when a user wouldreach for it. Then give the steps in numbered form, using concrete instructions andproduct-specific terminology. Include options, parameters, or valid values where relevant.Collect edge cases and notes at the end of the section or in a sub-section, not inline in themain steps.
Use terse, declarative prose throughout. Do not teach the reader why the product works the wayit does; document what it does and how to use it. Do not add capability-building scaffolding.Add cross-references to related sections rather than repeating content. Close the manual with aTroubleshooting section and a Reference section (index, glossary, or quick-reference tables).Template
Section titled “Template”See the User Manual template.
Related
Section titled “Related”Pairs well with
Section titled “Pairs well with”Technical Writer, Operator, Instructional, Matter of Fact, Procedural
Avoid with
Section titled “Avoid with”Confessional, Reverent, Playful
Often confused with
Section titled “Often confused with”How-To Guide, Technical Reference
Examples
Section titled “Examples”- Whether the team should move to async-first standups
- Designing a sustainable morning routine
- Choosing Postgres vs DynamoDB for a new service
- Telling stakeholders a committed feature is being cut this quarter
- Getting a new engineer productive in their first two weeks
- Writing to thank a mentor who shaped your career
- Reflecting on keeping a discipline of rest
- Marking a long-serving colleague's departure
- Marking the team shipping a hard, long project
- Arguing a public position on return-to-office
- Announcing a new product to an outside audience
- A personal year-end reckoning with a difficult year
Team Standup User Manual
Section titled “Team Standup User Manual”Table of Contents
Section titled “Table of Contents”- Getting Started
- Posting Your Daily Update
- Writing and posting your update
- Marking a blocker resolved
- Reading the Channel (On-Call Duties)
- Daily triage
- Escalating a blocker
- The Thursday Working Session
- Special Cases
- PTO
- On-call days
- No update to give
- Sensitive or people-related blockers
- Public holidays
- Troubleshooting
- Reference
Getting Started
Section titled “Getting Started”This manual covers the #team-standup async process used by the eng-platform team (11 engineers across US Pacific, US Eastern, UK, and India). It replaced the team’s synchronous daily standup and is running as a 30-day trial, 2026-05-19 through 2026-06-19, owned by Maya Chen (EM Platform).
Requirements:
- Access to the #team-standup channel in the eng-platform Slack workspace.
- If you are on the on-call rotation, access to #on-call-schedule and #on-call-log as well.
- Five minutes a day to write and post an update.
First session:
- Read the pinned message in #team-standup. It holds the current template and house rules.
- Note your own posting deadline: 10am in your local timezone, not Pacific.
- Check #on-call-schedule to see whether you are on the on-call rotation this week (see Reading the Channel).
Posting Your Daily Update
Section titled “Posting Your Daily Update”What this covers: the daily status update every engineer posts, and how to close the loop once something you flagged gets resolved.
Writing and posting your update
Section titled “Writing and posting your update”What it does: records what you shipped, what you are working on, and what is blocking you, in a format the rest of the team can skim in under a minute.
Steps:
- Copy the pinned template from #team-standup, or trigger it with the
/standupshortcut. - Fill in the three fields: Shipped, In progress, Blocked or at risk.
- In the Blocked or at risk field, @mention the specific person who can resolve each item.
- Post before 10am your local time.
Template:
Shipped: - <what landed since your last post>
In progress: - <what you are actively working on today>
Blocked or at risk: - <what is stuck, and who or what you need>Options / Parameters:
- Empty field: write “nothing today” rather than deleting the field.
- Skipping a field entirely: acceptable on Fridays only.
- Backfill window: same day, until 17:00 your local time, if you miss the 10am cutoff.
- Cannot post before 10am (early meeting, travel): post the previous evening instead, with a “tomorrow:” prefix on the In progress line.
Notes:
- A valid blocker names three things: what is blocked, who can unblock it, and when you need it. “@user, can you review #4412 today?” is a blocker. “Reviews are slow” is not, and will not route anywhere.
- Sensitive or PTO-affected updates follow different rules. See Special Cases.
Marking a blocker resolved
Section titled “Marking a blocker resolved”What it does: closes the loop on a blocker you previously posted, so the channel stays a reliable record of what actually happened.
Steps:
- Edit your original post to reflect the resolution, or
- Reply in the same thread with
resolved:and the outcome.
Notes:
- Do not delete the original line. The searchable record of what was blocked and how it resolved is part of the point of moving async.
Reading the Channel (On-Call Duties)
Section titled “Reading the Channel (On-Call Duties)”What this covers: the daily triage responsibility assigned to whichever engineer is on the on-call rotation that week. If you are not on-call this week, you do not need this section.
Daily triage
Section titled “Daily triage”What it does: confirms every blocker posted that day gets a response, and surfaces anyone who has not posted.
Steps:
- Between 10:00 and 11:00 Pacific, open #team-standup and review the day’s posts.
- Tally posts received against today’s expected headcount (11 minus anyone confirmed on PTO).
- If fewer than 80 percent of expected posts have arrived by 10:30 Pacific, direct-message anyone missing: “Hey, no standup post yet today, any blockers?”
- Read every post and identify each @mention inside a Blocked or at risk field.
- Reply in-thread to every @mention (a resolution, a diagnostic question, or a handoff) within 30 minutes of your first read.
- For any at-risk line with no @mention, reply in-thread asking whether the engineer needs help.
- Post a triage summary in #on-call-log: “Standup triage [date]: [N] posts received, [N] blockers found, [N] resolved, [N] escalated.”
Options / Parameters:
- Rotation: the same engineers who previously facilitated the synchronous standup.
- Response SLA: 30 minutes during the resolver’s business hours.
- Time budget: 10 minutes per morning under normal conditions.
Notes:
- Triage running closer to 25 minutes on a given morning usually means blockers are surfacing earlier than they did under the old sync model. That is the system working, not a sign it is broken. See Troubleshooting before asking to split the rotation.
- Triage is read-and-respond only; there is no system state to roll back. If you reply in the wrong thread, post a correction in the same thread.
Escalating a blocker
Section titled “Escalating a blocker”What it does: moves an unresolved blocker up the chain when the normal @mention and reply does not clear it.
Steps:
- Day 0, at post time: the engineer @mentions the resolver in their update.
- Plus 4 business hours: the on-call engineer nudges the resolver in-channel.
- Plus 1 business day: on-call escalates to the resolver’s manager.
- Plus 2 business days: escalates to Maya Chen.
Notes:
- This ladder runs alongside the 30-minute first-response SLA. The SLA covers acknowledgment; the ladder covers what happens if acknowledgment does not turn into resolution.
The Thursday Working Session
Section titled “The Thursday Working Session”What this covers: the 60-minute weekly slot that replaced the block of synchronous standups, reserved for anything that genuinely needs real-time discussion.
Steps:
- Check the agenda at
docs/thursday-agenda.mdbefore the session. - Add a topic to the agenda by 17:00 Pacific Wednesday if you need real-time discussion time.
- Attend Thursdays at 8:00 Pacific / 20:30 IST.
Options / Parameters:
- Length: 60 minutes.
- Cancellation: if the agenda is still empty by 17:00 Pacific Wednesday, the session is cancelled and the time is given back.
Notes:
- This is not a status meeting. Status belongs in #team-standup. Bring decisions, design questions, and anything that needs real-time back-and-forth.
Special Cases
Section titled “Special Cases”What this covers: how to post when your day does not fit the standard pattern.
Post one line on your last working day before you leave: “OOO <date range>, back <date>. Coverage: @user.” Do not post while on PTO.
On-call days
Section titled “On-call days”Post your normal update, plus a fourth line: “On-call: responding to pages, async post may be late.” On-call days do not count against your participation metrics.
No update to give
Section titled “No update to give”Post anyway, with “nothing today” in each field that does not apply. A thin update is easier to interpret than no update at all.
Sensitive or people-related blockers
Section titled “Sensitive or people-related blockers”Post “Blocked: DMing @maya” in the channel and take the actual content to a direct message. Do not name the person involved in the channel.
Public holidays
Section titled “Public holidays”Post on the days you work. On a public holiday for your locale, skip without notice.
Troubleshooting
Section titled “Troubleshooting”Posts are running long, 200 words or more: The three fields are prompts for short bullets, not headers for paragraphs. Point to the exemplar posts pinned in the channel and hold the three-bullet ceiling at the Thursday session.
A timezone cluster is consistently late or silent: Check whether the 10am local cutoff is achievable for that group. If their workday starts at or after 10am local, the cutoff is a scheduling problem, not a compliance one. Move their window.
A thread under a blocked item runs past a few messages: Standup threads are for clarifying questions, not decisions. Move the conversation to a DM or add it to the Thursday agenda.
On-call triage is regularly running over the 10-minute budget: See the note under Daily triage. Give it a week before restructuring the rotation.
An engineer has not posted and has not replied to a DM within 60 minutes: Escalate to Maya Chen with the engineer’s name and last known context.
Reference
Section titled “Reference”Template fields
| Field | Includes | Excludes |
|---|---|---|
| Shipped | Work merged, deployed, or otherwise complete in the last 24 hours | Work in review, planning, meetings attended |
| In progress | Current focus through your next workday | Backlog items, speculative work |
| Blocked or at risk | Anything where someone else’s input changes your day | Vents, status with no ask |
Timing at a glance
| Event | Time |
|---|---|
| Daily post deadline | 10:00 local time |
| Backfill window | Same day, until 17:00 local |
| On-call triage window | 10:00 to 11:00 Pacific |
| Blocker response SLA | 30 minutes, resolver’s business hours |
| Thursday working session | 8:00 Pacific / 20:30 IST, 60 minutes |
| Thursday agenda cutoff | 17:00 Pacific Wednesday |
Metrics tracked (pulled weekly by Priya)
| Metric | Target |
|---|---|
| Participation rate (posts / engineers / workday) | 9 of 11 or better |
| Blocker response time (post to first substantive reply) | Under 30 minutes |
| Stale blockers (open more than 2 business days) | Zero |
Glossary
- On-call reader: the engineer assigned to daily channel triage that week.
- Blocker: an item that needs another person’s input, tagged with an @mention.
- At risk: an item trending toward becoming a blocker, not yet actionable by anyone else.
Related documents
- Process playbook:
docs/playbook.md - Thursday agenda:
docs/thursday-agenda.md - Trial retro:
docs/trial-retro.md - Decision record: ADR-0014, Adopt Async-First Standup Format
- Channels: #team-standup, #on-call-log, #on-call-schedule
Morning Protocol v3.0 User Manual
Section titled “Morning Protocol v3.0 User Manual”Reference for the four-module weekday morning sequence (water, light, movement, planning), the phone lockout rule, the logging system, and the current travel and weekend variants.
Table of Contents
Section titled “Table of Contents”- Getting Started
- Water Module
- Light Module
- Movement Module
- Planning Module
- Phone Lockout
- Logging Your Mornings
- Weekend and Travel Variants
- Troubleshooting
- Reference
Getting Started
Section titled “Getting Started”System requirements:
- A wake time that leaves a real gap before your first fixed obligation (family breakfast, school dropoff, or work start). The current target is 6:15am, with family obligations starting at 7:30am.
- A second location for the phone overnight, away from the bedroom (see Phone Lockout).
- A paper notebook and pen, staged separately from any device.
- Someone outside the routine (your spouse, an accountability partner, or both) who knows the commitment window.
First-session setup (do this once, the night before day one):
- Fill a glass with 500ml of water and place it on the nightstand.
- Move the phone to its overnight location, plugged in.
- Set the paper notebook and pen at the planning spot.
- Tell your accountability partner the start date and the commitment window.
- If you share a household, confirm any schedule overlap and agree on a boundary before day one, not after friction has already built up.
After first-session setup, the protocol runs the same way every weekday morning. Jump to whichever module you need.
Water Module
Section titled “Water Module”Rehydrates after several hours without intake and makes the day’s first action a chosen one instead of a reach for the phone. Reach for this module first, immediately on waking.
Steps:
- Reach for the glass staged on the nightstand the night before.
- Drink the full glass before standing up.
- Proceed to the Light module.
Options / Parameters:
- Volume: 500ml, room temperature.
- Staging location: nightstand is standard. A kitchen counter works if it can be reached without passing the phone’s overnight location.
Notes:
- No glass staged: default to tap water in the kitchen rather than skipping the module.
- No minimum duration. Completion matters, pace does not.
Light Module
Section titled “Light Module”Provides early light exposure to support alertness. Reach for this module second, right after Water.
Steps:
- Move to an outdoor space or the largest window in the house.
- Face the light source, standing or seated.
- Hold the full duration with no screen in hand.
- Proceed to the Movement module.
Options / Parameters:
- Duration: 10 minutes.
- Light source: outdoors preferred, a large window is an acceptable substitute.
- Low-light fallback: blinds fully open at the largest available window, plus a supplemental lamp if one is available.
Notes:
- A screen does not count as light exposure at any brightness setting.
- Any remaining water can be finished during this module.
Movement Module
Section titled “Movement Module”Raises heart rate and mobilizes the body after a night of stillness. Reach for this module third, after Light.
Steps:
- Choose a walk, a stretch sequence, or the bodyweight routine.
- For the bodyweight routine, follow the sequence in
protocol/movement.md. - Sustain the activity at a light-to-moderate pace for the full duration.
- Proceed to the Planning module.
Options / Parameters:
- Duration: 15 minutes.
- Intensity: talk-pace. This module is a wake-up signal, not a workout.
- Modality: walk, stretch, or bodyweight, interchangeable day to day.
Notes:
- No equipment required for any modality.
- Short on time: compress the duration rather than skip the module. See Troubleshooting.
Planning Module
Section titled “Planning Module”Converts the day’s intentions into a written shortlist before any digital tool opens. Reach for this module last, immediately before the Phone Lockout ends.
Steps:
- Carry the notebook and pen to a seated spot away from the phone’s overnight location.
- Write the top three tasks for the day, one line each.
- Optionally note what to protect time against or what to explicitly skip today.
- Add the day’s log row (see Logging Your Mornings) on the same page.
- Retrieve the phone. The lockout ends here.
Options / Parameters:
- Duration: 10 minutes, hard cap.
- Tool: paper and pen only.
- Location: any seated, stationary surface out of reach of the phone’s overnight location.
Notes:
- Do not process email or messages in this module once the phone is back in hand. Planning ends before the phone begins.
- Route weekly or longer-horizon planning to a separate evening session instead of extending this module past ten minutes.
Phone Lockout
Section titled “Phone Lockout”Governs all four modules: the phone stays out of reach until Planning is logged. Set up the night before; applies automatically through the rest of the sequence.
Steps:
- The night before, move the phone to its overnight location: kitchen, plugged in, face down.
- Leave it there through Water, Light, and Movement.
- Retrieve it only after Planning is logged.
Options / Parameters:
- Overnight location: kitchen is standard. Any room outside the bedroom and outside the planning spot works, provided reaching it takes a deliberate walk.
- Alarm handling: if the phone is also the alarm, use a separate alarm device or set the alarm before relocating the phone.
Notes:
- A location rule, not a willpower rule. The module works because the device is out of reach.
- Reaching for the phone before Planning is logged means the overnight location is not far enough away, not that more resolve is needed. See Troubleshooting.
Logging Your Mornings
Section titled “Logging Your Mornings”Turns four modules into data you can review at the end of the week. Runs inside Planning, not as a separate task.
Steps:
- During Planning, add one row to
log/days.csvon the same paper page. - Record date, wake time, completed status, which modules were skipped, one-word mood, and optional notes.
- At the end of the week, transcribe the week’s rows into the file.
- Write a short retro in
log/retros/summarizing the week.
Options / Parameters:
- Completed status:
yes(all four modules, in order, no shortcuts),partial(a module skipped or reordered), orno(no modules ran). - Mood field: one word, free choice. Used for pattern-spotting, not scored.
Notes:
- Logging inside Planning, rather than as a separate task, is what keeps it from becoming its own thing to skip.
- Log partial and missed days as accurately as completed ones. The 30-day review depends on it.
Weekend and Travel Variants
Section titled “Weekend and Travel Variants”Covers the two conditions the standard sequence does not assume: an unfamiliar environment, or a non-workday.
Travel
Section titled “Travel”Use when away from your regular environment.
Steps:
- Run Water and Planning. Treat Light and Movement as optional.
- Substitute a hotel window or hallway window for Light if attempted.
- Log the day
partialif fewer than four modules ran,noif none ran.
Options / Parameters:
- Scope: Water and Planning are the two modules judged essential enough to preserve away from home.
Notes:
- Exists because the standard sequence assumes a familiar environment. Do not improvise Movement in an unfamiliar space without a plan already in place.
Weekend
Section titled “Weekend”Use on Saturdays and Sundays.
Steps:
- Run the standard sequence unchanged. No dedicated weekend variant exists yet.
Notes:
- An open question, not a settled rule. The current default is the standard sequence. See Troubleshooting.
Troubleshooting
Section titled “Troubleshooting”You reach for the phone before Planning is logged. The overnight location is not far enough from reach. Move it to a different room, not just a different surface in the same room.
You complete three of four modules and call it done. Log the day partial and note which module dropped. Do not redefine completed before the 30-day review; a pattern in the notes will show where the friction actually is.
Travel breaks the sequence. Expected. Use the travel variant (Water and Planning only) instead of attempting the full sequence away from home, and log the day partial.
One weekday is consistently the hardest. Check the mood and skipped-module fields in log/days.csv for a pattern by day of week. A cluster on one day often traces back to the day before.
Weekend practice feels unresolved. Known open item, not a bug. The current default is the standard sequence; revisit at the next scheduled review instead of deciding ad hoc on a given Saturday.
Completion rate is trending down. If weekday completion falls below 70 percent over two consecutive weeks, raise it with your accountability partner before changing the protocol design.
Reference
Section titled “Reference”Module summary
Section titled “Module summary”| Module | Duration | Tool | Phone status |
|---|---|---|---|
| Water | Under 1 minute | Glass, staged the night before | Locked out |
| Light | 10 minutes | Outdoors or window | Locked out |
| Movement | 15 minutes | None required | Locked out |
| Planning | 10 minutes, hard cap | Paper notebook, pen | Locked out until logged |
Glossary
Section titled “Glossary”- Completed: all four modules ran, in order, with no shortcuts.
- Partial: at least one module skipped or run out of order, noted in the log.
- Lockout: the phone’s overnight location and the rule that it stays there until Planning is logged.
- Review: the scheduled checkpoint where the log is examined before any redesign.
Files and directories
Section titled “Files and directories”protocol/MANUAL.md- this documentprotocol/movement.md- the bodyweight sequence referenced in the Movement modulelog/days.csv- one row per morninglog/retros/- weekly retro notesnotes/- source material that shaped the protocol
Review checkpoints
Section titled “Review checkpoints”- 30-day review: end of the current commitment window.
- Escalation threshold: below 70 percent weekday completion across two consecutive weeks.
Notification Service User Manual
Section titled “Notification Service User Manual”This manual covers everything you need to send notifications through the Lattice Notify notification service, manage templates, and monitor delivery. It documents the notify-client package as it exists today. For why the service runs on Postgres rather than DynamoDB, see ADR-0023.
Table of Contents
Section titled “Table of Contents”- Getting Started
- Sending Notifications
- Managing Templates
- Checking Delivery and Retries
- Monitoring and Dashboards
- Troubleshooting
- Reference
Getting Started
Section titled “Getting Started”Requirements: Python 3.10 or later, network access to Lattice Notify’s internal package index, and a workspace_id for the service you are sending on behalf of.
Installation:
pip install notify-clientGet a workspace_id: post in #notify-service with your service name. The on-call engineer provisions a workspace_id (format ws_xxxxxx) within one business day.
First session:
from notify_client import NotifyClient
client = NotifyClient(workspace_id="ws_abc123")client.ping()ping() confirms your workspace_id is provisioned and the service is reachable. A successful call returns True.
If you are contributing to the notification service itself rather than sending notifications from another service, see the project README and the operational runbook instead of this manual.
Sending Notifications
Section titled “Sending Notifications”Send a single notification
Section titled “Send a single notification”Delivers one notification to one user through the channel you specify.
Steps:
- Import
NotifyClientand instantiate it with yourworkspace_id. - Call
client.send()withuser_id,channel,template, andpayload. - Store the returned
notification_idif you plan to check delivery status later.
result = client.send( user_id="usr_xyz789", channel="in_app", template="comment_mention", payload={"actor": "Marcus", "thread_id": "th_42"},)Options / Parameters:
user_id: the Lattice Notify internal user ID of the recipient. Required.channel:in_app,email, orslack. Required. See Choose a delivery channel.template: the registered template name, for examplecomment_mention. Required.payload: a dict supplying the template’s variables. Required keys vary by template; see Register a template.
Notes:
- The event is written to the
notificationsschema and picked up by thenotification_jobsworker pool within approximately 50ms. - In-app delivery lands in the user’s inbox in under 1 second, matching the documented sub-second p95.
send()raisesTemplateNotFoundErroriftemplateis not registered andWorkspaceNotFoundErrorifworkspace_idhas not been provisioned.
Send to multiple users
Section titled “Send to multiple users”Delivers the same template and payload to a list of users in one call.
Steps:
- Build a list of
user_idvalues. - Call
client.send_batch()withuser_ids,channel,template, andpayload. - Inspect the returned list of
notification_idvalues, one per recipient.
Options / Parameters:
user_ids: list of recipient IDs, limited to 500 per call.- All other parameters match
send().
Notes:
- Batches larger than 500 users must be split by the caller;
send_batch()does not auto-chunk. - Each recipient still produces one row in
notification_jobs; there is no separate batch table.
Choose a delivery channel
Section titled “Choose a delivery channel”Each channel has different payload requirements and delivery characteristics. Pick based on urgency and where the recipient will see it.
Steps:
- Decide whether the notification should interrupt the user immediately (
in_app), land in an inbox for later (email), or post to a team channel (slack). - Add the channel-specific payload fields listed below.
- Pass the chosen channel as
channelonsend()orsend_batch().
Options / Parameters:
in_app: fastest path, delivered to the in-app inbox, no extra payload fields required.email: requires asubjectkey inpayload; uses the template’s HTML layout.slack: requires aslack_channel_idkey inpayload; posts through the workspace’s linked Slack app.
Notes:
- A workspace must have a Slack app linked before the
slackchannel accepts sends. Unlinked workspaces getChannelNotConfiguredError.
Managing Templates
Section titled “Managing Templates”Register a template
Section titled “Register a template”Adds a new reusable message template that send() and send_batch() can reference by name.
Steps:
- Add an entry to
templates/with a lowercase, snake_casename(for examplecomment_mention), anallowed_channelslist, and avariableslist naming every placeholder the template body uses. - Open a pull request against the notification-service repository.
- Get review from the on-call engineer in
#notify-servicebefore merging.
Options / Parameters:
name: snake_case identifier, must be unique.allowed_channels: subset ofin_app,email,slack.variables: list of variable names the template body references, for exampleactor,thread_id.
Notes:
send()raisesPayloadMismatchErrorifpayloadis missing a variable the template declares.- Template registration takes effect on the next service deploy, not immediately on merge.
Preview a template
Section titled “Preview a template”Renders a template with sample data without sending it, useful for checking formatting before a template goes live.
Steps:
- Call
client.preview(template=, payload=)with a template name and a sample payload. - Read the rendered output for each channel listed in the template’s
allowed_channels.
Options / Parameters:
template: the template name to preview.payload: sample values for every declared variable.
Notes:
preview()does not write tonotification_jobsand does not count against send volume.
Checking Delivery and Retries
Section titled “Checking Delivery and Retries”Check delivery status
Section titled “Check delivery status”Looks up whether a specific notification was delivered, is still queued, or failed.
Steps:
- Call
client.get_status(notification_id)using the ID returned bysend()orsend_batch(). - Read the
statusfield on the response.
Options / Parameters:
notification_id: required, returned by a priorsend()orsend_batch()call.
Notes:
statusis one ofqueued,delivered,failed, orretrying. See Reference for the full table.- Status reflects the corresponding row in
notification_jobs; there is no separate status store.
Configure retry behavior
Section titled “Configure retry behavior”Overrides the default retry policy for a single call.
Steps:
- Call
client.send()with an optionalretry_policydict. - Set
max_retriesandretry_backoff_secondsinside it.
Options / Parameters:
max_retries: default 3.retry_backoff_seconds: default 30.
Notes:
- Defaults come from
notifications.notification_jobs_config, seeded during provisioning. Changing the default for all templates requires a schema change owned by Sam, not a per-call override.
Monitoring and Dashboards
Section titled “Monitoring and Dashboards”View the on-call dashboard
Section titled “View the on-call dashboard”Shows live queue depth and write rate for the notification service.
Steps:
- Open
https://dashboard.latticenotify.internal/notify-service. - Check the
notification_jobs queue depthpanel; 0 is normal for a healthy queue. - Check the
write rate (events/day)panel against the 500K events/day launch baseline.
Options / Parameters:
- None. The dashboard is read-only.
Notes:
- Jordan owns this dashboard. Contact Jordan in
#notify-serviceif a panel is missing or reads unexpectedly. - Sustained write rate approaching 5M events/day is the documented revisit threshold for the Postgres decision (ADR-0023). This manual does not cover that decision, only how to read the number.
Troubleshooting
Section titled “Troubleshooting”My notification never arrives: Usually an invalid template name, a missing channel-specific payload field, or an unprovisioned workspace_id. Call client.get_status() with the returned notification_id first; if no ID was returned, send() raised before queuing and the error message names the cause.
client.send() raises WorkspaceNotFoundError: Your workspace_id has not been provisioned yet. Request one in #notify-service.
client.send() raises PayloadMismatchError: The payload is missing a variable the template declares. Call client.preview() with your payload to see which variable is missing.
Slack notifications are not posting: The workspace has no linked Slack app, or payload is missing slack_channel_id. Confirm the link in the workspace admin panel before retrying.
Delivery is slower than the documented sub-second p95: Check the on-call dashboard for elevated queue depth. If write rate is climbing toward the 5M events/day threshold, notify Jordan and Ana Rivera; this is a capacity signal, not a client-side bug.
The service appears fully down, not just one notification failing: This is an incident, not a usage question. Page via PagerDuty service notification-service-prod rather than filing a client-side bug report.
Reference
Section titled “Reference”Status values
Section titled “Status values”| Status | Meaning |
|---|---|
queued | Written to notifications, not yet picked up by a worker |
delivered | Worker confirmed delivery to the channel |
retrying | Delivery attempt failed; waiting on retry_backoff_seconds |
failed | Exhausted max_retries without a successful delivery |
Channels
Section titled “Channels”| Channel | Required payload fields | Notes |
|---|---|---|
in_app | none beyond template variables | fastest path |
email | subject | uses the template’s HTML layout |
slack | slack_channel_id | requires a linked Slack app |
Errors
Section titled “Errors”| Error | Cause |
|---|---|
WorkspaceNotFoundError | workspace_id not provisioned |
TemplateNotFoundError | template name not registered |
PayloadMismatchError | payload missing a declared variable |
ChannelNotConfiguredError | channel requires setup the workspace has not completed |
Glossary
Section titled “Glossary”- workspace_id: identifier for the internal service sending notifications, provisioned via
#notify-service. - notification_jobs: the Postgres table backing the delivery queue, seeded with retry defaults during provisioning.
- revisit threshold: 5M events/day sustained, the documented trigger to reconsider the datastore decision (ADR-0023).
Related documents
Section titled “Related documents”- ADR-0023: Postgres for the notification service - the datastore decision this manual assumes.
- Operational runbook - provisioning the
notificationsschema andnotification_jobstable. - README - installing and contributing to the notification-service repository itself.
Manual reflects notify-client v0.1.0 and ADR-0023 (Accepted, 2026-05-16).
Insights User Manual
Section titled “Insights User Manual”Table of Contents
Section titled “Table of Contents”- Getting Started
- Exporting Your Data
- Downloading a CSV export
- Working with Your Export
- Column reference
- Opening the file in a spreadsheet or BI tool
- Dashboard Availability
- Troubleshooting
- Reference
- Quick reference
- Glossary
- Where to get help
Getting Started
Section titled “Getting Started”Insights is the analytics layer for the Meridian platform. No separate installation or account setup is required to use it.
- Access: through your web browser, from your account’s Settings page. No additional software is required.
- Data collection: Insights records usage events automatically from the date your account is created. There is no opt-in step.
- Current data access method: a CSV export of your account’s event data, available now. See Exporting Your Data.
- In-app dashboard: not yet available. See Dashboard Availability.
- Permissions: export access follows your account’s existing Settings permissions. Insights does not currently add a separate permission level.
Exporting Your Data
Section titled “Exporting Your Data”Downloading a CSV export
Section titled “Downloading a CSV export”The CSV export gives you your account’s underlying Insights event data as a downloadable file, for use in a spreadsheet or BI tool of your choice. Use this to work with your usage data now, while the in-app dashboard is still in development.
Steps:
- Sign in to your Meridian account.
- Open Settings.
- Select Data and Analytics.
- Select Export.
- Select Download CSV.
- Save the file when your browser prompts you.
Options / Parameters:
- None currently exposed. Each export returns the full event history for the account; there is no date-range or event-type filter yet.
Notes:
- Exports are generated on demand. Most accounts receive their file within a few seconds; accounts with a long event history may take longer.
- The file covers all usage events from your account’s creation date through the end of the previous calendar day. Today’s activity will not appear until tomorrow’s export.
- There is no scheduled or recurring export yet. Run the export again whenever you want an updated file. Scheduled export delivery is planned as part of the in-app dashboard; see Dashboard Availability.
Working with Your Export
Section titled “Working with Your Export”Column reference
Section titled “Column reference”The export is a single CSV file with one row per event and the following columns:
| Column | Description |
|---|---|
user_id | The user who triggered the event |
event_name | The action recorded (for example, page_view, feature_used) |
event_timestamp | UTC timestamp of the event, in ISO 8601 format |
session_id | Groups events that belong to the same session |
plan_tier | The account’s plan at the time of the event |
Notes:
event_timestampis always UTC. Convert to your local time zone in your spreadsheet or BI tool.plan_tierreflects the plan active at the time of each event. An account that has changed plans will show more than oneplan_tiervalue across its export history.
Opening the file in a spreadsheet or BI tool
Section titled “Opening the file in a spreadsheet or BI tool”The export is a standard comma-separated file with a header row. It opens directly in any spreadsheet application or BI tool.
Steps:
- Open your spreadsheet or BI tool.
- Open or import the downloaded file directly. Most tools detect
.csvfiles automatically. - Set
event_timestampas a datetime field if your tool does not detect it automatically.
Options / Parameters:
- Delimiter: comma
- Encoding: UTF-8
- Header row: first row
Notes:
- Accounts with a long event history can produce a large file. If your tool struggles to open it, filter by date range after import, or use a BI tool built for large flat files.
Dashboard Availability
Section titled “Dashboard Availability”The in-app Insights dashboard is not yet available. It was originally planned for Q3; a mandatory billing-system migration required the engineering capacity that had been allocated to it, and two of the features committed for that release, saved views and scheduled report delivery, were not ready to ship. The dashboard is now targeted for Q1. The CSV export is available now as an interim way to reach the same data.
Notes:
- Until the dashboard ships, use the CSV export (see Exporting Your Data) to work with your Insights data.
- Planned dashboard scope: date-range selectors and trend charts, per-feature and per-user breakdowns, saved views, and scheduled report delivery.
- This manual will be updated with dashboard documentation when the feature becomes available.
Troubleshooting
Section titled “Troubleshooting”I don’t see a dashboard in the product, only an export option. The in-app dashboard has not shipped yet; it is targeted for Q1. Use the CSV export in the meantime. See Exporting Your Data.
My export file is empty. Your account has not recorded any usage events in the export window (account creation date through the end of the previous calendar day). Confirm the account has been active, then export again.
My export does not include today’s activity. Exports cover events only through the end of the previous calendar day. Today’s activity will appear in tomorrow’s export.
The Export option is missing from Settings. Confirm you are signed in to the correct account and that you have access to the Settings page. If the option is still missing, contact insights@meridian.io.
The event_timestamp values do not match my local time.
event_timestamp is recorded in UTC by design. Convert to your local time zone in your spreadsheet or BI tool. See Column reference.
Reference
Section titled “Reference”Quick reference
Section titled “Quick reference”| Task | Where |
|---|---|
| Download a CSV export | Settings > Data and Analytics > Export > Download CSV |
| Full in-app dashboard | Not yet available. Targeted for Q1. |
Glossary
Section titled “Glossary”- Event: a single tracked action in the product, such as a page view or a feature use. Each event is one row in the export.
- Session: a period of continuous product use by one user, grouped by
session_id. - Plan tier: the subscription plan tied to an account at a given point in time.
Where to get help
Section titled “Where to get help”- Support portal: https://support.meridian.io
- Email: insights@meridian.io
Backend Services Onboarding User Manual
Section titled “Backend Services Onboarding User Manual”Table of Contents
Section titled “Table of Contents”- Getting Started
- Accounts and Access
- Requesting Your Access
- Verifying Access Landed
- Local Environment
- Bootstrapping Your Machine
- Running the Services Locally
- Codebase Orientation
- Tracing a Request
- Finding Who Owns a Service
- The On-Call Rotation
- Viewer Access vs. Active Rotation
- The On-Call Alert Drill
- Shipping Your First Change
- Finding a Starter Ticket
- Getting Reviewed and Deployed
- Working With Your Buddy
- The Guided Pairing Schedule
- Weekly Check-Ins
- Troubleshooting
- Reference
Getting Started
Section titled “Getting Started”This manual covers what a new backend services engineer needs to look up during the first two weeks: requesting access, setting up the local environment, orienting in the codebase, understanding the on-call rotation, and shipping a first change. It is a lookup document, not a script to read start to finish - Priya, the current cohort’s new hire, uses it the same way any future new hire will: find the section that matches the question, read it, get back to work.
Before Day 1, confirm the following are true. If any is not, contact the onboarding DRI - currently Mei, see docs/ownership.md for the current DRI rotation:
- A company laptop with VPN client software is provisioned and IT portal credentials have been sent.
- A buddy is assigned by name.
- A
good-first-issueticket is already scoped and visible on the team board.
The team ships to production daily and runs a shared on-call rotation. Both are normal parts of the job here, not exceptions to brace for.
Accounts and Access
Section titled “Accounts and Access”Requesting Your Access
Section titled “Requesting Your Access”Use this section to request a system credential or check whether one you requested has landed.
Steps:
- Open the IT portal with the credentials sent before Day 1.
- Submit a request for any item below not already marked “approved”:
- Source control org membership
- VPN credentials and SSO setup
- CI/CD pipeline access
- Observability platform (logs, traces, metrics)
- On-call rotation viewer
- Secret manager read access for staging
- Ask your buddy to add you to the team’s chat channels directly - these are not provisioned through the IT portal.
Options / Parameters:
- Chat channels:
#backend-services(primary team channel),#incidents,#deployments,#team-random
Notes:
- Staging secret manager access is historically the slowest item in the queue. If it is still pending by the middle of week one, ask your buddy to escalate rather than wait it out - see Troubleshooting.
- On-call rotation viewer access is read-only. It does not place you on the active rotation; see The On-Call Rotation.
Verifying Access Landed
Section titled “Verifying Access Landed”Use this section to confirm an access item actually works, not just that the portal shows it as approved.
Steps:
- Connect to VPN with the credentials from your request.
- Confirm you can post a message in
#backend-services. - Confirm you can view pipeline run history in CI/CD.
- Confirm you appear in the on-call rotation tool as a viewer.
Notes:
- A portal status of “approved” is not the same as working access. Verify each item by using it once.
Local Environment
Section titled “Local Environment”Bootstrapping Your Machine
Section titled “Bootstrapping Your Machine”Use this section the first time you set up the codebase locally, or any time you need to rebuild your environment from scratch.
Steps:
- Clone the repository:
Terminal window git clone git@source.example.internal:backend/services.gitcd services - Run the bootstrap script:
Terminal window ./scripts/bootstrap.sh - Confirm the script exits with status 0.
Notes:
bootstrap.shinstalls local tooling, sets environment variables, and runs the local health check suite.- A non-zero exit prints what access is still missing. Resolve the listed item under Accounts and Access before re-running.
- The VPN certificate step is sometimes missing from the IT-issued package. If bootstrap fails there, ask your buddy for the cert file directly rather than filing a second IT ticket.
Running the Services Locally
Section titled “Running the Services Locally”Use this section any time you need to start the environment, confirm it is healthy, or inspect a running service.
Steps:
- Start all services:
Terminal window make start-local - Run the smoke test:
Terminal window make smoke-test - Tail a specific service:
Terminal window make logs SERVICE=orders
Options / Parameters:
SERVICE: the name of any service defined indocs/service-map.md.ordersabove is an example - substitute the service you are working in.
Notes:
- A passing
smoke-testmeans the environment is healthy. If it fails, see Troubleshooting before asking a teammate.
Codebase Orientation
Section titled “Codebase Orientation”Tracing a Request
Section titled “Tracing a Request”Use this section to build a working model of how a request moves through the system.
Steps:
- Read
docs/architecture-overview.mdanddocs/service-map.md. - Open the observability platform and locate a real production request.
- Trace that request from the API gateway to the data store, noting each service it passes through.
Notes:
- Reading without tracing leaves the architecture abstract. Do both.
Finding Who Owns a Service
Section titled “Finding Who Owns a Service”Use this section any time you need to know who to ask about a specific service.
Steps:
- Open
docs/ownership.md. - Locate the service by name.
- Reach out to the listed owner directly for questions specific to that service.
Notes:
- In week one, prioritize one-on-ones with the owners of the services you are most likely to touch first;
docs/ownership.mdmarks these.
The On-Call Rotation
Section titled “The On-Call Rotation”Viewer Access vs. Active Rotation
Section titled “Viewer Access vs. Active Rotation”Use this section to understand what your on-call access does and does not mean during your first weeks.
Notes:
- On-call rotation viewer access (requested under Accounts and Access) lets you see the schedule and receive paged alerts as an observer. It does not place you on the active rotation.
- Active on-call participation starts in week five, consistent with a 30-day exclusion from being paged as primary or secondary responder.
- Watching a live deploy with the on-call engineer at least once before the end of week one is expected. Ask your buddy to arrange it if it is not already on your calendar.
The On-Call Alert Drill
Section titled “The On-Call Alert Drill”Use this section to prepare for the alert routing and escalation drill scheduled in week two.
Steps:
- Read
docs/on-call-runbook.mdbefore the drill. - Confirm your staging secret manager access is live (see Accounts and Access) - the drill requires it.
- Attend the drill and walk the escalation path with your buddy.
Notes:
- If staging access is not live by the time the drill is scheduled, flag it to your buddy immediately. Shifting the drill date is preferable to running it incomplete.
Shipping Your First Change
Section titled “Shipping Your First Change”Finding a Starter Ticket
Section titled “Finding a Starter Ticket”Use this section if your pre-scoped first ticket falls through, or to understand what makes a ticket appropriate for a first change.
Steps:
- Open the team board and filter by the
good-first-issuelabel. - Confirm the ticket touches one service and one data model.
- Confirm the ticket has a test that can be written in under an hour.
- Confirm the ticket does not require on-call context to understand.
Notes:
- Normally your buddy has already scoped this ticket before Day 1. Use this section only if that ticket is blocked or was picked up by someone else.
Getting Reviewed and Deployed
Section titled “Getting Reviewed and Deployed”Use this section when your first change is ready for review, and again for every change after it.
Steps:
- Open a pull request against
main. - Request review from your buddy. Arjun can pair as an additional reviewer if useful.
- Address review feedback and push updates.
- Once approved, run the deploy yourself, with your buddy present.
Notes:
- You drive the deploy; your buddy does not take the keyboard.
- Your name in the deployment log is the practical marker that your first change shipped. See
docs/deployment-guide.mdanddocs/code-review-guide.mdfor the full process.
Working With Your Buddy
Section titled “Working With Your Buddy”The Guided Pairing Schedule
Section titled “The Guided Pairing Schedule”Use this section to see what your buddy owns at each stage, and what is yours.
Steps:
- Days 1-2: your buddy owns a checklist for access and tooling. Nothing on it counts as done until you have verified it yourself.
- Week one: your buddy runs two 90-minute guided walkthroughs with you - one on service topology, one on deployment and on-call tooling. You keep your own notes; your buddy does not maintain them for you.
- Week two: you drive the first real change. Your buddy reviews and pairs only on blockers.
Notes:
- Your buddy’s sprint capacity is intentionally reduced while you onboard (roughly 30-40% in week one, 15-20% in week two). Reaching out is expected, not an imposition.
Weekly Check-Ins
Section titled “Weekly Check-Ins”Use this section to know what to expect from the two scheduled check-ins and how to raise something that is not on the agenda.
Steps:
- Attend the Friday week-one check-in (30 minutes). Come ready to answer: is anything blocked, can you navigate the codebase on your own, is anything missing from your access list.
- Attend the two-week retrospective at the end of week two (30 minutes). This closes the formal onboarding window.
Notes:
- These check-ins are also where “do I feel like I belong here” is a legitimate answer, not just “is my access working.” Raise it even if nobody asks directly.
Troubleshooting
Section titled “Troubleshooting”smoke-test fails after bootstrap. Check docs/troubleshooting.md first. Most failures trace back to an access item that shows “approved” in the portal but has not actually propagated.
Bootstrap fails on the VPN certificate step. Ask your buddy for the cert file directly rather than filing a second IT ticket.
An access request has been pending more than two business days. Do not wait it out. Ask your buddy to escalate through the engineering manager, especially for staging secret manager access - it blocks the week-two on-call alert drill.
Your pre-scoped first ticket is blocked or was picked up by someone else. Use Finding a Starter Ticket to identify a replacement before the start of week two. Do not begin week two without a ticket in hand.
You are not navigating the codebase independently by the end of week one. Say so at the Friday check-in. Extending orientation by a few days costs less than starting the first change on a shaky foundation.
Reference
Section titled “Reference”Glossary
- DRI: directly responsible individual. The onboarding DRI is the named owner of your onboarding workstream.
- Buddy: the peer engineer assigned to guide you through setup, orientation, and your first change. Not your manager.
- good-first-issue: the label marking tickets scoped as appropriate first changes - one service, one data model, low risk, testable in under an hour.
Document index
- Architecture overview -
docs/architecture-overview.md - Service map and ownership -
docs/ownership.md - Local setup troubleshooting -
docs/troubleshooting.md - How we deploy -
docs/deployment-guide.md - On-call runbook -
docs/on-call-runbook.md - Code review process -
docs/code-review-guide.md - Rationale for the guided pairing protocol - ADR-0023
Quick reference: make targets
| Target | What it does |
|---|---|
make start-local | Starts all services in Docker Compose |
make smoke-test | Runs the minimal end-to-end suite |
make logs SERVICE=<name> | Tails one service’s logs |
put-forward User Manual
Section titled “put-forward User Manual”Table of Contents
Section titled “Table of Contents”- Getting Started
- Nominating Someone Before They Feel Ready
- Staying Close Without Taking Over
- Correcting Without Undermining
- Stepping Back
- Tracking Deployments
- Troubleshooting
- Reference
Getting Started
Section titled “Getting Started”System requirements: standing in the room where the decision gets made - enough credibility that naming someone unproven reads as a call, not a mistake. A candidate who has shown aptitude in smaller work but has no track record yet at this scope. Tolerance for carrying exposure that does not transfer to anyone else if the engagement goes badly.
Installation: there is no application to install and no approval workflow beyond one conversation. Setup is a single action: say the candidate’s name, out loud, to the people who are deciding who leads.
Account setup: none. A first-time user and a third-time user install the same way.
First-session prerequisites: a specific person in mind. This practice does not run on a hypothetical candidate or an abstract commitment to “developing people.” It runs on one name.
Nominating Someone Before They Feel Ready
Section titled “Nominating Someone Before They Feel Ready”Use this when a candidate has demonstrated aptitude in smaller work but has no track record yet at the scope you are about to hand them, and the organization’s default is to name someone with an established resume instead.
Steps:
- Confirm the candidate has done real smaller-scope work, not that they show abstract promise.
- Offer full ownership. Do not offer a co-lead arrangement.
- Expect to hear “I’m not ready.” Treat it as expected input, not new information.
- Tell them they are closer than they think, and move before they finish arguing the point.
- Say their name to the people who are actually deciding.
Options / Parameters:
- Scope: full, not partial. A co-lead arrangement supplies the title without the weight of the actual calls, and teaches the candidate nothing.
- Timing: before confidence arrives, not after. Confidence is a byproduct of running this practice, not a precondition for starting it.
Notes:
- The candidate’s objection is not a reason to reconsider. You priced it in before you said their name.
- See Staying Close Without Taking Over for what comes next.
Staying Close Without Taking Over
Section titled “Staying Close Without Taking Over”Use this from the first week of the engagement through the point the candidate stops routing decisions through you.
Steps:
- Stay visible early. Attend the first several meetings. Say little.
- Answer a repeated question again if it is asked again. Repetition from the nominee is not evidence you chose wrong.
- Notice the moment you want to take the work back - it arrives during a visibly stuck week with a visible deadline - and do not act on it.
- If the nominee offers the work back to you in a moment of genuine panic, decline it.
- Step back once decisions are routing around you instead of through you.
Options / Parameters:
- Proximity: close enough to answer the same day; far enough that the nominee makes the actual calls.
- Duration: matched to the engagement. Typically weeks to months. The trigger for ending is the nominee’s footing, not a date on a calendar.
Notes:
- Declining the work when it is handed back to you is the single most load-bearing action in this practice. Everything else is easier than this one.
- See Correcting Without Undermining for the specific case of a visible mistake.
Correcting Without Undermining
Section titled “Correcting Without Undermining”Use this when the nominee makes a visible mistake in front of people who are still deciding whether to trust them.
Steps:
- Let the mistake stand in the room. Do not correct it live.
- Raise it afterward, privately.
- Frame the correction as a sharper question, naming what they were not seeing, rather than supplying the answer outright.
Options / Parameters:
- Venue: private, after the fact, without exception, regardless of how high the stakes were in that specific meeting.
Notes:
- The instinct to correct live is strongest exactly when the stakes are highest, which is exactly when a public correction does the most damage to the nominee’s standing.
Stepping Back
Section titled “Stepping Back”Use this once the nominee has found their footing and the engagement no longer requires your proximity.
Steps:
- Confirm decisions are routing around you, not through you.
- Stop offering to take work back, including the pieces you privately believe you could resolve faster yourself.
- Let the nominee own the outcome, including whatever ships slightly late or slightly short of ideal.
Options / Parameters:
- Trigger condition: the nominee’s footing. Not a calendar date, not someone else’s milestone.
Notes:
- What the nominee keeps afterward is not the deliverable. It is a durable belief that they can lead something they have not done before. The deliverable is replaceable. The belief compounds, and eventually they spend it on someone else.
Tracking Deployments
Section titled “Tracking Deployments”What this covers: the running log of who this practice has been run on, and by whom.
Steps:
- Log the nominee’s name and the assignment at the time of nomination.
- Update the entry when the engagement closes: whether it shipped, and roughly how close to the original schedule.
- Carry the log forward. It is the only record that this is a practice and not just a story someone tells about themselves after the fact.
Options / Parameters:
- Deployments to date: 3.
- Original author: Dana. Never written down. Demonstrated once, at full scope.
- Current maintainer: Sable Marchetti.
Notes:
- Deployment 1 (original): Dana, to the current maintainer, in the maintainer’s second year at the company. No manual existed at the time. This document is the belated write-up.
- Deployment 2: the current maintainer, to Micah, an infrastructure audit. Shipped.
- Deployment 3 (current): the current maintainer, to Priya Osei, the Cassava data-pipeline rebuild. Nominated in February over some internal skepticism; four weeks ahead of the original schedule as of this edition.
Troubleshooting
Section titled “Troubleshooting”You keep wanting to take the work back: the deadline is visible and taking over would objectively be faster than waiting for the nominee to work through it. Sit on your hands. The delay you are watching is not wasted time. It is the entire mechanism, and it does not get easier with repetition.
The nominee offers the work back to you: this usually happens mid-engagement, in a moment of genuine panic, around the point the assignment stops feeling theoretical. Decline it. Accepting it back is the one action that undoes what the nomination was supposed to build.
You are absorbing more cost than anyone above you can see: the hours spent staying close do not appear on a delivery plan, and the organization has no line item for them. There is no fix that removes this cost. It is the actual price of the practice, paid by the sponsor and not the nominee. Budget for it before starting, not after you notice it.
The organization defaults to naming someone with an established track record instead of your nominee: the organization is optimizing for scope already proven, which the nominee does not have yet by definition. Spend your own standing to cover the gap. That spend is non-refundable if the nominee does not perform. The exposure is the feature, not a defect to route around.
The nominee keeps deferring instead of deciding: you are still answering too many questions directly. Attend fewer meetings. Redirect the next question back to them before you answer it yourself. See Staying Close Without Taking Over.
Reference
Section titled “Reference”Glossary
Section titled “Glossary”- Full nomination: naming someone as fully accountable for an outcome. Contrast with a co-lead arrangement, which supplies the title without the weight of the actual calls.
- Co-lead arrangement: a hedge that resembles a nomination but withholds real accountability. Produces no growth in the nominee. Not supported by this practice.
- Stretch assignment with an invisible ceiling: a nomination in appearance only, where support quietly withdraws the moment the nominee hesitates. What this practice is explicitly not.
- Sponsor: the person who spends personal standing on someone else’s behalf and absorbs the reputational exposure if the engagement fails.
- Deployment: one completed run of the practice, start to close. See Tracking Deployments.
Related documentation
Section titled “Related documentation”- Why the original deployment was never written up until now: docs/why-this-took-ten-years.md
- What the sponsor’s time costs when it will not fit on a delivery plan: docs/the-uncounted-hours.md
- Running the practice a second and third time: docs/micah-and-priya.md
Acknowledgments
Section titled “Acknowledgments”This practice was not invented by the current maintainer. It was run once, at full scope, on the current maintainer, roughly ten years ago, by someone who never wrote any of it down and may not think of it as a practice at all - only as a decision she made about one person, one time.
It took five features and five troubleshooting entries to reproduce, and reproducing it twice is what made clear it was never improvised. Someone built this on purpose and declined to take credit for the build.
This edition exists to fix that.
Dana - this is the manual. You were the first deployment. Thank you.
rest-day User Manual
Section titled “rest-day User Manual”Table of Contents
Section titled “Table of Contents”- Getting Started
- Setting the Phone-Away Window
- Running a Rest Day
- Re-Entry (Ending the Rest Day)
- Tracking Streak and Version
- Troubleshooting
- Reference
Getting Started
Section titled “Getting Started”System requirements: one full day of rest per seven (one in seven, not a lighter workday), a drawer or another room to hold the phone out of reach, and tolerance for the discomfort of the first several attempts under any new configuration.
Installation: there is no application to install. Setup is one decision, made the night before the rest day: close the laptop, put the phone in a drawer or a different room, and do not open either until the next morning.
Account setup: none. A lapsed practice restarts from this same installation step regardless of how long the gap has been.
First-session prerequisites: none beyond the installation decision itself.
Setting the Phone-Away Window
Section titled “Setting the Phone-Away Window”Configuring window start and end times
Section titled “Configuring window start and end times”The phone-away window is the block of time during which the phone is out of reach and notifications, messages, and the queue are inaccessible. Reach for this task when starting the practice or adjusting its schedule.
Steps:
- Choose a start time the evening before the rest day.
- Place the phone in a drawer or a separate room at the start time.
- Choose an end time the following morning.
- Retrieve the phone only at or after the end time.
Options / Parameters:
- Window start: any time from sundown onward. Earlier starts capture more transition time before the window closes.
- Window duration: currently 10 hours (Saturday at 8 p.m. to Sunday at 6 a.m.).
- Rest day: currently Sunday, held fixed from week to week rather than floating.
Notes:
- A 4-hour window was the first configuration used. It did not produce full disengagement; see Troubleshooting.
Extending window duration
Section titled “Extending window duration”Reach for this task when the current window is not producing full disengagement, or when moving toward a longer target configuration.
Steps:
- Confirm the current window has held for at least one full week before extending.
- Move the start time earlier by one evening.
- Hold the new start time for at least one week before evaluating again.
Notes:
- Target configuration: start Friday at sundown, hold through Sunday evening. Target date: by end of next week. The current 10-hour window starts too late in the week to capture the Friday transition time.
Running a Rest Day
Section titled “Running a Rest Day”Morning
Section titled “Morning”What this covers: the first hours after waking, when the pull to check the queue is strongest.
Steps:
- Wake without an alarm, if possible.
- Do not check notifications.
- Eat something not prepared at a desk.
Notes:
- The first rest day under any new configuration will not feel like rest. This is expected behavior, not a malfunction.
Afternoon
Section titled “Afternoon”What this covers: sustaining the rest day once the morning’s initial discomfort has passed.
Steps:
- Find an activity that produces no output.
- Do not justify the activity to yourself or anyone else.
Notes:
- A running tally of whether the day is “worth it” may activate during this period. See Troubleshooting - Productivity accounting habit.
Evening
Section titled “Evening”What this covers: closing out the rest day before re-entry.
Steps:
- Notice whether you feel calmer or more anxious than usual.
- Record the observation without scoring it as success or failure.
- Skip the weekly productivity review, if one normally runs on this day.
Notes:
- Skipping the productivity review is part of the practice, not an omission.
Re-Entry (Ending the Rest Day)
Section titled “Re-Entry (Ending the Rest Day)”What this covers: the transition back into the working week when the phone-away window closes.
Steps:
- Retrieve the phone at the window end time.
- Cap the initial review at 30 minutes.
- Triage only during the capped review. Do not send replies.
- Resume normal message handling after the 30-minute cap ends.
Options / Parameters:
- Review cap: 30 minutes.
Notes:
- Under the previous, uncapped approach, the first 15 minutes after retrieval involved scanning everything. That scanning compressed the steadiness built during the rest day before the next week even started. The 30-minute cap is the mitigation currently under test.
Tracking Streak and Version
Section titled “Tracking Streak and Version”What this covers: the counters used to track how long the practice has held.
Steps:
- Increment the streak counter by one at the close of each rest day that held completely: no work output, no checking messages.
- Reset the streak counter to zero if a rest day is broken.
- Advance the version marker by one week regardless of whether the streak held.
Options / Parameters:
- Version: week number since the most recent restart. Currently week-14.
- Streak: consecutive fully held weeks. Currently 3.
- Status: active, paused, or lapsed.
Notes:
- Version and streak are tracked separately. A broken week resets streak, but the version marker continues, since the practice as a whole is still active.
- Planned addition: a pre-rest log, recorded before the window opens, capturing expected feelings and what you’re afraid of missing, for comparison against the evening observation. Not yet implemented as of week-14. Target date: by end of next week.
Troubleshooting
Section titled “Troubleshooting”The rest day feels unproductive, not restful: Expected in early attempts under any new configuration, not a sign the practice is failing. Output is the measure that applies on a working day. A rest day does not carry that measure, so its absence registers as discomfort rather than success. The discomfort is not evidence against the practice.
A running tally of whether the rest was “worth it” keeps activating: This is the productivity accounting habit. No direct mitigation has resolved it. Working hypothesis: it resolves gradually as evidence accumulates across weeks, not through direct effort against it. Naming the pattern when it activates is the current approach.
Scanning everything in the first minutes after the window closes: The uncapped return compresses whatever steadiness was built during the rest day. Apply the 30-minute review cap with triage only, no replies. See Re-Entry.
The phone-away window is too short to produce disengagement: A 4-hour window was tried first and did not hold. Extend the window; see Setting the Phone-Away Window - Extending window duration.
The practice stops entirely for an extended period: This has happened before. An earlier version ran six weeks before a deadline overrode it, and the restart did not happen for eleven months. There is no fast recovery path. Restart with the same installation step whenever it becomes possible again, regardless of how much time has passed.
Uncertainty about which incoming channel counts as work during the window: No rule yet distinguishes which channel (ticket tracker, inbox, notifications feed) is most likely to be rationalized as necessary. Until a rule exists, treat all three as inside the phone-away window scope by default. Target date for the rule: July 5.
Others notice the gap in availability and ask about it: An explanation is required, and it takes more words than most people expect. Budget for the longer conversation; no shorter phrasing has been found.
Reference
Section titled “Reference”Glossary
Section titled “Glossary”- Phone-away window: the scheduled block of time during which the phone is kept out of reach and not retrieved.
- Productivity accounting habit: the background process of tallying whether a rest day was good enough to justify its cost. The primary active risk to the practice as of week-14.
- Re-entry: the transition back into work-handling once the phone-away window closes.
- Streak: the count of consecutive weeks the rest day held completely.
- Version: the week number since the most recent restart of the practice.
Version history
Section titled “Version history”- Weeks 1 through 6 (prior attempt): practice active, then stopped when a deadline overrode it.
- Gap: eleven months, practice inactive.
- Weeks 1 through 14 (current restart): practice active. Phone-away window extended from 4 hours to 10 hours over this span.
Related documentation
Section titled “Related documentation”- First anxious hour: docs/first-hour.md
- Handling a broken streak: docs/relapse.md
- Field notes, weeks 1 through 14: docs/field-notes.md
- What this practice asks of someone who measures days by output: docs/the-ask.md
Operations Coordinator Role: User Manual
Section titled “Operations Coordinator Role: User Manual”Crestfield Group - Internal - Version 1.0 - Maintained by Dana Reyes and Marcus Okonkwo - Last reviewed with Howard Thayer: June 24, 2026
Table of Contents
Section titled “Table of Contents”- Getting Started
- Vendor and Contract History
- Locating contract history for a vendor dispute
- Incident Response Coordination
- Reconstructing system state when the documented runbook is out of date
- Escalating when automated alerts do not tell the full story
- Utility and Facilities Escalation
- Reaching a utility contact outside the standard queue
- Informal Mentoring and New-Hire Support
- Getting a second read on a decision before it goes out
- Troubleshooting
- Reference
Getting Started
Section titled “Getting Started”This manual documents the Operations Coordinator role at Crestfield Group as it stands after June 27, 2026, Howard Thayer’s last day following twenty-six years in the role. It replaces the channel most of this knowledge used to travel through, which was asking Howard directly.
Before your first shift covering this role:
- Request access to the shared operations drive (
/ops/), including the vendor contract archive and the knowledge-transfer folder, if you do not already have it. - Read the mentee notes archived at
/ops/knowledge-transfer/mentee-notes/once, in full, before you need any single entry in it. - Introduce yourself to the four utility and facilities contacts listed under Reference. Do this before an outage, not during one.
- Know that Dana Reyes and Marcus Okonkwo co-maintain this manual. If a task is not covered here, ask one of them before improvising.
This manual does not cover judgment calls made under genuine ambiguity with no precedent. Nothing does. See Troubleshooting for what to do when you hit one anyway.
Vendor and Contract History
Section titled “Vendor and Contract History”Locating contract history for a vendor dispute
Section titled “Locating contract history for a vendor dispute”Use this when a vendor dispute or billing disagreement requires the original agreement terms and nobody currently on the vendor’s side remembers the history either.
Steps:
- Check
/ops/vendor-archive/[vendor-name]/for the original scope-of-work and any signed amendments. Files are named by year. - If the folder is empty or incomplete, check the conversion log at
/ops/vendor-archive/_conversion-log.md. Not everything Howard held on paper had been digitized as of his last day. - If the record still is not there, contact the vendor’s account representative directly and ask for their copy of the signed agreement. Do not assume Crestfield’s copy is the only surviving one.
- Log whatever you find back into the archive folder so the next lookup does not repeat this path.
Options / Parameters:
- Archive scope: contracts opened in 2015 or later are archived in full. Contracts before 2015 are partial, pending the digitization backlog.
- Escalation contact: for a vendor with no responsive account representative, escalate to Carolyn Marsh (cmarsh@crestfieldgroup.internal).
Notes:
- A contract dispute in 2019 was resolved this way when the archive existed only in Howard’s memory. The path above is the same path, now written down.
- Some amendments from before 2018 exist only as scanned images without text recognition. Search by filename and date, not by text search, for anything that old.
Incident Response Coordination
Section titled “Incident Response Coordination”Reconstructing system state when the documented runbook is out of date
Section titled “Reconstructing system state when the documented runbook is out of date”Use this when responding to an incident requires the actual current configuration of a system, and the written runbook no longer matches it, typically after an undocumented migration.
Steps:
- Pull the current system-state diagram from
/ops/knowledge-transfer/system-diagrams/. Diagrams are dated and versioned as of each quarterly knowledge-capture session. - Compare the diagram against the monitoring dashboard. Flag any discrepancy in the incident log rather than resolving it silently.
- If the diagram does not resolve the discrepancy, page Dana Reyes or Marcus Okonkwo. Both worked the 2026 knowledge-transfer sessions and can reconstruct undocumented history faster than starting from the ticket tracker.
- After the incident closes, update the system-state diagram with what you learned. This step is not optional. It is the reason the quarterly capture practice exists.
Options / Parameters:
- Diagram refresh cadence: quarterly. If an incident revealed drift, file an out-of-cycle update rather than waiting for the next quarter.
Notes:
- Before 2026, this step depended on one person’s memory of a platform migration nobody had fully recorded. It is written down now. Treat a gap you find in this diagram as a gap that already existed, not a new failure.
Escalating when automated alerts do not tell the full story
Section titled “Escalating when automated alerts do not tell the full story”Use this when an alert is technically accurate but does not point you to the actual cause, which is a known gap in current alerting coverage rather than a one-off.
Steps:
- Check
/ops/knowledge-transfer/alert-gaps.mdfor a matching alert type. This log lists alerts known to be incomplete and what to check instead. - If the alert type is not listed, treat it as a new gap: resolve the incident first, then add an entry to the log afterward.
- Contact the vendor or utility contact named for that system under Reference rather than waiting for the alert to update.
Notes:
- This was Howard’s most-used pattern and the hardest to write down, because he was not consciously following steps. He was recognizing situations. What is written here is a reconstruction, not the original.
Utility and Facilities Escalation
Section titled “Utility and Facilities Escalation”Reaching a utility contact outside the standard queue
Section titled “Reaching a utility contact outside the standard queue”Use this when the standard facilities ticket queue is too slow for an active issue with power, HVAC, water, or building access, and you need a direct line.
Steps:
- Check the table under Reference for the four direct contacts. These existed only in Howard’s personal phone before this manual; they are logged here with his agreement, recorded before his last day.
- Call rather than email for anything time-sensitive. Each contact responds faster to a call than to a ticket.
- Identify yourself as calling on behalf of Crestfield Group Operations and reference the standing account if asked.
- Log the call and its outcome in the facilities ticket regardless of which channel you used, so the record stays complete.
Notes:
- These four relationships were personal to Howard before this manual existed. They may not respond with the same speed to a new caller. Expect a slower response for the first few months. That is not the contact being unreliable.
Informal Mentoring and New-Hire Support
Section titled “Informal Mentoring and New-Hire Support”Getting a second read on a decision before it goes out
Section titled “Getting a second read on a decision before it goes out”Use this when you are new to the role, or new to Crestfield Operations generally, and want a second opinion before a decision or communication goes out. This is the function Howard performed informally, across twenty-six years, without a title for it.
Steps:
- Bring the specific decision or draft to Dana Reyes or Priya Sandhu. Both were designated as points of contact for this in June 2026.
- State the decision and your reasoning in two or three sentences before asking your question. This is a request for a second read, not a request for someone else to decide for you.
- Expect a question back, not a verdict. That is the format this takes here. It is not a rubber stamp and not a formal review gate.
Notes:
- This is not a required step in any process document and does not appear as a gate. It is offered, not mandated. See ADR-0047 (backfill and knowledge-capture decision made after Howard’s departure was announced) for why it was kept informal rather than turned into a title.
Troubleshooting
Section titled “Troubleshooting”- A vendor contact does not recognize your name or respond with the urgency Howard used to get: personal relationships do not transfer with a role. Reference the standing account number and the specific contract or ticket, and escalate through Carolyn Marsh if urgency is required rather than waiting for rapport to build.
- The system-state diagram does not match what you are seeing in production: the diagram is only as current as the last quarterly capture session, and drift between sessions is expected rather than a sign the diagram is wrong. File an out-of-cycle update per Incident Response Coordination, and treat the live system as the source of truth in the meantime.
- A task you need is not documented anywhere in this manual: this manual reflects what was captured in the May and June 2026 knowledge-transfer sessions and is not exhaustive. Ask Dana Reyes or Marcus Okonkwo first. If neither knows, log the gap in
/ops/knowledge-transfer/gaps.mdso it does not stay undocumented twice. - Two long-tenured colleagues describe the same informal process differently: several of Howard’s practices were personal habits that different people partially absorbed. There is no single correct version for a practice that was never formalized. Use the version that fits your situation and document your own version afterward.
Reference
Section titled “Reference”Manual contacts
Section titled “Manual contacts”| Name | Role | Contact for |
|---|---|---|
| Dana Reyes | Operations Coordinator | Incident reconstruction, system-state diagrams, second reads on decisions |
| Marcus Okonkwo | Operations Coordinator | Incident reconstruction, alert-gap questions |
| Priya Sandhu | Operations Analyst | Second reads on decisions |
| Carolyn Marsh | Operations Lead | Escalation when the above are unavailable, vendor relationship handoffs |
Utility and facilities contacts
Section titled “Utility and facilities contacts”| System | Contact | Notes |
|---|---|---|
| Electrical / power | Bracken County Power, Commercial Accounts Desk | Call rather than email for same-day issues |
| HVAC | Northline Mechanical Services | Separate after-hours line; see /ops/knowledge-transfer/facilities-contacts.md |
| Water / plumbing | Vantage Utilities | Shares combined-outage reporting with the electrical desk |
| Building access / badges | SecureAccess Building Systems | Only 24-hour live line of the four |
Related documents
Section titled “Related documents”- ADR-0047 (backfill and knowledge-capture decision) - the decision record behind this manual’s existence
- System-state diagrams -
/ops/knowledge-transfer/system-diagrams/ - Alert-gap log -
/ops/knowledge-transfer/alert-gaps.md - Mentee notes archive -
/ops/knowledge-transfer/mentee-notes/ - Vendor contract archive -
/ops/vendor-archive/
Glossary
Section titled “Glossary”- Knowledge-transfer sessions - the two working sessions Dana Reyes and Marcus Okonkwo held with Howard Thayer in May and June 2026 to document decision paths that previously existed only informally.
- Quarterly knowledge-capture practice - the standing practice established by ADR-0047, under which team leads record the decisions and constraints shaping their area of operations every quarter, independent of any single person’s departure.
- Second read - the informal practice of bringing a decision to a designated senior contact before it goes out. See Informal Mentoring and New-Hire Support.
Project Halyard Close-Out Celebration - User Manual
Section titled “Project Halyard Close-Out Celebration - User Manual”Table of Contents
Section titled “Table of Contents”- Getting Started
- Attending the Celebration
- Giving and Receiving Recognition
- The Retrospective Session
- Swag and Artifacts
- Troubleshooting
- Reference
Getting Started
Section titled “Getting Started”This manual covers the Project Halyard close-out celebration on June 30, 2026, and the extended-scope retrospective that runs as part of it. It is for anyone who had time against the checkout-reflow rebuild at any point across the fourteen-month run - engineering, infra, QA, analytics, or anyone who rotated off before the June 13 cutover.
It is a reference, not a script. Look up the section you need rather than reading the whole thing in order.
Before the event:
- Read the June 2 - June 20, 2026 status report circulated by Priya Vasquez, the program lead. It is the fastest way to reconstruct the timeline if your memory of specific weeks has already compressed.
- Read or skim the timeline packet (see Reading the Timeline Packet). It goes out to all invitees three days before the session.
- RSVP by June 26 (see RSVP and Logistics). Catering and the recognition-wall printing both run off the RSVP count.
You do not need to prepare a formal presentation. The retrospective is structured; the celebration portion is not.
Attending the Celebration
Section titled “Attending the Celebration”RSVP and Logistics
Section titled “RSVP and Logistics”The celebration and retrospective run back to back on June 30, starting at 3:00 PM, in the fourth-floor common area. Budget roughly two hours: ninety minutes for the retrospective, the remainder for recognition and the informal celebration.
Steps:
- Open the calendar invite titled “Project Halyard Close-Out.”
- Select an RSVP response by June 26. This date is firm - it is the cutoff Dani Rowe uses to finalize catering and swag counts.
- If you have a dietary restriction, add it as a note on the RSVP rather than mentioning it the day of.
- If you rotated off the project before the June 13 cutover, RSVP anyway. You are invited regardless of when you left.
Options / Parameters:
- Attendance mode: in-person (fourth-floor common area) or remote (video link in the invite)
- Dietary note: free-text field on the RSVP form
- Plus-ones: not applicable. This is a working-hours internal event for people who were on the project.
Notes:
- If you are not sure whether you counted as “on the project,” you did. Anyone with commits, incident-response time, review time, or planning time against Halyard at any phase qualifies.
Joining Remotely
Section titled “Joining Remotely”The retrospective portion runs for in-person and remote attendees at the same time. The celebration portion afterward is lighter for remote attendees, but recognition-wall contributions and shoutouts are fully accessible remotely.
Steps:
- Use the video link in the calendar invite, not a personal meeting link.
- Join at 3:00 PM sharp for the retrospective. The recognition segment that follows is less time-sensitive.
- To submit a written shoutout remotely, use the form linked in the invite rather than waiting for the in-person card station (see Giving a Shoutout).
Notes:
- The retrospective is recorded for anyone who cannot attend either way. The recording is not a substitute for the written retrospective summary that follows - see The Retrospective Session.
Giving and Receiving Recognition
Section titled “Giving and Receiving Recognition”The Recognition Wall
Section titled “The Recognition Wall”The recognition wall is a physical board, mirrored on the remote form, where anyone can post a named, specific piece of recognition: who did something, what it was, and what it cost or prevented. It stays up for a week after the event for anyone who missed it.
Steps:
- Take an index card from the station near the entrance, or open the remote form.
- Write one entry per card: name, the specific decision or action, and what would have happened without it.
- Pin the card to the wall under the relevant phase heading - Foundation, Canary, Ramp, Slip, or Cutover - or select the matching phase in the remote form.
Options / Parameters:
- Format: index card (in person) or remote form (same fields, submitted online)
Notes:
- Generic praise does not work well on the wall. “Great work this year” is not a wall entry. “Marcus Teel filed the February cart-state bug when he could have marked it low severity and moved on” is a wall entry. If you are stuck on wording, see Giving a Shoutout for the same method spoken aloud.
Giving a Shoutout
Section titled “Giving a Shoutout”A shoutout is the spoken version of a recognition-wall entry, given at the microphone during the recognition segment. The method is the same either way: name the person, name the specific thing they did, name what it cost or prevented.
Steps:
- Signal Priya Vasquez before the segment starts if you want a slot. Slots are also open to walk-ups if time allows.
- State the person’s name and what they specifically did. A role title is not a substitute for the action - “she was a great lead” names a title; “she recommended the parallel-run option knowing it would cost fourteen months of double operating overhead” names the action.
- State what would have happened on the easier path, if you know it.
- Keep it under a minute. Two or three sentences is usually enough once the specifics are there.
Options / Parameters:
- Delivery: spoken at the mic, or written on a wall card if you would rather not speak
- Length: no hard limit, but the segment is time-boxed, so specific and short beats long and general
Notes:
- Examples from the record, if you want a model to work from: Dani Rowe calling the March hold when the February near-miss was not fully resolved; Marcus Teel filing the February bug on his own initiative; Jordan Osei rewriting the payment callback handler over a weekend instead of patching around it; Sam Wickfield holding the regression bar on June 9 when every hour of delay felt enormous. None of that shows up in a commit count. That is what the shoutout segment is for.
Receiving a Shoutout
Section titled “Receiving a Shoutout”Steps:
- Let the recognition land. Do not deflect it onto the whole team in the moment - there is a separate closing note for team-wide thanks.
- If a detail is wrong (wrong date, wrong attribution), correct it briefly and warmly, then let the recognition stand.
- A short “thank you” is a complete response. Nothing further is required.
Notes:
- People routinely undercount their own contribution on a fourteen-month project, because the work stopped feeling unusual to them somewhere around month six. The wall and the shoutouts exist partly to correct for that.
The Retrospective Session
Section titled “The Retrospective Session”Reading the Timeline Packet
Section titled “Reading the Timeline Packet”The timeline packet goes out three days before the event. It contains the dated sequence of incidents, slips, and decisions across the full run: the February and April near-misses, both launch-date slips, and the June 13 cutover.
Steps:
- Read the packet before June 30. The ninety-minute retrospective slot is not long enough to reconstruct the timeline from memory in the room.
- Note anything you remember differently from the packet and raise it during the session, not after.
Notes:
- The packet draws directly on the ADR, the status report, and the incident tickets. It is not a summary written from memory.
Participating in the Extended-Scope Retro
Section titled “Participating in the Extended-Scope Retro”This retro is structured by project phase, not by sprint. A standard sprint-retro format does not fit a fourteen-month run, so this session runs longer and covers more ground than a normal retrospective.
Steps:
- The facilitator opens with what was supposed to happen at each phase boundary, then moves to what actually happened.
- Participants add what a given divergence cost or prevented, phase by phase: foundation and shadow mode, canary ramp, the February slip, the April slip, cutover.
- Before the session closes, confirm who is writing the summary and when it circulates. This session produces its own written record, separate from this manual.
Options / Parameters:
- Format: structured discussion by phase, not free-form
- Duration: ninety minutes, held to the clock so the recognition segment is not squeezed
Notes:
- This manual covers how to attend and participate in the day’s events. It is not the retrospective’s written output; that summary is a separate document, expected the week after June 30.
Swag and Artifacts
Section titled “Swag and Artifacts”Claiming Your Halyard Swag
Section titled “Claiming Your Halyard Swag”Steps:
- Check the swag table near the entrance on your way in or out.
- Take one item per person. The run was sized to the RSVP count, not to walk-ins.
- If you RSVP as remote and want an item, note it on the RSVP form. Remote swag ships the following week.
Notes:
- Swag is optional and unrelated to whether you give or receive recognition. Skipping the table has no bearing on anything else in this manual.
The Commemorative Phase Chart
Section titled “The Commemorative Phase Chart”A printed copy of the five-phase rollout chart from the checkout-reflow README is posted at the event and mailed to remote attendees who request it.
Steps:
- Take a copy from the station next to the recognition wall, or request one on the RSVP form if attending remotely.
- If you want a specific phase annotated with your own note before it is archived, add it during the week the wall stays up.
Notes:
- The chart is decorative, not a substitute for the record. The ADR, the status report, and the incident tickets remain the authoritative documents.
Troubleshooting
Section titled “Troubleshooting”I can’t attend in person on June 30. Join remotely using the video link in the calendar invite. The retrospective runs for both audiences at once; use the remote form for recognition-wall entries and shoutouts.
I rotated off the project before the June 13 cutover and I’m not sure I still count as invited. You count. RSVP anyway. Anyone with time against Halyard at any phase is invited, regardless of when they left.
I don’t know what to say for a shoutout. Use the method in Giving a Shoutout: name the person, name the specific thing they did, name what would have happened on the easier path. If you cannot get that specific, pull an example from the timeline packet instead of defaulting to general praise.
I missed the RSVP deadline. Contact Dani Rowe directly. Catering and the swag count are locked after June 26, but a late RSVP can usually still be added to the attendee list and the remote link.
A recognition-wall entry I wrote has a detail wrong. Corrections are welcome. Cross out the incorrect detail and write the correction beside it rather than removing the card; the wall stays up for a week specifically so entries can be refined.
I was on the project but I’m not named anywhere in the status report or the ADR. Most of the fourteen months of work does not appear in either document by design - both name the decisions that changed the outcome, not the full roster. The complete contributor list is in CONTRIBUTORS.md, and the recognition wall is open to any name, named document or not.
Reference
Section titled “Reference”Glossary
Section titled “Glossary”- Parallel run: Operating the old and new checkout systems at the same time, routing live traffic to only one, so the new system can be validated under real load without a single-shot cutover risk.
- Near-miss: An issue found and fixed before it reached a customer. Halyard had two, in February and April 2026.
- Cutover: The point at which all live traffic moves to the new system and the old system stops carrying production load. Halyard’s cutover was June 13, 2026.
- Archive window: The 31-day period after cutover during which the legacy system stays available in read-only mode before decommission.
- Close-out: The set of activities - status report, retrospective, recognition, decommission - that formally end a project after launch.
Key dates
Section titled “Key dates”| Date | Event |
|---|---|
| 2025-02-14 | ADR-0017 accepted; parallel-run approach chosen |
| 2026-02 | First near-miss found (cart-state mismatch, Marcus Teel) |
| 2026-04 | Second near-miss found (payment-callback race condition, Jordan Osei) |
| 2026-06-13 | Full cutover to the rebuilt checkout |
| 2026-06-13 to 2026-06-14 | First peak-load weekend held without incident |
| 2026-06-25 | Milestone closure recorded (ADR-0017) |
| 2026-06-26 | RSVP deadline for the close-out celebration |
| 2026-06-27 | Operational runbook handoff target (Dani Rowe) |
| 2026-06-30 | Close-out celebration and extended-scope retrospective |
| 2026-07-07 | Cart-abandonment baseline report target (Mia Chen) |
| 2026-07-14 | Legacy checkout decommission target |
Where to find the full record
Section titled “Where to find the full record”- ADR-0017 - the architectural decision and its recorded consequences
- The June 2 - June 20, 2026 status report - the final close-out status, near-miss detail, and the asks
- checkout-reflow README - the phase-by-phase rollout chart and the people who held the migration together
- CONTRIBUTORS.md - the complete project roster
- Legacy Checkout Decommission Runbook - the procedure that closes the archive window on July 14
Work Location Policy User Manual
Section titled “Work Location Policy User Manual”Anchor-Day Hybrid model. Reflects ADR-0012. Maintained by the people team and the Policy Working Group (Priya Ahluwalia, lead).
This manual covers every task an employee or manager performs under the Anchor-Day Hybrid work location policy. Find the section you need in the table of contents below. Sections are written to stand on their own - you do not need to read the manual start to finish.
Table of Contents
Section titled “Table of Contents”- Getting Started
- Anchor Days
- Attending an Anchor Day
- Booking a Desk or Room for an Anchor Day
- Flexible Days
- Working a Flexible Day
- Role Classification
- Determining Your Role Classification
- Exceptions and Accommodations
- Requesting an Anchor-Day Exception
- Requesting an Ongoing Accommodation
- Manager Tasks
- Running Anchor Days as a Manager
- Onboarding a New Hire Under This Policy
- Troubleshooting
- Reference
Getting Started
Section titled “Getting Started”This policy takes effect in August. Until your organization confirms the effective date has arrived, existing arrangements stay in place.
Before your first anchor day, confirm three things:
- Your role classification. Check your offer letter or role definition for a remote-eligible designation. If it is not listed, the anchor-day requirement applies to you. See “Determining Your Role Classification.”
- That you can physically reach an office on Tuesdays and Thursdays. If you cannot, talk to your manager before the effective date rather than after. See “Requesting an Anchor-Day Exception.”
- Your manager’s and the people team’s contact information. Most tasks in this manual - exceptions, accommodations, onboarding - route through one or both.
Nothing in this manual overrides an accommodation you already have on file. Confirm with the people team that it carries forward under the new policy rather than assuming it does.
Anchor Days
Section titled “Anchor Days”Attending an Anchor Day
Section titled “Attending an Anchor Day”Anchor days are the mandatory shared-presence days the rest of the policy is built around. If your role is not remote-eligible, you are expected in an office on both anchor days every week.
Steps:
- Confirm your office location has capacity for you on Tuesdays and Thursdays (see “Booking a Desk or Room for an Anchor Day”).
- Plan collaborative work - team meetings, reviews, one-on-ones - around anchor days; that concentration is by design, not overflow.
- If a conflict comes up for a specific Tuesday or Thursday, notify your manager as early as you can and follow the exception process rather than simply not showing up.
Options / Parameters:
- Anchor days: Tuesday and Thursday. Fixed for the whole organization, not selectable by team or individual.
- Attendance mode: in person only. Joining an anchor day by video from home does not count as attendance.
Notes:
- Anchor days are not preference days. Treat them as a fixed commitment, not a default you opt into when convenient.
- The most common way this policy fails in practice is not open refusal - it is drift, where attendance erodes week by week until the days stop functioning as anchors. If you manage people, this is the pattern to watch for.
Booking a Desk or Room for an Anchor Day
Section titled “Booking a Desk or Room for an Anchor Day”Steps:
- Reserve a desk or room through the Facilities booking system ahead of your anchor day, especially in the first weeks after the effective date when demand is highest.
- Expect priority on Tuesdays and Thursdays to go to anchor-day attendance; Facilities updated the booking system to reflect this ahead of the policy taking effect.
- If your usual location shows no capacity, check a secondary office location if your role allows it, or raise the shortfall with your manager. A capacity problem is a facilities issue, not a reason to skip the anchor day unannounced.
Options / Parameters:
- Booking window: opens as soon as the week’s schedule is published; no minimum advance notice required for available space.
- Priority order: anchor-day attendance first, flexible-day bookings second.
Notes:
- If a room or desk still shows availability calculated on old full-week assumptions instead of anchor-day capacity, report it. That is a booking-system lag, not a policy change.
Flexible Days
Section titled “Flexible Days”Working a Flexible Day
Section titled “Working a Flexible Day”The three days that are not anchor days - Monday, Wednesday, and Friday - are fully flexible. You decide where you work based on what the day’s work calls for.
Steps:
- Choose your location day by day. No approval and no check-in are required.
- Use flexible days for work that benefits from uninterrupted time - the commute time you are not spending is yours to reclaim.
- If a flexible day includes a commitment that puts you in the office anyway (a client visit, an in-person interview you are running), treat that as a normal calendar item, not a policy exception. The choice of where to work is still yours.
Options / Parameters:
- Flexible days: Monday, Wednesday, Friday. Individually chosen; no default location is assumed.
- Approval required: none.
Notes:
- Flexible days are not a lesser version of anchor days. They exist because focused work is often done better without a commute, not as a concession.
Role Classification
Section titled “Role Classification”Determining Your Role Classification
Section titled “Determining Your Role Classification”Every role is classified at hire as either anchor-day-required or remote-eligible. This classification determines whether the rest of this manual applies to you.
Steps:
- Check your offer letter or the role definition attached to your position for an explicit remote-eligible designation.
- If you cannot find one, ask your manager or the people team directly rather than assuming either classification.
- If your situation changed after hire - you relocated, or your role’s scope changed - raise it with your manager. Classification is not automatically reassessed; it requires a conversation.
Options / Parameters:
- Anchor-day-required: default classification. Subject to the full anchor-day and flexible-day structure above.
- Remote-eligible: excluded from the anchor-day requirement. Must be explicit in your offer or role definition, not inferred from current practice.
Notes:
- This policy does not reclassify existing roles. If you were hired under an explicit remote arrangement, that arrangement carries forward unchanged.
Exceptions and Accommodations
Section titled “Exceptions and Accommodations”Requesting an Anchor-Day Exception
Section titled “Requesting an Anchor-Day Exception”Use this task for a one-off or short-term conflict with a specific Tuesday or Thursday. An ongoing or disability-related need is handled as an accommodation instead (see “Requesting an Ongoing Accommodation”).
Steps:
- Notify your manager as soon as you know about the conflict.
- Document the reason and the specific date in writing; email is sufficient.
- Your manager reviews the request and forwards it to the people team for approval.
- Once approved, the exception is on file. You do not need to repeat this process for the same recurring circumstance once your manager has flagged it as ongoing.
Options / Parameters:
- Approval required: manager and people team, both.
- Turnaround: request as early as possible. Same-day requests are handled case by case and are not guaranteed approval before the anchor day in question.
Notes:
- Occasional, genuine conflicts do not undermine the policy. What the exception process guards against is drift - exceptions becoming a routine substitute for attendance rather than a documented departure from it.
Requesting an Ongoing Accommodation
Section titled “Requesting an Ongoing Accommodation”Use this task if regular Tuesday or Thursday in-office attendance creates an ongoing difficulty related to disability, caregiving, or another sustained need. This is a different process from the one-off exception above.
Steps:
- Contact the people team directly rather than routing the request through your manager first.
- Describe the ongoing need. You do not need to justify it in policy terms - the people team follows the organization’s existing accommodation process, which predates this policy and is not overridden by it.
- If you anticipate the need before the policy’s effective date, raise it before then rather than waiting.
Options / Parameters:
- Approval authority: people team.
- Relationship to existing accommodations: an accommodation already on file carries forward; confirm this explicitly rather than assuming it.
Notes:
- Do not use the one-off exception process for a need you already know is ongoing. Handling an ongoing need one week at a time creates avoidable friction; the accommodation process is built to resolve it once.
Manager Tasks
Section titled “Manager Tasks”Running Anchor Days as a Manager
Section titled “Running Anchor Days as a Manager”This task is for managers, not individual contributors looking up their own attendance.
Steps:
- Schedule your team’s recurring meetings, reviews, and one-on-ones on anchor days by default. This is what anchor days are for; scheduling collaborative work on flexible days undermines both.
- Watch for drift. If attendance on a given Tuesday or Thursday is thinner than usual for more than a couple of weeks running, address it directly rather than letting the day quietly become optional.
- Route exception and accommodation requests through the processes above rather than approving informal ad hoc arrangements yourself. The people team’s involvement is what keeps the exception process consistent instead of a manager-by-manager patchwork.
Options / Parameters:
- Exception approval: you plus the people team, not you alone.
Notes:
- If you are tempted to exempt yourself from anchor-day attendance, do not. Leadership presence on anchor days is part of what makes them function; a manager who treats attendance as optional signals the same to their team.
Onboarding a New Hire Under This Policy
Section titled “Onboarding a New Hire Under This Policy”Steps:
- Confirm the new hire’s role classification, anchor-day-required or remote-eligible, in the offer letter before their start date. Classification gets set here, not decided informally after they start.
- Walk the new hire through this manual in their first week, with particular attention to “Attending an Anchor Day” and “Booking a Desk or Room for an Anchor Day.”
- Introduce them to their people team contact directly rather than assuming they will find the right person when a question comes up later.
Options / Parameters:
- Classification timing: set at offer stage, not after the start date.
Notes:
- New hires lose relationship-building ground faster than tenured employees when anchor days are treated loosely. Getting a new hire correctly onboarded to the policy in week one matters more than it does for someone with established working relationships already.
Troubleshooting
Section titled “Troubleshooting”Anchor-day attendance on my team has been declining for a few weeks. This is drift, the most common failure mode of this policy. Address it directly with the team rather than waiting for it to self-correct. Ask what is actually happening - a scheduling conflict, an unclear expectation, a genuine capacity problem - before assuming simple non-compliance.
Someone on my team is joining anchor days by video instead of coming in. This does not satisfy the anchor-day requirement. Treat it as an absence and apply the exception process retroactively if the reason qualifies. If it does not qualify, address it as a direct conversation about the expectation.
I do not know whether my situation calls for an exception or an accommodation. A one-off or short-term conflict is an exception. A sustained, ongoing need is an accommodation. If you are unsure which applies, contact the people team directly rather than defaulting to the exception process for something ongoing - that path creates repeated friction for a need that only needs to be resolved once.
My office shows no room or desk availability for an upcoming anchor day. Report it as a booking-system issue rather than treating it as a reason to skip the day. See “Booking a Desk or Room for an Anchor Day.”
Someone describes this policy as a compromise between office-first and remote-only positions. That framing is inaccurate and worth correcting where you hear it. The policy is a deliberate structure with its own logic, not a midpoint between two camps. See the “Deliberate hybrid” glossary entry below.
Reference
Section titled “Reference”Glossary
Section titled “Glossary”- Anchor day - A mandatory shared-presence day. Currently Tuesday and Thursday. Not a preference day.
- Flexible day - A day with no assigned location. Currently Monday, Wednesday, and Friday. Individual choice, no approval required.
- Remote-eligible - A role classification set at hire that excludes the role from the anchor-day requirement.
- Documented exception - A one-off or short-term departure from anchor-day attendance, approved by a manager and the people team.
- Accommodation - An ongoing adjustment to attendance tied to a sustained need such as disability or caregiving, handled by the people team under the organization’s existing accommodation process.
- Drift - The gradual, unaddressed erosion of anchor-day attendance until the days no longer function as anchors. Named in ADR-0012 as the policy’s most likely failure mode.
- Deliberate hybrid - The framing that this policy is a distinct position with its own logic, not a compromise between full in-office and full remote arrangements.
Quick reference
Section titled “Quick reference”| Task | Who approves | Where documented |
|---|---|---|
| Attend an anchor day | No approval needed - it is the default | N/A |
| Work a flexible day | No approval needed | N/A |
| One-off exception | Manager, then people team | Email or people team record |
| Ongoing accommodation | People team | Existing accommodation process |
| Book a desk or room | Facilities booking system | Facilities system |
| Determine role classification | Set at hire; confirm with manager or people team | Offer letter or role definition |
Related documents
Section titled “Related documents”- ADR-0012, Work Location Policy - Anchor-Day Hybrid: the decision record this manual implements.
- Manager FAQ: a shorter question-and-answer companion for managers handling day-to-day logistics.
- Position Brief v2: the argument for this model and the responses to the office-first and remote-only objections, maintained by the Policy Working Group.
Tidemark User Manual
Section titled “Tidemark User Manual”Table of Contents
Section titled “Table of Contents”- Getting Started
- Connecting Feedback Sources
- Syncing and Ranking Feedback
- Sharing Your Roadmap
- Managing Your Plan
- Troubleshooting
- Reference
Getting Started
Section titled “Getting Started”Tidemark connects to your team’s existing feedback sources, spreadsheets, chat exports, survey tools, email, or a webhook, and produces one ranked, shareable roadmap. This section covers what to have ready before your first sync.
System requirements:
- Node 18 or later. Run
node --versionto confirm. - npm access to install a global package.
Install the CLI:
npm install -g @tidemark/cliConfirm the install:
tidemark --versionA Tidemark account and workspace are created automatically the first time you run tidemark init. No separate sign-up step is required.
First-session prerequisite: have at least one feedback source ready to connect, a CSV export, a spreadsheet, an email or chat archive, or a survey export. Tidemark does not require the source to be cleaned or reformatted before connecting.
Continue to Connecting Feedback Sources to run the setup wizard.
Connecting Feedback Sources
Section titled “Connecting Feedback Sources”Tidemark reads feedback from five source types: spreadsheet or CSV export, survey export, email, plain text, and webhook. Most teams start with the source they already use to collect customer input and add others later. A sync merges all connected sources into one theme list; see Syncing and Ranking Feedback.
Connecting a spreadsheet or CSV export
Section titled “Connecting a spreadsheet or CSV export”Use this when your feedback lives in a CSV export from a support tool, a sales CRM, or a manually maintained spreadsheet.
Steps:
- Run
tidemark init. - Choose “Spreadsheet” when the wizard asks for source type.
- Provide the file path, or drag the file into the terminal window when prompted.
- Review the item count and preview the wizard reports, then confirm.
A successful connection looks like this:
Connected: customer-feedback.csv (148 items detected)Ready to sync.Options / Parameters:
- File size: 5 MB maximum per file. Larger files should use a webhook source instead.
- Required columns:
dateandtext. Additional columns are ignored. - Optional column:
submitter_id. Providing it enables per-submitter segment scoring; see Understanding theme scores.
Notes:
- Rows missing
dateortextare skipped and listed in the upload summary. They do not stop the import. - Re-running
tidemark initwith the same file path re-imports the current version of the file. It does not append to the previous import. - If the detected item count is much lower than expected, see Troubleshooting.
Connecting a survey export
Section titled “Connecting a survey export”Use this for CSV exports from survey tools, where each row is one response.
Steps:
- Run
tidemark init. - Choose “Survey export.”
- Provide the file path.
Options / Parameters:
- Multi-question surveys: each question in a response is parsed into a separate feedback item, so one response can produce several items.
Notes:
- If your survey tool exports multiple sheets, connect the response sheet, not a summary sheet.
Connecting a source by email
Section titled “Connecting a source by email”Use this when feedback arrives as individual emails: forwarded support requests, or notes from customer calls sent to your own inbox.
Steps:
- Run
tidemark initand choose “Email.” - Tidemark generates a workspace ingest address.
- Forward relevant emails to that address as they arrive, or forward a backlog to import history.
Notes:
- The subject line and body are parsed together as a single feedback item. A long email thread is parsed as one item per email, not one item per thread.
Connecting a source by webhook
Section titled “Connecting a source by webhook”Use this for automated pipelines, for example posting items from an internal tool whenever a customer submits feedback there.
Steps:
- Run
tidemark initand choose “Webhook” to generate your workspace ID. - Configure your system to send a POST request to
https://ingest.tidemark.io/v1/workspaces/{workspace_id}/itemswith a JSON body containingsourceandtextat minimum. - Optionally include
date,submitter_id, andtags.
Options / Parameters:
source: a free-form label identifying the originating channel, for example"support"or"sales-call". Labels with a configured weight rule receive that multiplier during scoring; unmatched labels default to a multiplier of 1.0.
Notes:
- The endpoint returns HTTP 202 on receipt, not on processing completion, and delivery is not retried on failure. If an item does not appear after a sync, confirm it was received before assuming it was scored.
Viewing and removing connected sources
Section titled “Viewing and removing connected sources”Use this to see which sources feed your roadmap or to disconnect one that is no longer relevant.
Steps:
- Run
tidemark initagain at any time to add another source; it does not remove existing ones. - To remove a source, open your share link, go to workspace settings, and select “Manage sources.”
Notes:
- Removing a source does not remove items it already contributed to past syncs. The next sync reflects the removal going forward.
Syncing and Ranking Feedback
Section titled “Syncing and Ranking Feedback”A sync pulls the current contents of every connected source and produces a ranked list of themes. Run a sync any time your sources have new items you want reflected in the roadmap.
Running a sync
Section titled “Running a sync”Use this to refresh your ranked roadmap with the latest feedback.
Steps:
- Run
tidemark sync. - Wait for processing. A first sync against a large source can take a minute or two; later syncs are faster.
- Read the terminal summary, which lists the number of themes identified and the top theme by score.
A typical summary:
Sync complete. 12 themes identified across 148 items.Top theme: "CSV export is missing recurring items" (23 mentions, most recent: 3 days ago)Run `tidemark share` to generate a shareable link.Notes:
- Tidemark re-reads every connected source on each sync. It does not carry forward manual edits to theme labels beyond the label text itself; see Understanding theme scores.
- Webhook items delivered after a sync starts are not included in that sync. They appear in the next one.
Understanding theme scores
Section titled “Understanding theme scores”Each theme’s position in the ranked roadmap comes from its signal weight: a score built from how many distinct customers raised the theme and how recently.
signal_weight = sum(item_base_score * source_multiplier * segment_multiplier) for each item in the themeOptions / Parameters:
item_base_score: fixed at 1.0 per item. Not configurable.source_multiplier: defaults to 1.0. Set per source label in workspace settings to weight some channels more heavily than others; see Adjusting a source’s weight.segment_multiplier: defaults to 1.0. Set per submitter segment in workspace settings. Requiressubmitter_idon the item; items without it use the default multiplier.
Notes:
- Editing a theme’s label after a sync does not trigger recalculation of its signal weight.
- Two themes close in score can swap positions between syncs as new items arrive. This is expected and reflects the recency component of the score; see Troubleshooting.
Adjusting a source’s weight
Section titled “Adjusting a source’s weight”Use this when one feedback channel should count more heavily than others, for example direct customer calls over an anonymous survey.
Steps:
- Open your share link and go to workspace settings.
- Select “Source weights.”
- Set a multiplier for the source label you want to adjust.
- Run
tidemark syncto apply the change to the current ranking.
Notes:
- Weight changes apply on the next sync, not retroactively to the last one.
Sharing Your Roadmap
Section titled “Sharing Your Roadmap”A share link is a read-only, public-by-link view of your current ranked roadmap. It is the primary way stakeholders outside your Tidemark workspace see the results.
Generating a share link
Section titled “Generating a share link”Use this to get a URL you can send to anyone, whether or not they have a Tidemark account.
Steps:
- Run
tidemark share. - Copy the URL Tidemark prints.
- Send it to your stakeholders.
Notes:
- The view updates automatically each time you run a new sync. You do not need to regenerate the link.
- Anyone with the link can view the roadmap. There is no password protection on share links.
Upgrading a share link to collaborative access
Section titled “Upgrading a share link to collaborative access”Use this when stakeholders need to comment or re-rank items, not just read the current state.
Steps:
- Open your share link and select “Sharing and permissions.”
- Add collaborators by email.
- Choose a role for each collaborator: comment-only or re-rank.
Notes:
- Read-only remains the default for anyone who receives the link without being added as a named collaborator.
Exporting a snapshot
Section titled “Exporting a snapshot”Use this to capture the current ranked roadmap as a static file, for a presentation, an email attachment, or an archival record.
Steps:
- Open your share link.
- Select “Export.”
- Choose CSV or PDF.
Notes:
- A snapshot captures sort order and item counts at export time. It does not update after export; regenerate it if the roadmap changes.
Managing Your Plan
Section titled “Managing Your Plan”Tidemark has three plans. All plans include the full feedback-to-roadmap workflow; plans differ in seats and administrative controls.
Free solo plan
Section titled “Free solo plan”For an individual who owns a roadmap without a team.
Options / Parameters:
- Price: $0.
- Seats: 1.
Notes:
- The free plan is not a time-limited trial. It does not expire or gate features behind a trial window.
Team plan
Section titled “Team plan”For a team sharing one workspace and one ranked roadmap.
Options / Parameters:
- Price: $29 per month.
- Seats: up to 15.
Custom plan
Section titled “Custom plan”For organizations that require SSO and audit logs.
Steps:
- Email launch@tidemark.io with your organization’s requirements.
- The team follows up with pricing and a provisioning timeline.
Notes:
- SSO and audit logs are not available on the Free solo or Team plans.
Upgrading a plan
Section titled “Upgrading a plan”Use this to move from Free solo to Team, or from Team to Custom.
Steps:
- Open your share link and go to workspace settings.
- Select “Plan.”
- Choose the new plan and confirm.
Notes:
- Upgrading does not interrupt an in-progress sync or invalidate existing share links.
- Downgrading a workspace that has more members than the target plan allows requires removing members first.
Troubleshooting
Section titled “Troubleshooting”The setup wizard detects far fewer items than expected. Your source file likely uses a column layout Tidemark does not recognize automatically. Create a sample file with a simple header row (one column each for customer name or ID, feedback text, and date), confirm the wizard detects it correctly, then connect the full file the same way.
The theme list from tidemark sync does not look right.
The most common cause is items that are internal notes or status updates rather than customer feedback. Filter those rows out of the source and sync again. Tidemark re-reads from the source on each sync, so no prior output carries over.
A share link returns a “not found” error.
Share links are tied to your Tidemark account. If you ran the CLI on a different machine than the one used during tidemark init, run tidemark init again on the new machine to reconnect your account, then run tidemark share.
A webhook item is missing from the ranked roadmap after a sync.
Webhook delivery returns HTTP 202 on receipt, not on processing completion, and is not retried on failure. Confirm the item was received before assuming it was scored. If it was received but still missing after a second sync, check that the payload included both source and text.
Two themes swapped positions between syncs and nothing changed on your end. This is expected behavior, not an error. Position reflects both frequency and recency, so a theme built from older items can drop below a smaller but more recent one.
Reference
Section titled “Reference”CLI command quick reference
Section titled “CLI command quick reference”| Command | Purpose |
|---|---|
tidemark --version | Confirm the CLI is installed and show the current version. |
tidemark init | Run the setup wizard and connect a new feedback source. |
tidemark sync | Pull and rank feedback from all connected sources. |
tidemark share | Generate or refresh the shareable read-only roadmap URL. |
Glossary
Section titled “Glossary”- Workspace: The top-level container for one product’s feedback and its active roadmap. One workspace per product.
- Feedback item: A single unit of customer input, with a source label and timestamp.
- Theme: A labeled cluster of similar feedback items, grouped automatically on sync.
- Signal weight: The numeric score that determines a theme’s rank, built from item count, source multiplier, and segment multiplier.
- Ranked roadmap: The output view: themes sorted by signal weight, each with its supporting item count and share link.
Plans at a glance
Section titled “Plans at a glance”| Plan | Price | Seats | Notes |
|---|---|---|---|
| Free solo | $0 | 1 | No trial gating. |
| Team | $29/month | Up to 15 | |
| Custom | Contact launch@tidemark.io | Organization-defined | Includes SSO and audit logs. |
Year 2025 User Manual
Section titled “Year 2025 User Manual”This manual documents the full record of 2025: what happened, what remains open, and how to look up any part of it without reading the year in sequence. It has one user. Sections are organized by task, not by chronology. Consult the Table of Contents and go directly to what you need.
Table of Contents
Section titled “Table of Contents”- Getting Started
- Reviewing What Happened
- Separating External Causes from Decision Points
- Closing Open Items
- Setting the Carry-Forward Decision
- Troubleshooting
- Reference
1. Getting Started
Section titled “1. Getting Started”System requirements:
- Minimum three months elapsed since the most recent acute event in the record. That threshold cleared in June 2025; the internal retrospective that confirmed it ran in September 2025.
- Access to your own record: calendar, sent messages, and any notes kept during the period covered.
Account setup:
- No account creation is required. This manual has exactly one user: the person who lived through the year documented here.
First-session prerequisites:
- Read this page once. Do not read Sections 2 through 5 in sequence on a first pass; they are organized for lookup, not for a single linear read.
- Have on hand the final status documentation for the Meridian initiative and contact information for its eleven coalition members. Section 4 requires both.
2. Reviewing What Happened
Section titled “2. Reviewing What Happened”Viewing the Meridian Closure
Section titled “Viewing the Meridian Closure”Retrieves the factual record of how and when the Meridian initiative closed, separate from the narrative told about it while it was still active. Reach for this section when you need the facts on their own, before deciding what they mean.
Steps:
- State the headline: Meridian, a community broadband initiative under my lead for eighteen months, closed in March 2025 without a public deployment.
- Retrieve the lead-up: funder engagement showed reduced signal in January 2025, read at the time as ordinary quarter-end scheduling.
- Retrieve the escalation: by February 2025 the signals indicated an actual funder priority shift. The choice made in response was to maintain optimistic framing with the coalition rather than surface the risk.
- Retrieve the closure event: the primary funder formally withdrew in March 2025.
- Retrieve the aftermath: eleven coalition volunteers, who had given eighteen months of labor, received inadequate acknowledgment at the time of closure.
Options / Parameters:
detail-level:headline(step 1 only) orfull-timeline(all steps). Defaultheadline; usefull-timelinewhen preparing the retrospective in Section 4.lens:external-record(what happened) ordecision-record(what I chose). This section defaults toexternal-record. For the decision-record lens, see Section 3.
Notes:
- The funder’s withdrawal itself sits in the external record; no decision of mine changed that outcome.
- Staying past the February signals and choosing optimistic framing over disclosure sit in the decision record. Full attribution in Section 3.
Viewing the Change in the Celeste Relationship
Section titled “Viewing the Change in the Celeste Relationship”Retrieves the record of how the relationship with Celeste changed across 2025. Reach for this section when the pull is to compress six years of friendship into one dramatic turning point rather than see the actual drift.
Steps:
- State the headline: regular contact with Celeste, a close friendship of six years, ended progressively starting in April 2025. There has been no contact since August 2025.
- Retrieve the context: the change became visible shortly after the Meridian closure in March. The two events are not established as causally linked.
- Retrieve the pattern: distance increased through April, May, and June, described at the time internally as “giving space.”
- Retrieve the turn: by June the drift was no longer deniable.
- Retrieve the last data point: last contact was in August 2025.
Options / Parameters:
causality-flag:coincident(default) orcaused-by-meridian. The record does not support the second setting; it is retained only because the question keeps recurring.detail-level:headlineorfull-progression(April through August).
Notes:
- “Giving space” and avoidance produce the same external behavior. This record keeps them distinct because that distinction is easy to lose in hindsight.
- Status with Celeste remains open. See Section 4, “Addressing Status with Celeste,” which does not close this item, only describes its current handling.
Viewing Theo’s Unanswered Message
Section titled “Viewing Theo’s Unanswered Message”Retrieves the one open item in the year’s record unrelated to Meridian or Celeste. Reach for this section when doing a complete accounting rather than only the two large losses.
Steps:
- State the fact: Theo sent a message in April 2025.
- State the response: the message was read and not answered.
- State the current status: unanswered as of this edition.
Options / Parameters:
- None. This item has no variants to configure.
Notes:
- The absence of a deadline made the deferral indefinite rather than deliberate. Close-out procedure in Section 4, “Answering Theo’s Message.”
3. Separating External Causes from Decision Points
Section titled “3. Separating External Causes from Decision Points”Sorts each event retrieved in Section 2 into one of two categories: outside your control, or a moment where a different, visible choice was available. Reach for this section when the instinct is to take responsibility for everything or for nothing; the record supports neither.
Steps:
- List each event surfaced by Section 2.
- For each, ask whether a different choice of mine would have changed the outcome.
- If no, mark it
external. If yes, and the alternative was visible at the time rather than only in hindsight, mark itdecision-point. - For each
decision-pointitem, write one sentence describing only what was done, not what should have been done instead.
Options / Parameters:
hindsight-filter:on(default). An item qualifies asdecision-pointonly if the information to choose differently existed at the time.
Notes:
external: the funder’s withdrawal from Meridian.decision-point: staying past the February signals and choosing optimistic framing with the coalition; keeping Celeste outside what I was actually going through and privately calling it independence; reading Theo’s message in April and not answering it.- All three
decision-pointitems share one pattern: managing perception or narrative in place of surfacing an uncomfortable signal early. See Reference, “Glossary,” entry “Narrative management.”
4. Closing Open Items
Section titled “4. Closing Open Items”Delivering the Meridian Retrospective
Section titled “Delivering the Meridian Retrospective”Produces the written account owed to the eleven coalition members who gave eighteen months to the initiative. Reach for this section when the Meridian closure comes up and the honest next question is whether they ever received an explanation.
Steps:
- Draft an account of what happened using the
full-timelineoutput of Section 2, not a smoothed version of it. - Include the internal decision-making, specifically the February choice to maintain optimistic framing rather than disclose the funder signal.
- State plainly what would be done differently, given the same information available at the time.
- Send the account directly to the eleven coalition members. A general announcement does not satisfy this feature.
Options / Parameters:
format:real-accountonly. A two-paragraph summary with a lessons-learned bullet is an explicitly rejected output.target: February 2026.
Notes:
- This item gates Section 5. See “Setting the Carry-Forward Decision” for what depends on its completion.
Answering Theo’s Message
Section titled “Answering Theo’s Message”Closes the one open item from Section 2 with no external dependency. Reach for this section first if capacity is limited; it requires the least from anyone but you.
Steps:
- Write a reply. The reply does not need to account fully for the eight-month delay; a shorter honest reply is an acceptable output.
- Send it.
Options / Parameters:
target: January 2026.
Notes:
- The longer this item stays open, the more the delay itself becomes the thing requiring explanation, which raises the cost of the next attempt. Do not hold out for a better draft.
Addressing Status with Celeste
Section titled “Addressing Status with Celeste”Documents the current handling of the one item in this manual that cannot be closed by unilateral action. Reach for this section only after reading the note at the end of it.
Steps:
- Confirm this item is genuinely blocked by mutual uncertainty and elapsed time, not by avoidance on my part. Cross-check against Section 3: if the honest answer is “I have not decided what I want,” this item is not yet eligible for a close-out step.
Options / Parameters:
target: not currently supported for this feature, unlike the two sections above.
Notes:
- The absence of a target date here is deliberate, not an oversight. Assigning one now would repeat the pattern named in Section 3, applied to a situation that does not currently support resolution by procedure.
- Revisit this section, not the Reference glossary, if the status changes.
5. Setting the Carry-Forward Decision
Section titled “5. Setting the Carry-Forward Decision”Produces the single governing statement for how this year is carried into the next one. Reach for this section last, after Sections 2 through 4, not as a substitute for them.
Steps:
- State what is not being chosen. In this edition: not restructuring how work and relationships are approached around the risk of loss.
- State what is being chosen instead: carrying forward the capacity for full commitment, on the basis that this year is evidence of what full commitment can cost, not evidence that it should be avoided.
- State the one hard constraint currently in effect: no new large initiative begins until the Meridian retrospective is delivered and at least one blocked relationship, starting with Theo’s message, has been addressed.
Options / Parameters:
review-trigger: no earlier than February 2026, and only after “Delivering the Meridian Retrospective” is complete. Not a fixed calendar date.
Notes:
- This statement is not final in the sense of unchangeable. It is final in the sense that revisiting it does not require re-running this entire manual. See Section 6, “The carry-forward statement stops feeling true.”
6. Troubleshooting
Section titled “6. Troubleshooting”You find yourself building a redemption narrative where the year “was actually good for you” in the end: the discomfort of an unresolved record is being smoothed into a meaning it does not yet support. Return to Section 2 and restate the facts without the word “but.”
You cannot tell, some days, whether you are grieving Meridian or grieving Celeste: the two events overlap in time and carry comparable weight. This is a known limitation of the record, not a malfunction in you. See Reference, “Known Limitations.” No fix is available, only recognition.
You want to start a new large initiative before Section 4’s items are closed: this is the same pattern named in Section 3, now directed at avoiding the retrospective and the Theo message rather than avoiding a hard conversation. Do not override the constraint set in Section 5. Complete Section 4 first.
The carry-forward statement from Section 5 stops feeling true: either new information has arrived, or the statement was softened when it was written. Reread it as though someone else wrote it. If it still does not hold, return to Section 3 and re-run the attribution check before rewriting Section 5.
7. Reference
Section titled “7. Reference”Glossary
Section titled “Glossary”- Meridian: the community broadband initiative led for eighteen months, closed March 2025 when the primary funder withdrew.
- Coalition: the eleven volunteers who worked on Meridian and are owed a full retrospective. See Section 4.
- Celeste: a close friend of six years. Regular contact ended progressively from April 2025; no contact since August 2025. Status open.
- Theo: sent a message in April 2025 that remains unanswered as of this edition. See Section 4.
- Decision point: an event where a different, visible choice was available at the time. See Section 3.
- Narrative management: the standing pattern identified across all three decision points in Section 3: managing perception or story in place of surfacing an uncomfortable signal early.
- Carry-forward decision: the governing statement produced in Section 5.
Open Items Quick Reference
Section titled “Open Items Quick Reference”| Item | Section | Owner | Target | Status |
|---|---|---|---|---|
| Meridian retrospective | 4 | Marcus Delgado | February 2026 | Not started |
| Theo’s message | 4 | Marcus Delgado | January 2026 | Not started |
| Status with Celeste | 4 | Not unilateral | No target | Open |
| Next large initiative | 5 | Marcus Delgado | Condition-gated | Blocked |
Timeline Quick Reference
Section titled “Timeline Quick Reference”| Month (2025) | Event |
|---|---|
| January | Funder engagement shows reduced signal; read as scheduling at the time |
| February | Signals indicate a real priority shift; optimistic framing chosen over disclosure |
| March | Funder withdraws; Meridian closes; coalition thanked inadequately |
| April | Change in Celeste relationship becomes visible; Theo’s message goes unanswered |
| April through June | Distance with Celeste increases, described internally as giving space |
| June | Drift with Celeste no longer deniable |
| August | Last contact with Celeste |
| September | Internal retrospective names the pattern across both losses |
Known Limitations
Section titled “Known Limitations”- Grief for Meridian and grief for Celeste are not separable in this record. Entries in Sections 2 and 4 that appear to address one may in practice address both.
- Celeste’s account of the relationship change is not included in this manual. Only one side is documented.
- Dates in the Timeline Quick Reference are accurate to the month; sequencing within a month is approximate.