Skip to content

Agent/issue 6 - #20

Merged
hsinatfootprintai merged 2 commits into
mainfrom
agent/issue-6
Oct 23, 2026
Merged

hsinatfootprintai merged 2 commits into
mainfrom
agent/issue-6

Conversation

@hsinatfootprintai

Copy link
Copy Markdown
Contributor

Closes #6.

S0: contract first. scan.proto and the buf wiring, generated Go / TS / OpenAPI / JSON Schema outputs, a stub ScanService that returns a canned report, the touchstone scan <url> CLI, and the CI workflow.

Produced by the coding agent on a member's box, then landed by hand: the commits were re-authored to a GitHub noreply identity, and the workflow file is here because the platform never publishes .github paths.

Not yet verified: GitHub Actions has never run on this. This PR is its first run.
Known follow-up: no package-lock.json is committed, so CI uses npm install --no-package-lock. Commit a lockfile and switch to npm ci.

hsinatfootprintai and others added 2 commits October 23, 2026 18:09
…terfaces

Add proto/touchstone/v1/scan.proto matching the design's Contracts section
verbatim, plus buf.yaml/buf.gen.yaml wiring buf generate to produce the Go,
TypeScript (protobuf-es), OpenAPI and JSON Schema outputs it names. Add the
fetch.Fetcher, vuln.Source, vuln.Enricher, repo.Forge and
pipeline.EvidenceSource interfaces with in-memory fakes and unit tests, so
later slices can be written and tested against stable seams.

This sandbox has no go/node/buf/protoc toolchain and no way to install one
(no sudo, outbound installs beyond git are blocked), so `buf generate`
could not actually be run here: gen/, web/src/gen/, openapi/ and schema/
are intentionally left uncommitted rather than hand-faking generated
output. The stub ScanService and `touchstone scan` CLI from the issue's
AC depend on those generated types and are left for a follow-up with the
real toolchain. Tests could not be run locally for the same reason.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…, CI gates

Commit the buf-generated Go, TypeScript (protobuf-es, now target=ts with
include_imports so google/api annotations resolve), OpenAPI and JSON Schema
outputs, with schema/scan-report.v1.json as the published ScanReport schema.
buf.gen.yaml uses clean: true and buf.lock pins googleapis, so `make
generate` is reproducible and CI fails on a regeneration diff.

Add internal/service.Stub, a ScanService returning a canned report, and
cmd/touchstone `scan <url>` printing it as protojson. The CLI test
validates the output against the generated JSON Schema and checks it
against testdata/report.golden.json, which web/src/report.test.ts decodes
with fromJson(ScanReportSchema, ...) so Go/TS drift fails a test.

CI (.github/workflows/ci.yml) runs go vet, staticcheck, go test, buf lint,
buf breaking (skipped while main has no buf module), the generated-code
check, tsc --noEmit and vitest run.

Closes #6

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@hsinatfootprintai
hsinatfootprintai merged commit 9fe95d8 into main Oct 23, 2026
3 checks passed
@hsinatfootprintai
hsinatfootprintai deleted the agent/issue-6 branch October 27, 2026 06:42
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.

[S0] Contract first: scan.proto, generated Go/TS/OpenAPI/JSON Schema, stub ScanService, CI gates

1 participant