Working document
Design Decision Record
What this is: the running record of the design calls on this module: what was decided, what it was decided against, and why. I kept it because the reasoning is the part that transfers. Updated in October 2026 after the first parent test.
Design decision record
Conscious Discipline at Home, a self-paced module for parents of young children at a Conscious Discipline school. This document records the design calls from wireframes to the first parent test: what was decided, what it was decided against, and why.
WIREFRAMES CLOSED SEPTEMBER 10, 2026 · VISUAL SYSTEM SEPTEMBER 13 · BUILD SEPTEMBER 20 TO OCTOBER 5 · RULES-BASED SCORING OCTOBER 2 · FIRST PARENT TEST OCTOBER 5 · UPDATED OCTOBER 7
The decisions below are mine. I worked with an AI collaborator throughout, and where it proposed an alternative, argued against a choice, or was overruled, the exchange is recorded, including the cases where my first instinct was replaced and the cases where it stood.
Earlier sections are kept as they were decided, because the reasoning at the time is part of the record. Where the build later changed a call, a SINCE note says what changed. Sections 10 to 13 are new in October.
1 The problem this module has to solve
Parents are asked to reinforce a school’s behavioral framework at home without being taught it. The module has about 40 minutes, no instructor, and an audience who will most likely open it tired, at night, after a hard day with the child in question. Every decision below follows from that last fact.
2 The central decision: how help is offered
Help was split by urgency, not by topic
Decided: phrase help sits inline, directly above the answer field, as a strip the parent can collapse. Everything reference-like (definitions, module info, privacy) sits behind a ? in the header.
Instead of: the original single “If You’re Stuck” drawer with three tabs, which mixed something needed mid-crisis in one tap with things read once and never again.
Why: the two kinds of help have opposite urgency. Behind one door, a parent mid-scenario walks past a glossary to reach the words they need. Four treatments were built and compared before this one was chosen.
Considered and rejected: one merged “Help” panel
This was my opening instinct: combine the two surfaces and rank the contents with an accordion rather than tabs. I built it in full before setting it aside. Ranking would have solved the clutter, but merging urgent and reference help puts a reference panel in an urgent path every time it opens.
Considered and rejected: a permanent help rail
The strongest teaching argument of the four. A parent who has to remember help exists, and go and get it, mostly won’t, especially the ones who need it most. Permanent phrases would also have said that using the words is the skill, not a fallback. Rejected on cost: 268px of every scenario screen, all the time, which on a phone leaves no room for the answer.
A tap previews; a second action commits
Decided: tapping a phrase card shows that phrase inside the answer box as a provisional line, and the send button is disabled while it shows. A second action, “Use it” or simply typing, commits it as editable text.
Why: my requirement was that a tap shouldn’t be a commitment. A fidgety tap should be allowed to mean “show me that,” not “I choose that.” This buys that freedom with the cheapest gesture available, and shows the phrase in the parent’s own sentence before they take it.
Considered and rejected: drag-and-drop into the answer box
I proposed it as the way to make a tap non-committal, then withdrew it after the case against. Drag fights touch scrolling and the raised keyboard, can’t be done by keyboard or screen reader, and needs a tap fallback anyway, which means two interactions to build. It still works as an unadvertised shortcut, but nothing depends on finding it.
3 Tone toward a struggling parent
Help never opens itself
Decided: the phrase strip starts collapsed and never expands on its own. After a miss, the Coach mentions the phrases in words instead.
Instead of: opening the panel on the first wrong answer, which had been the working proposal. A panel that springs open the moment you get something wrong is a correction, and it arrives exactly when a struggling parent is least able to hear one. An offer in the Coach’s voice does the same work without the flinch.SINCE: Words to try now appears only after Maya’s first reply, so the first line in every scene is the parent’s own. The Coach’s lines are written in advance and chosen by rules (section 10).
No standing in the navigation
Decided: attempt history is one line on the results screen and appears nowhere else.
Instead of: the sidebar, which was my first pick and which I reversed after discussion. A standing that lives in the navigation becomes a scoreboard on every screen, and that quietly contradicts the module’s central promise: nobody is grading you.SINCE: the line itself (“your strongest attempt is the one that counts”) was cut on October 2. It implied a running score that the module never shows. The mechanic stays: a retry can’t lower a result.
Stopping is offered as neutrally as continuing
Decided: each section ends by naming the boundary and the next section’s length, with “Stop here” and the next section given equal visual weight. The module neither urges a parent on nor tells them to rest. It says where they are and lets them choose.
The Coach gets a face
Decided: a small drawn Coach figure appears after a miss, beside one fixed line: “Don’t forget, you’re practicing here. Some days? This stuff just doesn’t land. That’s not about you, that’s parenting. Keep at it, keep breathing, and be kind to yourself as well.” Never before an attempt and never on a safety reply.
Why the closing three stay three: cutting them to two was suggested and turned down, because each does separate work. Keep at it is about time: a few tries aren’t enough to see results. Keep breathing turns the module’s central self-regulation practice on the parent. Be kind to yourself gathers the first two into something more lasting.
Why: I’m practicing these principles with my own five-year-old while building this, and I know what a hard assessment feels like at the end of a hard day. The figure brings some lightness to the most emotional screens. The risk I named myself is that a cartoon beside a miss reads as condescending. Parent testing decides.SINCE: the Coach now appears beside every quiz result, in one of four poses that match the band. The fixed line waits for the parent’s second Not yet, counted across the quiz and Try It Out.
Provisional text stays fully legible
A preview was first drawn as grayed-out ghost text, which measured 2.19:1 against its background, on the one sentence a parent has to read before deciding. Provisional state is now carried by a tinted ground and an edge rule, with full-strength ink. You can’t judge a phrasing you can barely see.
4 What was removed
The school-to-home phrasing table was cut
It had been a planned tab for weeks and was never built, which was the tell. Phrasing already arrives in two better places: on the phrase cards themselves, and in the feedback set against what the parent actually wrote. It survives as an “At school:” line on individual cards, in context, rather than as a table nobody would open.
No ambient “saved” indicator
Save reassurance matters at three moments only: on leaving, on return, and on demand, and existing screens cover all three. A permanent header chip becomes wallpaper, stops being read at the one moment it matters, and lies if a save ever fails. A checkable timestamp in the reference panel replaces it.
A glossary was removed from beside the answer box
A row of clickable program terms sat under the answer field as “Stuck? Use a term.” It was vocabulary posing as help. A parent stuck at an answer box needs phrasing, not definitions. The terms moved to a calm reference screen.
5 The density pass: a rule for borders
Reviewing the finished wireframes before visual design, the screens read as crowded. I separated two causes before cutting anything: the annotation layer, which doesn’t survive into visual design, and the screen copy, which does. A toggle hid the annotations, and what was left was treated as a content problem on the three heaviest screens: the objectives, the results screen and the debrief.
A border is earned, not default
Decided: an element gets a border only when it’s interactive or needs attention. Everything else is separated by spacing and type weight. This carried into visual design as a standing rule.
Why: cutting words alone didn’t give the screens room to breathe; removing boxes did. On the results screen, eight identically bordered rows made the eye scan all eight. With borders left only on the two that needed attention, it lands on those two straight away. On the debrief, the field the parent writes into became the only bordered element on the screen.
Points were removed from the results screen
Decided: the points tally was cut. A tally says in gradebook language what the per-criterion bands already say in plain words, and it pulls against nobody is grading you. The per-criterion results stayed, because they diagnose rather than total.SINCE: this entry first kept a percentage and a pass bar. Both went with the no-percentages decision in section 8.
Per-objective assessment tags became one line
Each of the three learning objectives carried its own “ASSESSED BY” tag. A parent doesn’t need an assessment map per objective; a reviewer needs the mapping to exist. One line under the list gives the reviewer that and returns the screen to the parent. Objective copy went from 118 words to 61.
Color on a heading replaced a colored rule
In the debrief, “Strong” and “Work on” were marked by colored left rules. The words already name the difference, so the rules came out and the color moved into the “Strong” heading. The risk noted at the time, that praise and correction would flatten into each other, didn’t materialize.
6 The visual system
The system was settled on two screens rather than a style sheet: the debrief, which is almost all prose, and the live role-play, which has a stage, two speakers, a coach panel and a live input. A treatment that held both was taken to be the system. The values have moved on since; the current ones are on the visual design board.
Neither soft nor crisp: the compromise was built and chosen
Decided: soft geometry and one tinted field, with crisp restraint everywhere else. Rounded surfaces, inputs and buttons; color marks feedback rather than boxing it.
Instead of: either pure option. Two full renderings were compared side by side. Soft grouped the debrief’s three ideas without adding a line, but put a tinted box behind every piece of text. Crisp was cleaner but left all the warmth to the paper color. The tint is worth keeping for one thing per screen; everywhere else, color carries the distinction.
Work Sans
Decided: Work Sans throughout. Headlines first sat at 575, between semibold and bold, after 700 read too emphatic and 500 too soft for a screen that tells a parent what they missed.
Instead of: Figtree, the house style of a lot of recent software, and Hanken Grotesk, which had more personality in the details but wasn’t needed once the palette carried the warmth.
Colors are named by role, and every text color is its own step
Decided: names state the job, not the hue. Every color exists at a text-safe step and, where needed, a separate tint for fills and graphics. Tints are never used for type.
Why: the palette once carried one hue name, “clay,” among the role names, and the inconsistency was hiding a real problem: a fill color was being used for text at a step that failed 4.5:1.
Constructive feedback is plum, not brown and not red
Decided: plum. The original warm tan read as dull on the paper. A crimson was tried and read close enough to a warning to be wrong for the one moment a parent is being corrected. Plum sits opposite the action blue, so “Strong” and “Work on” read as a pair rather than two unrelated signals.
Three colors, three jobs
Decided: blue carries learning: principles, phrases, anything being taught. Green confirms something the parent did. Plum marks what to try next time. Beige is container and chrome only, and carries no verdict. One blue field per screen at most.
Why: the beige surface had been doing two jobs, neutral container and emphasis. Because everything was beige, nothing read as emphasized. The green was derived from the blue’s own lightness and chroma, with the hue turned, so it reads as part of the palette rather than an operating-system alert.
Green is never allowed near a total
Constraint: green appears only after the parent has acted, and only against a named behavior: you did this specific thing. Never decoration, never a heading color, never attached to an overall standing. Green-for-good sits close to the grading the module designed out. If it ever appears beside a total, it has become a score with the numbers hidden.
Dark means “the module is talking about you”
Decided: the dark ground marks summative moments: the section boundaries, the takeaways, the close. Light stays for teaching and for the working flow.
Why: the earlier rule scoped dark to Section 3, which described where it appeared rather than what it meant, and produced alternating grounds through the back third. Per-scenario feedback stays light, because it’s the working flow and long reading on dark is harder.
7 Scope and delivery
8 How performance is reported
Settled by elimination rather than preference. The module had drifted into showing a percentage per scenario and no total, which spares a parent nothing: it issues three grades and withholds the summary.
No percentages anywhere, and no overall score
Decided: every result is a band, Strong / Nearly there / Not yet, with the criteria named individually in plain language. No number appears on any screen, and the module ends without a total.
Why: nobody is being certified and there’s no compliance benchmark. A number on a parenting answer reads as a verdict on your parenting, and it contradicts “nobody is grading you,” which the module says on its privacy card.
Cost accepted: a reviewer expecting a conventional assessment may read bands as softer than percentages, so the case study states the reasoning rather than leaving it to be inferred.
No multiple choice
Decided: every answer is typed in the parent’s own words.
Instead of: multiple-choice checks, the easiest route to a score.
Why: recognizing a right answer sits at the bottom of Bloom’s taxonomy, and in a real moment nobody hands a parent options. It also makes a parent feel like they’re back in school. And with nothing scored, the main reason for multiple choice didn’t apply. This is the decision that made section 10 necessary.
The composure rule is shown, never explained
Problem: a parent who connects, states the limit and offers choices but then threatens a week-long consequence would see three ticks beside a failing result, and the likeliest reading is that the scoring is broken.
Rejected: a rules note on the screen, which teaches the scoring instead of the practice.
Decided: when composure breaks, the band is Not yet, the other criteria are set aside rather than ticked, and one line says they only work from a calm voice. The parent sees the rule in action and never reads a rubric.
The module ends on reflection, not a result
Decided: after the last scene, the parent sees the answer they wrote before the module began beside the one they just wrote. No band and no number.
Why: the comparison is the strongest moment the module has, and a score above it would turn recognition into a grade.SINCE: there’s no second write and no composure question. The comparison comes with a checklist of the five Act moves.
9 Practice design (Try It Out)
10 How answers are judged: rules, not AI (October 2)
With every answer typed in the parent’s own words, something has to read them. The September functional spec assumed a language model. I set that aside before launch.
Answers are checked by rules, in the browser
Decided: each criterion has a list of the ideas and wordings it accepts. An answer is lowercased, stripped of punctuation and lightly stemmed, so “breathe” also catches “breathing.” All criteria met is Strong, one missed is Nearly there, two or more is Not yet. A safety check runs first, and when it fires nothing is scored or saved. The Coach’s lines are written in advance and chosen by which criteria were met.
Instead of: scoring answers with a language model from day one.
Why: the module promises that nothing a parent writes leaves their device. A model would break that promise, would need a server and a key on a static site, and couldn’t be tested answer by answer in the twelve days left. Rules keep the promise, and every result can be traced to a line in a list.
Cost accepted: a parent who is right in words no list anticipated gets marked down. Rules can’t hear sarcasm or tone either. The first parent test showed what that costs (section 13). An optional AI check, with the parent’s consent, is on the list for the next version and has moved up since the test.
11 Accessibility: listening, not just checking (October 2–5)
Every screen was walked with VoiceOver, on an iPhone and on a Mac
Decided: on top of an automated script that checks every screen at desktop and phone widths, I went through the whole module by ear.
Why: the automated checks came back clean. Listening found what they couldn’t. VoiceOver split sentences apart at every bold word, and read Maya’s reply before the parent heard their own line. Neither is a code error, so no checker flags it. Both are fixed: focus now lands on each screen’s eyebrow so the order heard is eyebrow, title, body, and the phrase cards say how to preview and use them. A last recheck waits for the redesign.
12 How the work was planned (September 20)
Plan in sessions, not days
Decided: every package of work is sized to one or two sessions with the AI collaborator, ends in something I can walk through, and has a between-sessions list for the work that doesn’t need it: copy passes, graphics, device tests.
Instead of: a day-by-day schedule.
Why: by September 20 calendar days were the wrong unit. The constraint was the number of working sessions, which couldn’t be increased. A missed day costs nothing if the session it would have fed still happens.
A thin working path first, then fill it in
Decided: the first four packages built a thin path through all three sections (the shell, part of Learn with one live graphic, one scored question, one role-play turn) before any section was filled out.
Why: job applications were due to start, and a linkable working slice beats a more finished module two weeks later. After that, every package was additive, so stopping at any point would never leave a half-built state.
13 Evaluation: the first parent test, and the turn to SAM (October 5–7)
I planned evaluation in ADDIE’s order: build, review, then watch parents use it while thinking out loud, and read their answers against the checker. On October 5 the first parent tried it with me sitting in.
What happened
Something was unclear to her on nearly every screen: the wording, the order, what was being taught, or how it was being judged. Learn took her about thirty minutes, against the ten the title screen promised. On the first knowledge-check question she wrote a sound answer and was told Not yet. I ended the session there.
Why her answer got Not yet. Run back through the checker, it failed two ways. Her reading of the child (it isn’t his fault; the store is designed to get this reaction) is the idea the first criterion wants, but that criterion only listens for tiredness words, so it missed. Meanwhile “he is reacting” matched a word meant for the parent reacting, so a second criterion passed for the wrong reason. And the question asks what she’d deal with first without pointing to her own state, which is what it was marking. A fair reading was Nearly there.
What I took from it
Two problems, and neither is wording alone. Learn asks too much before a parent knows what it’s for. And a rules-based checker can’t recognize a good answer worded in a way I didn’t expect, especially when the question doesn’t ask for everything it marks.
Until that session, everyone who had read the module already knew the material, me included. The review step in my plan had no one in it who didn’t.
Launch moved; rounds instead of a date
Decided (October 7): the October 14 launch is off, with end of October at the earliest. I’m working in SAM-style rounds of designing, testing and revising, small enough to run within a week. Job applications go out now on the case study, without waiting for the module.
Instead of: holding the fixed date and fixing what fit before it.
Why: a date set before the fixes are scoped only pushes toward shipping it unfixed. The next steps are a conversation with educators at the school, a shorter Learn, and a rethink of how answers are judged, then new parents.