Release Notes: January 2026 Update
This document covers the new features deployed in the January 2026 release. If you're a first-time user or returning after the update, this guide will help you understand and use the new capabilities.
Table of Contents
- Overview
- New Features
- Arrival Waves
- Food Reserves
- Visual Timeline
- Sub-criteria Breakdown
- Evaluator Attribution
- Property → Food Plan Navigation
- For Administrators: Migration Instructions
- User Experience Guide
- Troubleshooting
Overview
This release adds several key features for food production planning and property evaluation:
| Feature | Description | Impact |
|---|---|---|
| Arrival Waves | Model people arriving in discrete waves over time | More realistic population planning |
| Food Reserves | Track stored, purchased, and emergency food | Complete food security picture |
| Visual Timeline | Interactive charts showing food vs consumption | At-a-glance viability assessment |
| Sub-criteria | Expandable breakdown of property score dimensions | Transparency in evaluation |
| Evaluator Attribution | See who scored each property | Accountability and context |
| Scoring Profiles | Configurable weight profiles for property ranking | Flexible priority-based comparison |
| Evaluator Comparison | Side-by-side view of how evaluators rank properties | Identify perspective differences |
| Crop Auto-suggest | Algorithm suggests optimal crop mix for target population | Quick food plan creation |
New Features
Arrival Waves
What it does: Instead of assuming everyone arrives at once, you can now model people arriving in waves over months or years.
Example scenario: - Wave 1 (Month 0): 5 core team members - Wave 2 (Month 6): 10 additional team members - Wave 3 (Month 18): 15 family members/dependents
How to use:
- Go to Admin → Scenarios → Arrival Waves
- Click "Add Arrival Wave"
- Select the scenario or food plan this wave belongs to
- Set:
- Month: When this wave arrives (0 = start of plan)
- People Count: How many people in this wave
- Wave Name: Optional label (e.g., "Core Team", "Phase 2")
- Wave Type:
- Scheduled: Planned arrival
- Contingent: Only if a trigger event occurs
Wave Types: - Scheduled: These arrivals will happen as planned - Contingent: These arrivals depend on a specific event (e.g., "If Taiwan crisis, 20 additional refugees")
Food Reserves
What it does: Track non-grown food sources to get a complete picture of food security.
Reserve Types:
| Type | Description | Example |
|---|---|---|
| Stored - Initial | Food stockpiled before plan starts | 6-month freeze-dried supply |
| Stored - Harvest | Preserved from previous harvests | Canned vegetables, dried fruit |
| Purchased - Initial | Bulk purchase at plan start | Grain silos, rice stockpile |
| Purchased - Ongoing | Regular monthly purchases | Weekly grocery runs |
| Emergency | Last-resort supplies | MREs, emergency rations |
How to use:
- Go to Admin → Food → Food Reserves
- Click "Add Food Reserve"
- Select the food production plan
- Set:
- Reserve Type: Choose from the 5 types above
- Total Calories: For finite reserves (stockpiles)
- Monthly Calories: For ongoing purchases
- Start/End Month: When this reserve is available
- Cost: Optional cost tracking
Tips:
- For stockpiles, set total_calories and leave monthly_calories blank
- For ongoing purchases, set monthly_calories and leave end_month blank
- Emergency reserves should have a long duration but be marked as last-resort
Visual Timeline
What it does: Shows an interactive chart on the Food Plan detail page with: - Stacked bar chart of food sources (grown, stored, purchased, emergency) - Line showing calories needed based on population - Stepped chart showing population over time - Gantt-style crop production schedule
How to use:
- Navigate to any Food Production Plan
- Scroll down to the "Food Production Timeline" card
- Use the Months/Years toggle to change time scale
- Hover over bars/lines for detailed values
Reading the chart: - Green bars: Calories from grown crops - Blue bars: Calories from stored food - Orange bars: Calories from purchases - Purple bars: Emergency reserves - Red line: Calories needed (based on population × daily target)
Key insight: If the stacked bars are below the red line, you have a food deficit for that period.
Sub-criteria Breakdown
What it does: Each of the 5 property evaluation dimensions (Location, Self-Sustainability, Cost/Value/Opportunity, Robustness, Glamor) can now be expanded to show the weighted sub-elements that evaluators consider.
How to use:
- Go to any Property Detail page
- Find the "Evaluation Scores" card
- Click on any dimension name (e.g., "Location")
- The panel expands to show 5 sub-criteria with:
- Name and description
- Relative weight (as percentage)
Example - Location sub-criteria: - Distance to Major Centers (28%) - Road Access Quality (21%) - Regional Services (14%) - Internet/Communications (21%) - Community Integration (14%)
For administrators: Sub-criteria can be customized in Admin → Properties → Dimension Sub-Criteria.
Evaluator Attribution
What it does: The property list now shows who has evaluated each property.
Where to see it: - Property List page now has an "Evaluators" column - Shows count badge and names of evaluators - Filter by evaluator using the sidebar dropdown
Why it matters: - Know which properties need more evaluations - Understand whose perspective the scores represent - Enable accountability in the evaluation process
Scoring Profiles
What it does: Create and apply different weighting configurations to see how property rankings change based on priorities.
Pre-built Profiles:
| Profile | Focus | Use Case |
|---|---|---|
| Balanced | Equal weight to all 5 dimensions | General comparison, starting point |
| Sustainability Focus | 35% self-sustainability, 25% robustness | Long-term resilience projects |
| Budget Conscious | 40% cost/value/opportunity | Financially constrained projects |
| Location Priority | 35% location, higher region weight | Projects needing good transport/services |
| Retreat Quality | 25% robustness, 25% glamor | Community enjoyment and safety |
How to use:
- Go to Properties → Weights (button on property list page)
- Select a profile from the dropdown
- See the dimension weights visualized as progress bars
- Review how properties are ranked using those weights
- Filter by evaluator to see single-evaluator rankings
Understanding the scores: - Each property dimension is scored 1-10 by evaluators - Dimension weights determine how much each contributes to the total - Site weight vs Region weight balances property-specific vs location factors - Combined percentage shows overall fit based on the profile's priorities
Creating custom profiles: Administrators can create new profiles in Admin → Properties → Scoring Profiles.
Evaluator Comparison
What it does: Shows how different evaluators' scores would rank properties differently.
How to use:
- Go to Properties → Evaluator Comparison (from Weights page)
- Select a scoring profile to use for calculations
- View the comparison table showing:
- Aggregate rank (average of all evaluators)
- Each evaluator's rank for that property
- Arrows indicating if a property ranks higher/lower for each evaluator
Reading the table: - Green up arrow: Property ranks higher for this evaluator - Red down arrow: Property ranks lower for this evaluator - No arrow: Same rank as aggregate
Why it matters: - Identifies properties where evaluators disagree - Helps understand different perspectives on property value - Enables informed discussion about evaluation criteria
Crop Auto-suggest
What it does: Automatically suggests an optimal crop mix for a food production plan based on target population, land size, and preferred optimization strategy.
Suggestion Modes:
| Mode | Focus | Best For |
|---|---|---|
| Balanced | Speed, nutrition, and sustainability | General planning, starting point |
| Quick Start | Fastest path to self-sufficiency | Urgent food security needs |
| Low Maintenance | Favor perennials and trees | Long-term, low-labor sites |
| Resilient | Emphasize crop diversity | Climate-uncertain situations |
How to use:
- Navigate to any Food Production Plan detail page
- Click "Auto-suggest" button in the Planned Crops section
- Select a suggestion mode from the dropdown
- Optionally adjust:
- Max crops to suggest (1-20)
- Planting year for the crops
- Which categories to include (Trees, Annuals, Perennials, Livestock)
- Click "Generate Suggestions"
- Review the suggested crops with their:
- Suggested hectares and quantity
- Annual calorie contribution
- Rationale (why this crop was chosen)
- Select/deselect individual suggestions as needed
- Click "Accept Selected" to add crops to your plan
Understanding the results: - Total Calories: Annual calorie production from all suggested crops - Surplus/Deficit: Percentage above/below your calorie target (green = surplus, red = deficit) - Land Used: Hectares allocated vs available - Production Timeline: When crops will reach full production
Tips: - Use "Quick Start" mode if you need food production within 1-2 years - Use "Low Maintenance" mode if labor will be limited - Check the "Replace existing planned crops" option to start fresh - Re-run with different modes to compare options
Property → Food Plan Navigation
What it does: Properties now show linked food production plans directly on their detail page.
How to use:
- Go to any Property Detail page
- Find the "Food Production Plans" card
- See all plans linked to this property with:
- Plan name and status
- Target population
- Planning horizon
- Self-sufficiency percentage
- Click to navigate directly to the plan
- Use "Create Food Plan" to start a new plan pre-linked to this property
For Administrators: Migration Instructions
First-Time Migration
If this is a fresh deployment or first migration after the January 2026 update:
# SSH into your server
ssh user@your-server
# Navigate to the project
cd /path/to/CVTas
# Activate virtual environment
source venv/bin/activate
# Run all migrations
python manage.py migrate
# Verify migrations applied
python manage.py showmigrations scenarios food properties
Specific Migrations in This Release
| App | Migration | Description |
|---|---|---|
| scenarios | 0004_arrival_wave | Creates ArrivalWave model |
| food | 0007_food_reserve | Creates FoodReserve model |
| properties | 0007_dimension_subcriteria | Creates DimensionSubCriteria model |
| properties | 0008_populate_default_subcriteria | Populates 25 default sub-criteria |
| properties | 0009_scoring_profile | Creates ScoringProfile model |
| properties | 0010_populate_default_profiles | Populates 5 default scoring profiles |
Step-by-Step Migration
# 1. Backup database first (IMPORTANT)
pg_dump -h localhost -U cvtas_user cvtas_db > backup_$(date +%Y%m%d_%H%M%S).sql
# 2. Pull latest code
git pull origin master
# 3. Install any new dependencies
pip install -r requirements.txt
# 4. Run migrations in order
python manage.py migrate scenarios 0004_arrival_wave
python manage.py migrate food 0007_food_reserve
python manage.py migrate properties 0007_dimension_subcriteria
python manage.py migrate properties 0008_populate_default_subcriteria
python manage.py migrate properties 0009_scoring_profile
python manage.py migrate properties 0010_populate_default_profiles
# 5. Collect static files (if needed)
python manage.py collectstatic --noinput
# 6. Restart the application
sudo systemctl restart gunicorn
# or
sudo supervisorctl restart cvtas
Rollback Instructions
If something goes wrong:
# Restore database from backup
psql -h localhost -U cvtas_user cvtas_db < backup_YYYYMMDD_HHMMSS.sql
# Or rollback specific migrations
python manage.py migrate properties 0006_add_source_tracking_fields
python manage.py migrate food 0006_add_activity_level
python manage.py migrate scenarios 0003_populate_default_events
Verifying Success
After migration, verify with:
# Check migration status
python manage.py showmigrations
# Test the API endpoints
curl -u admin:password https://your-site.com/api/properties/dimension-subcriteria/breakdown/
curl -u admin:password https://your-site.com/api/food/plans/1/timeline_data/
# Check admin interface
# Navigate to /admin/ and verify new models appear:
# - Scenarios → Arrival Waves
# - Food → Food Reserves
# - Properties → Dimension Sub-Criteria
User Experience Guide
Typical Workflow
- Evaluate a Property
- Go to Properties → Select property
- Review scores (click dimensions to see sub-criteria)
-
Check linked food plans or create new one
-
Plan Food Production
- Create food plan linked to property
- Add crops with planting years
- Add food reserves (stockpiles, purchases)
-
Set up arrival waves for realistic population growth
-
Review Timeline
- Go to Food Plan detail page
- Review visual timeline chart
- Check for deficit periods (red line above bars)
-
Adjust reserves or crop mix to close gaps
-
Compare Scenarios
- Create multiple food plans with different assumptions
- Use the timeline to compare when self-sufficiency is achieved
Quick Reference
| I want to... | Go to... |
|---|---|
| See who evaluated a property | Property List → Evaluators column |
| Understand how a dimension is scored | Property Detail → Click dimension |
| Model people arriving over time | Admin → Arrival Waves |
| Add stored/purchased food | Admin → Food Reserves |
| See food vs consumption visually | Food Plan Detail → Timeline card |
| Link a food plan to a property | Property Detail → Create Food Plan |
| Change how properties are ranked | Properties → Weights button |
| See how weights sum to 100 | Weights page → progress bars |
| Compare evaluator perspectives | Weights page → Evaluator Comparison |
| Create a custom scoring profile | Admin → Scoring Profiles |
| Auto-generate a crop plan | Food Plan Detail → Auto-suggest button |
| Try different crop optimization modes | Auto-suggest modal → Mode dropdown |
Troubleshooting
Timeline shows "Unable to load timeline data"
Cause: API endpoint not responding or migrations not applied.
Fix:
1. Check migrations are applied: python manage.py showmigrations food
2. Check server logs: sudo journalctl -u gunicorn -f
3. Verify API endpoint: curl localhost:8000/api/food/plans/1/timeline_data/
Sub-criteria panel shows "Sub-criteria not available"
Cause: Data migration for sub-criteria didn't run.
Fix:
python manage.py migrate properties 0008_populate_default_subcriteria
Arrival waves not showing in timeline
Cause: Waves may be linked to scenario instead of food plan.
Fix: Ensure arrival waves have either scenario or food_plan set, and that the food plan is linked to the same scenario.
Food reserves show 0 calories
Cause: Either total_calories or monthly_calories must be set.
Fix: Edit the reserve in Admin and set the appropriate calorie field.
Related Documentation
- Food Planning Guide - Complete food production planning
- Scenario Planner - Multi-event scenario modeling
- Property System Guide - Property evaluation details
- Admin Guide - Administration tasks
Last updated: January 2026 Questions? Contact the CVTas team.