You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit c005529
Browse filesBrowse the repository at this point in the historyBrowse files
Copy file name to clipboardExpand all lines: .agents/skills/pre-production-checklist/SKILL.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -54,7 +54,7 @@ This gate passes only when production routes are directly crawlable with consist
54
54
Run this gate whenever the officer roster, a form-response snapshot, profile links, bios, or officer-data build logic changes.
55
55
56
56
1. Run `npm test` and `npm run validate:officers`.
57
-
2. Confirm `src/data/officersFa26Roster.json` is the only authority for cohort membership, roles, order, stable IDs, and fallback portraits.
57
+
2. Confirm `src/data/officersFa26Roster.json` is the only authority for cohort membership, roles, order, stable IDs, and reviewed fallback public content. For manual submissions received outside Notion, publish only the same allowlisted public content fields and never fabricate a Notion provenance ID.
58
58
3. Treat Notion as private intake. Use `officers:notion:dry-run` or `officers:notion:check` before `officers:notion:write`, then inspect the resulting Git diff. Confirm the sync did not commit, push, deploy, or write back to Notion.
59
59
4. Confirm `src/data/officerProfilesFa26.json` contains the real Notion response page ID for provenance and only the allowlisted public fields: source ID, submission time, full and preferred names, headshot path, bio, personal website, LinkedIn, GitHub, and ORCID. Confirm upstream database/data-source IDs and the intake window are absent from this browser-facing snapshot.
60
60
5. Search the diff for email addresses, phone numbers, birthdays, scheduling information, internal notes, and unknown form properties. None may enter Git, logs, or workflow artifacts.
-`src/data/officersFa26Roster.json` owns cohort membership, roles, order, stable IDs, and reviewed fallback public content, including submissions received outside Notion.
20
20
-`src/data/officerProfilesFa26.json` is a reviewed, public-only snapshot of in-window officer form responses.
21
21
-`scripts/lib/officer-profile-cohorts.js` owns operational file paths and the explicit intake window; upstream database identifiers stay in protected environment secrets and out of the client bundle.
22
22
-`src/data/compileOfficerDirectory.js` matches responses to the roster, keeps the newest nonblank public fields, normalizes links, and ignores unmatched people.
@@ -34,7 +34,9 @@ Each profile record in the public snapshot is limited to provenance ID,
34
34
submission time, full and preferred names, headshot path, bio, personal
35
35
website, LinkedIn, GitHub, and ORCID. Never copy email, phone number, birthday,
36
36
scheduling data, another private form field, or an upstream database identifier
37
-
into the snapshot. Run:
37
+
into the snapshot or roster. A manually reviewed submission received outside
38
+
Notion may populate only those same publishable content fields on the matching
39
+
approved roster entry; it must not use a fabricated Notion provenance ID. Run:
Copy file name to clipboardExpand all lines: scripts/README.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -23,6 +23,7 @@ Duplicate form responses are supported. `compileOfficerDirectory.js` takes the n
23
23
-`write` refuses to overwrite dirty managed files, fingerprints the snapshot and portrait tree before network work, and rechecks that state immediately before committing. It validates a complete candidate in temporary storage before atomically replacing the snapshot or a portrait.
24
24
- Repeating a command against unchanged Notion content is idempotent. Portraits are streamed through a 15 MB bound, decoded, metadata-stripped, and normalized before comparison; expiring attachment query strings do not create a diff, while replacing an attachment on an existing response does.
25
25
- The roster remains authoritative for membership, roles, order, stable IDs, and fallback portraits. Form answers may enrich only matched officers.
26
+
- A manually reviewed submission received outside Notion may populate the same public content fields directly on the matching roster entry. Do not fabricate a Notion page ID; exclude all non-public message and scheduling data.
26
27
27
28
The explicit cohort window and managed paths live in
28
29
`scripts/lib/officer-profile-cohorts.js`. The private upstream database ID is
"bio": "Hiii I'm a junior studying Chemical Biology minoring in Data Science and I love exploring wet lab+dry lab research with an interest in ML for drug development/biomedical analysis and biotech applications. In my free time, I love running, exploring neighborhoods in the area, playing guitar, going to plant nurseries, and hanging out with my friends!",
0 commit comments