llm-wiki-cli epistemic report
Type: agentic-system-analyses/types/agentic-system-epistemic-report.md
Source-and-claim boundary
This report asks which content LWC licenses for reliance, which checks have operative consumers, and where storage or procedural verification stops short of semantic acceptance. Scope and exclusions: see boundary. Evidence identities and layers: see Source register. All direct reads below are SRC-1 at the reviewed commit; none is a target execution. The analysis includes the shipped agent policies, not just the Rust store. The host's inference and provider parameters remain outside accessible implementation: see RT-CMP-host-model.
The consequential knowledge claim is RT-CLM-agent-memory. Its verified-milestone prescription must be compared with the actual admission paths, not inferred from the word Wiki. Source text and saved answers can carry truth-apt propositions; an arbitrary stored body need not. No concrete host-produced synthesis or source-to-answer trace was supplied. Semantic preservation, entailment, non-entailment and exercised acceptance of such a synthesis therefore remain undetermined. This is not evidence that agents cannot synthesize or verify.
| Entry point or operation | Source path, SRC-1 | Coverage and consequence |
|---|---|---|
| CLI dispatch and exposed operations | src/cli/dispatch.rs |
Direct operation inventory searched, including ingest, remember/memory, graph relation retraction, weights, lint, plans, discussion, optional runtimes and archive/sync. Detailed paths below distinguish inspection from inventory. |
| Page write/show; draft commit/rollback | src/store/content_search.rs, src/changeset.rs |
Supplied findings: RT-RTE-page-write, RT-RTE-changeset-commit. Direct-live and override alternatives defeat a universal lint gate. |
| Ingest completion/failure/retry | src/store/graph_ingest.rs |
Supplied RT-RTE-ingest-complete; no semantic acceptance inferred from completion. |
| Lint results | src/store/materialize.rs, src/store/types.rs |
Direct reads of result construction and selected SQL predicates: EPI-RTE-lint-check. Not a complete audit of all lint rules. |
| Recall, hooks, pi and core MCP writes | src/mcp.rs, src/agent.rs, integrations/pi-lwc/extensions/lwc.js |
Supplied RT-RTE-mcp-recall, RT-RTE-hook-context, RT-RTE-core-command. No new host-parity claim. |
| Milestone verification and retrieval checks | skills/using-lwc/references/active-memory.md |
Direct full read: EPI-RTE-milestone-review. Doctrine, not an observed review trace. |
| Temporal remember/recall/feedback | src/store/temporal_memory.rs |
Direct remember, recall and feedback bodies: EPI-RTE-temporal-feedback. Retention helper internals and hint consumers not fully inspected; no complete temporal curation verdict. |
| Retrieval weight mutation | src/store/graph_ingest.rs |
Direct weight-set read shows caller reason/provenance and symbolic upsert. Other weight feedback and reranking algorithms not traced end to end; prevents complete ranking-authority assessment. |
| Tutor turns and Soul | src/learning/tutor.rs, skills/using-tutor/SKILL.md |
Supplied RT-RTE-tutor-turn, RT-RTE-soul-publish. |
| Practice verify, grade, override and mistakes | src/learning/practice.rs, skills/using-practice/SKILL.md |
Direct selected functions and full skill: EPI-RTE-practice-verify, EPI-RTE-practice-grade. Scheduling entry was read, not the complete scheduler/queue; no learning-benefit conclusion. |
| Team and recovery, work, runtime admission | src/replica/engine.rs, src/team/hub.rs, src/work/runner.rs, src/learning_runtime.rs |
Supplied RT-RTE-team-sync, RT-RTE-work-runner, RT-RTE-runtime-install. These constrain lineage and operational admission, not source truth. |
| Other material included routes | src/learning/book.rs, src/store/discussion.rs, src/store/plan.rs |
Detailed Book transformations, discussion convergence, plan evidence disposition and their downstream consumers remain uninspected here; no system-complete negative about evidence-consuming acceptance, criticism or integration follows. |
| Import/merge, relation retraction, removal, readers and other host adapters | src/cli/dispatch.rs, src/view/mod.rs |
Dispatch inventory and supplied runtime account only. Detailed withdrawal propagation, merge fidelity, browser rendering and other host delivery not established; prevents complete lineage, rejection and consumer coverage. |
| Evaluations | benchmarks/README.md |
Boundary's reported-operation scope only; no direct benchmark-result assessment. No end-to-end run or causal experiment supplied. |
Missing evidence is local: host traces prevent conclusions about actual semantic checking and later dependence; source-to-candidate pairs prevent classifying generated content as reshaping, entailed derivation or ampliative conjecture; provider internals prevent weight-learning or version-fixity conclusions; uninspected included operations prevent a system-wide absence claim. No supplied record needs supersession for the bounded findings below.
Epistemic-object inventory
| Object ID | Candidate truth-apt content or none | Claimed role | Evidence source ID and local anchor | Gap/limit |
|---|---|---|---|---|
| RT-RTE-page-write | Caller-supplied page propositions and citations | see cited record | SRC-1, src/store/content_search.rs |
Route identifies the object; no new duplicate page declaration. No concrete proposition verified here. |
| RT-RTE-ingest-complete | Imported source content, source summary, integration-page assertions | see cited record | SRC-1, src/store/graph_ingest.rs |
Citation/kind counts do not establish summary fidelity or integration after acceptance. |
| EPI-OBJ-memory-events | Temporal fragments, changes and evidence supplied by caller | see record | SRC-1, src/store/temporal_memory.rs |
Content warrant unknown; latest-known is not live-verified. |
| EPI-OBJ-practice-items | Item prompts, expected answers, rubrics and source refs | see record | SRC-1, src/learning/practice.rs |
Reference identity checks do not prove expected answers true. |
| EPI-OBJ-practice-grades | Exact-match result or caller judgment of a response | see record | SRC-1, src/learning/practice.rs |
Numerical score and accepted state have route-specific scope. |
| RT-RTE-soul-publish | Stable learner descriptions can be truth-apt; teaching preferences can be non-truth-apt | see cited record | SRC-1, src/learning/tutor.rs |
Distinct content functions retained; no inspected concrete revision. |
| RT-RTE-hook-context | Selected Wiki propositions in reference envelope; readiness metadata | see cited record | SRC-1, src/agent.rs |
Budgeted delivery; not a warrant elevation. |
| RT-CMP-host-model | Not determinable within inaccessible parameters | see cited record | SRC-1, README.md |
Host/provider internals uninspected. |
Authority-route ledger
The ledger is a sparse overlay. For fields owned by cited records, “see” delegates the detailed finding; the architectural status and content relation here are this report's assessment. Several rows cite one container route to separate checking, disposition, retention and consumption. No row equates retention with lifecycle integration.
| Route ID | Route function | Architectural status | Object/candidate ID | Content/update relation | Transition or check target | Evaluator/condition and domain | Activation and timing | Possible or observed result | Implemented force | Epistemic authority and scope | Operational authority: behavior permitted, blocked, or changed | Behavioral-authority path: consumer, channel, force, horizon | Evidence source ID and local anchor | Claim IDs or none | Mismatch marker or none | Gap/limit |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| RT-RTE-page-write | retention | implemented | see route | truth-apt transformation: acquisition/import | Supplied page and citation set | see route | see route | see route | see route | Source warrant unknown; stored attribution is not endorsement | see route | see route and RT-BAP-wiki-context | SRC-1, src/store/content_search.rs |
RT-CLM-agent-memory | no universal semantic gate | Caller text may contain non-truth-apt parts; no novel claim production established by persistence. |
| EPI-RTE-milestone-review | check/evidence production | doctrine only | page candidate | truth-apt transformation: indeterminate | Mutable claims, citations, retrieval fitness | see record | see record | see record | No autonomous enforcement established | Prescribed source-relative verification and top-five retrieval, not proof of truth | see record | see record | SRC-1, skills/using-lwc/references/active-memory.md |
RT-CLM-agent-memory | requested versus exercised | Host reasoning unavailable; neither non-entailment nor entailment demonstrated. |
| EPI-RTE-milestone-review | disposition/acceptance | doctrine only | reviewed page | no content change | Capture at verified milestone | see record | see record | see record | Policy | Intended reusable decision/runbook or synthesis; evidence-consuming host judgment prescribed, not observed | see record | see record | SRC-1, skills/using-lwc/references/active-memory.md |
RT-CLM-agent-memory | no observed acceptance | The policy is consequential but is not a Rust semantic evaluator. |
| EPI-RTE-lint-check | check/evidence production | implemented | page structure and references | no content change | Structural Wiki issues | see record | see record | see record | Diagnostic outside commit | Presence of citations/provenance and index/link structure within checked predicates only | see record | see record | SRC-1, src/store/types.rs |
RT-CLM-agent-memory | none | Explicit provenance can satisfy the uncited-page predicate without independently verified evidence. |
| RT-RTE-changeset-commit | disposition/acceptance | implemented | draft | no content change | Publishability under conflicts/lint | see route | see route | see route | see route | Structural admission, not accepted semantic truth | see route | see route | SRC-1, src/changeset.rs |
RT-CLM-agent-memory | direct-live and override alternatives | Override is not semantic warrant. |
| RT-RTE-ingest-complete | disposition/acceptance | implemented | source-linked pages | no content change | Generating job completeness | see route | see route | see route | see route | Structural completion only | see route | see route | SRC-1, src/store/graph_ingest.rs |
RT-CLM-agent-memory | integration label versus lifecycle integration | No accepted ampliative claim established by counts; pages already persist. |
| RT-RTE-mcp-recall, RT-RTE-hook-context | operational admission/selection/consumption | implemented | saved pages | truth-apt transformation: non-ampliative reshaping | Reference selection and bounded text | see routes | see routes | see routes | Ranking and bounded supply | No new truth license; truncation can remove qualifications | see routes | see RT-BAP-wiki-context | SRC-1, src/mcp.rs, src/agent.rs |
RT-CLM-agent-memory | delivery is not reliance | Reshaping classifies selection/truncation mechanics, not semantic equivalence of shortened propositions. |
| EPI-RTE-temporal-feedback | retention | implemented | EPI-OBJ-memory-events | truth-apt transformation: acquisition/import | Caller event and lineage relations | see record | see record | see record | Durable record subject to retention | Source warrant unknown | see record | see record | SRC-1, src/store/temporal_memory.rs |
none | none | Supersedes/contradicts/resolves are submitted relations, not independently adjudicated facts. |
| EPI-RTE-temporal-feedback | behavior/policy adaptation | implemented | event feedback | non-truth-apt policy/content update: usefulness signal changes ranking | Event retrieval priority | see record | see record | see record | Ranking | Usefulness is not truth or live verification | see record | see record | SRC-1, src/store/temporal_memory.rs |
none | none | Improvement unmeasured; conflict flag is descriptive, not a rejection gate. |
| EPI-RTE-practice-verify | check/evidence production | implemented | EPI-OBJ-practice-items | no content change | Revision, exact reread fields and source identity | see record | see record | see record | Enforcing prerequisite | Identity consistency; not semantic agreement with source | see record | see record | SRC-1, src/learning/practice.rs |
none | source truth name exceeds semantic license | Host verification remains policy. |
| EPI-RTE-practice-verify | disposition/acceptance | implemented | item revision | no content change | Draft to verified | see record | see record | see record | Enforcing state transition | Eligible item, not necessarily warranted answer | see record | see record | SRC-1, src/learning/practice.rs |
none | none | Distinct from Wiki admission. |
| EPI-RTE-practice-grade | check/evidence production | implemented | EPI-OBJ-practice-grades | truth-apt transformation: entailed derivation | JSON equality to frozen objective answer | see record | see record | see record | Deterministic score | Exact match in JSON domain given stored answer/points; no source-truth proof | see record | see record | SRC-1, src/learning/practice.rs |
none | none | The stored answer is an oracle for matching, not an infallible reference. |
| EPI-RTE-practice-grade | disposition/acceptance | implemented | subjective grade | no content change | Submitted grade, rationale and confidence | see record | see record | see record | State and mistake-set update | Accepted label means confidence threshold after mechanical checks; model rationale is not independent evidence | see record | see record | SRC-1, src/learning/practice.rs |
none | accepted label bounded | No independent semantic rubric application demonstrated. |
| EPI-RTE-practice-grade | retention | implemented | grade/history and mistake membership | truth-apt transformation: acquisition/import | Caller subjective judgment or override | see record | see record | see record | Durable records | Warrant of imported judgment unknown | see record | see record | SRC-1, src/learning/practice.rs |
none | none | Override changes current grade and history; does not prove earlier judgment wrong. |
| RT-RTE-soul-publish | behavior/policy adaptation | implemented | Soul guidance | non-truth-apt policy/content update: caller replaces teaching guidance | Publication checks | see route | see route | see route | see route | Preference license distinct from factual learner diagnosis | see route | see RT-BAP-soul-guidance | SRC-1, src/learning/tutor.rs |
none | submitted approval is not authenticated consent | Truth-apt descriptions within Soul are imported with unknown warrant; no inspected specific revision. |
| RT-RTE-team-sync | lineage/freshness/recovery | implemented | replicated candidate state | truth-apt transformation: indeterminate | Publication authorization, head/digest and resolution | see route | see route | see route | see route | Authorized lineage is not truth; merge fidelity unresolved | see route | see route | SRC-1, src/team/hub.rs, src/replica/engine.rs |
none | none | Semantic conflicts delegated to caller; complete transformations uninspected. |
System-claim versus route comparison
| Claim ID | Claimed operation or warrant | Claim source ID/anchor and evidence layer | Doctrine/design support | Implemented route IDs | Observed-run support | Causal support and design limits | Supported conclusion | Mismatch/unknown |
|---|---|---|---|---|---|---|---|---|
| RT-CLM-agent-memory | see record | SRC-1, README.md, skills/using-lwc/SKILL.md; doctrine/design |
see record; EPI-RTE-milestone-review | RT-RTE-page-write, RT-RTE-mcp-recall, RT-RTE-hook-context, EPI-RTE-lint-check | None supplied for a semantic write/recall loop | No controlled quality or learning comparison; open host tasks, not fixed answer curriculum | Persistence, source association and later delivery are wired; verified capture is a host policy | Useful compounding and semantic correctness not established by storage, lint or retrieval. Direct live writes are a supported counterexample to universal prepublication lint, not to the policy itself. |
Bounded conclusion
LWC separates agent reasoning from durable storage. For the inspected Wiki loop, the checks license structural conclusions: citations or provenance exist, selected references resolve, draft conflicts/lint permit publication, and ingest completion has required page kinds. They do not independently accept the truth of a synthesis. The active-memory policy prescribes source-relative verification, retrieval checks and live revalidation; the inspected Rust gates cannot establish that the host performed them. See EPI-RTE-lint-check, EPI-RTE-milestone-review, RT-RTE-ingest-complete.
Retention and later consumption are positive architectural findings, not merely doctrine. Pages and event content are acquired with source warrant unknown at admission. Budgeted recall reshapes delivery and can omit qualifications. Reference envelopes are intended as data, not higher-priority instructions, even when pi places them in the system-prompt channel. Semantic activation and benefit are unobserved. See RT-BAP-wiki-context. No inspected source-to-generated-claim pair establishes an accepted ampliative conjecture or integration after such acceptance; the uninspected Book, Discussion and Plan routes prevent generalizing this to a whole-system absence.
Practice provides a materially different evaluator. Objective grades are derivations from frozen JSON answers and responses; the limited warrant is exact equality, not mastery or the correctness of the answer key. Item verification checks stable identity and reread fields against live Book/Tutor records, while semantic verification is instructed. Subjective acceptance consumes caller rationale/confidence, with pending review below 0.6 and durable mistake membership; it is not an independent rubric judgment. Learner overrides retain history but authenticate only submitted actor data in this local function. See EPI-RTE-practice-verify, EPI-RTE-practice-grade.
There are direct behavior-shaping paths without establishing a newly warranted proposition: useful/not-useful feedback changes temporal ranking, and Soul revisions supply later teaching preferences. Their standing capacity coexists with unestablished learning benefit. See EPI-RTE-temporal-feedback, RT-BAP-soul-guidance. Neither persistence, reflective subject matter, automated scoring nor an approval label alone establishes content-directed theory criticism, iteration, autonomy or exercised self-improvement. Provider parameter learning is uninspected separately; fixed or mutable weights cannot be inferred from these text routes. No single system-wide epistemic verdict follows.
Shared records
Operative objects
EPI-OBJ-memory-events
Label: Temporal memory events
Source-native identity: memory_events, associated fragments, changes, evidence and relations. Natural-language fragments are interpreted by agents; IDs, times, relation types and feedback signals are symbolic. Substrate: SQLite plus FTS. Distinct from the page referent of RT-RTE-page-write; no temporal object counterpart in supplied runtime records. SRC-1, src/store/temporal_memory.rs.
insert_memory_fragments(&tx, &event_id, &input)?; insert_memory_changes(&tx, &event_id, &input.changes)?; insert_memory_evidence(&tx, &event_id, &input.evidence)?; insert_memory_relations(&tx, &event_id, &input.relations)?; index_memory_event(&tx, &event_id, &input)?; ---
src/store/temporal_memory.rs
EPI-OBJ-practice-items
Label: Practice items
Source-native identity: versioned practice_items, frozen into paper_items. Prompt/rubric text is natural language; answer JSON, state, revisions, source refs and points have symbolic consumer rules. Substrate: private Practice SQLite store. Distinct from Tutor session replies in RT-RTE-tutor-turn, though a committed turn can be its evidence. No supplied item counterpart. SRC-1, src/learning/practice.rs.
if current["prompt"] != input.prompt || current["answer"] != input.answer || current["rubric"] != serde_json::to_value(&input.rubric).unwrap() || current["source"] != serde_json::to_value(&input.source).unwrap()
---
src/learning/practice.rs
EPI-OBJ-practice-grades
Label: Practice grades
Source-native identity: grades and grade_history; numeric score/confidence and symbolic method/state, with natural-language rationale. Substrate: private SQLite. Distinct from items and Tutor checkpoints in RT-RTE-tutor-turn; no supplied grade counterpart. SRC-1, src/learning/practice.rs.
"INSERT INTO grade_history VALUES(?1,1,?2,?3,?4,?5,?6,?7)", params![id, score, rationale, confidence, method, state, at],
---
src/learning/practice.rs
Routes
EPI-RTE-milestone-review
Label: Milestone verification policy
Endpoints: candidate reusable result through instructed source/retrieval review to capture and live revalidation. Owner: external agent under shipped skill. No new counterpart for this semantic review in supplied runtime; RT-RTE-page-write owns physical admission and RT-CLM-agent-memory owns the public claim. SRC-1, skills/using-lwc/references/active-memory.md, doctrine/design.
- implementation conclusion status: claimed
- operation conclusion status: uninspected
- Immediate return: inapplicable — policy has no independent executable return.
- Later read-back: resulting captured pages can reach later agents through ordinary Wiki reads; actual compliance not observed.
- Delegated visibility: host agent reads policy; no delegated worker established.
- Selection predicate: verified decision, accepted design, runbook, root cause, correction, synthesis or durable preference likely to be reused.
- Invalidation or expiry: policy requests freshness checks and revision of changed claims, not time-based certification.
- Activation or effect: policy directs evidence use, no unverified conclusions, top-five original/paraphrase retrieval and postcommit revalidation.
- Evidence limits: this is requested host behavior, not semantic validation implemented by the cited store gates.
Proposer/decider/veto: agent authors, reviews and can decline capture; software admission remains separate; human per-content approval not required by this rule. Mode: open tasks. Criterion: current immutable sources or explicit provenance, changed pages lint/retrieval fit, and no unverified conclusion. Intended use: durable reusable knowledge; scope: changed claims/pages. No semantic answer oracle supplied. Recovery: changeset discard/rebegin or immediate mistaken-commit rollback is instructed. The policy does not certify produced claims merely by naming them verified.
- Claims trace to current immutable sources or explicit provenance.
- Changed pages pass lint and fixed original/paraphrase retrieval checks in the top five.
- Draft validation is repeated against live state after commit.
- No secret, transient detail, or unverified conclusion was persisted. ---
skills/using-lwc/references/active-memory.md
EPI-RTE-lint-check
Label: Wiki lint diagnostics
Endpoints: selected store through SQL issue predicates and Markdown structure checks to paginated response/counts. Owner: Store. This is the evaluator upstream of, not duplicate publication identity with, RT-RTE-changeset-commit. SRC-1, src/store/materialize.rs, src/store/types.rs, implementation.
- implementation conclusion status: wired
- operation conclusion status: uninspected
- Immediate return: structured issues, counts, blocking/advisory totals and pagination.
- Later read-back: inapplicable — issue computation reads current store, not accumulated semantic feedback; explicit lint logging is separate operation bookkeeping.
- Delegated visibility: caller receives diagnostics; no model worker invoked.
- Selection predicate: current store and issue predicates, then offset/limit; totals precede pagination.
- Invalidation or expiry: store mutation can change subsequent lint results.
- Activation or effect: ordinary lint diagnoses; changeset commit consumes blocking lint separately, with override and direct-write alternatives.
- Evidence limits: selected SQL and result construction inspected, not every rule; no semantic entailment evaluator established here.
Target/domain: citation/provenance presence, link/index integrity and Markdown structure. Evaluator: deterministic code. For a page with zero source rows but one explicit-provenance row, the inspected uncited_page predicate does not emit that issue: its second NOT EXISTS is false. This is a concrete deduction from SQL, not target execution and not a claim that all other lint rules pass. It demonstrates why provenance presence is weaker than verified truth. No human adjudication or answer oracle in this computation.
WHERE NOT EXISTS ( SELECT 1 FROM page_sources ps WHERE ps.page_slug = p.slug ) AND NOT EXISTS ( SELECT 1 FROM page_provenance pp WHERE pp.page_slug = p.slug ) ---
src/store/types.rslet blocking_total = all_issues .iter() .filter(|issue| issue.severity.is_blocking()) .count(); ---
src/store/materialize.rs
EPI-RTE-temporal-feedback
Label: Temporal event retention and ranking
Endpoints: caller event/feedback to retained temporal records and ranked recall. Owner: Store; ordinary recall consumer receives latest-known/superseded states, conflict indicators and explicit lack of live verification. Distinct from page replacement and bounded MCP page retrieval in RT-RTE-page-write, RT-RTE-mcp-recall; no supplied temporal-route counterpart. SRC-1, src/store/temporal_memory.rs, implementation.
- implementation conclusion status: wired
- operation conclusion status: uninspected
- Immediate return: event/retention/pressure/hints receipt, feedback receipt or ranked recall list.
- Later read-back: later memory recall reads retained event, lineage relations and summed feedback; age/budget retention can remove events.
- Delegated visibility: requesting caller receives event text and metadata; downstream model delivery is host-owned.
- Selection predicate: tokenized query, time limits, age/protected predicate, supersession resolution, candidate limit, feedback adjustment and final result limit.
- Invalidation or expiry: retention runs on writes; current-visible relation traversal can replace old candidate selection; helper internals not fully assessed.
- Activation or effect: useful/not-useful signals affect recall rank; caller contradiction relations produce an unresolved-conflict flag, not an automatic content rejection.
- Evidence limits: no trace of actual feedback/use, truth evaluation or improved future task capacity; hint consumers and eviction internals not fully traced.
Caller proposes events, relations and feedback and can withhold them; software validates existence/nonempty reason and controlled signal. Human contribution is unresolved, mode is open use, no truth answer oracle. Usefulness feedback does not revise event meaning. Feedback is retained independently of its interpretation. With lexical rank -10 and clamped feedback +1, inspected arithmetic yields adjustment 0.5 and resulting rank -10.5, not a claim of greater truth. Negative signals reverse that direction. Rank is the operational channel into future selection, not evidence-consuming semantic acceptance.
let feedback = memory_feedback_score(&self.conn, &event_id)?; let adjustment = candidate.lexical_rank.abs().max(1e-6) * 0.05 * feedback.clamp(-3, 3) as f64; ---
src/store/temporal_memory.rslive_verified: false, unresolved_conflict, ---
src/store/temporal_memory.rsif !matches!(signal, "useful" | "not-useful") { ---
src/store/temporal_memory.rs
EPI-RTE-practice-verify
Label: Practice item verification
Endpoints: draft item plus repeated prompt/answer/rubric/source to verified successor revision; downstream bank admission and paper selection use verified revisions. Owner: Practice code, semantic reviewer is external agent. Distinct from Tutor turn persistence in RT-RTE-tutor-turn; no supplied verification counterpart. SRC-1, src/learning/practice.rs, implementation; skills/using-practice/SKILL.md, doctrine/design.
- implementation conclusion status: wired
- operation conclusion status: uninspected
- Immediate return: verified successor item or request/revision/state/source error.
- Later read-back: bank and paper-selection paths select verified revisions; skill requires source reread and verification before this transition.
- Delegated visibility: caller receives receipt; source validation internally opens sibling Book or Tutor SQLite read-only, not a model delegate.
- Selection predicate: exact current draft revision and identical repeated fields; source subject and Book block locator/hash or committed Tutor turn revision.
- Invalidation or expiry: current source mismatch rejects verification; paper selector excludes items with newer retired revisions. Continuous postverification semantic freshness not established.
- Activation or effect: admits eligible revision to verified pool; bank addition rejects nonverified items.
- Evidence limits: source identity SQL checks existence/hash/revision, not whether prompt/answer logically follows from source; paper-selection details beyond inspected predicate not audited.
Agent/caller proposes and requests verification; software can veto stale identity or missing evidence; compulsory authenticated human approval not present in this local transition. Mode: durable assessed work. Oracle: Book block or Tutor turn supplies reference identity, not an automatically extracted semantic answer. Guidance: draft until reread/verified. Admission creates a revision; retirement is separate. Rejection leaves repair possible. No automatic source-truth proof follows from function naming.
validate_source_truth( &store.root, &input.source, current["subject_id"].as_str().unwrap(), )?;
---
src/learning/practice.rs"SELECT 1 FROM book_blocks block JOIN books book ON book.id=block.book_id WHERE block.id=?1 AND block.book_id=?2 AND block.text_hash=?3 AND book.subject_id=?4", ---
src/learning/practice.rs"SELECT 1 FROM tutor_turns turn JOIN tutor_sessions session ON session.id=turn.session_id WHERE turn.id=?1 AND turn.state='committed' AND CAST(turn.revision AS TEXT)=?3 AND session.subject_id=?4", ---
src/learning/practice.rsGenerated items stay draft until prompt, answer, rubric, and exact source ref are re-read and verified. Formal papers use verified revisions and report shortages without weakening the blueprint. ---
skills/using-practice/SKILL.md
EPI-RTE-practice-grade
Label: Practice grading and override
Endpoints: terminal attempt's exact response and frozen paper item to grade/history and mistake membership; learner override updates grade/history. Owner: Practice software for objective scoring and state decisions; caller for subjective judgment. Distinct from Tutor teaching commit RT-RTE-tutor-turn and item eligibility EPI-RTE-practice-verify; no supplied grade counterpart. SRC-1, src/learning/practice.rs, implementation.
- implementation conclusion status: wired
- operation conclusion status: uninspected
- Immediate return: grade envelope or stale revision, wrong grading kind, invalid rationale/confidence/score or already-graded error.
- Later read-back: grade reads include history; below-full objective grades or pending/below-full subjective grades activate durable mistake-set membership. Override appends history.
- Delegated visibility: external caller receives result; subjective rationale is supplied, no internal model evaluation established.
- Selection predicate: response ID/revision, non-in-progress attempt and frozen item; subjective item revision/rubric, bounded score/confidence and agent_rubric method; override requires actor string learner and revision/reason.
- Invalidation or expiry: duplicate grade rejected; learner override changes current score/method/state while retaining history. Downstream removal of mistake membership after override not established by inspected function.
- Activation or effect: objective equality yields full points or zero; subjective confidence below 0.6 yields pending_review, otherwise accepted. Mistake set is an implemented consequence beyond the immediate receipt.
- Evidence limits: no observed marking or learner outcome, no independent authentication of submitted learner actor, no evidence all downstream scheduling consumes grades.
Objective target/domain: exact JSON equality between response and frozen answer. The oracle is the author-supplied frozen answer; code supplies only comparison. Concrete input deduction: expected JSON string "A", actual "A", points 2 yields score 2 and accepted; actual "a" yields 0, accepted and a mistake record. This follows inspected code without execution; it neither validates answer-key truth nor judges semantic equivalence. Subjective target: exact response under frozen rubric; external agent proposes score/rationale/confidence, software checks bindings and bounds, then admits according to confidence. Confidence alone is not evidence that the rubric was applied correctly. Mode: bounded papers/attempts, not a controlled experiment of learning benefit. The caller may decline or correct through supported override; software vetoes malformed/stale submissions. Generated questions and semantic grading remain host-dependent.
let score = if correct == actual { row.4 } else { 0.0 }; ---
src/learning/practice.rslet state = if input.confidence < 0.6 { "pending_review" } else { "accepted" }; ---
src/learning/practice.rsif state == "pending_review" || input.score < max { record_mistake(&tx, &row.0, row.1, &input.request_id, "grade needs review")?; } ---
src/learning/practice.rsif input.actor != "learner" { ---
src/learning/practice.rs:2241-2241"INSERT INTO grade_history VALUES(?1,?2,?3,?4,1,'learner_override','overridden',?5)", ---
src/learning/practice.rs