diff --git a/PlotLine/Docs/Features/PlotDirector_Character_Age_and_Story_Date_Management.md b/PlotLine/Docs/Features/PlotDirector_Character_Age_and_Story_Date_Management.md new file mode 100644 index 0000000..558b016 --- /dev/null +++ b/PlotLine/Docs/Features/PlotDirector_Character_Age_and_Story_Date_Management.md @@ -0,0 +1,255 @@ +# PlotDirector Feature Specification: Character Age and Story Date Management + +## Overview + +PlotDirector should support both precise age calculations and +approximate author-supplied ages without forcing authors into +unnecessary data entry. + +The primary goal is to assist authors with continuity and timeline +management while respecting the fact that not every character requires +an exact birth date. + +The system should only perform calculations when sufficient information +has been explicitly provided by the author. + +## Design Principles + +### 1. Only Calculate What the Author Defines + +PlotDirector should never invent information. + +If an author provides: + +- A Date of Birth +- A scene with a resolvable date + +Then PlotDirector should calculate exact ages. + +If an author only provides: + +- "45 years old" +- "Mid forties" +- "About 30" + +Then PlotDirector should preserve that approximate information without +attempting to generate birthdays or age progression. + +### 2. Precision Should Match Author Intent + +Authors intentionally vary the precision of character information. + +Characters with known birthdays should benefit from automatic age +calculation. Characters with approximate ages should remain descriptive +only. + +## Story Calendar Model + +### Project Story Start Date + +Projects may optionally define a Story Start Date that acts as a default +reference point. + +### Book Story Start Date + +Each book may optionally override the project start date. If specified, +the book start date takes precedence. + +## Scene Date Resolution + +Scenes may have varying levels of temporal precision. + +Supported modes: + +- Exact Date +- Exact Date and Time +- Relative Day Offset +- Relative Sequence Only +- Unknown + +## Effective Scene Date + +The system should derive an EffectiveSceneDate used for calculations. + +Rules: + +1. Use exact scene date if specified. +2. Use relative day calculations if possible. +3. Use inherited dates only where the author has explicitly enabled + such behaviour. +4. Otherwise, leave unresolved. + +The system should avoid silently making assumptions. + +## Character Age Model + +### Exact Age Tracking + +Characters with a Date of Birth participate in automatic age +calculations. + +Required Data: + +``` csharp +DateTime? DateOfBirth +``` + +Example output: + +- Maggie Grant: 17 years, 8 months +- Beth MacDonald: 18 years, 0 months + +### Approximate Age Tracking + +Characters without a Date of Birth may store an approximate age. + +Required Data: + +``` csharp +int? ApproximateAge +``` + +Optional: + +``` csharp +DateTime? ApproximateAgeAsOfDate +``` + +Example: + +- Mary Grant: Approximately 45 years old + +No further calculations occur. + +## Age Calculation Rules + +### Exact Ages + +Calculate only when: + +- Date of Birth exists +- Effective Scene Date exists + +Formula: + +``` text +Scene Date - Date of Birth +``` + +Display: + +- 17 years, 8 months +- 18 years, 0 months +- 22 years, 3 months + +### Approximate Ages + +Display author-entered values unchanged. + +No progression occurs. + +No birthdays are inferred. + +No calculations are performed. + +### Unknown Ages + +If neither Date of Birth nor Approximate Age exists: + +Display: + +``` text +Unknown +``` + +## Continuity Assistance Features + +These features should only apply to characters with exact birth dates. + +### Birthday Transition Warnings + +Example: + +- Beth turns 18 between Scene 14 and Scene 15. + +### Incorrect Age References + +Example: + +- Character notes describe Maggie as 17 years old. +- However, in this scene she is actually 18 years old. + +### Timeline Insights + +Possible reporting: + +- Character age at start of book. +- Character age at end of book. +- Character age range throughout series. + +## User Interface Recommendations + +### Character Editor + +#### Exact Age Section + +- Date of Birth: \[Date Picker\] +- Enable automatic age calculation. + +#### Approximate Age Section + +- Approximate Age: \[45\] +- As of: \[Book Start\] + +Help text: + +> Use this when the exact birth date is unknown or unimportant to the +> story. + +### Scene Inspector + +Display age contextually. + +Exact age example: + +- Maggie Grant +- Date of Birth: 1 September 1965 +- Age in this Scene: 17 years, 8 months + +Approximate age example: + +- Mary Grant +- Approximate Age: 45 +- Age in this Scene: Approximately 45 + +Unknown example: + +- Barbara Jones +- Age: Unknown + +## System Behaviour Summary + + Character Data Scene Date Available Result + ----------------- ---------------------- ----------------------------------- + DOB Yes Calculate exact age + DOB No Display DOB only + Approximate Age Yes Display approximate age unchanged + Approximate Age No Display approximate age unchanged + No age data Any Display unknown + +## Key Philosophy + +PlotDirector should function as an intelligent continuity assistant +rather than an automated co-author. + +The system should: + +- Calculate exact information when sufficient data exists. +- Preserve ambiguity when the author intentionally provides + approximate information. +- Never invent birthdays or age progression. +- Never assume precision beyond the information supplied. + +This approach provides powerful continuity support for plot-critical +characters while remaining lightweight and flexible for secondary +characters.