Architecture Constitution
Five rules, non-negotiable across every team's pipeline this trimester. Every one of them exists because a TR2 team lost real time to the mistake it prevents. Read this before your first commit โ not after your first outage.
The Rules
Not for a "quick" API proxy, not for a webhook relay, not for anything. This was tried and abandoned in TR2 โ the free-tier limits and cold-start behaviour made it unreliable as a dependency for anything graded.
Anything that needs to sync across devices or across teammates โ sprint data, scores, logs โ gets written through the GitHub API (Contents endpoint or a committed JSON file), not browser-local storage.
If your dashboard is client-side JavaScript running in a browser, it cannot hold a secret. Any private-repo data it needs must be published by a script (a GitHub Action, a scheduled job) to a public file first, and the dashboard reads that file.
main-pipeline.yml.
Whatever your team's automated pipeline is called internally, the GitHub Actions workflow file that runs it is named main-pipeline.yml.
python-checks, Auto Prediction, Update Market Data...), which made "is your pipeline actually running" impossible to check at a glance across five teams. One name, one place to look.Add an explicit guard step: after your pipeline runs, check that new data was actually committed (a changed file, a new row, a new timestamp) โ don't just trust that the job exiting with code 0 means it worked.
What This Means Day-to-Day
- Before you add any new service to your pipeline, ask: "does this route around GitHub as the datastore?" If yes, don't.
- Before your dashboard fetches anything, ask: "is this path public, or would this call fail with no token?" If it would fail, publish the data first.
- Name your CI file
main-pipeline.ymlfrom the very first commit โ renaming it later just means old runs vanish from the history you can point to. - Your Sprint 2 submission should already include an output-verification step, not bolt one on later.