[{"data":1,"prerenderedAt":2565},["ShallowReactive",2],{"$fp-rOOnce7HPNUtPcdzeThQtCkMXnKIn3xRULGti4dac":3,"$f-lzxN8WdcZiRMOx-WsgydSXVrb8ayGFcM9nrwbct-5c":175},{"blueprints":4},[5,22,38,51,63,75,84,94,106,116,124,134,146,154,165],{"slug":6,"title":7,"summary":8,"category":9,"logo":10,"cover":11,"tags":12,"stats":15,"publishedAt":21},"bookmark-manager","Bookmark Manager","A private library of links you save yourself, from browser, phone or a browser's export, filed and tagged, with your own AI agent suggesting tidying.","productivity","\u002F_blueprints\u002Fbookmark-manager.logo.svg","\u002F_blueprints\u002Fbookmark-manager.cover.webp",[13,14],"agentic","single-user",{"entities":16,"capabilities":17,"journeys":18,"scenarios":19,"rules":20},7,15,3,37,18,"2026-10-07T14:20:29+03:00",{"slug":23,"title":24,"summary":25,"category":26,"logo":27,"cover":28,"tags":29,"stats":33,"publishedAt":21},"code-snippet-sharing","Code Snippet Sharing","Keep code snippets with their language, description and tags, share them by unlisted link or in public, fork others' public snippets, and revise code with kept history.","dev-tools","\u002F_blueprints\u002Fcode-snippet-sharing.logo.svg","\u002F_blueprints\u002Fcode-snippet-sharing.cover.webp",[30,31,32],"ai-assisted","multi-user","public",{"entities":34,"capabilities":35,"journeys":36,"scenarios":37,"rules":35},4,9,1,26,{"slug":39,"title":40,"summary":41,"category":9,"logo":42,"cover":43,"tags":44,"stats":45,"publishedAt":50},"content-feed-reader","Content Feed Reader","Follow feeds, catch up and keep worthwhile items in a private web or mobile library, and publish read-only collections for the web.","\u002F_blueprints\u002Fcontent-feed-reader.logo.svg","\u002F_blueprints\u002Fcontent-feed-reader.cover.webp",[32,14],{"entities":46,"capabilities":47,"journeys":48,"scenarios":49,"rules":17},6,20,2,39,"2026-08-04T15:46:50+03:00",{"slug":52,"title":53,"summary":54,"category":55,"logo":56,"cover":57,"tags":58,"stats":59,"publishedAt":21},"event-rsvp","Event RSVP","Create an event, share one invitation link, collect going, maybe and not going answers without guest accounts, keep a waitlist once it is full, and message the guests.","community","\u002F_blueprints\u002Fevent-rsvp.logo.svg","\u002F_blueprints\u002Fevent-rsvp.cover.webp",[30,31,32],{"entities":60,"capabilities":35,"journeys":48,"scenarios":61,"rules":62},5,33,11,{"slug":64,"title":65,"summary":66,"category":67,"logo":68,"cover":69,"tags":70,"stats":71,"publishedAt":21},"flashcard-app","Flashcard App","Build flashcard decks, study what is due with spaced repetition on the web or a phone, draft cards from pasted notes, and share decks for others to copy.","education","\u002F_blueprints\u002Fflashcard-app.logo.svg","\u002F_blueprints\u002Fflashcard-app.cover.webp",[30,31],{"entities":34,"capabilities":72,"journeys":48,"scenarios":73,"rules":74},14,29,13,{"slug":76,"title":77,"summary":78,"category":55,"logo":79,"cover":80,"tags":81,"stats":82,"publishedAt":21},"form-and-survey-builder","Form & Survey Builder","Build a form or survey, share it through a public link, collect answers from people without accounts, and review, summarize and export what came back.","\u002F_blueprints\u002Fform-and-survey-builder.logo.svg","\u002F_blueprints\u002Fform-and-survey-builder.cover.webp",[30,31,32],{"entities":46,"capabilities":20,"journeys":36,"scenarios":83,"rules":20},34,{"slug":85,"title":86,"summary":87,"category":9,"logo":88,"cover":89,"tags":90,"stats":91,"publishedAt":21},"habit-tracker","Habit Tracker","Define habits on a daily, chosen-day or weekly schedule, check them off, follow their streaks, pause one without losing it, and read an optional weekly reflection.","\u002F_blueprints\u002Fhabit-tracker.logo.svg","\u002F_blueprints\u002Fhabit-tracker.cover.webp",[30,14],{"entities":60,"capabilities":92,"journeys":48,"scenarios":93,"rules":17},12,30,{"slug":95,"title":96,"summary":97,"category":98,"logo":99,"cover":100,"tags":101,"stats":102,"publishedAt":21},"kanban-board","Kanban Board","Plan and track a small team's work on shared boards of columns and cards, with stalled work flagged and an AI agent proposing the next cards.","collaboration","\u002F_blueprints\u002Fkanban-board.logo.svg","\u002F_blueprints\u002Fkanban-board.cover.webp",[13,31],{"entities":35,"capabilities":103,"journeys":36,"scenarios":104,"rules":105},23,44,32,{"slug":107,"title":108,"summary":109,"category":9,"logo":110,"cover":111,"tags":112,"stats":113,"publishedAt":21},"notes-app","Notes App","Capture quick notes into an inbox, file them into notebooks, tag and link them, find them again, and let your own AI agent suggest where they belong.","\u002F_blueprints\u002Fnotes-app.logo.svg","\u002F_blueprints\u002Fnotes-app.cover.webp",[13,14],{"entities":46,"capabilities":74,"journeys":36,"scenarios":114,"rules":115},31,17,{"slug":117,"title":118,"summary":119,"category":98,"logo":120,"cover":121,"tags":122,"stats":123,"publishedAt":21},"polls-and-decisions","Polls & Decisions","Put a question to the team as a poll, vote and argue while it is open, and keep the outcome as a decision the team can look up.","\u002F_blueprints\u002Fpolls-and-decisions.logo.svg","\u002F_blueprints\u002Fpolls-and-decisions.cover.webp",[30,31],{"entities":60,"capabilities":62,"journeys":36,"scenarios":73,"rules":74},{"slug":125,"title":126,"summary":127,"category":26,"logo":128,"cover":129,"tags":130,"stats":131,"publishedAt":21},"public-status-page","Public Status Page","Publish a public page of your components and their current status, keep visitors informed through incidents and scheduled maintenance, and email confirmed subscribers every update an operator posts.","\u002F_blueprints\u002Fpublic-status-page.logo.svg","\u002F_blueprints\u002Fpublic-status-page.cover.webp",[30,31,32],{"entities":16,"capabilities":72,"journeys":36,"scenarios":132,"rules":133},28,19,{"slug":135,"title":136,"summary":137,"category":67,"logo":138,"cover":139,"tags":140,"stats":141,"publishedAt":21},"quiz-builder","Quiz Builder","Build quizzes of multiple-choice, true\u002Ffalse and short-answer questions, share them by link or with a class, score each learner's one attempt, and practice what was missed.","\u002F_blueprints\u002Fquiz-builder.logo.svg","\u002F_blueprints\u002Fquiz-builder.cover.webp",[30,31],{"entities":142,"capabilities":143,"journeys":48,"scenarios":144,"rules":145},10,22,45,24,{"slug":147,"title":148,"summary":149,"category":67,"logo":150,"cover":151,"tags":152,"stats":153,"publishedAt":21},"study-planner","Study Planner","Set dated study goals with estimated topics, get a schedule built around your weekly hours, log what you study, and let your AI agent propose revisions.","\u002F_blueprints\u002Fstudy-planner.logo.svg","\u002F_blueprints\u002Fstudy-planner.cover.webp",[13,14],{"entities":46,"capabilities":115,"journeys":48,"scenarios":83,"rules":103},{"slug":155,"title":156,"summary":157,"category":98,"logo":158,"cover":159,"tags":160,"stats":161,"publishedAt":21},"team-wiki","Team Wiki","Keep a team's knowledge in permissioned spaces of nested pages with revision history, find it by search, and let members' AI agents answer from it and suggest updates.","\u002F_blueprints\u002Fteam-wiki.logo.svg","\u002F_blueprints\u002Fteam-wiki.cover.webp",[13,31],{"entities":162,"capabilities":163,"journeys":48,"scenarios":164,"rules":47},8,16,41,{"slug":166,"title":167,"summary":168,"category":26,"logo":169,"cover":170,"tags":171,"stats":173,"publishedAt":21},"url-shortener","URL Shortener","Turn long addresses into short links on the web or through an API, disable them or let them expire, and see how often and where they are followed.","\u002F_blueprints\u002Furl-shortener.logo.svg","\u002F_blueprints\u002Furl-shortener.cover.webp",[172,32,14],"api",{"entities":46,"capabilities":142,"journeys":174,"scenarios":47,"rules":92},0,{"blueprint":176},{"slug":147,"publishedAt":21,"reportDigest":177,"logo":150,"cover":151,"report":178,"source":2562},"a66c233f9e7d083e0e6bd9bf09636056c454e15909258f44b4c01012afe74a04",{"schemaVersion":179,"id":147,"title":148,"summary":149,"description":180,"category":67,"authors":181,"license":184,"intent":185,"supportingSections":186,"references":187,"referenceProfile":193,"tags":194,"languages":195,"generatedAt":197,"generator":198,"counts":201,"limitations":202,"model":209,"coverage":2557},"19.0.0","A personal planner for a student working toward a dated goal, such as an exam.\nThe student sets the goal, breaks it into topics with an estimate of the study\neach one needs, and asks the planner for a study plan that spreads those topics\nacross their weekly availability before the date. They log the sessions they\ncomplete and see how far each goal has come. An AI agent the student connects\nproposes revised plans on top, for example after a missed session.",[182],{"name":183},"pdd-kit","MIT","A student with an exam on the 12th has more to study than time to study it,\nand a schedule that goes stale the first time a session slips. The planner does\nthe arithmetic of fitting topics into the hours they really have, says plainly\nwhat does not fit, and keeps the schedule honest when weeks go wrong. Every\nplan, the planner's own or the agent's, waits for the student: nothing in the\nschedule changes until they accept it.",[],[188],{"kind":189,"role":190,"target":191,"title":192},"research","context","https:\u002F\u002Fgithub.com\u002Fitai-gendler\u002Fpdd-kit\u002Fblob\u002Fmain\u002Fblueprints\u002Fstudy-planner\u002Freferences\u002Fassumptions.md","Student assumptions","portable",[13,14],[196],"en","2026-10-12",{"name":199,"version":200},"pdd-kit-cli","0.34.1",{"interfaces":48,"experiences":174,"screens":60,"domains":18,"entities":46,"capabilities":115,"capabilityScenarios":114,"journeys":48,"journeyScenarios":18,"businessRules":103,"variations":174},[203,204,205,206,207,208],"A plan belongs to one Student; there are no study groups, tutors, classes or shared schedules.","The planner does not read from or write to outside calendars, and sends no reminders.","Study plans are built from the Student's own topic estimates and weekly availability. The planner never judges what the Student has learned or how hard a topic is.","Logged study is never edited; a session logged by mistake is deleted and logged again.","The Student signs in with an existing account; signing up and managing accounts are not part of this product.","Bring your own AI agent; the Product does not include one.",{"taxonomies":210,"interfaces":224,"experiences":250,"screens":251,"domains":416,"entities":435,"capabilities":550,"capabilityScenarios":688,"journeys":1983,"journeyScenarios":2006,"businessRules":2145,"variations":2556},{"scenarioKinds":211},[212,216,220],{"id":213,"name":214,"description":215,"colorSlot":46},"edge","Edge case","An uncommon but expected path with a distinct observable outcome.",{"id":217,"name":218,"description":219,"colorSlot":36},"primary","Primary","The expected observable behavior path.",{"id":221,"name":222,"description":223,"colorSlot":18},"validation","Validation","Input the Product refuses while preserving the Actor's work.",[225,237],{"id":226,"title":227,"description":228,"type":229,"actorIds":230,"entryPoints":232,"languages":233,"intent":234,"supportingSections":235,"references":236},"planner-agent","Agent connection","The supported surface through which an AI agent the Student connected reads\ntheir planner and leaves revised study plans. It offers no way to change a\ngoal, a topic or a session: whatever the agent proposes waits for the Student\non the web.","agent",[231],"ai-agent",[],[],"",[],[],{"id":238,"title":239,"description":240,"type":241,"actorIds":242,"entryPoints":244,"languages":247,"intent":234,"supportingSections":248,"references":249},"planner-web","Study Planner web application","The supported browser Interface for everything the Student does in their\nplanner: goals and their topics, the schedule of study sessions, their weekly\navailability, and the study plans they ask for or their AI agent leaves. Every\nplace requires the Student to be signed in.","web",[243],"student",[245],{"type":241,"path":246},"\u002Fgoals",[],[],[],[],[252,304,320,353,378],{"id":253,"title":254,"description":255,"capabilityIds":256,"entities":265,"capabilityScenarioIds":282,"journeyScenarioIds":295,"entryPoints":299,"intent":234,"supportingSections":302,"references":303},"planner-web::goal-detail","Goal detail","Presents one goal: its name and target date, the topics it is broken into with\ntheir estimates, and how many hours have been logged against each. This is\nwhere the Student changes or deletes the goal, adds, changes and removes\ntopics, reads the goal's progress, and asks for a study plan.",[257,258,259,260,261,262,263,264],"add-topic","build-study-plan","create-goal","delete-goal","edit-goal","edit-topic","remove-topic","view-goal-progress",[266,272,277],{"entityId":267,"shows":268,"collects":271},"goal",[269,270],"Name","Target date",[269,270],{"entityId":273,"shows":274,"collects":276},"study-session",[275],"Logged minutes",[],{"entityId":278,"shows":279,"collects":281},"topic",[280,269],"Estimated hours",[280,269],[283,284,285,286,287,288,289,290,291,292,293,294],"add-a-topic-to-a-goal","build-a-plan-for-a-goal","build-a-plan-that-falls-short","change-a-goals-target-date","change-a-topics-estimate","create-a-goal","delete-a-goal","refuse-a-plan-for-a-goal-without-topics","refuse-a-topic-without-an-estimate","remove-a-topic","see-progress-on-a-past-goal","see-progress-toward-a-goal",[296,297,298],"build-and-accept-a-plan-for-a-goal","dismiss-the-plan-for-a-goal","set-up-a-goal-with-its-topics",[300],{"type":238,"path":301},"\u002Fgoals\u002F:goalId",[],[],{"id":305,"title":306,"description":307,"capabilityIds":308,"entities":309,"capabilityScenarioIds":313,"journeyScenarioIds":315,"entryPoints":316,"intent":234,"supportingSections":318,"references":319},"planner-web::goals","Goals","Lists the Student's goals by name and target date, past goals apart from the\nones still ahead, and lets the Student start another goal.",[259,260,264],[310],{"entityId":267,"shows":311,"collects":312},[269,270],[269,270],[288,289,314,293,294],"refuse-a-goal-dated-in-the-past",[298],[317],{"type":238,"path":246},[],[],{"id":321,"title":322,"description":323,"capabilityIds":324,"entities":327,"capabilityScenarioIds":341,"journeyScenarioIds":347,"entryPoints":348,"intent":234,"supportingSections":351,"references":352},"planner-web::plan-review","Plan review","Presents one study plan for its goal: the sessions it would schedule, the\nupcoming sessions it would replace, any study that does not fit before the\ntarget date, its explanation and whether the planner or the AI agent prepared\nit. This is where the Student accepts or dismisses it.",[325,258,326],"accept-study-plan","dismiss-study-plan",[328,331],{"entityId":267,"shows":329,"collects":330},[269,270],[],{"entityId":332,"shows":333,"collects":340},"study-plan",[334,335,336,337,338,339],"Explanation","Prepared at","Prepared by","Proposed sessions","Replaced sessions","Shortfall",[],[342,284,285,343,344,345,346],"accept-a-proposed-plan","dismiss-a-proposed-plan","refuse-a-plan-after-the-availability-shrinks","refuse-a-plan-that-overlaps-another-goal","refuse-an-outdated-plan",[296,297],[349],{"type":238,"path":350},"\u002Fplans\u002F:planId",[],[],{"id":354,"title":355,"description":356,"capabilityIds":357,"entities":359,"capabilityScenarioIds":370,"journeyScenarioIds":372,"entryPoints":373,"intent":234,"supportingSections":376,"references":377},"planner-web::plans","Plans","Lists the study plans waiting for the Student's review, each with its goal,\nwho prepared it and when, and keeps the weekly availability every plan is built\naround.",[358],"edit-weekly-availability",[360,363,367],{"entityId":267,"shows":361,"collects":362},[269],[],{"entityId":243,"shows":364,"collects":366},[365],"Weekly availability",[365],{"entityId":332,"shows":368,"collects":369},[335,336],[],[371],"set-the-hours-available-each-day",[],[374],{"type":238,"path":375},"\u002Fplans",[],[],{"id":379,"title":380,"description":381,"capabilityIds":382,"entities":388,"capabilityScenarioIds":401,"journeyScenarioIds":410,"entryPoints":411,"intent":234,"supportingSections":414,"references":415},"planner-web::schedule","Schedule","Presents the Student's study sessions over time, each with its topic and goal,\nwhen it starts and how long it is planned for, and whether it was logged or\nmissed. This is where the Student schedules, moves, cancels and logs sessions, and deletes a session logged by mistake.",[383,384,385,386,387],"add-study-session","cancel-study-session","delete-study-session","log-study-session","move-study-session",[389,392,398],{"entityId":267,"shows":390,"collects":391},[269],[],{"entityId":273,"shows":393,"collects":397},[275,394,395,396],"Notes","Planned minutes","Start",[275,394,395,396],{"entityId":278,"shows":399,"collects":400},[269],[],[402,403,404,405,406,407,408,409],"add-a-session-for-a-topic","cancel-a-planned-session","delete-a-mis-logged-session","log-a-planned-session","log-an-unplanned-session","move-a-missed-session","move-a-planned-session","refuse-a-session-that-overlaps",[],[412],{"type":238,"path":413},"\u002Fschedule",[],[],[417,423,429],{"id":418,"name":306,"description":419,"boundary":420,"colorSlot":36,"intent":234,"supportingSections":421,"references":422},"goals","What the student is studying toward: each goal and its date, the topics it is\nbroken into, how far the logged study has brought it, and asking the planner to\nplan it.","Owns goals, their topics and topic estimates, the progress derived from\nlogged study, and the request for a study plan. It does not own when sessions\ntake place, or the study plans themselves once proposed: their review belongs\nto Plans.",[],[],{"id":424,"name":355,"description":425,"boundary":426,"colorSlot":34,"intent":234,"supportingSections":427,"references":428},"plans","Study plans for a goal, built by the planner or left by the Student's AI agent,\nthe weekly availability they are built around, and the Student's decision to\naccept or dismiss each one.","Owns study plans and their review. It does not own the schedule a plan would\nchange until the student accepts it, or the goals and topics a plan is built\nfrom.",[],[],{"id":430,"name":380,"description":431,"boundary":432,"colorSlot":48,"intent":234,"supportingSections":433,"references":434},"schedule","The student's study sessions: when each one is planned, moving or cancelling\nit, and logging the study that actually happened or deleting a mis-logged one.","Owns study sessions and their planned and logged time. It does not own the\ntopics sessions are for or the study plans that propose new sessions.",[],[],[436,450,467,482,514,536],{"id":231,"title":437,"description":438,"kind":439,"acts":440,"singleton":441,"informationKept":442,"relations":443,"states":447,"intent":234,"supportingSections":448,"references":449},"AI agent","An AI agent harness a Student connects to their planner. It chooses what to\nread, what to propose and when to look.","system","external",false,[],[444],{"entityId":332,"verb":445,"cardinality":446},"leaves","one-to-many",[],[],[],{"id":267,"title":451,"description":452,"domainId":418,"kind":453,"acts":453,"singleton":441,"informationKept":454,"relations":459,"states":464,"intent":234,"supportingSections":465,"references":466},"Goal","Something a Student is studying toward by a date, such as passing an exam.\nOnce its target date has passed, the goal is past: its progress stays readable\nand no plan is built or proposed for it.",null,[455,457],{"name":269,"description":456},"what the Student calls the goal",{"name":270,"description":458},"the day the goal must be reached by, such as the exam date",[460,462],{"entityId":278,"verb":461,"cardinality":446},"covers",{"entityId":332,"verb":463,"cardinality":446},"is planned in",[],[],[],{"id":243,"title":468,"description":469,"kind":470,"acts":440,"singleton":441,"informationKept":471,"relations":474,"states":479,"intent":234,"supportingSections":480,"references":481},"Student","A person planning their own study toward one or more goals. Each Student has\none private planner, and is the only person who changes it.","person",[472],{"name":365,"description":473},"the hours on each day of the week the Student can study, which study plans are built around",[475,477],{"entityId":267,"verb":476,"cardinality":446},"owns",{"entityId":231,"verb":478,"cardinality":446},"connects",[],[],[],{"id":332,"title":483,"description":484,"domainId":424,"kind":453,"acts":453,"singleton":441,"informationKept":485,"relations":498,"states":499,"intent":234,"supportingSections":512,"references":513},"Study plan","A proposed schedule for one goal, built by the planner when the Student asks\nfor one or left by the Student's AI agent as a revision: the sessions it would\nput in the schedule, the upcoming sessions those would replace, and an\nexplanation the Student reads before deciding.",[486,488,490,492,494,496],{"name":337,"description":487},"the sessions the plan would schedule, each with its topic, start and length",{"name":338,"description":489},"the goal's upcoming planned sessions that accepting the plan would remove",{"name":334,"description":491},"a plain account of how the remaining study was divided and what changed",{"name":339,"description":493},"the estimated hours that do not fit in the available time before the target date, if any",{"name":336,"description":495},"the planner, or the Student's AI agent",{"name":335,"description":497},"when the plan was built or left",[],[500,503,506,509],{"name":501,"content":502},"Proposed","Waiting for the Student to review it. Nothing in the schedule has changed.",{"name":504,"content":505},"Accepted","The Student accepted it, and its sessions replaced the goal's upcoming planned\nsessions.",{"name":507,"content":508},"Dismissed","The Student dismissed it. The schedule is as it was.",{"name":510,"content":511},"Outdated","The Student tried to accept it after it stopped fitting: the goal's schedule,\ntarget date or topics changed, the Student's availability no longer holds a\nproposed session, or another goal's session now shares its time. The Product\nrefused it instead of accepting it as shown. The schedule is as it was.",[],[],{"id":273,"title":515,"description":516,"domainId":430,"kind":453,"acts":453,"singleton":441,"informationKept":517,"relations":526,"states":527,"intent":234,"supportingSections":534,"references":535},"Study session","A block of time for studying one topic: planned ahead in the schedule, or\nlogged after the Student studied without planning it.",[518,520,522,524],{"name":396,"description":519},"the day and time the session is planned for, or took place",{"name":395,"description":521},"how long the session is meant to last",{"name":275,"description":523},"how long the Student actually studied, once logged",{"name":394,"description":525},"what the Student wrote about the session when logging it",[],[528,531],{"name":529,"content":530},"Planned","In the schedule and not yet logged. A planned session whose day has passed is\nshown as missed.",{"name":532,"content":533},"Logged","The Student recorded the study as done. Its logged minutes count toward the\ngoal's progress, and no study plan replaces it; only deleting it, its topic or\nits goal removes it.",[],[],{"id":278,"title":537,"description":538,"domainId":418,"kind":453,"acts":453,"singleton":441,"informationKept":539,"relations":544,"states":547,"intent":234,"supportingSections":548,"references":549},"Topic","One subject or part of a goal the Student needs to study, with the Student's\nown estimate of how much study it needs.",[540,542],{"name":269,"description":541},"what the Student calls the topic",{"name":280,"description":543},"how many hours of study the Student expects the topic to need",[545],{"entityId":273,"verb":546,"cardinality":446},"is studied in",[],[],[],[551,559,567,575,583,591,599,607,615,623,631,639,647,655,663,672,680],{"id":325,"title":552,"description":553,"domainId":424,"availability":554,"intent":556,"supportingSections":557,"references":558},"Study plan acceptance","Puts a proposed study plan into the Student's schedule: its sessions replace the goal's upcoming planned sessions, and nothing already logged or missed moves.",[555],{"placeId":238},"Let the Student take a plan they have read and agree with as their schedule, in one step, without rearranging sessions by hand.",[],[],{"id":383,"title":560,"description":561,"domainId":430,"availability":562,"intent":564,"supportingSections":565,"references":566},"Session scheduling","Puts a study session for one topic in the schedule, at a start and for a length the Student chooses.",[563],{"placeId":238},"Let the Student put study in the schedule themselves when they know when they will do it, without asking for a plan.",[],[],{"id":257,"title":568,"description":569,"domainId":418,"availability":570,"intent":572,"supportingSections":573,"references":574},"Topic addition","Adds a topic to a goal, with the Student's estimate of how many hours of study it needs.",[571],{"placeId":238},"Break a goal into parts small enough to schedule, and give the planner an amount of study to plan for.",[],[],{"id":258,"title":576,"description":577,"domainId":418,"availability":578,"intent":580,"supportingSections":581,"references":582},"Study plan building","Builds a study plan for a goal when the Student asks for one: the planner\nspreads each topic's study still to do across the Student's weekly\navailability before the target date, around the sessions already scheduled for\nother goals, and opens the plan for the Student to review.",[579],{"placeId":238},"Do the arithmetic of fitting topics into the time the Student has, and say\nplainly what does not fit, so the Student starts from a schedule they can keep.",[],[],{"id":384,"title":584,"description":585,"domainId":430,"availability":586,"intent":588,"supportingSections":589,"references":590},"Session cancellation","Removes a planned session the Student will not study from the schedule.",[587],{"placeId":238},"Let the Student take study they will not do out of the schedule, so the schedule shows only what they mean to keep.",[],[],{"id":259,"title":592,"description":593,"domainId":418,"availability":594,"intent":596,"supportingSections":597,"references":598},"Goal creation","Starts a goal the Student studies toward by a target date, such as an exam.",[595],{"placeId":238},"Give every piece of study a destination and a deadline the rest of the planner can work back from.",[],[],{"id":260,"title":600,"description":601,"domainId":418,"availability":602,"intent":604,"supportingSections":605,"references":606},"Goal deletion","Deletes a goal for good, with its topics, its study sessions and its study plans, once the Student confirms.",[603],{"placeId":238},"Let the Student clear away a goal they no longer study toward, or one they created by mistake, so the planner holds only what they are working on.",[],[],{"id":385,"title":608,"description":609,"domainId":430,"availability":610,"intent":612,"supportingSections":613,"references":614},"Session deletion","Deletes a logged session from the schedule for good, once the Student confirms,\nso its minutes no longer count toward the goal's progress.",[611],{"placeId":238},"Let the Student take back study they logged by mistake, such as against the\nwrong topic or with the wrong minutes, so progress counts only study that\nhappened.",[],[],{"id":326,"title":616,"description":617,"domainId":424,"availability":618,"intent":620,"supportingSections":621,"references":622},"Study plan dismissal","Turns down a proposed study plan, leaving the schedule exactly as it was.",[619],{"placeId":238},"Let the Student turn down a plan they do not want, so it stops waiting for them and the schedule stays theirs.",[],[],{"id":261,"title":624,"description":625,"domainId":418,"availability":626,"intent":628,"supportingSections":629,"references":630},"Goal editing","Changes a goal's name or target date, for example when an exam is moved.",[627],{"placeId":238},"Keep a goal true to the date the Student is really studying toward, so every plan works back from the right deadline.",[],[],{"id":262,"title":632,"description":633,"domainId":418,"availability":634,"intent":636,"supportingSections":637,"references":638},"Topic editing","Changes a topic's name or its estimated hours as the Student learns how much study it really needs.",[635],{"placeId":238},"Keep a topic's estimate honest as the Student learns how much study it needs, so plans and progress follow what is really left.",[],[],{"id":358,"title":640,"description":641,"domainId":424,"availability":642,"intent":644,"supportingSections":645,"references":646},"Weekly availability editing","Keeps the hours on each day of the week the Student can study, which every\nstudy plan is built around.",[643],{"placeId":238},"Tell the planner how much time the Student really has each week, so every plan is one they can keep.",[],[],{"id":386,"title":648,"description":649,"domainId":430,"availability":650,"intent":652,"supportingSections":653,"references":654},"Session logging","Records study the Student did, against a planned session or as a session that was never planned.",[651],{"placeId":238},"Progress is counted from what the Student actually studied, so logging must be quick and honest about time spent.",[],[],{"id":387,"title":656,"description":657,"domainId":430,"availability":658,"intent":660,"supportingSections":661,"references":662},"Session moving","Moves a planned session to another start or length, including one that was missed.",[659],{"placeId":238},"Let the Student fit a session around a day that changed, or make up one they missed, without losing the study it was for.",[],[],{"id":664,"title":665,"description":666,"domainId":424,"availability":667,"intent":669,"supportingSections":670,"references":671},"propose-study-plan","Study plan proposal","Lets the Student's AI agent leave a revised study plan for a goal, typically\nafter it finds a missed session: sessions that divide the study still to do\nacross the Student's weekly availability before the target date, with an\nexplanation of what it moved. The Product checks every plan against the\navailability and the schedule before keeping it, and the plan waits for the\nStudent like one the planner built.",[668],{"placeId":226},"Keep the schedule honest as plans meet real weeks, with the Student's own\nagent doing the rearranging and the Student deciding.",[],[],{"id":263,"title":673,"description":674,"domainId":418,"availability":675,"intent":677,"supportingSections":678,"references":679},"Topic removal","Removes a topic the Student no longer needs to study from its goal for good, once the Student confirms, together with its sessions: the planned ones and the study already logged for it.",[676],{"placeId":238},"Let the Student drop a part of a goal they no longer need to study, so plans and progress stop counting it.",[],[],{"id":264,"title":681,"description":682,"domainId":418,"availability":683,"intent":685,"supportingSections":686,"references":687},"Goal progress","Shows how far a goal has come: the hours logged against each topic's estimate, the study still to do, and the days left before the target date.",[684],{"placeId":238},"Let the Student see at a glance whether they are on track, from the study they actually did.",[],[],[689,777,805,840,887,931,965,1002,1038,1071,1138,1187,1222,1259,1287,1320,1346,1395,1426,1453,1497,1537,1575,1625,1660,1689,1741,1801,1865,1902,1949],{"id":342,"capabilityId":325,"title":690,"kindId":217,"actorIds":691,"routes":692,"steps":695,"trigger":769,"decisionPoints":770,"outcome":771,"edgeCases":772,"intent":234,"supportingSections":775,"references":776},"Accept a proposed plan",[243],[693],{"id":241,"name":694},"Web",[696,705,710,730,740,751,759],{"text":697,"kind":698,"actorId":243,"capabilityId":325,"entities":699,"unattended":441,"contexts":703},"The Student reviews the proposed sessions, the sessions they replace, any shortfall and the explanation","actor",[700],{"entityId":332,"as":453,"effect":701,"from":453,"to":453,"facts":702,"with":453},"reads",[334,337,338,339],[704],{"routeId":241,"placeId":321},{"text":706,"kind":698,"actorId":243,"capabilityId":325,"entities":707,"unattended":441,"contexts":708},"The Student accepts the plan",[],[709],{"routeId":241,"placeId":321},{"text":711,"kind":712,"actorId":243,"capabilityId":325,"entities":713,"unattended":441,"contexts":728},"The Product re-checks the plan against the goal's schedule, the Student's current availability, the goal's target date and topics, and every other goal's sessions, and every proposed session still fits","product",[714,716,719,721,723,725],{"entityId":332,"as":453,"effect":701,"from":453,"to":453,"facts":715,"with":453},[335,337],{"entityId":273,"as":717,"effect":701,"from":453,"to":453,"facts":718,"with":453},"replaced",[],{"entityId":243,"as":453,"effect":701,"from":453,"to":453,"facts":720,"with":453},[365],{"entityId":267,"as":453,"effect":701,"from":453,"to":453,"facts":722,"with":453},[270],{"entityId":278,"as":453,"effect":701,"from":453,"to":453,"facts":724,"with":453},[269],{"entityId":273,"as":726,"effect":701,"from":453,"to":453,"facts":727,"with":453},"other-goal",[395,396],[729],{"routeId":241,"placeId":321},{"text":731,"kind":712,"actorId":243,"capabilityId":325,"entities":732,"unattended":441,"contexts":738},"The Product removes the goal's upcoming planned sessions that the plan replaces",[733,736],{"entityId":273,"as":717,"effect":734,"from":529,"to":453,"facts":735,"with":453},"removes",[],{"entityId":267,"as":453,"effect":701,"from":453,"to":453,"facts":737,"with":453},[],[739],{"routeId":241,"placeId":321},{"text":741,"kind":712,"actorId":243,"capabilityId":325,"entities":742,"unattended":441,"contexts":749},"The Product schedules the plan's proposed sessions",[743,747],{"entityId":273,"as":744,"effect":745,"from":453,"to":529,"facts":746,"with":453},"proposed","creates",[395,396],{"entityId":332,"as":453,"effect":701,"from":453,"to":453,"facts":748,"with":453},[337],[750],{"routeId":241,"placeId":321},{"text":752,"kind":712,"actorId":243,"capabilityId":325,"entities":753,"unattended":441,"contexts":757},"The Product marks the plan accepted",[754],{"entityId":332,"as":453,"effect":755,"from":501,"to":504,"facts":756,"with":453},"changes",[],[758],{"routeId":241,"placeId":321},{"text":760,"kind":761,"actorId":243,"capabilityId":325,"entities":762,"unattended":441,"contexts":767},"The goal's upcoming sessions are the plan's, with logged and missed sessions where they were","condition",[763,765],{"entityId":267,"as":453,"effect":701,"from":453,"to":453,"facts":764,"with":453},[],{"entityId":273,"as":744,"effect":701,"from":453,"to":453,"facts":766,"with":453},[395,396],[768],{"routeId":241,"placeId":321},"The Student is satisfied with a proposed plan for a goal.",[],"The goal's upcoming sessions are the plan's sessions, the plan is accepted, and every logged or missed session is unchanged.",[773,774],"The goal had no upcoming planned sessions → the proposed sessions are added and nothing is removed.","A proposed session no longer fits the availability, the target date, the goal's topics or another goal's sessions → the plan is refused and becomes outdated, and nothing in the schedule changes.",[],[],{"id":402,"capabilityId":383,"title":778,"kindId":217,"actorIds":779,"routes":780,"steps":782,"trigger":799,"decisionPoints":800,"outcome":801,"edgeCases":802,"intent":234,"supportingSections":803,"references":804},"Add a session for a topic",[243],[781],{"id":241,"name":694},[783,790],{"text":784,"kind":698,"actorId":243,"capabilityId":383,"entities":785,"unattended":441,"contexts":788},"The Student picks a topic and enters a start and a length",[786],{"entityId":278,"as":453,"effect":701,"from":453,"to":453,"facts":787,"with":453},[269],[789],{"routeId":241,"placeId":379},{"text":791,"kind":712,"actorId":243,"capabilityId":383,"entities":792,"unattended":441,"contexts":797},"The Product adds the planned session to the schedule",[793,795],{"entityId":273,"as":453,"effect":745,"from":453,"to":529,"facts":794,"with":453},[395,396],{"entityId":278,"as":453,"effect":701,"from":453,"to":453,"facts":796,"with":453},[],[798],{"routeId":241,"placeId":379},"The Student decides when they will study a topic.",[],"The schedule shows the planned session with its topic, start and length.",[],[],[],{"id":283,"capabilityId":257,"title":806,"kindId":217,"actorIds":807,"routes":808,"steps":810,"trigger":834,"decisionPoints":835,"outcome":836,"edgeCases":837,"intent":234,"supportingSections":838,"references":839},"Add a topic to a goal",[243],[809],{"id":241,"name":694},[811,816,825],{"text":812,"kind":698,"actorId":243,"capabilityId":257,"entities":813,"unattended":441,"contexts":814},"The Student enters a name and the hours of study they expect it to need",[],[815],{"routeId":241,"placeId":253},{"text":817,"kind":712,"actorId":243,"capabilityId":257,"entities":818,"unattended":441,"contexts":823},"The Product adds the topic to the goal",[819,821],{"entityId":278,"as":453,"effect":745,"from":453,"to":453,"facts":820,"with":453},[280,269],{"entityId":267,"as":453,"effect":701,"from":453,"to":453,"facts":822,"with":453},[],[824],{"routeId":241,"placeId":253},{"text":826,"kind":761,"actorId":243,"capabilityId":257,"entities":827,"unattended":441,"contexts":832},"The goal's study still to do grows by the topic's estimate",[828,830],{"entityId":267,"as":453,"effect":701,"from":453,"to":453,"facts":829,"with":453},[],{"entityId":278,"as":453,"effect":701,"from":453,"to":453,"facts":831,"with":453},[280],[833],{"routeId":241,"placeId":253},"The Student knows a part of the goal they need to study.",[],"The goal lists the new topic with its estimate, and the hours still to study include it.",[],[],[],{"id":284,"capabilityId":258,"title":841,"kindId":217,"actorIds":842,"routes":843,"steps":845,"trigger":880,"decisionPoints":881,"outcome":882,"edgeCases":883,"intent":234,"supportingSections":885,"references":886},"Build a plan for a goal",[243],[844],{"id":241,"name":694},[846,853,866,873],{"text":847,"kind":698,"actorId":243,"capabilityId":258,"entities":848,"unattended":441,"contexts":851},"The Student asks the planner to plan the goal",[849],{"entityId":267,"as":453,"effect":701,"from":453,"to":453,"facts":850,"with":453},[269,270],[852],{"routeId":241,"placeId":253},{"text":854,"kind":712,"actorId":243,"capabilityId":258,"entities":855,"unattended":441,"contexts":864},"The Product spreads each topic's study still to do across the Student's weekly availability before the target date, around sessions already scheduled for other goals",[856,858,860,862],{"entityId":267,"as":453,"effect":701,"from":453,"to":453,"facts":857,"with":453},[270],{"entityId":278,"as":453,"effect":701,"from":453,"to":453,"facts":859,"with":453},[280],{"entityId":273,"as":453,"effect":701,"from":453,"to":453,"facts":861,"with":453},[275,395,396],{"entityId":243,"as":453,"effect":701,"from":453,"to":453,"facts":863,"with":453},[365],[865],{"routeId":241,"placeId":253},{"text":867,"kind":712,"actorId":243,"capabilityId":258,"entities":868,"unattended":441,"contexts":871},"The Product keeps the plan with the sessions it would schedule, the upcoming sessions they replace and an explanation",[869],{"entityId":332,"as":453,"effect":745,"from":453,"to":501,"facts":870,"with":453},[334,335,336,337,338],[872],{"routeId":241,"placeId":253},{"text":874,"kind":712,"actorId":243,"capabilityId":258,"entities":875,"unattended":441,"contexts":878},"The Product opens the plan for review",[876],{"entityId":332,"as":453,"effect":701,"from":453,"to":453,"facts":877,"with":453},[334,337,338],[879],{"routeId":241,"placeId":321},"The Student has a goal with topics and a target date still ahead, and wants a schedule for it.",[],"A proposed plan for the goal is open for review, with its sessions, the sessions it would replace and its explanation; the schedule has not changed.",[884],"A plan for the goal is already waiting for review → the new plan waits beside it; whichever the Student accepts first outdates the other.",[],[],{"id":285,"capabilityId":258,"title":888,"kindId":213,"actorIds":889,"routes":890,"steps":892,"trigger":925,"decisionPoints":926,"outcome":927,"edgeCases":928,"intent":234,"supportingSections":929,"references":930},"Build a plan that falls short",[243],[891],{"id":241,"name":694},[893,900,909,916],{"text":894,"kind":698,"actorId":243,"capabilityId":258,"entities":895,"unattended":441,"contexts":898},"The Student asks the planner to plan a goal that needs more study than their availability holds before its date",[896],{"entityId":267,"as":453,"effect":701,"from":453,"to":453,"facts":897,"with":453},[270],[899],{"routeId":241,"placeId":253},{"text":901,"kind":761,"actorId":243,"capabilityId":258,"entities":902,"unattended":441,"contexts":907},"The study still to do needs more hours than the Student's availability holds before the target date",[903,905],{"entityId":278,"as":453,"effect":701,"from":453,"to":453,"facts":904,"with":453},[280],{"entityId":243,"as":453,"effect":701,"from":453,"to":453,"facts":906,"with":453},[365],[908],{"routeId":241,"placeId":253},{"text":910,"kind":712,"actorId":243,"capabilityId":258,"entities":911,"unattended":441,"contexts":914},"The Product fills the available time and keeps the plan with the hours that do not fit as its shortfall",[912],{"entityId":332,"as":453,"effect":745,"from":453,"to":501,"facts":913,"with":453},[334,335,336,337,338,339],[915],{"routeId":241,"placeId":253},{"text":917,"kind":712,"actorId":243,"capabilityId":258,"entities":918,"unattended":441,"contexts":923},"The Product opens the plan for review, with its shortfall and the topics it belongs to",[919,921],{"entityId":278,"as":453,"effect":701,"from":453,"to":453,"facts":920,"with":453},[269],{"entityId":332,"as":453,"effect":701,"from":453,"to":453,"facts":922,"with":453},[337,339],[924],{"routeId":241,"placeId":321},"The Student asks for a plan for a goal whose topics need more hours than the time before its date allows.",[],"The plan uses the available time, says how many hours do not fit and which topics they belong to, and schedules nothing outside the availability.",[],[],[],{"id":403,"capabilityId":384,"title":932,"kindId":217,"actorIds":933,"routes":934,"steps":936,"trigger":958,"decisionPoints":959,"outcome":960,"edgeCases":961,"intent":234,"supportingSections":963,"references":964},"Cancel a planned session",[243],[935],{"id":241,"name":694},[937,944,951],{"text":938,"kind":698,"actorId":243,"capabilityId":384,"entities":939,"unattended":441,"contexts":942},"The Student chooses to cancel a planned session",[940],{"entityId":273,"as":453,"effect":701,"from":453,"to":453,"facts":941,"with":453},[396],[943],{"routeId":241,"placeId":379},{"text":945,"kind":712,"actorId":243,"capabilityId":384,"entities":946,"unattended":441,"contexts":949},"The Product removes the session from the schedule",[947],{"entityId":273,"as":453,"effect":734,"from":529,"to":453,"facts":948,"with":453},[],[950],{"routeId":241,"placeId":379},{"text":952,"kind":761,"actorId":243,"capabilityId":384,"entities":953,"unattended":441,"contexts":956},"The topic's estimate and logged hours are unchanged",[954],{"entityId":278,"as":453,"effect":701,"from":453,"to":453,"facts":955,"with":453},[],[957],{"routeId":241,"placeId":379},"The Student will not study at a planned time and does not want to move it.",[],"The session is no longer in the schedule, and the study it was for is still to do.",[962],"The session was already logged → it cannot be cancelled; the Student deletes it instead if it was logged by mistake.",[],[],{"id":286,"capabilityId":261,"title":966,"kindId":217,"actorIds":967,"routes":968,"steps":970,"trigger":994,"decisionPoints":995,"outcome":996,"edgeCases":997,"intent":234,"supportingSections":1000,"references":1001},"Change a goal's target date",[243],[969],{"id":241,"name":694},[971,978,985],{"text":972,"kind":698,"actorId":243,"capabilityId":261,"entities":973,"unattended":441,"contexts":976},"The Student edits the goal's name and target date",[974],{"entityId":267,"as":453,"effect":701,"from":453,"to":453,"facts":975,"with":453},[269,270],[977],{"routeId":241,"placeId":253},{"text":979,"kind":712,"actorId":243,"capabilityId":261,"entities":980,"unattended":441,"contexts":983},"The Product saves the goal with its new name and target date",[981],{"entityId":267,"as":453,"effect":755,"from":453,"to":453,"facts":982,"with":453},[269,270],[984],{"routeId":241,"placeId":253},{"text":986,"kind":761,"actorId":243,"capabilityId":261,"entities":987,"unattended":441,"contexts":992},"The goal's topics and scheduled sessions are untouched",[988,990],{"entityId":267,"as":453,"effect":701,"from":453,"to":453,"facts":989,"with":453},[],{"entityId":278,"as":453,"effect":701,"from":453,"to":453,"facts":991,"with":453},[],[993],{"routeId":241,"placeId":253},"The date the Student is studying toward changes, or the goal needs a clearer name.",[],"The goal shows its new name and target date, and nothing else in the planner has moved.",[998,999],"The new target date has already passed → the Product refuses it as when the goal was created, and the goal keeps its date.","Sessions are planned after the new target date → they stay where they are until the Student moves them or accepts a new study plan.",[],[],{"id":287,"capabilityId":262,"title":1003,"kindId":217,"actorIds":1004,"routes":1005,"steps":1007,"trigger":1031,"decisionPoints":1032,"outcome":1033,"edgeCases":1034,"intent":234,"supportingSections":1036,"references":1037},"Change a topic's estimate",[243],[1006],{"id":241,"name":694},[1008,1015,1022],{"text":1009,"kind":698,"actorId":243,"capabilityId":262,"entities":1010,"unattended":441,"contexts":1013},"The Student changes a topic's name or estimated hours",[1011],{"entityId":278,"as":453,"effect":701,"from":453,"to":453,"facts":1012,"with":453},[280,269],[1014],{"routeId":241,"placeId":253},{"text":1016,"kind":712,"actorId":243,"capabilityId":262,"entities":1017,"unattended":441,"contexts":1020},"The Product saves the topic",[1018],{"entityId":278,"as":453,"effect":755,"from":453,"to":453,"facts":1019,"with":453},[280,269],[1021],{"routeId":241,"placeId":253},{"text":1023,"kind":761,"actorId":243,"capabilityId":262,"entities":1024,"unattended":441,"contexts":1029},"Sessions already logged for the topic still count toward it",[1025,1027],{"entityId":278,"as":453,"effect":701,"from":453,"to":453,"facts":1026,"with":453},[],{"entityId":273,"as":453,"effect":701,"from":453,"to":453,"facts":1028,"with":453},[275],[1030],{"routeId":241,"placeId":253},"The Student finds a topic needs more or less study than they first thought.",[],"The topic shows its new estimate, and the goal's hours still to study follow it.",[1035],"The new estimate is below the hours already logged → the topic shows as fully studied, and nothing logged is lost.",[],[],{"id":288,"capabilityId":259,"title":1039,"kindId":217,"actorIds":1040,"routes":1041,"steps":1043,"trigger":1065,"decisionPoints":1066,"outcome":1067,"edgeCases":1068,"intent":234,"supportingSections":1069,"references":1070},"Create a goal",[243],[1042],{"id":241,"name":694},[1044,1049,1056],{"text":1045,"kind":698,"actorId":243,"capabilityId":259,"entities":1046,"unattended":441,"contexts":1047},"The Student enters a name and a target date",[],[1048],{"routeId":241,"placeId":305},{"text":1050,"kind":712,"actorId":243,"capabilityId":259,"entities":1051,"unattended":441,"contexts":1054},"The Product creates the goal",[1052],{"entityId":267,"as":453,"effect":745,"from":453,"to":453,"facts":1053,"with":453},[269,270],[1055],{"routeId":241,"placeId":305},{"text":1057,"kind":712,"actorId":243,"capabilityId":259,"entities":1058,"unattended":441,"contexts":1063},"The Product opens the new goal, ready to be broken into topics",[1059,1061],{"entityId":267,"as":453,"effect":701,"from":453,"to":453,"facts":1060,"with":453},[269,270],{"entityId":278,"as":453,"effect":701,"from":453,"to":453,"facts":1062,"with":453},[],[1064],{"routeId":241,"placeId":253},"The Student has something to study for by a date, such as an exam.",[],"The goal exists with its name and target date, and its page is open with no topics yet.",[],[],[],{"id":289,"capabilityId":260,"title":1072,"kindId":217,"actorIds":1073,"routes":1074,"steps":1076,"trigger":1131,"decisionPoints":1132,"outcome":1133,"edgeCases":1134,"intent":234,"supportingSections":1136,"references":1137},"Delete a goal",[243],[1075],{"id":241,"name":694},[1077,1084,1094,1099],{"text":1078,"kind":698,"actorId":243,"capabilityId":260,"entities":1079,"unattended":441,"contexts":1082},"The Student chooses to delete the goal",[1080],{"entityId":267,"as":453,"effect":701,"from":453,"to":453,"facts":1081,"with":453},[269],[1083],{"routeId":241,"placeId":253},{"text":1085,"kind":712,"actorId":243,"capabilityId":260,"entities":1086,"unattended":441,"contexts":1092},"The Product asks the Student to confirm, and says how many topics and sessions, logged ones included, go with it for good",[1087,1089],{"entityId":278,"as":453,"effect":701,"from":453,"to":453,"facts":1088,"with":453},[],{"entityId":273,"as":1090,"effect":701,"from":453,"to":453,"facts":1091,"with":453},"logged",[275],[1093],{"routeId":241,"placeId":253},{"text":1095,"kind":698,"actorId":243,"capabilityId":260,"entities":1096,"unattended":441,"contexts":1097},"The Student confirms",[],[1098],{"routeId":241,"placeId":253},{"text":1100,"kind":712,"actorId":243,"capabilityId":260,"entities":1101,"unattended":441,"contexts":1129},"The Product deletes the goal with its topics, sessions and plans for good, and returns to the goals",[1102,1104,1107,1111,1114,1117,1121,1125],{"entityId":267,"as":453,"effect":734,"from":453,"to":453,"facts":1103,"with":453},[],{"entityId":278,"as":453,"effect":734,"from":453,"to":453,"facts":1105,"with":1106},[],{"entityId":267,"as":453},{"entityId":273,"as":1108,"effect":734,"from":529,"to":453,"facts":1109,"with":1110},"planned",[],{"entityId":278,"as":453},{"entityId":273,"as":1090,"effect":734,"from":532,"to":453,"facts":1112,"with":1113},[],{"entityId":278,"as":453},{"entityId":332,"as":744,"effect":734,"from":501,"to":453,"facts":1115,"with":1116},[],{"entityId":267,"as":453},{"entityId":332,"as":1118,"effect":734,"from":504,"to":453,"facts":1119,"with":1120},"accepted",[],{"entityId":267,"as":453},{"entityId":332,"as":1122,"effect":734,"from":507,"to":453,"facts":1123,"with":1124},"dismissed",[],{"entityId":267,"as":453},{"entityId":332,"as":1126,"effect":734,"from":510,"to":453,"facts":1127,"with":1128},"outdated",[],{"entityId":267,"as":453},[1130],{"routeId":241,"placeId":305},"The Student no longer studies toward a goal, or created it by mistake.",[],"The goal, its topics, its sessions and its plans are gone for good, and the goals list no longer shows it.",[1135],"The Student does not confirm → the goal and everything under it stay as they were.",[],[],{"id":404,"capabilityId":385,"title":1139,"kindId":217,"actorIds":1140,"routes":1141,"steps":1143,"trigger":1180,"decisionPoints":1181,"outcome":1182,"edgeCases":1183,"intent":234,"supportingSections":1185,"references":1186},"Delete a mis-logged session",[243],[1142],{"id":241,"name":694},[1144,1151,1160,1164,1171],{"text":1145,"kind":698,"actorId":243,"capabilityId":385,"entities":1146,"unattended":441,"contexts":1149},"The Student chooses to delete a logged session",[1147],{"entityId":273,"as":453,"effect":701,"from":453,"to":453,"facts":1148,"with":453},[275,396],[1150],{"routeId":241,"placeId":379},{"text":1152,"kind":712,"actorId":243,"capabilityId":385,"entities":1153,"unattended":441,"contexts":1158},"The Product asks the Student to confirm, and says the logged minutes come off the topic's progress for good",[1154,1156],{"entityId":273,"as":453,"effect":701,"from":453,"to":453,"facts":1155,"with":453},[275],{"entityId":278,"as":453,"effect":701,"from":453,"to":453,"facts":1157,"with":453},[269],[1159],{"routeId":241,"placeId":379},{"text":1095,"kind":698,"actorId":243,"capabilityId":385,"entities":1161,"unattended":441,"contexts":1162},[],[1163],{"routeId":241,"placeId":379},{"text":1165,"kind":712,"actorId":243,"capabilityId":385,"entities":1166,"unattended":441,"contexts":1169},"The Product deletes the session for good",[1167],{"entityId":273,"as":453,"effect":734,"from":532,"to":453,"facts":1168,"with":453},[],[1170],{"routeId":241,"placeId":379},{"text":1172,"kind":761,"actorId":243,"capabilityId":385,"entities":1173,"unattended":441,"contexts":1178},"The topic's logged hours no longer include the session's minutes",[1174,1176],{"entityId":278,"as":453,"effect":701,"from":453,"to":453,"facts":1175,"with":453},[],{"entityId":273,"as":453,"effect":701,"from":453,"to":453,"facts":1177,"with":453},[275],[1179],{"routeId":241,"placeId":379},"The Student logged study that did not happen as recorded, such as against the wrong topic or with the wrong minutes.",[],"The session is gone for good, the goal's progress no longer counts it, and the Student can log the study again correctly.",[1184],"The Student does not confirm → the session stays logged and keeps counting.",[],[],{"id":343,"capabilityId":326,"title":1188,"kindId":217,"actorIds":1189,"routes":1190,"steps":1192,"trigger":1216,"decisionPoints":1217,"outcome":1218,"edgeCases":1219,"intent":234,"supportingSections":1220,"references":1221},"Dismiss a proposed plan",[243],[1191],{"id":241,"name":694},[1193,1200,1207],{"text":1194,"kind":698,"actorId":243,"capabilityId":326,"entities":1195,"unattended":441,"contexts":1198},"The Student reviews the plan and dismisses it",[1196],{"entityId":332,"as":453,"effect":701,"from":453,"to":453,"facts":1197,"with":453},[334,337],[1199],{"routeId":241,"placeId":321},{"text":1201,"kind":712,"actorId":243,"capabilityId":326,"entities":1202,"unattended":441,"contexts":1205},"The Product marks the plan dismissed",[1203],{"entityId":332,"as":453,"effect":755,"from":501,"to":507,"facts":1204,"with":453},[],[1206],{"routeId":241,"placeId":321},{"text":1208,"kind":761,"actorId":243,"capabilityId":326,"entities":1209,"unattended":441,"contexts":1214},"The schedule is unchanged and the plan no longer waits in Plans",[1210,1212],{"entityId":273,"as":453,"effect":701,"from":453,"to":453,"facts":1211,"with":453},[],{"entityId":332,"as":453,"effect":701,"from":453,"to":453,"facts":1213,"with":453},[],[1215],{"routeId":241,"placeId":321},"The Student does not want a proposed plan.",[],"The plan is dismissed and every session in the schedule is as it was.",[],[],[],{"id":405,"capabilityId":386,"title":1223,"kindId":217,"actorIds":1224,"routes":1225,"steps":1227,"trigger":1251,"decisionPoints":1252,"outcome":1253,"edgeCases":1254,"intent":234,"supportingSections":1257,"references":1258},"Log a planned session",[243],[1226],{"id":241,"name":694},[1228,1235,1242],{"text":1229,"kind":698,"actorId":243,"capabilityId":386,"entities":1230,"unattended":441,"contexts":1233},"The Student logs a planned session, entering the minutes studied and any notes",[1231],{"entityId":273,"as":453,"effect":701,"from":453,"to":453,"facts":1232,"with":453},[395,396],[1234],{"routeId":241,"placeId":379},{"text":1236,"kind":712,"actorId":243,"capabilityId":386,"entities":1237,"unattended":441,"contexts":1240},"The Product records the session as logged",[1238],{"entityId":273,"as":453,"effect":755,"from":529,"to":532,"facts":1239,"with":453},[275,394],[1241],{"routeId":241,"placeId":379},{"text":1243,"kind":761,"actorId":243,"capabilityId":386,"entities":1244,"unattended":441,"contexts":1249},"The logged minutes count toward the topic's progress",[1245,1247],{"entityId":273,"as":453,"effect":701,"from":453,"to":453,"facts":1246,"with":453},[275],{"entityId":278,"as":453,"effect":701,"from":453,"to":453,"facts":1248,"with":453},[],[1250],{"routeId":241,"placeId":379},"The Student has finished, or partly finished, a planned session.",[],"The session is logged with the minutes actually studied, and the goal's progress includes them.",[1255,1256],"The session is shown as missed → logging it late records it the same way, and it is no longer missed.","The Student studied for longer or shorter than planned → the logged minutes count, never the planned ones.",[],[],{"id":406,"capabilityId":386,"title":1260,"kindId":213,"actorIds":1261,"routes":1262,"steps":1264,"trigger":1281,"decisionPoints":1282,"outcome":1283,"edgeCases":1284,"intent":234,"supportingSections":1285,"references":1286},"Log an unplanned session",[243],[1263],{"id":241,"name":694},[1265,1272],{"text":1266,"kind":698,"actorId":243,"capabilityId":386,"entities":1267,"unattended":441,"contexts":1270},"The Student logs study that was not scheduled, picking the topic and entering when, how long and any notes",[1268],{"entityId":278,"as":453,"effect":701,"from":453,"to":453,"facts":1269,"with":453},[269],[1271],{"routeId":241,"placeId":379},{"text":1273,"kind":712,"actorId":243,"capabilityId":386,"entities":1274,"unattended":441,"contexts":1279},"The Product adds the session to the schedule as logged",[1275,1277],{"entityId":273,"as":453,"effect":745,"from":453,"to":532,"facts":1276,"with":453},[275,394,396],{"entityId":278,"as":453,"effect":701,"from":453,"to":453,"facts":1278,"with":453},[],[1280],{"routeId":241,"placeId":379},"The Student studied a topic without having planned it.",[],"The study appears in the schedule as a logged session, and the goal's progress includes it.",[],[],[],{"id":407,"capabilityId":387,"title":1288,"kindId":213,"actorIds":1289,"routes":1290,"steps":1292,"trigger":1314,"decisionPoints":1315,"outcome":1316,"edgeCases":1317,"intent":234,"supportingSections":1318,"references":1319},"Move a missed session",[243],[1291],{"id":241,"name":694},[1293,1300,1307],{"text":1294,"kind":698,"actorId":243,"capabilityId":387,"entities":1295,"unattended":441,"contexts":1298},"The Student moves a session shown as missed to a later day",[1296],{"entityId":273,"as":453,"effect":701,"from":453,"to":453,"facts":1297,"with":453},[395,396],[1299],{"routeId":241,"placeId":379},{"text":1301,"kind":712,"actorId":243,"capabilityId":387,"entities":1302,"unattended":441,"contexts":1305},"The Product saves the session at its new time",[1303],{"entityId":273,"as":453,"effect":755,"from":453,"to":453,"facts":1304,"with":453},[396],[1306],{"routeId":241,"placeId":379},{"text":1308,"kind":761,"actorId":243,"capabilityId":387,"entities":1309,"unattended":441,"contexts":1312},"The session is upcoming again and no longer shown as missed",[1310],{"entityId":273,"as":453,"effect":701,"from":453,"to":453,"facts":1311,"with":453},[396],[1313],{"routeId":241,"placeId":379},"The Student wants to make up a session they missed.",[],"The missed study is back in the schedule on a day still ahead.",[],[],[],{"id":408,"capabilityId":387,"title":1321,"kindId":217,"actorIds":1322,"routes":1323,"steps":1325,"trigger":1339,"decisionPoints":1340,"outcome":1341,"edgeCases":1342,"intent":234,"supportingSections":1344,"references":1345},"Move a planned session",[243],[1324],{"id":241,"name":694},[1326,1333],{"text":1327,"kind":698,"actorId":243,"capabilityId":387,"entities":1328,"unattended":441,"contexts":1331},"The Student moves a planned session to a new start or length",[1329],{"entityId":273,"as":453,"effect":701,"from":453,"to":453,"facts":1330,"with":453},[395,396],[1332],{"routeId":241,"placeId":379},{"text":1301,"kind":712,"actorId":243,"capabilityId":387,"entities":1334,"unattended":441,"contexts":1337},[1335],{"entityId":273,"as":453,"effect":755,"from":453,"to":453,"facts":1336,"with":453},[395,396],[1338],{"routeId":241,"placeId":379},"A planned session no longer fits the Student's day.",[],"The session is in the schedule at its new start and length, for the same topic.",[1343],"The new time overlaps another session → the Product refuses it as when scheduling, and the session keeps its time.",[],[],{"id":1347,"capabilityId":664,"title":1348,"kindId":213,"actorIds":1349,"routes":1350,"steps":1353,"trigger":1389,"decisionPoints":1390,"outcome":1391,"edgeCases":1392,"intent":234,"supportingSections":1393,"references":1394},"propose-a-revision-that-falls-short","Propose a revision that falls short",[231],[1351],{"id":229,"name":1352},"Agent",[1354,1367,1375,1382],{"text":1355,"kind":698,"actorId":231,"capabilityId":664,"entities":1356,"unattended":441,"contexts":1365},"The AI agent asks for a goal's topics, the hours already logged, the upcoming schedule and the Student's weekly availability",[1357,1359,1361,1363],{"entityId":267,"as":453,"effect":701,"from":453,"to":453,"facts":1358,"with":453},[269,270],{"entityId":278,"as":453,"effect":701,"from":453,"to":453,"facts":1360,"with":453},[280,269],{"entityId":273,"as":453,"effect":701,"from":453,"to":453,"facts":1362,"with":453},[275,395,396],{"entityId":243,"as":453,"effect":701,"from":453,"to":453,"facts":1364,"with":453},[365],[1366],{"routeId":229,"placeId":226},{"text":901,"kind":761,"actorId":231,"capabilityId":664,"entities":1368,"unattended":441,"contexts":1373},[1369,1371],{"entityId":278,"as":453,"effect":701,"from":453,"to":453,"facts":1370,"with":453},[280],{"entityId":243,"as":453,"effect":701,"from":453,"to":453,"facts":1372,"with":453},[365],[1374],{"routeId":229,"placeId":226},{"text":1376,"kind":698,"actorId":231,"capabilityId":664,"entities":1377,"unattended":441,"contexts":1380},"The AI agent leaves a plan that fills the available time, with the hours that do not fit as its shortfall",[1378],{"entityId":332,"as":453,"effect":745,"from":453,"to":501,"facts":1379,"with":453},[334,335,336,337,338,339],[1381],{"routeId":229,"placeId":226},{"text":1383,"kind":712,"actorId":231,"capabilityId":664,"entities":1384,"unattended":441,"contexts":1387},"The Product confirms the proposed sessions fit and keeps the plan with its shortfall",[1385],{"entityId":332,"as":453,"effect":701,"from":453,"to":453,"facts":1386,"with":453},[337,339],[1388],{"routeId":229,"placeId":226},"The AI agent revises a goal whose remaining study no longer fits the time before its date.",[],"The proposed plan uses the available time, says how many hours do not fit and which topics they belong to, and schedules nothing outside the availability.",[],[],[],{"id":1396,"capabilityId":664,"title":1397,"kindId":221,"actorIds":1398,"routes":1399,"steps":1401,"trigger":1420,"decisionPoints":1421,"outcome":1422,"edgeCases":1423,"intent":234,"supportingSections":1424,"references":1425},"refuse-a-direct-change-from-the-ai-agent","Refuse a direct change from the AI agent",[231],[1400],{"id":229,"name":1352},[1402,1413],{"text":1403,"kind":698,"actorId":231,"capabilityId":664,"entities":1404,"unattended":441,"contexts":1411},"The AI agent asks to change a goal, a topic or a session itself instead of leaving a plan",[1405,1407,1409],{"entityId":267,"as":453,"effect":701,"from":453,"to":453,"facts":1406,"with":453},[],{"entityId":278,"as":453,"effect":701,"from":453,"to":453,"facts":1408,"with":453},[],{"entityId":273,"as":453,"effect":701,"from":453,"to":453,"facts":1410,"with":453},[],[1412],{"routeId":229,"placeId":226},{"text":1414,"kind":712,"actorId":231,"capabilityId":664,"entities":1415,"unattended":441,"contexts":1418},"The Product refuses, and says that the agent connection changes nothing and offers leaving a plan instead",[1416],{"entityId":332,"as":453,"effect":701,"from":453,"to":453,"facts":1417,"with":453},[],[1419],{"routeId":229,"placeId":226},"The AI agent tries to change the schedule, a goal or a topic itself.",[],"The planner is exactly as it was, and the AI agent is told that a study plan is the only change it can propose.",[],[],[],{"id":314,"capabilityId":259,"title":1427,"kindId":221,"actorIds":1428,"routes":1429,"steps":1431,"trigger":1447,"decisionPoints":1448,"outcome":1449,"edgeCases":1450,"intent":234,"supportingSections":1451,"references":1452},"Refuse a goal dated in the past",[243],[1430],{"id":241,"name":694},[1432,1437,1442],{"text":1433,"kind":698,"actorId":243,"capabilityId":259,"entities":1434,"unattended":441,"contexts":1435},"The Student enters a name and a target date that has already passed",[],[1436],{"routeId":241,"placeId":305},{"text":1438,"kind":761,"actorId":453,"capabilityId":259,"entities":1439,"unattended":441,"contexts":1440},"The target date is before today",[],[1441],{"routeId":241,"placeId":305},{"text":1443,"kind":712,"actorId":243,"capabilityId":259,"entities":1444,"unattended":441,"contexts":1445},"The Product explains that the target date must be today or later",[],[1446],{"routeId":241,"placeId":305},"The Student enters a target date that has already passed.",[],"No goal is created, and the name and date the Student entered remain available to correct.",[],[],[],{"id":344,"capabilityId":325,"title":1454,"kindId":213,"actorIds":1455,"routes":1456,"steps":1458,"trigger":1491,"decisionPoints":1492,"outcome":1493,"edgeCases":1494,"intent":234,"supportingSections":1495,"references":1496},"Refuse a plan after the availability shrinks",[243],[1457],{"id":241,"name":694},[1459,1466,1475,1482],{"text":1460,"kind":698,"actorId":243,"capabilityId":325,"entities":1461,"unattended":441,"contexts":1464},"The Student accepts a plan after reducing their weekly availability",[1462],{"entityId":332,"as":453,"effect":701,"from":453,"to":453,"facts":1463,"with":453},[335],[1465],{"routeId":241,"placeId":321},{"text":1467,"kind":761,"actorId":243,"capabilityId":325,"entities":1468,"unattended":441,"contexts":1473},"A proposed session now falls outside the Student's current weekly availability",[1469,1471],{"entityId":332,"as":453,"effect":701,"from":453,"to":453,"facts":1470,"with":453},[337],{"entityId":243,"as":453,"effect":701,"from":453,"to":453,"facts":1472,"with":453},[365],[1474],{"routeId":241,"placeId":321},{"text":1476,"kind":712,"actorId":243,"capabilityId":325,"entities":1477,"unattended":441,"contexts":1480},"The Product refuses the plan, closes it as outdated and names the sessions that no longer fit the availability",[1478],{"entityId":332,"as":453,"effect":755,"from":501,"to":510,"facts":1479,"with":453},[],[1481],{"routeId":241,"placeId":321},{"text":1483,"kind":761,"actorId":243,"capabilityId":325,"entities":1484,"unattended":441,"contexts":1489},"The schedule is unchanged, and the Student can ask for a new plan built around the availability they have now",[1485,1487],{"entityId":267,"as":453,"effect":701,"from":453,"to":453,"facts":1486,"with":453},[],{"entityId":273,"as":453,"effect":701,"from":453,"to":453,"facts":1488,"with":453},[],[1490],{"routeId":241,"placeId":321},"The Student accepts a plan whose sessions were placed in hours they have since removed from their weekly availability.",[],"No session changes, the plan is outdated, and the Student knows the plan no longer fits the hours they can study.",[],[],[],{"id":290,"capabilityId":258,"title":1498,"kindId":221,"actorIds":1499,"routes":1500,"steps":1502,"trigger":1530,"decisionPoints":1531,"outcome":1532,"edgeCases":1533,"intent":234,"supportingSections":1535,"references":1536},"Refuse a plan for a goal without topics",[243],[1501],{"id":241,"name":694},[1503,1512,1521],{"text":1504,"kind":698,"actorId":243,"capabilityId":258,"entities":1505,"unattended":441,"contexts":1510},"The Student asks the planner to plan a goal that has no topics yet",[1506,1508],{"entityId":278,"as":453,"effect":701,"from":453,"to":453,"facts":1507,"with":453},[],{"entityId":267,"as":453,"effect":701,"from":453,"to":453,"facts":1509,"with":453},[269],[1511],{"routeId":241,"placeId":253},{"text":1513,"kind":761,"actorId":243,"capabilityId":258,"entities":1514,"unattended":441,"contexts":1519},"The goal has no topic with an estimate",[1515,1517],{"entityId":267,"as":453,"effect":701,"from":453,"to":453,"facts":1516,"with":453},[],{"entityId":278,"as":453,"effect":701,"from":453,"to":453,"facts":1518,"with":453},[],[1520],{"routeId":241,"placeId":253},{"text":1522,"kind":712,"actorId":243,"capabilityId":258,"entities":1523,"unattended":441,"contexts":1528},"The Product explains that a plan needs at least one topic to divide, and keeps no plan",[1524,1526],{"entityId":278,"as":453,"effect":701,"from":453,"to":453,"facts":1525,"with":453},[],{"entityId":267,"as":453,"effect":701,"from":453,"to":453,"facts":1527,"with":453},[],[1529],{"routeId":241,"placeId":253},"The Student asks for a plan before breaking the goal into topics.",[],"No plan is kept, the schedule is unchanged, and the Student knows to add topics first.",[1534],"The goal's target date has passed → the Product refuses the same way and says the goal is past.",[],[],{"id":1538,"capabilityId":664,"title":1539,"kindId":221,"actorIds":1540,"routes":1541,"steps":1543,"trigger":1569,"decisionPoints":1570,"outcome":1571,"edgeCases":1572,"intent":234,"supportingSections":1573,"references":1574},"refuse-a-plan-outside-the-availability","Refuse a plan outside the availability",[231],[1542],{"id":229,"name":1352},[1544,1553,1562],{"text":1545,"kind":698,"actorId":231,"capabilityId":664,"entities":1546,"unattended":441,"contexts":1551},"The AI agent leaves a plan with a session outside the Student's weekly availability or over another session",[1547,1549],{"entityId":332,"as":453,"effect":701,"from":453,"to":453,"facts":1548,"with":453},[],{"entityId":243,"as":453,"effect":701,"from":453,"to":453,"facts":1550,"with":453},[],[1552],{"routeId":229,"placeId":226},{"text":1554,"kind":761,"actorId":231,"capabilityId":664,"entities":1555,"unattended":441,"contexts":1560},"A proposed session falls outside the availability, after the target date, or over a session the plan does not replace",[1556,1558],{"entityId":243,"as":453,"effect":701,"from":453,"to":453,"facts":1557,"with":453},[365],{"entityId":273,"as":453,"effect":701,"from":453,"to":453,"facts":1559,"with":453},[395,396],[1561],{"routeId":229,"placeId":226},{"text":1563,"kind":712,"actorId":231,"capabilityId":664,"entities":1564,"unattended":441,"contexts":1567},"The Product refuses the plan, says which session does not fit and why, and keeps nothing",[1565],{"entityId":332,"as":453,"effect":701,"from":453,"to":453,"facts":1566,"with":453},[],[1568],{"routeId":229,"placeId":226},"The AI agent proposes a session the Student could not keep.",[],"No plan is kept, nothing waits for the Student, and the AI agent knows which session to change.",[],[],[],{"id":345,"capabilityId":325,"title":1576,"kindId":213,"actorIds":1577,"routes":1578,"steps":1580,"trigger":1619,"decisionPoints":1620,"outcome":1621,"edgeCases":1622,"intent":234,"supportingSections":1623,"references":1624},"Refuse a plan that overlaps another goal",[243],[1579],{"id":241,"name":694},[1581,1590,1601,1610],{"text":1582,"kind":698,"actorId":243,"capabilityId":325,"entities":1583,"unattended":441,"contexts":1588},"The Student accepts a plan after scheduling or moving a session of another goal",[1584,1586],{"entityId":332,"as":453,"effect":701,"from":453,"to":453,"facts":1585,"with":453},[335],{"entityId":267,"as":453,"effect":701,"from":453,"to":453,"facts":1587,"with":453},[],[1589],{"routeId":241,"placeId":321},{"text":1591,"kind":761,"actorId":243,"capabilityId":325,"entities":1592,"unattended":441,"contexts":1599},"A proposed session now shares time with a session of another goal",[1593,1595,1597],{"entityId":332,"as":453,"effect":701,"from":453,"to":453,"facts":1594,"with":453},[337],{"entityId":273,"as":726,"effect":701,"from":453,"to":453,"facts":1596,"with":453},[395,396],{"entityId":267,"as":453,"effect":701,"from":453,"to":453,"facts":1598,"with":453},[],[1600],{"routeId":241,"placeId":321},{"text":1602,"kind":712,"actorId":243,"capabilityId":325,"entities":1603,"unattended":441,"contexts":1608},"The Product refuses the plan, closes it as outdated and names the sessions it would overlap",[1604,1606],{"entityId":332,"as":453,"effect":755,"from":501,"to":510,"facts":1605,"with":453},[],{"entityId":273,"as":726,"effect":701,"from":453,"to":453,"facts":1607,"with":453},[396],[1609],{"routeId":241,"placeId":321},{"text":1611,"kind":761,"actorId":243,"capabilityId":325,"entities":1612,"unattended":441,"contexts":1617},"Both goals' sessions are unchanged, and the Student can ask for a new plan around the session that now holds that time",[1613,1615],{"entityId":267,"as":453,"effect":701,"from":453,"to":453,"facts":1614,"with":453},[],{"entityId":273,"as":726,"effect":701,"from":453,"to":453,"facts":1616,"with":453},[],[1618],{"routeId":241,"placeId":321},"The Student accepts a plan after another goal's session was put in time the plan proposes to use.",[],"No session of either goal changes, the plan is outdated, and the Student knows which session now holds the time.",[],[],[],{"id":409,"capabilityId":383,"title":1626,"kindId":221,"actorIds":1627,"routes":1628,"steps":1630,"trigger":1654,"decisionPoints":1655,"outcome":1656,"edgeCases":1657,"intent":234,"supportingSections":1658,"references":1659},"Refuse a session that overlaps",[243],[1629],{"id":241,"name":694},[1631,1640,1647],{"text":1632,"kind":698,"actorId":243,"capabilityId":383,"entities":1633,"unattended":441,"contexts":1638},"The Student picks a topic and enters a start and a length that overlap a session already scheduled",[1634,1636],{"entityId":278,"as":453,"effect":701,"from":453,"to":453,"facts":1635,"with":453},[269],{"entityId":273,"as":453,"effect":701,"from":453,"to":453,"facts":1637,"with":453},[395,396],[1639],{"routeId":241,"placeId":379},{"text":1641,"kind":761,"actorId":243,"capabilityId":383,"entities":1642,"unattended":441,"contexts":1645},"The new session would overlap another session in the schedule",[1643],{"entityId":273,"as":453,"effect":701,"from":453,"to":453,"facts":1644,"with":453},[395,396],[1646],{"routeId":241,"placeId":379},{"text":1648,"kind":712,"actorId":243,"capabilityId":383,"entities":1649,"unattended":441,"contexts":1652},"The Product explains which session it overlaps",[1650],{"entityId":273,"as":453,"effect":701,"from":453,"to":453,"facts":1651,"with":453},[396],[1653],{"routeId":241,"placeId":379},"The Student schedules a session at a time another session already holds.",[],"No session is added, and the topic, start and length the Student entered remain available to change.",[],[],[],{"id":291,"capabilityId":257,"title":1661,"kindId":221,"actorIds":1662,"routes":1663,"steps":1665,"trigger":1683,"decisionPoints":1684,"outcome":1685,"edgeCases":1686,"intent":234,"supportingSections":1687,"references":1688},"Refuse a topic without an estimate",[243],[1664],{"id":241,"name":694},[1666,1671,1676],{"text":1667,"kind":698,"actorId":243,"capabilityId":257,"entities":1668,"unattended":441,"contexts":1669},"The Student enters a name without the hours of study they expect it to need",[],[1670],{"routeId":241,"placeId":253},{"text":1672,"kind":761,"actorId":453,"capabilityId":257,"entities":1673,"unattended":441,"contexts":1674},"No estimate in hours was given",[],[1675],{"routeId":241,"placeId":253},{"text":1677,"kind":712,"actorId":243,"capabilityId":257,"entities":1678,"unattended":441,"contexts":1681},"The Product explains that every topic needs an estimate in hours",[1679],{"entityId":278,"as":453,"effect":701,"from":453,"to":453,"facts":1680,"with":453},[],[1682],{"routeId":241,"placeId":253},"The Student adds a topic without saying how many hours it needs.",[],"No topic is added, and the name the Student entered remains available to complete.",[],[],[],{"id":346,"capabilityId":325,"title":1690,"kindId":213,"actorIds":1691,"routes":1692,"steps":1694,"trigger":1735,"decisionPoints":1736,"outcome":1737,"edgeCases":1738,"intent":234,"supportingSections":1739,"references":1740},"Refuse an outdated plan",[243],[1693],{"id":241,"name":694},[1695,1704,1717,1726],{"text":1696,"kind":698,"actorId":243,"capabilityId":325,"entities":1697,"unattended":441,"contexts":1702},"The Student accepts a plan after the goal changed",[1698,1700],{"entityId":332,"as":453,"effect":701,"from":453,"to":453,"facts":1699,"with":453},[335],{"entityId":267,"as":453,"effect":701,"from":453,"to":453,"facts":1701,"with":453},[],[1703],{"routeId":241,"placeId":321},{"text":1705,"kind":761,"actorId":243,"capabilityId":325,"entities":1706,"unattended":441,"contexts":1715},"After the plan was prepared, a session of the goal was scheduled, moved, cancelled or logged, the goal's target date moved before a proposed session, or a proposed session's topic was removed",[1707,1709,1711,1713],{"entityId":273,"as":453,"effect":701,"from":453,"to":453,"facts":1708,"with":453},[],{"entityId":332,"as":453,"effect":701,"from":453,"to":453,"facts":1710,"with":453},[335,337],{"entityId":267,"as":453,"effect":701,"from":453,"to":453,"facts":1712,"with":453},[270],{"entityId":278,"as":453,"effect":701,"from":453,"to":453,"facts":1714,"with":453},[],[1716],{"routeId":241,"placeId":321},{"text":1718,"kind":712,"actorId":243,"capabilityId":325,"entities":1719,"unattended":441,"contexts":1724},"The Product refuses the plan, closes it as outdated and explains that it no longer matches the goal",[1720,1722],{"entityId":332,"as":453,"effect":755,"from":501,"to":510,"facts":1721,"with":453},[],{"entityId":267,"as":453,"effect":701,"from":453,"to":453,"facts":1723,"with":453},[],[1725],{"routeId":241,"placeId":321},{"text":1727,"kind":761,"actorId":243,"capabilityId":325,"entities":1728,"unattended":441,"contexts":1733},"The schedule is unchanged, and the Student can ask for a new plan for the goal",[1729,1731],{"entityId":267,"as":453,"effect":701,"from":453,"to":453,"facts":1730,"with":453},[],{"entityId":273,"as":453,"effect":701,"from":453,"to":453,"facts":1732,"with":453},[],[1734],{"routeId":241,"placeId":321},"The Student accepts a plan after changing the goal's schedule, target date or topics since the plan was prepared.",[],"No session changes, the plan is outdated, and the Student knows to ask for a plan that matches the goal.",[],[],[],{"id":292,"capabilityId":263,"title":1742,"kindId":217,"actorIds":1743,"routes":1744,"steps":1746,"trigger":1793,"decisionPoints":1794,"outcome":1795,"edgeCases":1796,"intent":234,"supportingSections":1799,"references":1800},"Remove a topic",[243],[1745],{"id":241,"name":694},[1747,1756,1767,1771,1784],{"text":1748,"kind":698,"actorId":243,"capabilityId":263,"entities":1749,"unattended":441,"contexts":1754},"The Student chooses to remove a topic from the goal",[1750,1752],{"entityId":278,"as":453,"effect":701,"from":453,"to":453,"facts":1751,"with":453},[269],{"entityId":267,"as":453,"effect":701,"from":453,"to":453,"facts":1753,"with":453},[],[1755],{"routeId":241,"placeId":253},{"text":1757,"kind":712,"actorId":243,"capabilityId":263,"entities":1758,"unattended":441,"contexts":1765},"The Product asks the Student to confirm, and says how many planned sessions are cancelled and how many hours of logged study go with the topic for good",[1759,1761,1763],{"entityId":278,"as":453,"effect":701,"from":453,"to":453,"facts":1760,"with":453},[],{"entityId":273,"as":1108,"effect":701,"from":453,"to":453,"facts":1762,"with":453},[],{"entityId":273,"as":1090,"effect":701,"from":453,"to":453,"facts":1764,"with":453},[275],[1766],{"routeId":241,"placeId":253},{"text":1095,"kind":698,"actorId":243,"capabilityId":263,"entities":1768,"unattended":441,"contexts":1769},[],[1770],{"routeId":241,"placeId":253},{"text":1772,"kind":712,"actorId":243,"capabilityId":263,"entities":1773,"unattended":441,"contexts":1782},"The Product removes the topic with its planned and logged sessions for good",[1774,1776,1779],{"entityId":278,"as":453,"effect":734,"from":453,"to":453,"facts":1775,"with":453},[],{"entityId":273,"as":1108,"effect":734,"from":529,"to":453,"facts":1777,"with":1778},[],{"entityId":278,"as":453},{"entityId":273,"as":1090,"effect":734,"from":532,"to":453,"facts":1780,"with":1781},[],{"entityId":278,"as":453},[1783],{"routeId":241,"placeId":253},{"text":1785,"kind":761,"actorId":243,"capabilityId":263,"entities":1786,"unattended":441,"contexts":1791},"The goal's progress no longer counts the topic's estimate or its logged hours",[1787,1789],{"entityId":267,"as":453,"effect":701,"from":453,"to":453,"facts":1788,"with":453},[],{"entityId":278,"as":453,"effect":701,"from":453,"to":453,"facts":1790,"with":453},[280],[1792],{"routeId":241,"placeId":253},"A topic turns out not to be part of what the Student must study.",[],"The topic, its planned sessions and the study logged for it are gone for good, and the goal's progress counts only the topics left.",[1797,1798],"The Student does not confirm → the topic and its sessions stay as they were.","The topic has no logged study → the confirmation names only the planned sessions that are cancelled.",[],[],{"id":1802,"capabilityId":664,"title":1803,"kindId":217,"actorIds":1804,"routes":1805,"steps":1807,"trigger":1858,"decisionPoints":1859,"outcome":1860,"edgeCases":1861,"intent":234,"supportingSections":1863,"references":1864},"revise-a-plan-after-a-missed-session","Revise a plan after a missed session",[231],[1806],{"id":229,"name":1352},[1808,1815,1824,1833,1840,1847],{"text":1809,"kind":698,"actorId":231,"capabilityId":664,"entities":1810,"unattended":441,"contexts":1813},"The AI agent asks for the Student's schedule",[1811],{"entityId":243,"as":453,"effect":701,"from":453,"to":453,"facts":1812,"with":453},[],[1814],{"routeId":229,"placeId":226},{"text":1816,"kind":712,"actorId":231,"capabilityId":664,"entities":1817,"unattended":441,"contexts":1822},"The Product provides the sessions, with those whose day passed unlogged shown as missed, and the Student's weekly availability",[1818,1820],{"entityId":273,"as":453,"effect":701,"from":453,"to":453,"facts":1819,"with":453},[275,395,396],{"entityId":243,"as":453,"effect":701,"from":453,"to":453,"facts":1821,"with":453},[365],[1823],{"routeId":229,"placeId":226},{"text":1825,"kind":698,"actorId":231,"capabilityId":664,"entities":1826,"unattended":441,"contexts":1831},"The AI agent divides the missed goal's study still to do again, across the availability before the target date",[1827,1829],{"entityId":267,"as":453,"effect":701,"from":453,"to":453,"facts":1828,"with":453},[270],{"entityId":278,"as":453,"effect":701,"from":453,"to":453,"facts":1830,"with":453},[280],[1832],{"routeId":229,"placeId":226},{"text":1834,"kind":698,"actorId":231,"capabilityId":664,"entities":1835,"unattended":441,"contexts":1838},"The AI agent leaves the revised plan, explaining which missed study it moved and where",[1836],{"entityId":332,"as":453,"effect":745,"from":453,"to":501,"facts":1837,"with":453},[334,335,336,337,338,339],[1839],{"routeId":229,"placeId":226},{"text":1841,"kind":712,"actorId":231,"capabilityId":664,"entities":1842,"unattended":441,"contexts":1845},"The Product confirms that every proposed session fits the availability and overlaps no other session, and keeps the plan",[1843],{"entityId":332,"as":453,"effect":701,"from":453,"to":453,"facts":1844,"with":453},[337],[1846],{"routeId":229,"placeId":226},{"text":1848,"kind":761,"actorId":231,"capabilityId":664,"entities":1849,"unattended":441,"contexts":1856},"The revised plan waits in Plans for the Student, and the schedule still shows the session as missed",[1850,1852,1854],{"entityId":332,"as":453,"effect":701,"from":453,"to":453,"facts":1851,"with":453},[],{"entityId":273,"as":453,"effect":701,"from":453,"to":453,"facts":1853,"with":453},[],{"entityId":243,"as":453,"effect":701,"from":453,"to":453,"facts":1855,"with":453},[],[1857],{"routeId":229,"placeId":226},"The AI agent looks over the Student's schedule and finds a planned session whose day passed without being logged, for a goal still ahead.",[],"A revised plan waits for the Student's review; the schedule has not changed.",[1862],"The goal is past → the Product refuses the plan and keeps nothing.",[],[],{"id":293,"capabilityId":264,"title":1866,"kindId":213,"actorIds":1867,"routes":1868,"steps":1870,"trigger":1896,"decisionPoints":1897,"outcome":1898,"edgeCases":1899,"intent":234,"supportingSections":1900,"references":1901},"See progress on a past goal",[243],[1869],{"id":241,"name":694},[1871,1878,1887],{"text":1872,"kind":698,"actorId":243,"capabilityId":264,"entities":1873,"unattended":441,"contexts":1876},"The Student opens a goal whose target date has passed",[1874],{"entityId":267,"as":453,"effect":701,"from":453,"to":453,"facts":1875,"with":453},[269,270],[1877],{"routeId":241,"placeId":305},{"text":1879,"kind":712,"actorId":243,"capabilityId":264,"entities":1880,"unattended":441,"contexts":1885},"The Product shows each topic's logged hours against its estimate",[1881,1883],{"entityId":278,"as":453,"effect":701,"from":453,"to":453,"facts":1882,"with":453},[280,269],{"entityId":273,"as":453,"effect":701,"from":453,"to":453,"facts":1884,"with":453},[275],[1886],{"routeId":241,"placeId":253},{"text":1888,"kind":761,"actorId":243,"capabilityId":264,"entities":1889,"unattended":441,"contexts":1894},"The goal is shown as past, and no study plan can be asked for it",[1890,1892],{"entityId":267,"as":453,"effect":701,"from":453,"to":453,"facts":1891,"with":453},[270],{"entityId":332,"as":453,"effect":701,"from":453,"to":453,"facts":1893,"with":453},[],[1895],{"routeId":241,"placeId":253},"The Student looks back at a goal whose target date has passed.",[],"The Student sees how much of each topic they studied, and the goal is marked as past.",[],[],[],{"id":294,"capabilityId":264,"title":1903,"kindId":217,"actorIds":1904,"routes":1905,"steps":1907,"trigger":1943,"decisionPoints":1944,"outcome":1945,"edgeCases":1946,"intent":234,"supportingSections":1947,"references":1948},"See progress toward a goal",[243],[1906],{"id":241,"name":694},[1908,1915,1923,1934],{"text":1909,"kind":698,"actorId":243,"capabilityId":264,"entities":1910,"unattended":441,"contexts":1913},"The Student opens a goal",[1911],{"entityId":267,"as":453,"effect":701,"from":453,"to":453,"facts":1912,"with":453},[269,270],[1914],{"routeId":241,"placeId":305},{"text":1879,"kind":712,"actorId":243,"capabilityId":264,"entities":1916,"unattended":441,"contexts":1921},[1917,1919],{"entityId":278,"as":453,"effect":701,"from":453,"to":453,"facts":1918,"with":453},[280,269],{"entityId":273,"as":453,"effect":701,"from":453,"to":453,"facts":1920,"with":453},[275],[1922],{"routeId":241,"placeId":253},{"text":1924,"kind":712,"actorId":243,"capabilityId":264,"entities":1925,"unattended":441,"contexts":1932},"The Product shows the hours still to study and the days left before the target date",[1926,1928,1930],{"entityId":267,"as":453,"effect":701,"from":453,"to":453,"facts":1927,"with":453},[270],{"entityId":278,"as":453,"effect":701,"from":453,"to":453,"facts":1929,"with":453},[280],{"entityId":273,"as":453,"effect":701,"from":453,"to":453,"facts":1931,"with":453},[275],[1933],{"routeId":241,"placeId":253},{"text":1935,"kind":761,"actorId":243,"capabilityId":264,"entities":1936,"unattended":441,"contexts":1941},"Nothing about the goal or its topics changes",[1937,1939],{"entityId":267,"as":453,"effect":701,"from":453,"to":453,"facts":1938,"with":453},[],{"entityId":278,"as":453,"effect":701,"from":453,"to":453,"facts":1940,"with":453},[],[1942],{"routeId":241,"placeId":253},"The Student wants to know whether they are on track for a goal.",[],"The Student sees logged hours against estimates for every topic, the study still to do, and the days left.",[],[],[],{"id":371,"capabilityId":358,"title":1950,"kindId":217,"actorIds":1951,"routes":1952,"steps":1954,"trigger":1976,"decisionPoints":1977,"outcome":1978,"edgeCases":1979,"intent":234,"supportingSections":1981,"references":1982},"Set the hours available each day",[243],[1953],{"id":241,"name":694},[1955,1962,1969],{"text":1956,"kind":698,"actorId":243,"capabilityId":358,"entities":1957,"unattended":441,"contexts":1960},"The Student changes the hours they can study on each day of the week",[1958],{"entityId":243,"as":453,"effect":701,"from":453,"to":453,"facts":1959,"with":453},[365],[1961],{"routeId":241,"placeId":354},{"text":1963,"kind":712,"actorId":243,"capabilityId":358,"entities":1964,"unattended":441,"contexts":1967},"The Product saves the weekly availability",[1965],{"entityId":243,"as":453,"effect":755,"from":453,"to":453,"facts":1966,"with":453},[365],[1968],{"routeId":241,"placeId":354},{"text":1970,"kind":761,"actorId":243,"capabilityId":358,"entities":1971,"unattended":441,"contexts":1974},"Sessions already scheduled stay where they are",[1972],{"entityId":273,"as":453,"effect":701,"from":453,"to":453,"facts":1973,"with":453},[],[1975],{"routeId":241,"placeId":354},"The Student wants their plans built around the time they really have.",[],"The next study plan is built around the new hours, and nothing already scheduled has moved.",[1980],"The new hours leave a scheduled session outside the availability → the session stays; only plans prepared afterwards follow the new hours.",[],[],[1984,1995],{"id":1985,"title":1986,"goal":1987,"successCriterion":1988,"actorIds":1989,"capabilityIds":1990,"failureOnlyCapabilityIds":1991,"domainIds":1992,"intent":234,"supportingSections":1993,"references":1994},"plan-a-goal","Plan a goal","A Student wants a schedule for a goal that they can keep, built around their\nown week.","The goal's upcoming sessions come from a study plan the Student accepted, inside\ntheir weekly availability and before the target date.",[243],[325,258],[326],[418,424],[],[],{"id":1996,"title":1997,"goal":1998,"successCriterion":1999,"actorIds":2000,"capabilityIds":2001,"failureOnlyCapabilityIds":2002,"domainIds":2003,"intent":234,"supportingSections":2004,"references":2005},"set-up-a-goal","Set up a goal","A Student wants a new goal broken into the topics they need to study.","The goal exists with its target date and at least one topic with an estimate.",[243],[257,259],[],[418],[],[],[2007,2067,2108],{"id":296,"journeyId":1985,"result":2008,"title":2009,"kindId":217,"actorIds":2010,"routes":2011,"steps":2013,"trigger":2061,"decisionPoints":2062,"outcome":2063,"edgeCases":2064,"intent":234,"supportingSections":2065,"references":2066},"achieved","Build and accept a plan for a goal",[243],[2012],{"id":241,"name":694},[2014,2020,2031,2037,2044,2055],{"text":847,"kind":698,"actorId":243,"capabilityId":258,"entities":2015,"unattended":441,"contexts":2018},[2016],{"entityId":267,"as":453,"effect":701,"from":453,"to":453,"facts":2017,"with":453},[269,270],[2019],{"routeId":241,"placeId":253},{"text":2021,"kind":712,"actorId":243,"capabilityId":258,"entities":2022,"unattended":441,"contexts":2029},"The Product spreads each topic's study still to do across the Student's weekly availability and keeps the plan",[2023,2025,2027],{"entityId":278,"as":453,"effect":701,"from":453,"to":453,"facts":2024,"with":453},[280],{"entityId":243,"as":453,"effect":701,"from":453,"to":453,"facts":2026,"with":453},[365],{"entityId":332,"as":453,"effect":745,"from":453,"to":501,"facts":2028,"with":453},[334,335,336,337,338],[2030],{"routeId":241,"placeId":253},{"text":874,"kind":712,"actorId":243,"capabilityId":258,"entities":2032,"unattended":441,"contexts":2035},[2033],{"entityId":332,"as":453,"effect":701,"from":453,"to":453,"facts":2034,"with":453},[334,337,338],[2036],{"routeId":241,"placeId":321},{"text":2038,"kind":698,"actorId":243,"capabilityId":325,"entities":2039,"unattended":441,"contexts":2042},"The Student reviews the proposed sessions and the explanation, and accepts the plan",[2040],{"entityId":332,"as":453,"effect":701,"from":453,"to":453,"facts":2041,"with":453},[334,337,338],[2043],{"routeId":241,"placeId":321},{"text":2045,"kind":712,"actorId":243,"capabilityId":325,"entities":2046,"unattended":441,"contexts":2053},"The Product replaces the goal's upcoming planned sessions with the plan's sessions",[2047,2049,2051],{"entityId":273,"as":717,"effect":734,"from":529,"to":453,"facts":2048,"with":453},[],{"entityId":273,"as":744,"effect":745,"from":453,"to":529,"facts":2050,"with":453},[395,396],{"entityId":267,"as":453,"effect":701,"from":453,"to":453,"facts":2052,"with":453},[],[2054],{"routeId":241,"placeId":321},{"text":752,"kind":712,"actorId":243,"capabilityId":325,"entities":2056,"unattended":441,"contexts":2059},[2057],{"entityId":332,"as":453,"effect":755,"from":501,"to":504,"facts":2058,"with":453},[],[2060],{"routeId":241,"placeId":321},"The Student has a goal with topics and asks the planner to plan it.",[],"The Journey goal is achieved: the goal's upcoming sessions are the accepted plan's.",[],[],[],{"id":297,"journeyId":1985,"result":2068,"title":2069,"kindId":213,"actorIds":2070,"routes":2071,"steps":2073,"trigger":2102,"decisionPoints":2103,"outcome":2104,"edgeCases":2105,"intent":234,"supportingSections":2106,"references":2107},"not-achieved","Dismiss the plan for a goal",[243],[2072],{"id":241,"name":694},[2074,2080,2090,2096],{"text":847,"kind":698,"actorId":243,"capabilityId":258,"entities":2075,"unattended":441,"contexts":2078},[2076],{"entityId":267,"as":453,"effect":701,"from":453,"to":453,"facts":2077,"with":453},[269,270],[2079],{"routeId":241,"placeId":253},{"text":2021,"kind":712,"actorId":243,"capabilityId":258,"entities":2081,"unattended":441,"contexts":2088},[2082,2084,2086],{"entityId":278,"as":453,"effect":701,"from":453,"to":453,"facts":2083,"with":453},[280],{"entityId":243,"as":453,"effect":701,"from":453,"to":453,"facts":2085,"with":453},[365],{"entityId":332,"as":453,"effect":745,"from":453,"to":501,"facts":2087,"with":453},[334,335,336,337,338],[2089],{"routeId":241,"placeId":253},{"text":874,"kind":712,"actorId":243,"capabilityId":258,"entities":2091,"unattended":441,"contexts":2094},[2092],{"entityId":332,"as":453,"effect":701,"from":453,"to":453,"facts":2093,"with":453},[334,337,338],[2095],{"routeId":241,"placeId":321},{"text":1194,"kind":698,"actorId":243,"capabilityId":326,"entities":2097,"unattended":441,"contexts":2100},[2098],{"entityId":332,"as":453,"effect":755,"from":501,"to":507,"facts":2099,"with":453},[],[2101],{"routeId":241,"placeId":321},"The Student asks the planner to plan a goal and does not like what it builds.",[],"The Journey goal is not achieved: the plan is dismissed and the schedule is as it was.",[],[],[],{"id":298,"journeyId":1996,"result":2008,"title":2109,"kindId":217,"actorIds":2110,"routes":2111,"steps":2113,"trigger":2139,"decisionPoints":2140,"outcome":2141,"edgeCases":2142,"intent":234,"supportingSections":2143,"references":2144},"Set up a goal with its topics",[243],[2112],{"id":241,"name":694},[2114,2118,2124,2132],{"text":1045,"kind":698,"actorId":243,"capabilityId":259,"entities":2115,"unattended":441,"contexts":2116},[],[2117],{"routeId":241,"placeId":305},{"text":1050,"kind":712,"actorId":243,"capabilityId":259,"entities":2119,"unattended":441,"contexts":2122},[2120],{"entityId":267,"as":453,"effect":745,"from":453,"to":453,"facts":2121,"with":453},[269,270],[2123],{"routeId":241,"placeId":305},{"text":1057,"kind":712,"actorId":243,"capabilityId":259,"entities":2125,"unattended":441,"contexts":2130},[2126,2128],{"entityId":267,"as":453,"effect":701,"from":453,"to":453,"facts":2127,"with":453},[269,270],{"entityId":278,"as":453,"effect":701,"from":453,"to":453,"facts":2129,"with":453},[],[2131],{"routeId":241,"placeId":253},{"text":2133,"kind":698,"actorId":243,"capabilityId":257,"entities":2134,"unattended":441,"contexts":2137},"The Student adds a topic with the hours of study they expect it to need",[2135],{"entityId":278,"as":453,"effect":745,"from":453,"to":453,"facts":2136,"with":453},[280,269],[2138],{"routeId":241,"placeId":253},"The Student has an exam or another dated goal to prepare for.",[],"The Journey goal is achieved: the goal exists with its date and an estimated topic.",[],[],[],[2146,2158,2169,2180,2198,2220,2243,2269,2293,2317,2334,2353,2371,2388,2406,2423,2442,2460,2479,2495,2506,2520,2545],{"id":2147,"title":2148,"statement":2149,"rationale":2150,"appliesTo":2151,"permits":453,"intent":234,"supportingSections":2156,"references":2157},"a-plan-replaces-only-upcoming-planned-sessions","A plan replaces only upcoming planned sessions","A study plan replaces only its goal's planned sessions that have not yet\nstarted. Logged sessions, missed sessions and the sessions of other goals stay\nexactly as they were when it is accepted.","Logged and missed sessions are the record of what actually happened. A new\nplan changes what comes next, never the history progress is counted from.",[2152],{"type":2153,"entityId":332,"effect":453,"from":453,"to":453,"facts":2154,"contexts":2155},"entity",[338],[],[],[],{"id":2159,"title":2160,"statement":2161,"rationale":2162,"appliesTo":2163,"permits":453,"intent":234,"supportingSections":2167,"references":2168},"a-session-is-missed-once-its-day-passes-unlogged","A session is missed once its day passes unlogged","A planned session is shown as missed once the day it was planned for has ended\nwithout the Student logging it. Missed is read from the session's start and\nwhether it was logged; it stops as soon as the session is logged or moved to a\nday still ahead.","Missed sessions are what plans are revised around, so the Product\nmust say plainly and in one way when a session counts as missed.",[2164],{"type":2153,"entityId":273,"effect":701,"from":453,"to":453,"facts":2165,"contexts":2166},[275,396],[],[],[],{"id":2170,"title":2171,"statement":2172,"rationale":2173,"appliesTo":2174,"permits":453,"intent":234,"supportingSections":2178,"references":2179},"a-study-plan-changes-nothing-until-accepted","A study plan changes nothing until accepted","A study plan, whether the planner built it or the AI agent left it, changes no\nsession while it is proposed, and none once it is dismissed or outdated. Only\naccepting it puts its sessions in the schedule.","The Student has to be able to read any plan, including a poor one, without\nrisk; the schedule stays theirs until they say otherwise.",[2175],{"type":2153,"entityId":332,"effect":453,"from":453,"to":453,"facts":2176,"contexts":2177},[],[],[],[],{"id":2181,"title":2182,"statement":2183,"rationale":2184,"appliesTo":2185,"permits":2189,"intent":234,"supportingSections":2196,"references":2197},"only-the-student-adds-topics-to-their-goals","Only the Student adds topics to their goals","Topics are added only by the Student who owns the goal. The AI agent never adds a topic.","The topics are the Student's own breakdown of what to study; a plan divides them, it does not add to them.",[2186],{"type":2153,"entityId":278,"effect":745,"from":453,"to":453,"facts":2187,"contexts":2188},[],[],[2190],{"actorIds":2191,"related":2192,"self":441,"when":2195,"unattended":441,"configuredByEntityId":453},[],[2193,2194],{"verb":461,"entityId":267},{"verb":476,"entityId":243},[],[],[],{"id":2199,"title":2200,"statement":2201,"rationale":2202,"appliesTo":2203,"permits":2207,"intent":234,"supportingSections":2218,"references":2219},"only-the-student-and-their-ai-agent-read-their-availability","Only the Student and their AI agent read their availability","A Student's weekly availability is read only by that Student and by an AI agent\nthey connected.","The planner is private: connecting an agent is the Student's consent for it to\nread, and nobody else has any.",[2204],{"type":2153,"entityId":243,"effect":701,"from":453,"to":453,"facts":2205,"contexts":2206},[365],[],[2208,2213],{"actorIds":2209,"related":2210,"self":2211,"when":2212,"unattended":441,"configuredByEntityId":453},[],[],true,[],{"actorIds":2214,"related":2215,"self":441,"when":2217,"unattended":441,"configuredByEntityId":453},[],[2216],{"verb":478,"entityId":231},[],[],[],{"id":2221,"title":2222,"statement":2223,"rationale":2224,"appliesTo":2225,"permits":2229,"intent":234,"supportingSections":2241,"references":2242},"only-the-student-and-their-ai-agent-read-their-goals","Only the Student and their AI agent read their goals","A goal is read only by the Student who owns it and by an AI agent that Student connected.","The planner is private: connecting an agent is the Student's consent for it to read, and nobody else has any.",[2226],{"type":2153,"entityId":267,"effect":701,"from":453,"to":453,"facts":2227,"contexts":2228},[],[],[2230,2235],{"actorIds":2231,"related":2232,"self":441,"when":2234,"unattended":441,"configuredByEntityId":453},[],[2233],{"verb":476,"entityId":243},[],{"actorIds":2236,"related":2237,"self":441,"when":2240,"unattended":441,"configuredByEntityId":453},[],[2238,2239],{"verb":476,"entityId":243},{"verb":478,"entityId":231},[],[],[],{"id":2244,"title":2245,"statement":2246,"rationale":2224,"appliesTo":2247,"permits":2251,"intent":234,"supportingSections":2267,"references":2268},"only-the-student-and-their-ai-agent-read-their-sessions","Only the Student and their AI agent read their sessions","A study session is read only by the Student who owns its goal and by an AI agent that Student connected.",[2248],{"type":2153,"entityId":273,"effect":701,"from":453,"to":453,"facts":2249,"contexts":2250},[],[],[2252,2259],{"actorIds":2253,"related":2254,"self":441,"when":2258,"unattended":441,"configuredByEntityId":453},[],[2255,2256,2257],{"verb":546,"entityId":278},{"verb":461,"entityId":267},{"verb":476,"entityId":243},[],{"actorIds":2260,"related":2261,"self":441,"when":2266,"unattended":441,"configuredByEntityId":453},[],[2262,2263,2264,2265],{"verb":546,"entityId":278},{"verb":461,"entityId":267},{"verb":476,"entityId":243},{"verb":478,"entityId":231},[],[],[],{"id":2270,"title":2271,"statement":2272,"rationale":2224,"appliesTo":2273,"permits":2277,"intent":234,"supportingSections":2291,"references":2292},"only-the-student-and-their-ai-agent-read-their-study-plans","Only the Student and their AI agent read their study plans","A study plan is read only by the Student who owns its goal and by an AI agent that Student connected.",[2274],{"type":2153,"entityId":332,"effect":701,"from":453,"to":453,"facts":2275,"contexts":2276},[],[],[2278,2284],{"actorIds":2279,"related":2280,"self":441,"when":2283,"unattended":441,"configuredByEntityId":453},[],[2281,2282],{"verb":463,"entityId":267},{"verb":476,"entityId":243},[],{"actorIds":2285,"related":2286,"self":441,"when":2290,"unattended":441,"configuredByEntityId":453},[],[2287,2288,2289],{"verb":463,"entityId":267},{"verb":476,"entityId":243},{"verb":478,"entityId":231},[],[],[],{"id":2294,"title":2295,"statement":2296,"rationale":2224,"appliesTo":2297,"permits":2301,"intent":234,"supportingSections":2315,"references":2316},"only-the-student-and-their-ai-agent-read-their-topics","Only the Student and their AI agent read their topics","A topic is read only by the Student who owns its goal and by an AI agent that Student connected.",[2298],{"type":2153,"entityId":278,"effect":701,"from":453,"to":453,"facts":2299,"contexts":2300},[],[],[2302,2308],{"actorIds":2303,"related":2304,"self":441,"when":2307,"unattended":441,"configuredByEntityId":453},[],[2305,2306],{"verb":461,"entityId":267},{"verb":476,"entityId":243},[],{"actorIds":2309,"related":2310,"self":441,"when":2314,"unattended":441,"configuredByEntityId":453},[],[2311,2312,2313],{"verb":461,"entityId":267},{"verb":476,"entityId":243},{"verb":478,"entityId":231},[],[],[],{"id":2318,"title":2319,"statement":2320,"rationale":2321,"appliesTo":2322,"permits":2326,"intent":234,"supportingSections":2332,"references":2333},"only-the-student-changes-their-goals","Only the Student changes their goals","A goal's name and target date are changed only by the Student who owns it. The AI agent plans from them as they are and never moves a date to make a plan fit.","A plan that quietly moved the date would hide exactly the shortfall the Student needs to see.",[2323],{"type":2153,"entityId":267,"effect":755,"from":453,"to":453,"facts":2324,"contexts":2325},[],[],[2327],{"actorIds":2328,"related":2329,"self":441,"when":2331,"unattended":441,"configuredByEntityId":453},[],[2330],{"verb":476,"entityId":243},[],[],[],{"id":2335,"title":2336,"statement":2337,"rationale":2338,"appliesTo":2339,"permits":2343,"intent":234,"supportingSections":2351,"references":2352},"only-the-student-changes-their-sessions","Only the Student changes their sessions","A study session is moved or logged only by the Student. The AI agent never moves or logs a session.","Moving and logging say what the Student will do and did; only the Student knows either.",[2340],{"type":2153,"entityId":273,"effect":755,"from":453,"to":453,"facts":2341,"contexts":2342},[],[],[2344],{"actorIds":2345,"related":2346,"self":441,"when":2350,"unattended":441,"configuredByEntityId":453},[],[2347,2348,2349],{"verb":546,"entityId":278},{"verb":461,"entityId":267},{"verb":476,"entityId":243},[],[],[],{"id":2354,"title":2355,"statement":2356,"rationale":2357,"appliesTo":2358,"permits":2362,"intent":234,"supportingSections":2369,"references":2370},"only-the-student-changes-their-topics","Only the Student changes their topics","A topic's name and estimate are changed only by the Student who owns its goal. The AI agent never adjusts an estimate to make a plan fit.","Estimates are the Student's statement of how much study a topic needs; a plan that changed them would hide its shortfall.",[2359],{"type":2153,"entityId":278,"effect":755,"from":453,"to":453,"facts":2360,"contexts":2361},[],[],[2363],{"actorIds":2364,"related":2365,"self":441,"when":2368,"unattended":441,"configuredByEntityId":453},[],[2366,2367],{"verb":461,"entityId":267},{"verb":476,"entityId":243},[],[],[],{"id":2372,"title":2373,"statement":2374,"rationale":2375,"appliesTo":2376,"permits":2380,"intent":234,"supportingSections":2386,"references":2387},"only-the-student-creates-their-goals","Only the Student creates their goals","A goal is created only by the Student whose planner it is in. The AI agent never starts a goal.","A goal is the Student's statement of what they must study and by when; everything else in the planner works back from it.",[2377],{"type":2153,"entityId":267,"effect":745,"from":453,"to":453,"facts":2378,"contexts":2379},[],[],[2381],{"actorIds":2382,"related":2383,"self":441,"when":2385,"unattended":441,"configuredByEntityId":453},[],[2384],{"verb":476,"entityId":243},[],[],[],{"id":2389,"title":2390,"statement":2391,"rationale":2392,"appliesTo":2393,"permits":2397,"intent":234,"supportingSections":2404,"references":2405},"only-the-student-decides-their-study-plans","Only the Student decides their study plans","A proposed plan waits until the Student who owns its goal accepts or dismisses it, or the Product closes it as outdated when that Student accepts it after it stopped fitting the goal, the availability or the other goals' sessions. The AI agent never accepts or dismisses a plan, its own or the planner's.","Accepting a plan replaces upcoming sessions, the one consequential thing a plan can do; that decision is the Student's alone.",[2394],{"type":2153,"entityId":332,"effect":755,"from":453,"to":453,"facts":2395,"contexts":2396},[],[],[2398],{"actorIds":2399,"related":2400,"self":441,"when":2403,"unattended":441,"configuredByEntityId":453},[],[2401,2402],{"verb":463,"entityId":267},{"verb":476,"entityId":243},[],[],[],{"id":2407,"title":2408,"statement":2409,"rationale":2410,"appliesTo":2411,"permits":2415,"intent":234,"supportingSections":2421,"references":2422},"only-the-student-deletes-their-goals","Only the Student deletes their goals","A goal, with everything under it, is deleted only by the Student who owns it.","Deleting a goal removes its logged study for good, so only the person whose record it is decides it.",[2412],{"type":2153,"entityId":267,"effect":734,"from":453,"to":453,"facts":2413,"contexts":2414},[],[],[2416],{"actorIds":2417,"related":2418,"self":441,"when":2420,"unattended":441,"configuredByEntityId":453},[],[2419],{"verb":476,"entityId":243},[],[],[],{"id":2424,"title":2425,"statement":2426,"rationale":2427,"appliesTo":2428,"permits":2432,"intent":234,"supportingSections":2440,"references":2441},"only-the-student-removes-their-sessions","Only the Student removes their sessions","A study session leaves the schedule only by the Student's act: cancelling it, deleting it once logged, or accepting a plan that replaces it. The AI agent never removes a session.","The schedule is the Student's commitment of their own time, so only the Student takes anything out of it.",[2429],{"type":2153,"entityId":273,"effect":734,"from":453,"to":453,"facts":2430,"contexts":2431},[],[],[2433],{"actorIds":2434,"related":2435,"self":441,"when":2439,"unattended":441,"configuredByEntityId":453},[],[2436,2437,2438],{"verb":546,"entityId":278},{"verb":461,"entityId":267},{"verb":476,"entityId":243},[],[],[],{"id":2443,"title":2444,"statement":2445,"rationale":2446,"appliesTo":2447,"permits":2451,"intent":234,"supportingSections":2458,"references":2459},"only-the-student-removes-their-topics","Only the Student removes their topics","A topic, with its planned and logged sessions, is removed only by the Student who owns its goal. The AI agent never removes a topic.","Removing a topic takes its study record with it for good, which only the Student may decide.",[2448],{"type":2153,"entityId":278,"effect":734,"from":453,"to":453,"facts":2449,"contexts":2450},[],[],[2452],{"actorIds":2453,"related":2454,"self":441,"when":2457,"unattended":441,"configuredByEntityId":453},[],[2455,2456],{"verb":461,"entityId":267},{"verb":476,"entityId":243},[],[],[],{"id":2461,"title":2462,"statement":2463,"rationale":2464,"appliesTo":2465,"permits":2469,"intent":234,"supportingSections":2477,"references":2478},"only-the-student-schedules-their-sessions","Only the Student schedules their sessions","A study session is added to the schedule only by the Student, directly, by logging unplanned study, or by accepting a study plan. The AI agent never adds a session.","The schedule is the Student's commitment of their own time; an agent that could fill it unasked would make the planner something to check up on.",[2466],{"type":2153,"entityId":273,"effect":745,"from":453,"to":453,"facts":2467,"contexts":2468},[],[],[2470],{"actorIds":2471,"related":2472,"self":441,"when":2476,"unattended":441,"configuredByEntityId":453},[],[2473,2474,2475],{"verb":546,"entityId":278},{"verb":461,"entityId":267},{"verb":476,"entityId":243},[],[],[],{"id":2480,"title":2481,"statement":2482,"rationale":2483,"appliesTo":2484,"permits":2488,"intent":234,"supportingSections":2493,"references":2494},"only-the-student-sets-their-weekly-availability","Only the Student sets their weekly availability","A Student's weekly availability is set only by that Student. The AI agent never\nwidens it to make a plan fit.","The availability is the Student's own account of the time they have; every plan\nis built inside it.",[2485],{"type":2153,"entityId":243,"effect":755,"from":453,"to":453,"facts":2486,"contexts":2487},[365],[],[2489],{"actorIds":2490,"related":2491,"self":2211,"when":2492,"unattended":441,"configuredByEntityId":453},[],[],[],[],[],{"id":2496,"title":2497,"statement":2498,"rationale":2499,"appliesTo":2500,"permits":453,"intent":234,"supportingSections":2504,"references":2505},"progress-counts-only-logged-study","Progress counts only logged study","A goal's progress is the study logged for it: each topic's logged hours\nagainst its estimate, and the goal's logged hours against the hours its topics\nneed. Planned sessions, missed sessions and accepted plans add nothing until\nstudy is logged.","Progress has to reflect study that happened, or a full schedule would look\nlike a goal well on its way.",[2501],{"type":2153,"entityId":273,"effect":701,"from":453,"to":453,"facts":2502,"contexts":2503},[275],[],[],[],{"id":2507,"title":2508,"statement":2509,"rationale":2510,"appliesTo":2511,"permits":453,"intent":234,"supportingSections":2518,"references":2519},"sessions-never-overlap","Sessions never overlap","No two study sessions in a Student's schedule share any time, across all of the\nStudent's goals. Scheduling or moving a session onto time another session holds\nis refused, and no study plan proposes a session over one it does not replace.\nA plan is checked again when accepted: if a session of another goal now holds\ntime it proposes, it is refused and becomes outdated.","A Student can study only one thing at a time; overlapping sessions would\npromise study that cannot happen.",[2512,2515],{"type":2153,"entityId":273,"effect":453,"from":453,"to":453,"facts":2513,"contexts":2514},[395,396],[],{"type":2153,"entityId":332,"effect":453,"from":453,"to":453,"facts":2516,"contexts":2517},[337],[],[],[],{"id":2521,"title":2522,"statement":2523,"rationale":2524,"appliesTo":2525,"permits":2529,"intent":234,"supportingSections":2543,"references":2544},"study-plans-come-from-the-student-or-their-ai-agent","Study plans come from the Student or their AI agent","A study plan for a goal is built by the planner when the Student who owns the goal asks for one, or left by an AI agent that Student connected.","A plan proposes changes to one Student's schedule, so it comes only from that Student's request or from the agent they chose to connect.",[2526],{"type":2153,"entityId":332,"effect":745,"from":453,"to":453,"facts":2527,"contexts":2528},[],[],[2530,2536],{"actorIds":2531,"related":2532,"self":441,"when":2535,"unattended":441,"configuredByEntityId":453},[],[2533,2534],{"verb":463,"entityId":267},{"verb":476,"entityId":243},[],{"actorIds":2537,"related":2538,"self":441,"when":2542,"unattended":441,"configuredByEntityId":453},[],[2539,2540,2541],{"verb":463,"entityId":267},{"verb":476,"entityId":243},{"verb":478,"entityId":231},[],[],[],{"id":2546,"title":2547,"statement":2548,"rationale":2549,"appliesTo":2550,"permits":453,"intent":234,"supportingSections":2554,"references":2555},"study-plans-fit-the-students-availability","Study plans fit the Student's availability","Every proposed session falls inside the Student's weekly availability, after\nthe moment the plan is prepared and before the goal's target date. Study that\ndoes not fit is reported as the plan's shortfall, never squeezed in outside\nthat time; the Product refuses an agent's plan with a session that does not\nfit. Fit is checked again when the Student accepts a plan, against the\navailability and target date as they are then: a plan that no longer fits is\nrefused and becomes outdated.","A plan the Student cannot keep is worse than an honest one that falls short:\nthe shortfall tells the Student to add time or lower an estimate.",[2551],{"type":2153,"entityId":332,"effect":453,"from":453,"to":453,"facts":2552,"contexts":2553},[337,339],[],[],[],[],{"scope":234,"method":234,"covered":2558,"exclusions":2559,"unmapped":2560,"limitations":2561},[],[],[],[],{"path":2563,"commit":2564},"blueprints\u002Fstudy-planner","f474777f17005554bb7fd1f1e18189bfd01792bc",1791840534305]