Skip to main content

Sprint 1 evidence

Historical Sprint 1 release evidence

This index preserves evidence for the Sprint 1 location/exploration release. It does not describe the full current Basic release. Use the testing strategy for repository-wide procedures and the later sprint evidence pages for their dated results.

This index supports #20. A linked procedure is evidence of a method, not evidence that its unrecorded manual steps passed.

Requirement / claimEvidenceSourceStatusManual follow-up
Release scope and checklistRecorded branch validation; testing strategy#20Repository procedureLink final reviewed evidence and post-merge runs from #20.
Deterministic integrated journeyE2E design, apps/web/playwright/sprint1.deterministic.spec.ts, npm run test:e2e:sprint1#50, merged PR #136Automated/localAttach two consecutive release-branch results; CI enablement remains a separate prerequisite.
Protected API returns 401apps/api/tests/authentication.integration.test.ts, events.integration.test.ts, cors.integration.test.ts; public GET /api/v1/events smoke#20, #45Automated/local and public smokeRepeat after merge and record timestamp/SHA.
Event discovery and PostGIS eligibilityapps/api/tests/event-database.integration.test.ts; deterministic E2E#20, #48, #50Automated/localProduction DB release evidence remains operator-run.
Reachable, unreachable, denied, retry, API failureapps/web/tests/explore-page.test.tsx; deterministic E2E for reachable, unreachable, denied#20, #50Automated/localAttach deployed/manual outcomes.
Map-independent text fallbackapps/web/tests/exploration.test.tsx; trust boundaries#20, #44Automated/localAttach deployed browser map-failure evidence.
Field calibrationField evidence and player journeyClosed #43, merged protocol PR #57Gitea closed; repository results unrecordedMANUAL — link/review the actual external #43 evidence, confirm threshold interpretation, and update the repository record if appropriate or record the discrepancy as follow-up work before closing #20.
Accessible/mobile journeyExplore semantic tests and responsive implementation; #44 dependency#44Partial automated evidenceMANUAL — attach/link reviewed keyboard, focus, 360/390/768/desktop evidence before closing #20.
Auth0, CORS, and location privacyAuth/API/CORS tests; deployed boundary review; trust boundaries; deployment guide#45Public deployed and automated evidenceCanonical allowed-origin, denied-origin, unauthenticated, invalid-token, custom-issuer, safe-error, authority, and location-storage checks are recorded. A signed-in production browser and Azure log inspection remain operator-run.
Repeatable database releaseDatabase release procedure#47, merged PR #53EVIDENCE FROM DEPENDENCYOperator approval and sanitised production execution evidence are required.
PostGIS recoveryMigration recovery checks, event-database.integration.test.ts#48, merged PR #54Automated/local rehearsal designMANUAL — attach/link reviewed sanitised #48 result from #20.
Visual identity and presentationCampus seal/branding history and current UI#51, PR #55, PR #83, PR #86, PR #90EVIDENCE FROM DEPENDENCYLink external screenshots/review if they are required release evidence.
Public Web/API deploymentAzure guide, .gitea/workflows/ci.yml, public read-only smoke#17, #20Public availability can be checkedAuthenticated Web-to-API journey and release-SHA deployment proof remain manual/post-merge.
Public documentationapps/docs, .gitea/workflows/docs-deploy.yml, CI guide, public docs site#15, PR #91, PR #95Public site existsVerify this new package after its main deployment.
CI and deployment.gitea/workflows/pr-validation.yml, ci.yml, docs-deploy.yml#17, #20Workflow definitionsMANUAL — link successful PR and exact main/release-SHA runs after merge.
Four contributorsgit shortlog -sne --all and commit history#20Four apparent names, multiple aliasesMANUAL — map aliases to the four humans and review meaningful non-merge commits.
Severe-defect gateCurrent Gitea issue list#20Not available from repository historyMANUAL — confirm no open P0/P1/severe issue immediately before release closure.
Decisions and limitationsKnown limitations, Auth0 integration, map architecture, and location documents#20 and linked dependenciesRepository evidenceRecord any release finding as a linked defect/decision.
Meetings, ceremonies, and screenshotsInitial client meeting record, Sprint 1 Scrum records, and the five supplied planning/Daily Scrum imagesTeam-confirmed recollection, repository history, the 17 August scheduling email, and supplied imagesMixed retrospective and contemporaneous evidenceThe client meeting, Sprint Review, and Sprint Retrospective records are reconstructed rather than transcripts. Retain contemporaneous notes, dated feedback, and real artefacts for later interactions and ceremonies.
AI attributionDeclarations in changed release documents and eventual commit trailerCourse policy and #20Repository declarationReviewer confirms final declaration matches material tools/models.

Public deployment locations​

Record release-specific results in #20 rather than editing historical claims into this index. Evidence must exclude credentials, complete tokens, connection strings, and unnecessary precise coordinates.

Recorded branch validation — August 2026​

The historical release procedure recorded two consecutive npm run test:e2e:sprint1 runs passing, two tests each. The complete 11-file database selection passed 106 tests on disposable temporary databases. These are local results for the location/exploration slice, not the later Basic release or production database operations. The source does not identify the exact branch SHA for those local executions.

The Windows formatting baseline was recorded separately: repository-wide format:check reported 276 unchanged files before the documentation edit and 273 afterwards; changed-file Prettier checks passed. This is a historical baseline, not a statement about the current checkout.

Public smoke — 18 August 2026​

These read-only checks establish public availability at validation time; they are not the required post-merge release-SHA checks.

URL/pathResultSafe interpretation
API /health200, JSONAPI health endpoint responded.
API /api/v1/200, JSONVersioned API root responded.
API /api/v1/events, no bearer token401, JSONProtected event discovery rejected an unauthenticated request.
Web /, /about, /explore200, HTML for eachPublic SPA and direct routes were served.
Documentation /200, HTMLPublic documentation site was available.
Documentation /docs/testing/sprint-1-deterministic-e2e200, HTMLExisting Sprint 1 E2E documentation was deployed.

Recorded #20 acceptance outcomes​

#CriterionStatusEvidence or remaining gate
1Deployed Web communicates with deployed APIMANUAL REQUIREDSeparate public Web/API availability passed, but a production Auth0 session and sanitised browser network evidence are required.
2Authenticated player completes target journeyMANUAL REQUIREDFollow the deployed player journey below with a safe test player.
3Unauthenticated protected API request returns 401PASS — deployed/publicPublic GET /api/v1/events returned 401; API authentication/event/CORS integration tests also cover it.
4Seeded event loads from PostgreSQL/PostGISPASS — automated/localevent-database.integration.test.ts and two deterministic E2E runs exercise the disposable PostGIS database. Production seed evidence remains manual.
5Reachable and unreachable claims differ visiblyPASS — automated/localExplore component tests and deterministic E2E assert distinct text and real API/PostGIS outcomes.
6Permission denial is usablePASS — automated/localExplore component test and deterministic E2E retain event discovery and show an explanation.
7Poor/ambiguous accuracy gives safe retryPASS — automated/localExplore and API event integration tests assert location_accuracy and stale/future retry states. Gitea #43 is closed, but its repository field-test record has no real-device results; that evidence discrepancy remains a #20 closure gate.
8Map has usable text fallbackPASS — automated/localexploration.test.tsx keeps the event list/actions available on provider failure and timeout. Manual deployed visual evidence remains required.
9Public documentation is availablePASS — deployed/publicRoot and existing deterministic-E2E route returned 200; this new package requires post-merge deployment verification.
10Deterministic E2E passesPASS — automated/localTwo consecutive npm run test:e2e:sprint1 runs passed, 2 tests each.
11Main CI and deployment checks passMANUAL REQUIREDCannot pass before merge; link exact main validation and triggered deployment runs afterward.
12No known severe defect remains openMANUAL REQUIREDConfirm current Gitea has no open P0/P1/severe blocker immediately before closure.
13Four members have meaningful version-control contributionsMANUAL REQUIREDGit history shows commits under Kevin, Tyron, Uzair, and Caleb names, with multiple aliases; a team reviewer must confirm identity mapping and meaningful contribution.
14Sprint evidence is organised and linkedMANUAL REQUIREDThis package organises repository evidence, but reviewed external screenshots, recordings, meetings, dependency attachments, and final run links still need to be added to #20.
15AI use is attributed under course policyPASS — automated/localChanged submission-facing release documents name ChatGPT-Web[GPT-5.6 Sol] and Codex[GPT-5]; final commit needs the matching trailer.

The demonstrated scope was sign-in, event discovery through map or list, and server-authoritative reachable/unreachable/retry results. Challenge, cards, decks, battles, and Author publication were outside that Sprint 1 target. Public route availability did not establish an authenticated deployed journey. Manual acceptance, exact post-merge release/CI evidence, field outcomes, team identity/contribution review, and supporting attachments remained open in this record. Current validation uses the testing strategy.

Authentication and privacy​

Recorded review: 22 August 2026, 21:06 SAST; repository baseline 719cd4b. The deployed SHA was not exposed. Missing and synthetic-invalid tokens returned safe 401 responses, canonical-origin preflight returned 204, and unapproved origins received no API allow-origin header. No release-blocking defect was found within these tested public boundaries.

Signed-in production storage/console checks and Azure log inspection were still operator-run gaps, not passes. The full repository record preserves the checks and privacy limits; this was not a penetration test.

On-campus field evidence​

The Sprint 1 protocol was delivered in PR #57, but its six real-device runs have no recorded outcomes. The recorded closed status of #43 does not establish field calibration. Radius, freshness and accuracy thresholds were provisional; no campus pass is claimed.

The repository protocol preserves the unfilled results. Its one-shot browser procedure is historical; use the location journey and eligibility rules for current behaviour.

Known limitations​

These limitations apply only to the Sprint 1 location/exploration release validated by #20. They are not a list of later-sprint feature gaps.

LimitationClassification and release treatment
Browser geolocation is an untrusted claimA device reading can be inaccurate, stale, manipulated, or unrelated to physical presence. The UI says “reported location”; the API validates the claim and PostGIS remains authoritative, but this is not tamper-proof presence proof.
Location thresholds remain provisionalGitea #43 is closed, but the repository field-test record still contains no recorded real-device campus results. Before #20 closes, link and review the actual external #43 evidence, confirm the seeded 75 m radius, two-minute freshness value, and accuracy-envelope interpretation, then update the repository record if appropriate or record the discrepancy as follow-up work.
Poor accuracy can legitimately return retryNear a boundary, the accuracy envelope may prevent a safe reachable/unreachable result. The player must receive a fresh retry action; repeated retries under field conditions should be recorded as a defect or calibration input, not overridden in the browser.
Live map presentation depends on MapboxProvider, token, style, tile, WebGL, or network failure can remove the visual map. Event information and reachability actions remain available in the text list and must be checked manually on the deployed build.
Auth0, Mapbox, Neon, Azure, and Cloudflare are external servicesTheir availability and configuration are outside the application process. Local deterministic tests control Auth0/Mapbox while keeping Fastify/PostGIS real; public and authenticated deployment checks are still required per release.
Deterministic E2E is not in Gitea ActionsThe runner does not yet have an established dedicated disposable TEST_DATABASE_URL and reliable Chromium-capable image. The suite must be run twice locally; it must not be enabled until both safety/reliability prerequisites exist.
Location retention remains unresolvedThe current Web sends a one-shot claim and does not build location history. The final retention policy remains an open privacy decision, so evidence must not assume permanent exact-coordinate storage is required or approved.
Authenticated deployment privacy evidence is operator-runPublic authentication and CORS checks plus automated storage/logging regressions are recorded in the deployed boundary review. A real signed-in production browser and Azure log inspection still require a trusted operator; evidence must never include tokens or precise coordinates.
Automated accessibility is incomplete evidenceSemantic tests cover text, alerts/status, action names, and map independence. Keyboard, focus, touch, responsive layout, reduced motion, and screen-reader quality still require reviewed manual evidence.
Production database release is operator-controlledGitea deployment does not migrate or seed production. The approved release procedure and recovery rehearsal must be executed/reviewed with sanitised evidence; local integration results are not production proof.
Current issue state is not encoded in GitPassing tests cannot prove that no severe defect is open. A current Gitea P0/P1/severe-defect check is a mandatory release gate.

No severe application defect was established by the repository-side validation document itself. That statement is not a substitute for the current Gitea gate or the outstanding manual evidence above.

AI declaration​

This document was planned and reviewed with assistance from ChatGPT-Web[GPT-5.6 Sol] and generated and edited with assistance from Codex[GPT-5] and Codex-CLI[GPT-5.6 Sol]. The historical-status notice was added with assistance from Codex-CLI[GPT-5].

Historical release outcomes consolidated with assistance from Codex[GPT-6], retaining original ChatGPT-Web[GPT-5.6 Sol], Codex[GPT-5], and Codex-CLI[GPT-5] attribution and evidence boundaries.

Public evidence consolidated with assistance from Codex[GPT-6]. Historical results, source revisions, original attributions, and acceptance limits are preserved; no checks were rerun for this consolidation.