Architecture of Grace · Data Governance

The life of the data, start to finish

Where synced records live, how long to keep them, how to delete them, what happens when a teacher leaves, and who holds the keys. Written for the IT officer, the SPED director, and the records clerk — the people who will actually have to run this.

The one fact everything below rests on: the operator holds no student data. Records exist in exactly two places — the browser of the device that produced them, and (if your school syncs) a Google Sheet your school owns. Every procedure here is therefore a procedure your school performs, in your school's own systems. Companion documents: Privacy Policy · Data Privacy Agreement.

a · Retention: defaults and recommendations

Default behavior: nothing expires on its own. Rows stay in the school's Sheet until someone deletes them; device-local records stay in the browser until erased or until the browser's own site-data policies clear them.

Recommendations:

b · Deletion procedures

Sheet rows (synced records)
The school deletes them — the rows are the school's records, in the school's Sheet, and any Sheet editor can delete them at any time: select the rows, right-click, Delete rows. For a whole-year purge, export first if your records schedule requires it, then delete the data rows (keep the header row — the script expects it). Deletion in the Sheet is subject to Google's own version history; see section g.
Device localStorage (the browser's own records)
The on-page Erase button clears what the app stores in that browser. A fuller sweep is the browser's site-data clear: Settings › Privacy › Clear browsing data (choose "Cookies and site data" for architectureofgrace.org). On managed devices, IT can force this — see section d.
What the founder can delete
Nothing — because he holds nothing. There is no operator copy to request deletion of. A deletion request sent to the founder can only be answered with: delete the rows in your own Sheet, and erase the device. That is not a limitation of the deletion path; it is the deletion path.

c · Parent records requests

The request goes to the school — the school is the records custodian, and the ordinary FERPA request path applies. The founder cannot fulfill a records request because he has no records.

How a school produces a student's rows:

  1. Open the Sheet and use Data › Create a filter on the student-code column; filter to the student's code (from your roster mapping).
  2. Copy the visible rows into a new Sheet or document, or print the filtered view (File › Print prints what the filter shows).
  3. Check each instrument's tab — home check-ins, daily check-ins, and reflections land in separate tabs, and a complete response covers all of them.
  4. Include the school's explanation of what the domain scores mean; a bare number is not a meaningful disclosure to a parent.

Records on a classroom device (anything not synced) can be shown to the parent from the device itself, or printed with the app's own print views.

d · Shared devices

The rule for any shared device: end the session with the on-page Erase button, so the next student does not inherit the last student's work. Build it into the routine the way you build in logging out.

Managed Chromebooks: the cleaner answer is policy, not habit. Either run students in ephemeral profiles (all site data evaporates at sign-out) or use the admin console to force site-data clearing for architectureofgrace.org at session end. Either policy makes the erase automatic — the button remains as the in-lesson control.

Note the trade: a device that clears at sign-out keeps no local history, so anything the school wants longitudinally must be synced before the session ends. That is the intended division — the Sheet is the record, the device is the workspace.

e · Teacher departure runbook

The prevention is worth more than the cure: the Sheet should live in an organization-owned account from day one — a role account or the district's admin account, not a personal teacher account. If it already does, a teacher's departure barely touches this system. If it does not, run this now, not at departure:

  1. Transfer Sheet ownership to the organization account (Share › transfer ownership), or copy the Sheet into the organization account if transfer is not possible across account types.
  2. Redeploy or re-key the Apps Script. The Web App executes as its deploying user; a deployment made by the departing teacher should be replaced by one deployed from the organization account (the setup guide's steps 2–4, run once in the new account's copy).
  3. Rotate the write key — change BACKEND_AUTH_KEY in Script properties. Old links stop working the moment you do; that is the feature. Any link the departing teacher generated, wherever it now lives, is dead.
  4. Re-issue classroom links from a dashboard connected to the new deployment and new key, through your own channels.
  5. Rotate the pull key (ADMIN_PULL_KEY) as well if the departing teacher held it, and re-enter it on the staff computers that read results.
  6. Record who now holds the admin pull key — write the names down where the district AoG lead and IT can find them. An unrecorded key holder is the gap every later audit falls into.

f · Key custody and rotation

Name a district AoG lead. One named person holds the key inventory: which Sheets exist, who owns each, who holds each write key and each pull key, and when each was last rotated. Custody that belongs to "the team" belongs to no one.

Treat every classroom link like the key itself. Classroom links carry the write key inside them — that is how a student Chromebook posts without signing in. It also means the key lands everywhere links land: browser history, chat logs, email threads, and LMS link stores. So:

g · Audit reality

Be clear-eyed about what a Google Sheet is: rows are editable by anyone with editor access to the Sheet. There is no append-only ledger, and a determined editor can alter or delete records without the app knowing. The honest mitigations: