Week 3 Lab — Team Norms and Evaluation Methodology
CSIC30216 · Fall 2026
Goal
Establish team norms and shared AI guidelines before building begins, and draft an evaluation plan that shapes your design decisions from the start.
Working style: Project teams throughout · Total time: ~70 minutes
Part 1 — Repository Setup (15 minutes)
The team works through this together — TA-guided, whole class at the same pace. Follow this order exactly. It is not the same order a quick summary might suggest, and doing it out of order can lock your team out of its own setup (see the note at Step 5).
Before Step 1 — Don't Have a GitHub Account Yet?
If you've never used GitHub before, do this first — ideally before class, since it only takes a few minutes but you don't want to be doing it while your team waits on you.
- Go to github.com and click Sign up (top right).
- Enter an email address, create a password, and choose a username. Pick a username you're fine having attached to your work for the rest of the semester and beyond — it'll show up on every commit and PR.
- Verify your email address (check your inbox for a confirmation link/code from GitHub).
-
Use the same email here that you'll use in Step 2 below (
git config --global user.email) — keeping them consistent avoids confusing mismatches later between what git logs locally and what GitHub shows online.
Before Step 1 — One-Time Git Setup
If anyone on your team has never used git from the command line before, do this first. It only needs to be done once per computer, not once per repository.
-
Open a terminal (Terminal on Mac/Linux, Git Bash or PowerShell on Windows) and check whether
git is already installed:
If you see a version number, you're set. If you get an error, install git from git-scm.com/downloads and re-run the check.git --version -
Tell git who you are — also once per computer:
git config --global user.name "Your Name" git config --global user.email "the-email-you-used-for-github@example.com" - The first time you push to GitHub from this computer, you'll likely be prompted to authenticate — usually a browser sign-in window, or a request for a personal access token. If this fails or looks confusing, flag a TA immediately rather than troubleshooting alone. It's a common first-time hiccup and much faster to fix with help than to debug solo.
Step 1 — Create the Repository
- One team member goes to github.com and clicks the + icon (top right) → New repository.
- Name it (use your team's naming convention from the course portal, if one is specified).
- Set visibility to Public.
- Check Add a README file — this gives you an initial commit to work from.
- Click Create repository.
Step 2 — Add Teammates as Collaborators
- Go to Settings → Collaborators and teams.
- Click Add people, and enter each teammate's GitHub username or the email tied to their GitHub account.
- Give each person Write access — not Admin. Admin stays with whoever set up the repo, unless your team decides otherwise.
- Each teammate needs to accept the invite (by email or GitHub notification) before they have access — tell everyone to check right away, since this can take a minute to arrive.
Step 3 — Clone the Repository to Your Computer
"Cloning" downloads a full local copy of the repo onto your computer, already connected to GitHub so you can push changes back later. Every team member does this individually — you each need your own local copy, not a shared one.
- On the repo's GitHub page, click the green Code button.
-
Make sure the HTTPS tab is selected, and copy the URL shown — it looks like
https://github.com/your-team/your-repo.git.
In your terminal, navigate to wherever you keep coding projects, then run:
git clone https://github.com/your-team/your-repo.git
cd your-repo
Step 4 — Add the PR Template and DECISIONS.md Before Turning On Branch Protection
Easiest done through the GitHub website directly, not your local clone.
- On the repo's main page, click Add file → Create new file.
-
For the filename, type
.github/PULL_REQUEST_TEMPLATE.mdexactly — typing the/creates the folder automatically. - Paste in the template:
## What this PR does
[One sentence]
## Decision (required if a significant choice was made)
Decision: [what was chosen]
Why: [what problem this solves or what alternative it beat]
Alternative rejected: [optional]
Led by: [name]
- Scroll down and commit directly to
main(this still works — branch protection isn't on yet). -
Repeat Add file → Create new file for
DECISIONS.md, with a first entry recording who the initial code steward is and why, in two sentences:
# Decisions Log
## 2026-09-21 — Initial code steward
**What:** [Name] is the initial code steward for the team.
**Why:** [one sentence — e.g. "volunteered," "has the most git experience so far," "assigned by team agreement"]
Back in your terminal, pull these new files into your local clone so everyone's copy is up to date:
git pull origin main
Step 5 — Now Enable Branch Protection on main
- Go to Settings → Branches → Add branch protection rule. GitHub may label this "Add rule" or present it under "Rulesets" depending on your account's UI version — the TA can help locate it if it's not where these steps say.
- Branch name pattern:
main. - Check Require a pull request before merging.
- Check Require approvals, set to 1 — this is what makes "code steward reviews and approves" (from lecture) an actual technical requirement, not just a norm.
- Click Create (or Save changes).
The TA walks the room and confirms this is done before any team moves on.
Step 6 — Practice the Real Workflow
Rather than just checking that protection works, everyone does one real practice PR — this doubles as your first hands-on rep with the workflow you'll use for the rest of the semester.
-
In your terminal, inside your cloned repo folder, create your own branch:
git checkout -b your-name-test -
Make a small, harmless change — for example, add your name to a new file:
echo "- Your Name" >> CONTRIBUTORS.md -
Stage, commit, and push your branch:
git add CONTRIBUTORS.md git commit -m "Add my name to CONTRIBUTORS.md" git push origin your-name-test
- On GitHub, you should see a banner suggesting you open a pull request from your new branch. Click Compare & pull request.
- Fill in the PR template your team added in Step 4, and click Create pull request.
-
Optional, if time allows — prove the rejection directly. Try pushing straight
to
maininstead of through a branch:
This should be rejected, with an error along the lines ofgit checkout main echo "test" >> CONTRIBUTORS.md git add CONTRIBUTORS.md git commit -m "direct push test" git push origin mainremote: error: GH006: Protected branch update failed. Exact wording varies slightly by GitHub version — a rejection of some kind is what you're looking for.
- Have one teammate — ideally the code steward — review and merge at least one of the team's practice PRs, so everyone also sees what a merge looks like from the reviewer's side.
- Do not move on until the TA has confirmed at least one successful practice PR merge for your team.
Part 2 — Draft AI Usage Guidelines (25 minutes)
The team works through this together. Produce a first draft using a simplified three-section template.
Section 1 — What AI tools we plan to use, and what we will use each for
A specific tool-to-task mapping, not "we will use Claude." Examples of the level of specificity to aim for:
- "We will use Claude Sonnet (via the API) for generating boilerplate CRUD endpoints and first-draft unit tests — not for anything touching authentication or payment logic, which a human writes from scratch."
- "We will use Claude Haiku for quick syntax checks and one-off debugging questions — not for code that gets merged to main without review."
- "We will use GitHub Copilot's inline autocomplete while typing — not as a substitute for writing the PR description or
DECISIONS.mdentry ourselves." - "We will use Claude to brainstorm and compare architecture options before we commit to a design — not to make the final call; that's a team discussion, recorded in
DECISIONS.md." - "We will use Claude to draft the first pass of docstrings and API documentation — a human always reviews and edits before it's merged."
- "We will use Claude to generate an initial test skeleton for a new module — a human adds edge cases and confirms coverage before it counts as done."
Section 2 — How we will document AI interactions
What goes in the prompt engineering log, and what goes in the collaboration log. Examples:
- "Every prompt used to generate code that ends up in the repo goes in the prompt engineering log: the prompt text, the model used, and what we kept vs. changed."
- "One-off debugging questions or syntax lookups don't need a log entry — only prompts that produced code, text, or decisions that ended up in the repo."
- "The PR description's 'what this PR does' field always names whether AI was involved, even in one sentence — it's not a copy of the full log entry, just a pointer to it."
- "If an AI suggestion changed our actual approach — for example, it proposed a different data model than we'd planned — that's a
DECISIONS.mdentry, not just a prompt log entry."
DECISIONS.md, PR description) each kind of AI interaction
belongs in. A guideline that just says "we'll log our AI use" doesn't tell anyone what counts as
"use." A decision is different from an interaction — it needs the reasoning to survive, not just
the transcript.
Section 3 — How we will handle disagreements about AI output quality
Who has final say, and what evidence is required. Examples:
- "If two engineers disagree about whether AI-generated code is good enough to merge, the code steward has final say — not whoever wrote the prompt, and not whoever has more experience."
- "Evidence required before a merge decision: passes the existing test suite, passes the PR review checklist, and can be explained by someone other than whoever generated it."
- "If the disagreement is about style or preference rather than correctness, we defer to the team's existing style guide and linter config rather than debating it case by case."
- "A vote is not evidence. If the team can't resolve it using the criteria above, the code steward's call is final, and gets one sentence in
DECISIONS.mdexplaining why."
Part 3 — Draft Evaluation Plan (25 minutes)
The team works through this together.
Problem Grounding (10 minutes)
Three questions:
- Who specifically has the collaboration problem you are addressing? Name a real type of person, not a generic "user."
- What do they currently do instead of your tool?
- What would be observably different about their collaboration if your tool worked?
Evaluation Plan Draft (15 minutes)
Four fields:
-
Success definition — "We will know our tool works if…", something observable
and measurable. If your tool uses AI, also state here what the AI decides versus what the
human decides — this shapes what "success" actually means. If the AI decides autonomously,
success has to include "the AI's decisions are correct." If a human stays in the loop, success
has to include "the AI's suggestions are useful enough to be worth the interruption." Those are
different things to measure, so name which one applies. If you haven't decided yet whether your
tool uses AI, write
TBD — to be determined by CP1for this part; that's an acceptable answer at this stage. - Target users — who you will test with, and how you will access them.
- Method — structured observation, pre/post survey, or brief interview: which one, and roughly when.
- Minimum evidence threshold — what is the smallest amount of evidence that would be convincing?
Grading Checklist (2%)
- Repository setup completed: branch protection verified, PR template added,
DECISIONS.mdcreated with an initial steward entry - Three-section draft guidelines completed
- Three problem-grounding questions answered with specificity
- All four evaluation plan fields completed, including the human-AI boundary question addressed within the success definition (or marked
TBD — to be determined by CP1) - Submit the link to your team's repo to E3 (week 3 lab), and fill it out on the team info spreadsheet