Repository navigation
Turn roadmaps into a video ladder with an 80/20 core per level - #19
Conversation
Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Zaid learns by watching videos, basics first. Scout now plans levels (Basics, Intermediate, Advanced) with at most five core videos each, ranks videos above articles, and keeps books as a reading track. Home shows one next core video, Learn shows the ladder with level-up and an optional explain-it-back note. Old roadmaps read as one all-core level. Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
|
No actionable comments were generated in the recent review.
|
| Layer / File(s) | Summary |
|---|---|
Extract and persist resource levels apps/web/prompts/scout/extract.v2.md, apps/web/src/types/index.ts, apps/web/src/lib/scout/{extract.ts,pack.ts,pipeline.ts,db.ts,schema.sql}, apps/web/src/lib/scout/prompts.ts, apps/web/src/lib/scout/__tests__/extract-level.test.ts |
Extraction classifies resource levels and merges chunk results. Scout carries the level into resource records and persists it in a nullable database column. |
Select and group resources apps/web/src/lib/scout/discovery/combine.ts, apps/web/src/lib/scout/picks.ts, apps/web/src/components/scout/PickList.tsx, apps/web/src/lib/scout/__tests__/{discovery-order.test.ts,picks.test.ts} |
Discovery selects videos before web resources. Pick groups assign resource roles and display resources by learning level, unsorted picks, and reading track. |
Normalize plans into leveled roadmaps apps/web/prompts/scout/plan.v2.md, apps/web/src/lib/scout/plan.ts, apps/web/src/lib/scout/prompts.ts, apps/web/src/lib/personal/schema.ts, apps/web/src/lib/scout/__tests__/plan-levels.test.ts |
Plan normalization orders level modules, settles core tasks, and moves books into a reading track. Roadmap fields carry level, track, and core-task metadata. |
Derive ladder progress and update tasks apps/web/src/lib/ladder.ts, apps/web/src/lib/learning.ts, apps/web/src/lib/__tests__/{ladder.test.ts,personal-learning.test.ts} |
Ladder helpers group tasks, select the next core item, and determine level-up readiness. Learning helpers save task and subtask updates and resolve videos by URL. |
Use ladder data in studio views apps/web/src/views/studio/{scout.tsx,home.tsx,learn.tsx}, apps/web/src/styles/learning.css |
Studio views group draft modules, show ladder-based resume and progress details, and provide a learning workspace with lesson navigation, notes, subtasks, and Read/Check/Apply tabs. |
Priority:
Estimated code review effort: 4 (Complex) | ~60 minutes
Change: Feature
Sequence Diagram(s)
sequenceDiagram
participant buildRoadmap
participant LearnPage
participant getLadder
participant setLearningTaskDone
buildRoadmap-->>LearnPage: Roadmap with levels and core-task metadata
LearnPage->>getLadder: Roadmap
getLadder-->>LearnPage: Levels and next core item
LearnPage->>setLearningTaskDone: Roadmap and task completion
setLearningTaskDone-->>LearnPage: Updated roadmap
Merge Risk: 
Minimal · up to 7bef5
-
The change adds level-based roadmaps and a core-video ladder across Scout, Home and Learn. No concrete merge-blocking defect was established in review. The author reports typecheck, tests, lint and build passing, but no browser testing.
Pre-merge checks: 
4 · 
1
-
Failed checks: 1 warning Passed checks: 4 passedFull details: Docstring Coverage
-
Explanation
Docstring coverage is 29.41% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Documentation-only edits and deletions within surviving functions are included; unchanged diff context and fully deleted functions are excluded. Analyzed 51 functions across 23 files. (4 skipped: 4 unsupported.)
Resolution
Write docstrings for the functions missing them to satisfy the coverage threshold.
-
Finishing Touches: 💡 1
-
📝 Generate docstrings: 💡
-
- Commit to this branch
- Create a new PR
🧪 Generate unit tests (beta)
-
- Commit to this branch
- Create a new PR
-
- Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.
I’m a rabbit with a roadmap to explore,
Basics first, then levels more.
Core tasks hop into the queue,
Reading has its own track, too.
I check my notes and mark tasks done,
Then bound ahead to learning fun!
Comment @coderabbitai help to get the list of available commands.
Summary
Syllo's roadmap is now a video ladder: levels go from Basics to Intermediate to Advanced, each level has a small core set of videos (80/20), and everything else is marked "go deeper". The first commit is the Read/Check/Apply lesson view that was already uncommitted on
main. This PR builds on it.Storage and migration:
ModuleSection.level,ModuleSection.track,Task.coreandTask.coreReason. They are also added to the personal zod schema so sync keeps them.zns:v2:workspace-stateis unchanged. A roadmap without levels is read as one level with every task core. Nothing is rewritten in storage.convex/is unchanged. Older clients drop the new fields when they parse a roadmap, so on those devices a roadmap reads as one level.annotationkind. A new personal entry kind would break the discriminated union on older clients.Evidence
pnpm typecheckpasses (app and convex).pnpm test: 17 files, 83 tests pass. New tests:plan-levels.test.ts: level sort, reading track, video-only core, 5-video cap counted by distinct video, promotion, clearing reasons, missing resourcesladder.test.ts: reading legacy roadmaps, grouping, level inheritance,nextCoreItem(video first, skips go-deeper and reading items,excludeTaskId, moves to the next level),levelUpReadydiscovery-order.test.ts,picks.test.ts,extract-level.test.ts, and a schema round-trip case inpersonal-learning.test.tspnpm lint: 0 errors. The 32 warnings were already there, in files this PR doesn't touch.pnpm build: client and SSR builds pass.Merge Danger
Door: two-way. The new fields are optional, and the SQLite column is nullable and added by an idempotent
ALTER TABLE.Blast Radius: studio-wide. Home, Learn and the Scout review/draft screens all change. Plans built after this ship use the new prompt versions (
packVersionbecomesscout-extract.v2+plan.v2+quiz.v1). Resources extracted before this have no level, so they appear under "Level set when the plan is built".Summary by CodeRabbit