Related Atlas entry
Purpose
Provide runbook-grade guidance for:
- executing the transfer pipeline safely (manual or scheduled),
- validating data quality and write-back outcomes,
- handling exceptions in Aeries, AIR linkage, and sheet-driven operations,
- supporting district/school staff dashboard workflows.
Audience and access
- Primary operators:
- District data/registrar staff running
run.sh. - Technical staff maintaining configs and stage behavior.
- District data/registrar staff running
- Operational users:
- District reviewers (
full_accessorread_only) in dashboard. - School reviewers (read-only, school-scoped).
- District reviewers (
- Required access:
- Repo checkout with executable
run.shandbin/*. - Google Sheet access via service account key configured in
google-sheets-sync. - InformedK12 + Jotform API credentials.
- Aeries SIS SQL credentials and AIR DB SQL credentials.
- SMTP credentials if reporting/notifications are enabled.
- Repo checkout with executable
Operational workflow
Pre-run checks
- Confirm
config.tomlexists and pipeline toggles reflect intended run mode. - Confirm service account key file path is valid and sheet is shared.
- Confirm required sheet tabs/headers exist (
Transfers,Aeries-STU-Demo,Aeries-AIR-Next-Year,config,config-dashboard*,config-class-load,config-grades). - Confirm binaries in
bin/are executable.
- Confirm
Execute run
- Full run:
./run.sh
- Safety run before enabling DB writes:
./run.sh --aeries-status-writeback-dry-run
- The script self-cds to repo root, rotates logs, acquires lock, and performs pre-change Transfers backup.
- Full run:
Monitor stage progression
- Watch
logs/run-*.loglive or post-run. - Confirm stage groups:
- Source exports (IK12/Jotform/Aeries/AIR)
- Mapping/merge
- Sheet sync/upload
- Status normalization
- Decision scoring
- AIR registration enrichment
- Aeries write-back
- Notifications/reporting
- Watch
Validate write-back outcomes
- Review Aeries write-back rows in report:
Rows processed,Updated,No-op,Not found,Other- NS metrics
- Registration SC metrics
- Validate ack behavior:
aeries=TRUEonly when eligibility checks pass.registration.sc.updated=TRUEwhen registration school update/no-op succeeds.
- Inspect artifacts:
data/aeries-stu-status-writeback-generated.sqldata/aeries-stu-status-writeback-results.csv
- Review Aeries write-back rows in report:
Validate operational sheet state
- Confirm raw tabs updated.
- Confirm
Transfersrow counts and expected deltas. - Confirm
record.status.calculatedsync completed. - Confirm scoring columns updated (
decision.score.*,indicator.*). - Confirm AIR enrichment columns (
registration.*) updated where matched.
Dashboard operational usage
- District reviewers work queues:
Pending BOUSD DecisionPending BOUSD Approved SchoolData Validation
- Use modal detail cards for Student, Transfer, Submission, Class Load, Decision Signals, and Data Quality guidance.
- Use Enrollment Projections/Class Load for planning decisions (scenario toggles + school/grade filters).
- District reviewers work queues:
Validation checklist
- Pipeline-level
- Lock acquired and released.
- Transfers backup created for run.
- No stage-level hard failures in run log.
- Data-level
- Source exports non-empty where expected.
- Mapping and unified outputs produced.
- Sheet sync ranges targeted expected tabs.
record.status.calculatedupdated for submission rows.- Scoring stage completed or intentionally skipped with explicit reason.
- AIR enrichment stage completed or intentionally skipped with explicit reason.
- Write-back-level
- SQL artifact generated every write-back run.
- Result CSV present for non-dry-run.
- Aeries/registration ack counts align with result statuses.
- Any
ACTION REQUIREDentries triaged.
- Communication-level
- New submissions notification sent when appends > 0.
- Run report email delivered with status + summary rows.
Failure modes and recovery
Google Sheets authentication/permission failure
- Check service account key file path and readability.
- Verify sheet sharing to service account email.
- Confirm
sheets.range_*targets valid tabs/ranges.
Missing sheet headers/columns
- Add missing columns to Transfers/config tabs.
- Re-run; helper stages intentionally skip and warn instead of mutating schema.
Aeries write-back ack blocked (
STU.TGeligibility)- This is intentional.
- Correct Aeries student tag/enrollment state for affected rows.
- Re-run write-back stage.
NS/registration school routing issues
- Add/update
[aeries.ns_school_code_overrides]. - Ensure approved/resident school values are canonical.
- Re-run dry-run first, then full write-back.
- Add/update
AIR enrichment low match rate
- Confirm
school_year.nextconfig value. - Review Name/DOB formatting and ambiguity warnings.
- Confirm Transfers has required registration columns.
- Confirm
Decision scoring config issues
- Verify
config-dashboard-indicators/cutoffs/keywords/score-bands. - If sheets are missing, allow auto-create helper to seed defaults, then rerun.
- Verify
Email/report issues
- Validate SMTP host/port/user/password/TLS.
- Confirm report mode and recipient config.
- Check
emails_sent/campaign artifacts for delivery state.
Security and privacy
- Treat all operational artifacts (logs, backups, CSV exports) as student-sensitive.
- Keep credentials in local/private config; do not expose key material in commits.
- Restrict dashboard update capability to district users with
full_access. - Maintain strict role scoping for school users via allowed school lists.
- Use internal-only distribution for Atlas docs due operational and student context.
Open items and improvements
- Reduce
Unknownindicator coverage by tightening Aeries source completeness for remaining signals. - Continue refining matching quality for AIR and duplicate transfer detection.
- Add deeper automated regression tests for helper scripts and dashboard calculations.
- Expand operational dashboards/reporting for trend analysis without increasing operator overhead.