Backend on 8000, frontend on 5173, map in browser.
One request through frontend, backend, and database.
3+ investigation areas, current state, target state, sequenced.
Bugs and improvements with area labels. Our backlog.
Your project context file. We review these today.
[Instructor: fill from LLM digest. What did multiple students identify?]
[Instructor: which investigation areas did nobody explore?]
[Instructor: where did students disagree on priority order?]
[Instructor: something only one student caught that everyone should hear.]
GitHub Actions runs flake8 on every pull request. Red X means it cannot merge. The linting student (#24) sets this up first.
One student reviews every PR. Check: does the code match the stated intent? Post at least one substantive comment.
A student runs a structured adversarial review in a fresh LLM session and posts findings as PR comments.
One or two sentences. What does this PR do and why.
Bullet list of what you actually changed.
How you verified it works.
Alternatives you considered and why you chose this.
CI passes, reviewer assigned, issue linked.
"See diff" is not a useful PR description. The template exists for a reason.
The production version. You never push directly to main. Only merged from dev at the end of week 6.
Where feature branches merge. Always branch from an up-to-date dev. Pull before you branch.
One branch per issue. Name it after the issue: feature/issue-24-linting
Keep PRs under ~200 lines of changed code (non-test). Smaller PRs get reviewed faster and have fewer bugs.
Imperative mood ("Add", not "Added"). Reference issue numbers. One logical change per commit.
When in doubt at any point: git status
Skips the thinking. The tool writes generic tests that miss the real risks.
You think about the problem. The tool helps you think more completely. You write the tests.
Ask the tool: "What edge cases should I consider for a function that checks household income against a size-dependent threshold?"
$10,000 for single, $15,000 for 2-person, $25,000 for 3+. What happens at the boundary?
Is this possible in the data model? If not, should the function guard against it?
Census data can have negative values for certain income categories. How does the function handle it?
Your job: evaluate which edge cases are real risks given the data model, and write tests for those.
Code that works but that nobody can maintain. You skipped the engineering: no spec, no review, no decision record. When it breaks, you start over.
Spec the work, shape the output, review critically, document the decision. The agent handles syntax; you handle judgment.
Remember the focus shift from Week 1: review pipelines, git workflow, architecture decision records, iterative coding. Everything you learned today is in the engineering column.
Many CLI agents have built-in planning features that create a structured plan before making changes. Same principle as the iterative pattern: start with intent, get a plan, review it critically, then execute.
We'll use structured planning hands-on in Week 3. For now, just know it exists and that it follows the same "review before accepting" principle.
Short description of the decision. Status: proposed, accepted, or superseded.
What prompted the decision. The problem or constraint you were responding to.
What you chose and why. Be specific.
What else you considered and why you rejected it.
ADR template is at templates/adr-template.md. The linting student writes the first one this week.
That's an ADR. Short, specific, and it answers the question future you will have.
Add flake8 to dev deps, create config (ignore E501, max-complexity 10), add GitHub Actions CI workflow. Ship CI first so everyone benefits. Write an ADR for your choices.
Three students, one module each. Start from function signatures and work inward. First PR should be small and focused.
Set up pytest. Write tests for has_resources(), get_monthly_trip_count(), get_color(). Test boundary values. Use edge case brainstorming pattern from earlier.
CI + peer review on every PR. Evaluating correctness, not just syntax.
Branches, commits, PRs. The workflow that keeps a team in sync.
The agent drafts, you refine. First output is never the final answer.
ADRs: documenting not just what you chose, but why.
All four are in the “engineering column” from Week 1. The agent handles syntax. You handle these.
Next week: LLM adversarial review and structured planning for feature work.