Back to Inside ~Cortisol Checker~

Implementation field note · 8 min read

V2 Production Canary: From Language Score to State Observation

What changed in V2, what the first authenticated production canary verified, what was deleted, and what remains unproven.

Inside ~Cortisol Checker~ · v1.0 · edition history ·

Quick Answer

V2 does not improve the V1 language score. It changes the primary object of observation.

The legacy analyzer asked, “What patterns are present in this text?” The V2 observer asks, “What happened between noticing an event and reporting a change in state?” It records participant-selected categories for stimulus, appraisal, affect, movement, bodily evidence, persistence, response, and recovery. It returns no cortisol result, stress score, diagnosis, generated advice, resilience score, or identity claim.

On 10 August 2026, the first authenticated production canary completed the full V2 flow against the live Foundation and Word Wallet services. A synthetic observation was previewed, saved as one private structured revision, read back, given an explicit retention extension, and then deleted. A database audit found no narrative echo and zero remaining observations after deletion.

This is implementation evidence, not scientific validation and not registry activation.

Why V2 changes the object of inquiry

V1 made a deliberately inspectable language-rule estimate. That was useful for studying rule behavior, false positives, false negatives, safety separation, and registered-expression invocation. It could not determine what a person perceived, what they thought the event meant, whether the movement was positive or mixed, what they noticed in their body, how long the effect persisted, what they actually did next, or where their state later settled.

V2 keeps the public name ~Cortisol Checker~ because it is a major-version evolution of the same research inquiry. It removes cortisol inference from the primary experience. Invocation asserts only ~WellbecomingProtocol; it does not assert ~~Emotion, ~~~Cortisol, a canonical measurement, or a ~~~~ProtocolLinkId.

The result is a private Stimulus → State Observer with five important separations:

  1. stimulus is separate from perception;
  2. observation is separate from association and interpretation;
  3. appraisal is separate from affect and mood movement;
  4. self-reported bodily signals are separate from biochemical or device evidence; and
  5. persistence is separate from the reported relation to a prior baseline.
The V2 observer showing separate Associated and Interpreted paper-white panels during a synthetic production canary.
Association and interpretation are reportable experiences, but neither is presented as direct observation. All text in this capture was synthetic and session-only.

What stays in the page, and what may leave it

The participant may write a neutral stimulus description, perception, recognition, interpretation, alternative interpretation, and learning note. These fields remain in React memory. They are not placed in local storage, session storage, a URL, browser history state, an analytics payload, an API request, a log, or the saved observation.

Only the strict structured event may leave the page. It contains selected categories and durations, including:

  • modality and source category;
  • reflection-presence flags, not reflection text;
  • appraisal categories;
  • affective states with categorical intensity;
  • mood movement and perturbation direction/magnitude;
  • unknown or self-reported physiological evidence;
  • persistence and recovery buckets with optional bounded seconds;
  • participant-reported actions and effects; and
  • schema, expression, occurrence, and evidence provenance.

The production save path rejects extra keys recursively, including narrative, media, diagnosis, cortisol, biochemical, device, and identity-value fields.

The V2 body step with Unknown or not measured selected and an explicit statement that a feeling is not a cortisol measurement.
Unknown is a complete answer. A self-reported bodily signal may be recorded, but it is not relabelled as observed physiology or a biomarker.

The synthetic canary

The canary used a fictional editing note so the test would not create a health disclosure or reproduce a real personal event. The structured selections represented a small mixed movement involving mild irritation and moderate curiosity, unknown physiology, a resolved one-to-five-minute persistence bucket, reported attention-shifting and reappraisal, and a return near the prior baseline.

The interface completed all ten stages:

  1. Orientation
  2. Attention
  3. Observed
  4. Interpreted
  5. State change
  6. Body
  7. Time
  8. Response
  9. Recovery
  10. Transition

The result reported the participant's entries. It did not produce a score or turn selected categories into inferred traits.

A synthetic V2 result headed Your reported state transition with separate Observed and Interpreted panels.
The result is a legible state-transition record: reported observation and interpretation remain separate, and the page states that it contains no cortisol result, score, diagnosis, or identity claim.

Recording requires a connected Wellbeing Identity before narrative entry begins. The observer does not fetch or display public identity facets. Connecting establishes the private holder session; it does not make the event an identity update.

Preview and persistence require distinct, time-bounded consent scopes. Before the final save, the interface names both sides of the boundary:

  • Saved: categories, evidence level, movement, durations, actions, reported effects, and provenance.
  • Excluded: stimulus description, perception, recognition, interpretation, alternative interpretation, and learning text.

The participant must separately confirm the 90-day default retention and the absence of narrative or cortisol measurement before the save button becomes available.

The V2 save confirmation naming the structured fields that will be saved and the narrative fields that will be excluded.
The disclosure is part of the action, not a buried privacy note. The canary did not proceed until the structured-only boundary was explicitly confirmed.

What the production checks established

The production migration was preceded by a private schema backup because the Supabase Free project showed no managed backup. After the migration, checks confirmed the V2 table, version record, owner policy, RLS, 90-day default, service-role purge path, and continuity of the frozen V1 records.

The first version of the migration also granted the authenticated database role direct table access. RLS limited rows by owner, but direct writes could have bypassed the API's consent and forbidden-key scanner. A forward security migration removed all direct anon and authenticated table privileges. The protected Word Wallet API is now the browser write path; its CSRF, consent, owner, schema, and forbidden-key checks execute before the service role reaches the ledger.

During the canary, the database contained exactly one V2 row. The audit established that:

  • its top-level JSON keys exactly matched the V2 allowlist;
  • none of the six synthetic narrative strings appeared in structured_event;
  • direct authenticated SELECT and INSERT privileges were false;
  • the authenticated owner policy remained scoped by auth.uid();
  • revision history returned revision 1;
  • explicit retention extension changed the expiry date; and
  • the UI exposed revision history, extension, group deletion, and storage-consent revocation.
The private V2 observation ledger showing revision history, retention extension, deletion, and storage-consent revocation controls for a synthetic record.
The ledger is owner-facing and categorical. It displays no narrative, identity value, matched language evidence, generated reply, diagnosis, or cortisol result.

Deletion was part of the canary

The test did not leave its synthetic observation behind. The owner used Delete group, which removed the complete revision group. A final database query returned zero state observations. The corresponding deletion audit existed and contained only the deleted revision count—not the structured event or any narrative.

The V2 private patterns area after deletion, showing that the observation and all its revisions were deleted.
The final canary state: no saved V2 observation remained. Content-free operational audit evidence remained so deletion could be verified without retaining the event.

What this does not prove

One successful production canary proves that one bounded path worked under the tested conditions. It does not prove construct validity, clinical validity, generalisability, reliability across populations, physiological correspondence, therapeutic benefit, or improved wellbeing.

It also does not yet complete every production acceptance test. Before V2 registry activation, separate canaries should still cover:

  • creation and latest-revision selection for revision 2;
  • storage-consent revocation while an observation exists;
  • scheduled expiry and purge after the retention boundary;
  • recurrence statements at the three-observation threshold;
  • denial of cross-owner reads, revisions, extensions, and deletion using a second authenticated account; and
  • pagination with enough owner records to cross a page boundary.

The V2 registered-expression fixture therefore remains a candidate rather than an activated canonical record. The production route can be inspected and tested, but availability is not scientific validation and deployment is not registry governance.

What remains available from V1

The complete V1 paper remains intact in the preceding chapters. The frozen language analyzer remains available at Language analysis · legacy research beta, with expression contract 1.2.0 and handler 0.4.1. Its manually authored rule score, language-rule labels, evidence-density display, safety path, fixtures, and historical saved records are not transformed into V2 observations.

The current landing page explains both paths. Open ~Cortisol Checker~ for the V2 observer and synthetic demonstrations, or use the legacy route when the research question concerns the historical deterministic language rules.

FAQ

Can I use V2 in production now?

The production route is available as a review candidate for synthetic and carefully bounded owner testing. Its registry fixture is not activated, so availability should not be described as canonical registration, scientific validation, or a general release.

Does V2 calculate cortisol or stress?

No. It records a participant-reported state transition using structured categories and optional durations. It returns no cortisol value, language-stress score, diagnosis, or inferred human state.

Is my written reflection saved?

No. Stimulus description, perception, recognition, interpretation, alternative interpretation, and learning text remain in page memory. Only the disclosed structured categories and durations may be saved after separate confirmation.

Can I delete a saved observation?

Yes. The owner interface exposes complete revision-group deletion. The production canary used that control and verified that zero V2 observations remained afterward.

Does a saved observation update Wellbeing Identity?

No. V2 creates no automatic identity state, score, credential, public-profile update, or SAOcommons activity.

References and grounding

The implementation facts in this field note were checked against the Foundation, Checker, IoV Spec, and Word Wallet source contracts; the production Supabase schema; an authenticated synthetic canary; and post-deletion database queries on 10 August 2026.

~

End of signal.