Repository navigation
VNEXT-DOMAIN-001: Capability graph + evidence model v0 for Vietnamese learners #42
Description
Activity
Headless engine implemented in PR #43 (branch
devin/vnext-core-001, CI green —verify:full).Modules (
src/vnext/— greenfield, zero coupling to legacysrc/core/):capabilities.js— 12 capabilities, 5 modalities, acyclic prereq graph, per-capability VN risk-probe idsevidence.js—EvidenceEventv0: 11 types,context{missionId, practicedOrTransfer, promptFamily, partnerType},attempt{observed, outcome, response, latencyMs},support{hint, translation, transcript, modelAnswer, repeat},feedback,taskRevisionprojection.js— pure replay → per-capability milestones + staterisk-priors.js— 12 priors;learnerStateEffect: 'none_without_observed_evidence'is a constant, so priors have no write path into learner stateplanner.js— resume → due retrieval → remediation → transfer → independent attempt → probe/expose; every action carries areason
Locked rules (
tests/vnext.test.mjs, 9 groups):hint/modelAnswer/translation/transcriptsupport →SUPPORTEDmax;repeatis not answer-bearing; unobserved self-report never earnsINDEPENDENTRETAINEDneeds unaided success ≥24h after first independence (RETENTION_DELAY_MSis a named constant)TRANSFERREDneedspracticedOrTransfer:'transfer'+ apromptFamilynever proven in practiceFLUENT= transfer in ≥2 distinct families- modality mismatch earns zero credit — a
spoken_productionevent on alisteningcapability leaves itNOT_SEEN - baseline fail → planner routes to the unmet prerequisite (teaching), not
retry - replay deterministic; event ids dedupe for resync
Vertical slice runs in the test: baseline fail → input → hinted retrieval (
SUPPORTED) → independent attempt (INDEPENDENT) → delayed retrieval at +24h (RETAINED) → changed-context success (TRANSFERRED) → second novel context (FLUENT), with planner assertions at every transition.Next per the issue's DoD: the engine answers all six questions headless. UI stays out of scope until this lands.
Thunderkill016 commented
on Sep 28, 2026 OwnerAuthorMore actionsPM/architecture review of PR #43
PR #43 is directionally correct and CI is green, but not accepted yet.
Direct code review found six blockers:
- non-attempt events can currently advance learner state;
- equal-timestamp replay depends on arrival order;
- mixed learnerIds can be projected together;
- failed delayed retrieval can loop back into another due check instead of remediation;
- two transfer contexts incorrectly promote directly to FLUENT;
- transfer novelty ignores previously practiced-but-aided prompt families.
A detailed review comment is posted on #43. GitHub does not allow this account to submit REQUEST_CHANGES on its own PR, so the review is recorded as COMMENT, but the PM status is changes required / do not merge.
No UI work until the corrected head is reviewed.
- added a commit that references this issue
on Sep 28, 2026 Thunderkill016 commented
on Sep 28, 2026 OwnerAuthorMore actionsRe-review of PR #43 @ 2df6c5b
Accepted fixes: blockers 1, 2, 3, 4 and 6.
Still blocked on two evidence contracts:
-
FLUENT threshold —
0.8 × first-independent latencyis an uncalibrated magic threshold and only measures speed. Per the vNext doctrine, vnext: headless capability engine — graph, evidence, projection, planner (#42) #43 should stop at TRANSFERRED until a dedicated fluency contract exists. -
Capability conditions are not enforced —
conditions.supportAllowedis currently dead data. Capabilities default to no allowed support, yetrepeat:truecan still earn INDEPENDENT. Independent evidence must satisfy the capability's declared conditions.
Detailed review posted on PR #43. Do not merge / do not start UI yet.
-
Parent: #39
Depends on: #40, #41
Goal
Turn the research/design doctrine into executable domain contracts before UI work.
Deliverables
1. Capability graph v0
Create 12–20 beginner capabilities spanning:
Each capability must include:
2. Evidence model v0
Define append-only event types for:
Every event must preserve:
3. Capability state projection
Derived states:
State must be rebuildable from evidence. Never store the state as the source of truth.
4. Vietnamese risk layer
Represent population-level risk priors separately from learner evidence.
Candidate priors:
A prior may schedule a diagnostic probe. It may NOT mark the learner weak without evidence.
5. Validation
Add tests/fixtures that prove:
Initial capability set
Start from practical beginner functions, not grammar chapters:
Add more only when needed to prove graph/prerequisite behavior.
Definition of done
A headless test can answer:
No learner-facing UI in this issue.