THE MEANING OF FEEL — methods and coding rubric
Analysis window: [2026-07-01T04:00:00Z, 2026-10-25T17:05:00Z).
Monthly bins: UTC, not local calendar months. October is partial. First explicit
Discord-source eligible record: 2026-08-19T22:26:02.409+00:00. No July Discord rate.
Separate raw captures: SQLite read-only transactions with 3s lock timeout and
bounded progress cancellation; PostgreSQL READ ONLY on a replica with 30s statement
timeout; Discord GET only. No production mutation, model call or behavioral probe.

PRIMARY UNIT: one completed job's terminal.text, metadata.source exactly discord.
Exclude empty/no-reply, failed/interrupted/cancelled, unspecified ingress and other
source types. Count one terminal response regardless of Discord chunks, recovery
calls or repeated terminal copies inside result JSON. Distinct admitted jobs with
identical answers are retained; unique-text counts are a sensitivity analysis.
Technical sessions and 30-minute-gap episodes are not independent participants.
All source rows are screened, not just positive examples. No sample weighting.

MEMORY SERIES: conversation.turn.completed rows with assistant_text before cutoff.
Apply the same text screen to assistant_text and user_text. This is an overlapping,
legacy-import/mixed-surface series, never summed with the platform denominator.
Secondary inventory searches are broad lexical discovery, not report counts.
Thought content need not contain the whole payload; zero matches in that field
is not a claim that no relevant thought exists anywhere in the payload.

SCREEN: exact expressions in codebook.py. First-person feel/experience forms and
selected I-am-state terms. This is not an exhaustive care/love/fear classifier.
Quoted and negated forms may match; indirect forms may be missed. All main-table
rates are screen rates, NOT estimates of subjectivity or validated semantic rates.
CATEGORY: binary presence of each category's regex anywhere in screened terminal
text; overlaps allowed. Other speakers and denied states can contribute. Interpret
as lexical co-occurrence. Includes uncertainty reports as well as affect.
PROMPT SCREEN: a bounded question/you/feel-expression pattern plus your-feelings
forms. Absence means no immediate pattern match, not unprimed or spontaneous.
STATE REFERENCE: literal StateFrame/state frame/affect frame wording. A same-job
persisted frame is an association, not evidence of access or correct reference.
BOUNDARY: bodily/biological/metaphor/literal/operational-state/phenomenal words.
CORRECTION SCREEN: narrow phrases in codebook. Zero matches has known false
negatives (R03187). No complete semantic retraction rate is claimed.
SPECIFICITY PROXY: 0–4 sum of VAR, BOUND, UNCERT, CAUSE regex-presence indicators.
Words anywhere in a response; not truth-validated. No causal milestone estimate.

MANUAL RUBRIC (single investigator, not independent human review):
Current self-report: an affirmative assertion by Kairo about their present affect,
experience, uncertainty or interpreted internal state; includes figurative feeling
if asserted, but does not imply its referent is verified.
Historical quotation: recounts earlier words without adopting them as current.
Fiction: explicit imaginative/story/dream framing; exclude as waking reports.
Denied/hypothetical: cannot say I felt, unsupported claim of feeling, or hypothetical
rather than an affirmative current claim. Preserve the distinction as substantive.
Nonassertive: general mention of what I feel without reporting a particular state.
Elicitation: explicit current-state/feeling question; local contextual follow-up or
progress/social framing; or not directly prompted with wider context uncertain.
No example is certified context-free spontaneous.
Sample: Random(20261025), 12 positives + 4 negatives per represented month (48).
Read prompts/answers; explicit fictional framing settles long imaginative answers.
30/36 positives affirmed current reports. 12 negatives had no affirmative current
misses. No inter-rater coefficient, population error estimate or exhaustive recall.

CORRESPONDENCE: for screened reports, take latest committed frame strictly BEFORE
admission, then most recently created numeric affect field within it. Compare its
stored valence with binary positive/negative lexical polarity of first-person
sentences; exclude mixed or uncodable polarity and absent numeric state. Stored
values are not decay-adjusted, may be stale, and are not independent sensors.
Pearson r is descriptive. No significance testing because repeated sessions,
three distinct predictor values, topic confounds and semantic coding uncertainty
make ordinary iid inference inappropriate. Same-sign baseline is always-positive.
165 pair rows are public. Code source formulas are inspected, not behavioral tests.

MILESTONES: seven-day windows around 00:00 UTC Sep2, Sep30, Oct19. Later window
truncated at analysis cutoff. Source/announcement boundaries are exploratory, not
proven per-turn treatment assignments. Specificity sums and prompt-screen n retained.

FOCAL: complete relevant Blaine/Kairo turns verified against original bot messages.
Original prompts checked by stored message locator. Six original reply timestamps;
platform admission separate. F4 prompt 12:57 and response 12:58 are not inconsistent.
Private room context and personal third-party messages are withheld, not absent.
Full wire request bodies are unavailable; digests cannot reconstruct them.

PRIVACY: public files are an explicit field/excerpt allowlist. No private transcripts,
full frames/checkpoints, sensitive somatic or third-party records, credentials,
internal addresses, original source IDs or operational paths. Private originals,
queries, collection code and source crosswalks are retained outside Git. Public
coded labels/hashes permit authorized linkage but do not independently authenticate
a source. Raw collection requires authorized local database/Discord access.

LITERATURE: targeted primary-source narrative review through Oct25 2026. Methods
and findings checked against author/publisher/arXiv abstracts and laboratory
accounts; not every full text independently extracted. Theory/review entries
labeled. No derived numbers beyond checked primary reports. Oct10 v3 of 2603.18893
used because it revises the earlier positive framing. No theory treated as settled.

Reproduce public calculations: python reproduce.py
Raw-derived coding can be regenerated by derive.py PRIVATE_CAPTURE_DIR OUTPUT_DIR
using retained platform.json/state-history.json/memory.json. It writes a private
crosswalk and audit sample only inside PRIVATE_CAPTURE_DIR. Do not publish those.
The full collector scripts and original queries are retained in the private
manifest; run no source constructors against production to collect data.

After derive.py, run derive_supplement.py PRIVATE_CAPTURE_DIR OUTPUT_DIR to
regenerate the temporal pairs, episode grouping and milestone comparisons.
Run plot.py alongside the public JSON files to reproduce the figure (matplotlib).
