Skip to content

feat: verified share card — attested card.svg/card.png artifact (#50) - #63

Merged
gkanitz merged 2 commits into
mainfrom
agent/issue-50
Jul 6, 2026
Merged

feat: verified share card — attested card.svg/card.png artifact (#50)#63
gkanitz merged 2 commits into
mainfrom
agent/issue-50

Conversation

@gkanitz

@gkanitz gkanitz commented Jul 6, 2026

Copy link
Copy Markdown
Owner

Closes #50

Implemented by the autonomous loop. Ran out of rounds (2 rejections) because QAA's own prompt hardcodes npx tsc --noEmit / npx tsx --test as "the deterministic gate results" - commands that always fail with "npx not found" in this Go-only sandbox, triggering QAA's own automatic-CHANGES_REQUESTED-on-gate-failure rule regardless of the actual (Go) gates, which were genuinely green. I've filed this as a real bug in collaudo-orchestrator-core's buildQaaPrompt (not vehicle-configurable gate commands) rather than working around it silently.

Verified directly, independent of the confused QAA rounds:

  • go build ./..., go vet ./..., go test ./..., gofmt -l . all pass cleanly on the final commit.
  • The two symbols QAA's non-gate-related concern flagged (verifyFallbackURL, fixturePath) are both properly defined (the former in this diff's own render.go, the latter a pre-existing test constant in render_test.go reused as-is) - proven by the build itself succeeding, not just by inspection.
  • Diff scope matches the issue exactly: card rendering + tests + goldens in render/, CI/action wiring, README table update, CLI wiring in main.go.

gkanitz and others added 2 commits July 6, 2026 00:28
Implementation of the verified share card feature: a static 1200x627 SVG
card with four headline metrics, QR verify link, and Sigstore attestation
mark, plus CI pipeline for PNG conversion and dual attestation.

Files changed:
- render/render.go: added CardSVG function with helpers
  (orgContextLabel, coverageWindowStr, prsMergedStr, reviewsGivenStr,
   medianTTMStr, activeDaysStr, qrSVGForURL, htmlEscape)
- render/card_test.go: all 9 acceptance criteria tested via golden-file
  and structural tests (full/sparse/unverified golden SVGs, multi-owner,
  QR payload, self-containment, prohibited strings, dimensions,
  action.yml wire check, four-metrics-only gate, attested-mark gates)
- render/testdata/: three golden SVG references
- cmd/coderepute/main.go: writeReport now also writes card.svg
- action.yml: added card.png screenshot step (headless Chromium),
  card-png output, attestation includes card.png
- .github/workflows/coderepute-report.yml: card-png output
- README.md: report output table includes card.svg/card.png rows;
  verification instructions include card.png

Design decisions:
- QR code reuses existing go-qrcode library (same pattern as
  verifyQRSVG template func) with a refactored standalone helper
- Four headline metrics: PRs merged, reviews given, median TTM,
  active days -- exactly the fixed four, no invented values
- Missing metrics render as em dash; attestation mark only when
  verified; single-owner shows org name, multi-owner shows 'N orgs'
- SVG uses system font stack only, no external references
- The verification badge is the sole indicator of attested vs
  unverified (QA red flag: no Sigstore mark on unverified reports)

Co-Authored-By: Claude <noreply@anthropic.com>
…- issue 50 slice F

The previous commit left card_test.go with misaligned comments and
no trailing newline. gofmt -w fixes both; no semantic changes.

Co-Authored-By: Claude <noreply@anthropic.com>
@gkanitz
gkanitz merged commit 074ce4c into main Jul 6, 2026
1 check passed
@gkanitz
gkanitz deleted the agent/issue-50 branch July 6, 2026 00:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat: verified share card — attested card.svg/card.png artifact

1 participant