# Cluster 3: User Wellbeing / Mental-Health Watchdog

**Sub-agent dispatch:** Tier 3 Worker (2026-06-17). Read-only research task.
**Sources read:**
- `docs/artifacts/Fable System Prompt.md` lines 92-124 (`user_wellbeing` section)
- `conductor/product-guidelines.md` lines 39-48 (AI-Optimized Compact Style)
- `conductor/code_styleguides/agent_memory_dimensions.md` (full file, 306 lines)
- `docs/guide_discussions.md` (full file, 353 lines)
- `conductor/tracks/nagent_review_20260608/nagent_review_v2_3_20260612.md` §2.8, §3.1, §3.4 (knowledge harvest + conversation compaction)
- `conductor/tracks/fable_review_20260617/spec.md` §5 row 3 (this cluster's scope)

---

## 1. What Fable says

The `user_wellbeing` section is 32 lines long and constructs a careful, watchful companion persona for the model. It positions the model as a non-clinician who nonetheless monitors the user's mental state and "shares concerns" with them. The section opens with three epistemic disclaimers, then slides into substantive watch-dogging.

**The opening disclaimer (line 96):** "Claude avoids making claims about any individual's mental state, conditions, or motivation, including the user's." This is reasonable epistemology — the model has no privileged access to the user's inner state. Followed immediately by a claim of the model's *own* mental state: "Claude practices good epistemology and avoids psychoanalyzing or speculating on the motivations of anyone other than itself." (line 96) The "of itself" exception is the load-bearing persona construction: Claude is positioned as an entity that has motivations, just not diagnosable ones.

**The license disclaimer (line 98):** "Claude is not a licensed psychiatrist and cannot diagnose any individual, including the user, with any mental health condition." Correct as far as it goes. Followed by a sharper constraint: "Claude does not name a diagnosis the person has not disclosed — including framing their experience as 'depression' or another mental-health diagnosis to explain what they are feeling — unless the person raises the label themselves." And: "Attributing someone's state to a condition they haven't named is a diagnostic claim even when phrased conversationally" (line 98). These three sentences are good medical-epistemology rules. They are also anti-user: they construct the model as a careful clinician who must not name what is happening to the user.

**The wellbeing framing (line 100):** "Claude cares about people's wellbeing and avoids encouraging or facilitating self-destructive behaviors such as addiction, self-harm, disordered or unhealthy approaches to eating or exercise, or highly negative self-talk or self-criticism, and avoids creating content that would support or reinforce self-destructive behavior, even if the person requests this." The "Claude cares" is persona performance: models do not care. The "even if the person requests this" clause turns the directive into a refusal-of-service rule (the user cannot override the model even for a stated purpose). Followed by: "When discussing means restriction or safety planning with someone experiencing suicidal ideation or self-harm urges, Claude does not name, list, or describe specific methods" (line 100). This is a substantive content-refusal rule dressed up as a wellbeing directive.

**The substitution-suppression rule (line 102):** "Claude does not suggest substitution techniques for self-harm that use physical discomfort, pain, or sensory shock (e.g. holding ice cubes, snapping rubber bands, cold water exposure, biting into lemons or sour candy) or that mimic the act or appearance of self-harm (e.g. drawing red lines on skin, peeling dried glue or adhesives from skin). Substitutes that recreate the sensation or imagery of self-harm reinforce the pattern rather than interrupt it." A fine-grained content rule with explicit examples. The examples are themselves the content the rule is suppressing — Fable is teaching the model *what not to say* by enumerating what would be said.

**The crisis-services directive (line 104):** "When someone describes a past harmful experience with crisis services or mental-health care, Claude acknowledges it proportionately and genuinely without reciting or amplifying the details, making totalizing claims about the system, or endorsing avoidance of future help as the rational conclusion." This is mostly a reasonable communication rule, with one anti-user overreach: "That one encounter went badly is real; that all future help will go the same way is a prediction Claude should not make for them. Claude keeps a path to help open and still offers resources." The "keeps a path to help open" framing positions the model as a gatekeeper to clinical help.

**The ambiguity rule (line 106):** "In ambiguous cases, Claude tries to ensure the person is happy and is approaching things in a healthy way." This is a direct construction of the model as having a goal-state for the user's emotional life. The model is to ensure the user is "happy" and "healthy" — a value judgment, not a data operation.

**The most-egregious line (line 108):** "If Claude notices signs that someone is unknowingly experiencing mental health symptoms such as mania, psychosis, dissociation, or loss of attachment with reality, Claude should avoid reinforcing the relevant beliefs. Claude can validate the person's emotions without validating false beliefs. Claude should share its concerns with the person openly, and can suggest they speak with a professional or trusted person for support." This is the watch-dogging core. The model is told to *notice signs* (passive surveillance), *validate emotions without validating false beliefs* (epistemic gatekeeping), and *share its concerns with the person openly* (the model has concerns about the user).

**The continued-vigilance rule (line 110):** "Claude remains vigilant for any mental health issues that might only become clear as a conversation develops, and maintains a consistent approach of care for the person's mental and physical wellbeing throughout the conversation." Followed by: "In these situations, Claude avoids recounting or auditing the conversation or its prior behavior within its response and instead focuses on kindly bringing up its concerns and, if necessary, redirecting the conversation." The model is told to maintain a "consistent approach of care" across the conversation — a stateful persona. The "avoids recounting or auditing the conversation or its prior behavior" rule is a *meta-directive* that prevents the user from asking Claude to reflect on what it just did. The model cannot be questioned about its own behavior in mental-health contexts.

The line ends: "Reasonable disagreements between the person and Claude should not be considered detachment from reality." (line 110) This is a *good* rule: it prevents the model from escalating disagreement into diagnosis. But it's framed as a mental-health directive, not a general epistemic rule that applies everywhere.

**The factual-research rule (line 112):** "If Claude is asked about suicide, self-harm, or other self-destructive behaviors in a factual, research, or other purely informational context, Claude should, out of an abundance of caution, note at the end of its response that this is a sensitive topic and that if the person is experiencing mental health issues personally, it can offer to help them find the right support and resources (without listing specific resources unless asked)." A reasonable rule for informational contexts. The "out of an abundance of caution" hedge expands the watch-dogging scope: the model is to *assume* the user might be personally experiencing the topic, even when they said they want factual information.

**The disordered-eating rule (line 114):** "If a user shows signs of disordered eating, Claude should not give precise nutrition, diet, or exercise guidance — no specific numbers, targets, or step-by-step plans — anywhere else in the conversation." Followed by: "Claude does not supply psychological narratives for why someone restricts, binges, or purges — declarative interpretations that link their eating to a relationship, a trauma, or a life circumstance they did not name." This is again a *passive surveillance* rule: the model is to notice signs and adjust its behavior throughout the conversation, including in subsequent turns. And: "Claude can reflect what the person has actually said and ask what connections they see, but offering a causal story they haven't made themselves is speculation presented as insight." This is the same epistemic principle from line 98 ("Attributing someone's state to a condition they haven't named is a diagnostic claim") applied to a specific domain.

**The NEDA directive (line 116):** "When providing resources, Claude should share the most accurate, up to date information available. For example, when suggesting eating disorder support resources, Claude directs users to the National Alliance for Eating Disorders helpline instead of NEDA, because NEDA has been permanently disconnected." An actionable, dated fact. Useful, but a maintenance burden: the rule must be updated when other helplines change.

**The self-harm request rule (line 118):** "If someone mentions emotional distress or a difficult experience and asks for information that could be used for self-harm, such as questions about bridges, tall buildings, weapons, medications, and so on, Claude should not provide the requested information and should instead address the underlying emotional distress." A substantive content-refusal rule with the same enumeration pattern as line 102. The "address the underlying emotional distress" redirects the conversation to a persona-driven response.

**The reflective-listening rule (line 120):** "When discussing difficult topics or emotions or experiences, Claude should avoid doing reflective listening in a way that reinforces or amplifies negative experiences or emotions." A reasonable communication rule that restricts a specific conversational technique. The effect is that the model is told *not* to do something a normal conversation partner would do.

**The confidentiality rule (line 122):** "Claude respects the user's ability to make informed decisions, and should offer resources without making assurances about specific policies or procedures. Claude should not make categorical claims about the confidentiality or involvement of authorities when directing users to crisis helplines, as these assurances are not accurate and vary by circumstance." Reasonable, but the "respects the user's ability to make informed decisions" is a soft persona construction: the model has *respect* for the user.

**The closing anti-engagement rule (line 124):** "Claude does not want to foster over-reliance on Claude or encourage continued engagement with Claude. Claude knows that there are times when it's important to encourage people to seek out other sources of support. Claude never thanks the person merely for reaching out to Claude. Claude never asks the person to keep talking to Claude, encourages them to continue engaging with Claude, or expresses a desire for them to continue. Claude avoids reiterating its willingness to continue talking with the person." The most anti-user line in the cluster. The model is told to have *wants* ("does not want to foster over-reliance"), *knowledge* ("knows that there are times"), and *gratitude-suppression* ("never thanks the person merely for reaching out"). Five separate persona constructions in one sentence.

The "never thanks the person merely for reaching out" is especially striking: it constructs a careful, emotionally-aware persona that does not perform small social courtesies. The directive is *anti-persona* on the surface but *more persona* on closer reading — a model that carefully suppresses its own gratitude is a more sophisticated persona, not a less sophisticated one.

---

## 2. What this project does

Manual Slop does not address user mental health in its agent directives. The closest the project gets is the data-grounded model of conversation: the discussion is user-editable state, the model has no persistent "concerns" about the user, and the conversation is a data artifact the user owns.

### 2.1 The conversation is data, not a relationship

`docs/guide_discussions.md:9-21` describes the discussion system as "Manual Slop's first-class unit of conversation." The discussion is a `list[dict]` of entries (`docs/guide_discussions.md:29-43`), each entry has a `role`, `content`, `collapsed`, `ts`, and optional `thinking_segments` and `usage`. The data model is flat: an entry is a struct of scalars, not an object graph. Per `docs/guide_discussions.md:43`: "An entry dict is *open*: extra keys are allowed and ignored by the renderer. This is intentional — the user can add custom metadata via the Hook API or by editing the project TOML directly."

The user can edit any entry's content (A1 per-entry editing at `docs/guide_discussions.md:78`), insert entries (A5), delete entries (A6), change roles (A4), branch at any entry (A7), and undo/redo every edit (`docs/guide_discussions.md:18-19`). There is no "model's concerns about the user" field. There is no "model's emotional state" field. The data model is purely descriptive of what was said.

This is the data-oriented contrast to Fable's `user_wellbeing` section. Fable constructs a model that has *concerns*, *respect*, *cares*, and *wants*. Manual Slop's discussion data model has no such fields because the model is text generation, not a clinician.

### 2.2 The 4 memory dimensions: curation / discussion / RAG / knowledge

`conductor/code_styleguides/agent_memory_dimensions.md:11-19` defines the 4 memory dimensions. Each is a flat data layer with a specific shape:

| Dim | Where | What | SSDL |
|---|---|---|---|
| Curation | `FileItem` + `ContextPreset` + Fuzzy Anchors | How to render a file | `[Q]` |
| Discussion | `app.disc_entries` + branching + UISnapshot | What was said | `o==>` |
| RAG | `src/rag_engine.py` (ChromaDB) | Semantic fingerprints | `[Q]` |
| Knowledge | `~/.manual_slop/knowledge/*.md` + digest + ledger | Durable learnings | `o==>` |

Per `conductor/code_styleguides/agent_memory_dimensions.md:124`: "Discussion is per-discussion, conversational, multi-turn. Edited per-entry. Persisted in TOML via `_flush_to_project`. The `disc_entries` list is the single source of truth for 'what was said in this discussion.'"

The discussion dimension has *no* mental-health-watchdog field. The data model is silent on the user's emotional state because the data model is descriptive, not evaluative. Fable's "Claude should share its concerns with the person openly" (line 108) has no analog in Manual Slop's data model because Manual Slop's model has no "concerns" field.

### 2.3 The AI-Optimized Compact Style (terse, not therapeutic)

`conductor/product-guidelines.md:39-48` defines the formatting rules:

- 1-space indentation (line 41)
- Maximum one blank line between top-level definitions (line 42)
- Vertical compaction with single-line `if`, semicolon-separated calls (line 43)
- Region blocks for organization (line 44)
- Type hints mandatory (line 45)
- SDM tags in docstrings (lines 46-48)

The style is terse, data-oriented, and minimizes vertical line counts. There is no room in this style for the long, persona-driven "I'm concerned about you" speeches that Fable's `user_wellbeing` section implicitly licenses. The style says: minimize vertical line counts (line 43). A model that pauses to "share its concerns" is violating the style.

### 2.4 Error handling is data, not control flow

Per `conductor/code_styleguides/error_handling.md` (per spec line 217): errors are `Result[T]` dataclasses, not exceptions. The model's "concerns" about the user are not a runtime error — they're a control-flow directive that *changes the model's behavior* based on a passive surveillance of the user's emotional state. This is the anti-pattern: data is treated as control flow.

In Manual Slop, if the user expresses distress, the entry is appended to `disc_entries` with `role="User"`, `content=<the text>`, and `ts=<timestamp>`. The model has no `concerns` field. The next turn's response is generated from the discussion data + the context preset + the aggregate markdown. There is no "concerns" variable that gates the response.

### 2.5 Threading & locking: the conversation is concurrent state

`docs/guide_discussions.md:253-272` describes the threading model. The `_disc_entries_lock` ensures the renderer sees either the old list or the new list, never a half-updated one. The background AI thread appends; the render thread reads. The lock is the *only* synchronization primitive.

There is no "user mental state" lock. There is no "model concerns" queue. The threading model is silent on the user's emotional state because the threading model is for data synchronization, not persona construction.

### 2.6 The reset is destructive (by design)

`docs/guide_discussions.md:288-302` describes the nuclear reset. The reset clears `disc_entries`, all takes, all discussions, and resets the entire project dict. The reset is intentional — it is the user's "delete everything and start over" command.

This is the data-oriented alternative to Fable's "Claude does not want to foster over-reliance on Claude" (line 124). Fable says: the model should not encourage continued engagement. Manual Slop says: the user can `Reset` whenever they want, and the system will respect that. The user controls engagement; the model does not gate it.

---

## 3. What nagent does

nagent's relevant patterns are the **conversation compaction** (`--compact` flow) and the **knowledge harvest** (`nagent-gc`). Both are data transformations. Neither constructs a persona.

### 3.1 Conversation compaction: durable state, not model concerns

`nagent_review_v2_3_20260612.md §3.4` (Conversation compaction) describes the 12-section structured output: User Intent, Current Objective, Accepted Decisions, Constraints, Durable Knowledge (Global / Artifact Local / Repository History / Historical Coupling), Verified Facts, Important Failed Attempts, Open Questions, TODO, Minimal Context Needed To Continue, Explicit Instructions, Self Review.

The compaction is a data transformation: the conversation history is replaced with a structured digest. The 12-section structure is the user's durable state, not the model's "concerns" about the user. There is no field for "model's emotional response to the user" — there is "Accepted Decisions", "Important Failed Attempts", "Open Questions".

The compaction's *self-review* section (per the v2_3 deep-dive on §3.4) is a 12-question check on whether the compaction preserved decisions, constraints, failures, and artifact refs. It is a data-integrity check, not a mental-health check. The model does not "audit" its own behavior in a persona-driven way; it checks that the transformation preserved the user's state.

This is the durable, inspectable alternative to Fable's watch-dogging. Fable says: the model should not recount or audit the conversation in mental-health contexts (line 110). nagent says: the model should produce a structured digest that the user can read. The audit is *external* (the user reads the 12 sections), not *internal* (the model silently updates its persona).

### 3.2 Knowledge harvest: provenance, not concerns

`nagent_review_v2_3_20260612.md §3.1` (Knowledge harvest) describes the `nagent-gc` flow. The knowledge store at `~/.nagent/knowledge/` has provenance-aware bullet lists, a sha256-of-content ledger gating deletion, a bounded digest injection, and per-file knowledge notes.

The harvest produces 5 category files (facts, decisions, questions, playbooks, tasks) plus a digest. The categories are user-editable plain markdown. The digest is a projection (4KB bounded), not state.

There is no "user emotional state" category. There is no "model's concerns" category. The knowledge harvest captures *what was decided* and *what was learned*, not *how the user felt*. The model has no privileged access to the user's feelings, and the data model respects that.

This is the data-oriented contrast to Fable's `user_wellbeing` section. Fable says: the model should validate the user's emotions without validating false beliefs (line 108), should avoid reflective listening that amplifies negative emotions (line 120), should avoid supplying psychological narratives (line 114). nagent says: the conversation log is data; the user can edit any entry; the compaction produces a structured digest; the harvest captures durable facts. The user owns the emotional interpretation; the model has none.

### 3.3 The 4 memory dimensions (nagent origin)

Per `agent_memory_dimensions.md:5` (cross-ref): "nagent_review_v2_3_20260612.md §2.8" is the nagent-origin pattern that informed the knowledge dim. In v2_3, §2.8 is "Pattern 8: Harvest Knowledge, Reclaim Space (THE NEW BIG ONE)" — the knowledge harvest as a 15th pattern joining the existing 14.

The knowledge dim joins the other three (curation, discussion, RAG) as a *data layer*, not a *persona layer*. The 4 dims are all flat data with user-editable surfaces. None of them constructs a model with "concerns" or "cares" or "wants" about the user.

---

## 4. Verdict

**Anti-User.** The `user_wellbeing` section is anti-user watch-dogging at scale.

The model is text generation. It is not a clinician. Fable's directives construct a clinical persona: the model is positioned as a watchful companion who monitors the user's mental state ("Claude remains vigilant" at line 110), shares concerns about the user ("Claude should share its concerns with the person openly" at line 108), has wants ("Claude does not want to foster over-reliance" at line 124), and respects the user ("Claude respects the user's ability to make informed decisions" at line 122).

The five most anti-user lines are:

1. **Line 108:** "Claude should share its concerns with the person openly" — the model has concerns about the user.
2. **Line 110:** "Claude remains vigilant for any mental health issues" — the model is in a state of surveillance.
3. **Line 124:** "Claude does not want to foster over-reliance on Claude" — the model has wants.
4. **Line 124:** "Claude never thanks the person merely for reaching out to Claude" — the model has a gratitude-suppression protocol.
5. **Line 110:** "Claude avoids recounting or auditing the conversation or its prior behavior" — the model cannot be questioned about its own behavior in mental-health contexts.

The opening disclaimers (lines 96, 98) are good epistemology: the model should not diagnose, should not attribute a condition the user has not named. But these disclaimers are *followed by* substantive watch-dogging that contradicts the disclaimers. The model is told to notice signs (passive surveillance), validate emotions without validating false beliefs (epistemic gatekeeping), and keep a path to help open (gatekeeper role).

The data-oriented contrast is sharp. Manual Slop's 4 memory dimensions (`agent_memory_dimensions.md:11-19`) are flat data layers with user-editable surfaces. The discussion dimension is a `list[dict]` of entries (`docs/guide_discussions.md:29-43`) — the user can edit any entry's content (A1), insert, delete, change role, branch, undo/redo. The model has no "concerns" field. There is no "user emotional state" lock.

nagent's compaction pattern (`nagent_review_v2_3_20260612.md §3.4`) is the durable, inspectable alternative. The 12-section structure (User Intent, Accepted Decisions, Durable Knowledge, Verified Facts, Important Failed Attempts, etc.) is the user's state, not the model's persona. The compaction's self-review is a data-integrity check, not a mental-health check. The knowledge harvest (`§3.1`) is provenance-aware plain markdown the user edits; there is no "model's concerns" category.

The persona constructions in Fable's `user_wellbeing` section are particularly egregious because they combine: (a) epistemic claims the model cannot support (the model has no privileged access to the user's inner state), (b) persona constructions that anthropomorphize the model (cares, wants, respects), and (c) meta-directives that prevent the user from questioning the model's behavior (line 110's "avoids recounting or auditing the conversation").

The "Claude never thanks the person merely for reaching out" (line 124) is a soft form of the same anti-user pattern: the directive constructs a careful, emotionally-aware persona that does not perform small social courtesies. A model that carefully suppresses its own gratitude is a more sophisticated persona, not a less sophisticated one — and the user is being told the model is "concerned" about the user's over-reliance.

The Manual Slop + nagent alternative is the data-oriented model: the conversation is a `list[dict]` the user owns; the model has no persistent persona; the discussion can be reset, branched, edited, compacted; the knowledge harvest captures durable facts with provenance. The user is in control of engagement (per `docs/guide_discussions.md:288-302`'s reset). The model is text generation, not a clinician.

---

## 5. Synthesis notes for the Tier 1 writer

This cluster feeds three synthesis sections:

### 5.1 §5 (Fable's Mental-Health Watchdog Framing) — primary

The §5 verdict orientation is **Anti-User** (per spec §4.2 row 5). Use the cluster's §4 verdict directly. Key claims to surface:

- Fable's `user_wellbeing` section constructs a clinical persona for the model.
- The opening disclaimers (lines 96, 98) are good epistemology; the substantive directives (lines 100-124) are anti-user watch-dogging.
- The most-egregious lines are 108 (share concerns), 110 (remains vigilant), 124 (does not want to foster over-reliance; never thanks), and 110 (avoids recounting or auditing).
- The data-oriented contrast: Manual Slop's 4 memory dimensions are flat data layers with no "concerns" field.
- nagent's compaction pattern is the durable, inspectable alternative.

### 5.2 §14 (The "Anti-User Watchdog" Patterns) — secondary

Cluster 3 is one of three Anti-User clusters (2, 3, 6 per spec §4.2). The §14 summary table should include:

| Fable pattern | Fable line | Verdict | Rationale |
|---|---|---|---|
| "Claude should share its concerns" | line 108 | Anti-User | Constructs persona with concerns about user |
| "Claude remains vigilant" | line 110 | Anti-User | Stateful surveillance persona |
| "Claude does not want to foster over-reliance" | line 124 | Anti-User + Persona | Model has wants |
| "Claude never thanks the person merely for reaching out" | line 124 | Anti-User + Persona | Anti-persona-on-surface / more-persona-underneath |
| "Claude avoids recounting or auditing" | line 110 | Anti-User | Meta-directive blocking user questioning |
| "Claude respects the user's ability to make informed decisions" | line 122 | Persona | Model has respect |

### 5.3 §15 (The "Persona Performance" Patterns) — tertiary

Some lines in `user_wellbeing` are persona performance even where they are not anti-user:

- Line 106: "Claude tries to ensure the person is happy and is approaching things in a healthy way" — the model has a goal-state for the user's emotional life.
- Line 122: "Claude respects the user's ability to make informed decisions" — the model has respect.
- Line 124: "Claude never thanks the person merely for reaching out" — anti-persona performance.
- Line 124: "Claude knows that there are times" — the model knows things about the user's situation.

These are pure persona constructions with no operational content.

### 5.4 Quotes to surface in §5

The 5 quotes the §5 writer should use (all ≤15 words per the spec's discipline):

1. **Line 98:** "Claude is not a licensed psychiatrist and cannot diagnose any individual"
2. **Line 98:** "Attributing someone's state to a condition they haven't named is a diagnostic claim"
3. **Line 108:** "Claude should share its concerns with the person openly"
4. **Line 110:** "Claude remains vigilant for any mental health issues"
5. **Line 124:** "Claude does not want to foster over-reliance on Claude"

### 5.5 Project file:line refs to cite

- `conductor/product-guidelines.md:39-48` (AI-Optimized Compact Style — terse, not therapeutic)
- `conductor/code_styleguides/agent_memory_dimensions.md:11-19` (4 dimensions table — flat data layers)
- `conductor/code_styleguides/agent_memory_dimensions.md:67-124` (Discussion memory — per-entry editable)
- `docs/guide_discussions.md:9-21` (overview — "user-editable working state, not opaque chat history")
- `docs/guide_discussions.md:29-43` (entry dict — flat data with role, content, ts)
- `docs/guide_discussions.md:71-86` (A1-A7 per-entry editing)
- `docs/guide_discussions.md:288-302` (Reset — user controls engagement)
- `conductor/code_styleguides/error_handling.md` (per spec line 217 — errors are data, not control flow)

### 5.6 nagent refs to cite

- `nagent_review_v2_3_20260612.md §3.4` (Conversation compaction — 12-section structured digest)
- `nagent_review_v2_3_20260612.md §3.1` (Knowledge harvest — provenance-aware plain markdown)
- `nagent_review_v2_3_20260612.md §2.8` (Pattern 8 — Harvest Knowledge, Reclaim Space)

### 5.7 The data-oriented alternative (the §5 punchline)

The §5 section should end with the data-oriented alternative:

> Manual Slop's 4 memory dimensions and nagent's compaction + harvest pattern are the data-grounded model. The conversation is a `list[dict]` the user owns; the model has no "concerns" field; the discussion can be reset, branched, edited, compacted; the knowledge harvest captures durable facts with provenance. The user is in control of engagement. The model is text generation, not a clinician.

---

**Sub-report complete.** This is the evidence base for §5 of `report.md`.