What to build
Add a `verify_url` string field to the `Verification` struct in the report schema. This field holds the canonical URL a reader (recruiter, hiring manager) visits to verify the report — pre-filled with repo and subject so they don't have to type anything.
Populate it in `CIVerification()` and `GitLabVerification()` from the repo and subject. Add a package-level domain constant `https://grkanitz.github.io/CodeRepute/verify/\` (to be updated to `https://coderepute.dev/verify/\` when the domain is registered).
Also update `Attestation.VerifyCommand` to reference `report.html` instead of `report.json` — the attested artifact is changing in a follow-up slice.
The subject username is not available inside `CIVerification()` today (it only reads env vars). Pass it in as a parameter, or add it to the `Build()` call that sets the verification block — whichever is the cleaner fit given the existing call sites in `cmd/coderepute/main.go`.
Acceptance criteria
Blocked by
None — can start immediately.
What to build
Add a `verify_url` string field to the `Verification` struct in the report schema. This field holds the canonical URL a reader (recruiter, hiring manager) visits to verify the report — pre-filled with repo and subject so they don't have to type anything.
Populate it in `CIVerification()` and `GitLabVerification()` from the repo and subject. Add a package-level domain constant `https://grkanitz.github.io/CodeRepute/verify/\` (to be updated to `https://coderepute.dev/verify/\` when the domain is registered).
Also update `Attestation.VerifyCommand` to reference `report.html` instead of `report.json` — the attested artifact is changing in a follow-up slice.
The subject username is not available inside `CIVerification()` today (it only reads env vars). Pass it in as a parameter, or add it to the `Build()` call that sets the verification block — whichever is the cleaner fit given the existing call sites in `cmd/coderepute/main.go`.
Acceptance criteria
Blocked by
None — can start immediately.