at.kotoba.session

One practice session: the full per-card interaction array, the config that drove it, and session-level rollups. Append-only stack; TID rkeys (time-ordered).

Repository @kotoba.at did:plc:o5f3cgna5sku4p6iitld6mxs namespace authority
Details · record, key tid
Kindrecord
Record keytid
Authoritykotoba.at
Indexed

Record

record · key tid

Properties

cards

requiredarray
itemsref
Reference
Reference

endedAt

requiredstring · datetime

packRef

string · at-uri

at:// URI of the lesson.pack record that drove this session.

rollup

requiredref
Reference

startedAt

requiredstring · datetime

#card

object

One answered card. `answer` is what the user produced (the correct reading is derivable by joining packRef+glyph; not stored, per SPEC §3.2).

Properties

answer

string

What the user answered. Optional: may be absent on a skip/timeout (app-side `given` is nullable).

correct

requiredboolean

The other options offered beside the answer: romaji on a tap card, English glosses on a meaning card. Absent for type, which has no grid.

itemsstring

glyph

requiredstring

The item's SRS state key: the prompt glyph for a recognition card, `grammar:<id>` for a grammar one (which has no glyph).

mode

requiredstring

How the card was answered. tap = pick the romaji reading, type = write it out, meaning = pick the English gloss (a word, or a derived verb form — see `type`), choice = pick the answer to a grammar prompt from its authored options.

  • knownValues: tap | type | meaning | choice

parseMs

requiredinteger

render -> first response/keystroke.

totalMs

requiredinteger

render -> submit (tap: == parseMs).

ts

requiredstring · datetime

type

requiredstring

Open string; matches the pack item's type. `conjugation` is a de-conjugation card (#146) — a verb form derived at session time rather than authored in the pack, keyed on the conjugated surface.

#config

object

The setup choices that drove the session (enables Drill-again + analytics slicing).

Properties

cardStyle

requiredstring

Open. genko | hanko | ma.

focus

requiredstring

Open. all | hiragana | katakana.

length

requiredinteger

10 | 20 | full-count.

recall

requiredstring

Open. tap | mixed | type | meaning | read (type + meaning).

#rollup

object

Precomputed so range scans avoid touching the per-card array.

Properties

byType

unknown

Map keyed by type string -> { n, correct }. `unknown` because lexicons have no dynamic-key map type (see README).

correct

requiredinteger

medianParseMs

requiredinteger

n

requiredinteger

Similar lexicons

semantic match

Lexicons whose schemas describe something close to this one. Check them before publishing a new one that overlaps.

  • Lesson content the app drills. Append-only stack; latest = active. Free-form by design: a known core the UI reads + open `meta`/`defaults` round-tripped untouched (SPEC §3.1a). This record body IS the upload interchange shape (lessons/pack.schema.json).

  • A finished study session. Written once; the source of study history and activity stats.