-
Notifications
You must be signed in to change notification settings - Fork 0
Refresh README messaging for TrustSignal discoverability #68
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -1,270 +1,167 @@ | ||||||||||||||||||||||||||||||||||||||
| # TrustSignal | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| [](https://github.com/trustsignal-dev/trustsignal/actions/workflows/ci.yml) | ||||||||||||||||||||||||||||||||||||||
| [](LICENSE) | ||||||||||||||||||||||||||||||||||||||
| [](https://www.typescriptlang.org/) | ||||||||||||||||||||||||||||||||||||||
| [](vitest.config.ts) | ||||||||||||||||||||||||||||||||||||||
| [](SECURITY_CHECKLIST.md) | ||||||||||||||||||||||||||||||||||||||
| [](https://trustsignal.dev) | ||||||||||||||||||||||||||||||||||||||
| [](https://trustsignal.dev/docs) | ||||||||||||||||||||||||||||||||||||||
| [](https://trustsignal.dev/#pilot-request) | ||||||||||||||||||||||||||||||||||||||
| [](mailto:info@trustsignal.dev) | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| Website: https://trustsignal.dev | ||||||||||||||||||||||||||||||||||||||
| **Evidence integrity infrastructure for compliance and audit workflows.** | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| TrustSignal is evidence integrity infrastructure for existing workflows. It acts as an integrity layer that returns signed verification receipts, verification signals, verifiable provenance metadata, and later verification capability without replacing the upstream system of record. | ||||||||||||||||||||||||||||||||||||||
| TrustSignal issues signed verification receipts so organizations can prove when evidence was created, where it came from, and whether it has changed. It adds an integrity layer to existing workflows without replacing the system of record. | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| ## Problem | ||||||||||||||||||||||||||||||||||||||
| → **[trustsignal.dev](https://trustsignal.dev)** · **[Documentation](https://trustsignal.dev/docs)** · **[Request a Pilot](https://trustsignal.dev/#pilot-request)** | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| High-stakes document and evidence workflows create an attack surface after collection, not just at intake. Once an artifact has been uploaded, reviewed, or approved, downstream teams still face risks such as tampered evidence, provenance loss, artifact substitution, and stale evidence that can no longer be verified later. | ||||||||||||||||||||||||||||||||||||||
| --- | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| Those risks matter in audit, compliance, partner-review, and trust-sensitive workflows because the evidence is often challenged after collection rather than at the moment it first entered the system. TrustSignal is designed for workflows where later auditability matters because the artifact, its provenance, or the surrounding workflow record may be questioned later. | ||||||||||||||||||||||||||||||||||||||
| ## The Problem | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| ## Verification Lifecycle | ||||||||||||||||||||||||||||||||||||||
| Compliance and audit teams rely on artifacts that pass through multiple systems. Without a durable integrity reference, provenance becomes difficult to validate during later review: | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| The canonical lifecycle diagram and trust-boundary view are documented in [docs/verification-lifecycle.md](/Users/christopher/Projects/trustsignal/docs/verification-lifecycle.md). | ||||||||||||||||||||||||||||||||||||||
| - Evidence files, exports, and screenshots can change after initial collection | ||||||||||||||||||||||||||||||||||||||
| - Weeks or months later, reviewers cannot easily prove where an artifact came from or when it was captured | ||||||||||||||||||||||||||||||||||||||
| - Audit readiness weakens without a reliable tamper-evident reference | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| TrustSignal accepts a verification request, returns verification signals, issues a signed verification receipt, and supports later verification against stored receipt state so downstream teams can detect artifact tampering, evidence provenance loss, or stale records during audit review. | ||||||||||||||||||||||||||||||||||||||
| --- | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| ## Demo | ||||||||||||||||||||||||||||||||||||||
| ## How TrustSignal Works | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| The fastest evaluator path is the local 5-minute developer trial: | ||||||||||||||||||||||||||||||||||||||
| Submit an artifact or artifact reference -> receive a signed verification receipt -> store it with the artifact -> verify again later when trust conditions matter. | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| TrustSignal provides: | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| - signed verification receipts | ||||||||||||||||||||||||||||||||||||||
| - verification signals | ||||||||||||||||||||||||||||||||||||||
| - verifiable provenance metadata | ||||||||||||||||||||||||||||||||||||||
| - later verification capability | ||||||||||||||||||||||||||||||||||||||
| - existing workflow integration through the public API boundary | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| ```bash | ||||||||||||||||||||||||||||||||||||||
| npm install | ||||||||||||||||||||||||||||||||||||||
| npm run demo | ||||||||||||||||||||||||||||||||||||||
| ``` | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| It shows the full lifecycle in one run: | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| 1. artifact intake | ||||||||||||||||||||||||||||||||||||||
| 2. verification result | ||||||||||||||||||||||||||||||||||||||
| 3. signed receipt issuance | ||||||||||||||||||||||||||||||||||||||
| 4. later verification | ||||||||||||||||||||||||||||||||||||||
| 5. tampered artifact mismatch detection | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| See [demo/README.md](/Users/christopher/Projects/trustsignal/demo/README.md). | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| ## Integration Model | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| Start here if you are evaluating the public verification lifecycle: | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| - [Evaluator quickstart](/Users/christopher/Projects/trustsignal/docs/partner-eval/quickstart.md) | ||||||||||||||||||||||||||||||||||||||
| - [API playground](/Users/christopher/Projects/trustsignal/docs/partner-eval/api-playground.md) | ||||||||||||||||||||||||||||||||||||||
| - [OpenAPI contract](/Users/christopher/Projects/trustsignal/openapi.yaml) | ||||||||||||||||||||||||||||||||||||||
| - [Postman collection](/Users/christopher/Projects/trustsignal/postman/TrustSignal.postman_collection.json) | ||||||||||||||||||||||||||||||||||||||
| - [Postman local environment](/Users/christopher/Projects/trustsignal/postman/TrustSignal.local.postman_environment.json) | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| Golden path: | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| 1. submit a verification request | ||||||||||||||||||||||||||||||||||||||
| 2. receive verification signals plus a signed verification receipt | ||||||||||||||||||||||||||||||||||||||
| 3. retrieve the stored receipt | ||||||||||||||||||||||||||||||||||||||
| 4. run later verification | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| ## Technical Details | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| The fastest path in this repository is the public `/api/v1/*` evaluator flow. It is a deliberate evaluator path, not a shortcut around production controls. | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| The current partner-facing lifecycle in this repository is: | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| - `POST /api/v1/verify` | ||||||||||||||||||||||||||||||||||||||
| - `GET /api/v1/receipt/:receiptId` | ||||||||||||||||||||||||||||||||||||||
| - `GET /api/v1/receipt/:receiptId/pdf` | ||||||||||||||||||||||||||||||||||||||
| - `POST /api/v1/receipt/:receiptId/verify` | ||||||||||||||||||||||||||||||||||||||
| - `POST /api/v1/receipt/:receiptId/revoke` | ||||||||||||||||||||||||||||||||||||||
| - `POST /api/v1/anchor/:receiptId` | ||||||||||||||||||||||||||||||||||||||
| - `GET /api/v1/receipts` | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| ## What You Will See | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| The evaluator path is designed to show the core value before full production integration work: | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| - artifact intake through the public API | ||||||||||||||||||||||||||||||||||||||
| - signed verification receipt issuance | ||||||||||||||||||||||||||||||||||||||
| - verification signals that can be stored in an existing workflow | ||||||||||||||||||||||||||||||||||||||
| - later verification against the stored receipt state | ||||||||||||||||||||||||||||||||||||||
| - visible handling for tampered evidence or stale evidence through the later verification lifecycle | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| ## Local API Development Setup | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| Prerequisites: | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| - Node.js `>= 18` | ||||||||||||||||||||||||||||||||||||||
| - npm `>= 9` | ||||||||||||||||||||||||||||||||||||||
| - PostgreSQL `>= 14` for `apps/api` | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| Minimal setup: | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| ```bash | ||||||||||||||||||||||||||||||||||||||
| npm install | ||||||||||||||||||||||||||||||||||||||
| cp .env.example .env.local | ||||||||||||||||||||||||||||||||||||||
| cp apps/api/.env.example apps/api/.env | ||||||||||||||||||||||||||||||||||||||
| npm -w apps/api run db:generate | ||||||||||||||||||||||||||||||||||||||
| npm -w apps/api run db:push | ||||||||||||||||||||||||||||||||||||||
| npm -w apps/api run dev | ||||||||||||||||||||||||||||||||||||||
| ┌─────────────────┐ POST /api/attest-evidence ┌──────────────────┐ | ||||||||||||||||||||||||||||||||||||||
| │ Your Workflow │ ──────────────────────────────► │ TrustSignal │ | ||||||||||||||||||||||||||||||||||||||
| │ (Vanta, Drata, │ │ Integrity Layer │ | ||||||||||||||||||||||||||||||||||||||
| │ internal GRC) │ ◄────────────────────────────── │ │ | ||||||||||||||||||||||||||||||||||||||
| └─────────────────┘ Signed receipt + signal └──────────────────┘ | ||||||||||||||||||||||||||||||||||||||
| │ | ||||||||||||||||||||||||||||||||||||||
| ▼ | ||||||||||||||||||||||||||||||||||||||
| Store receipt alongside artifact in your system of record | ||||||||||||||||||||||||||||||||||||||
| │ | ||||||||||||||||||||||||||||||||||||||
| ▼ | ||||||||||||||||||||||||||||||||||||||
| Later verification: compare current artifact against original receipt | ||||||||||||||||||||||||||||||||||||||
| ``` | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| In a second terminal: | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| ```bash | ||||||||||||||||||||||||||||||||||||||
| npm -w apps/web run dev | ||||||||||||||||||||||||||||||||||||||
| ### Verification Request | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| ```json | ||||||||||||||||||||||||||||||||||||||
| POST /api/attest-evidence | ||||||||||||||||||||||||||||||||||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
The README now instructs integrators to call Useful? React with 👍 / 👎. |
||||||||||||||||||||||||||||||||||||||
| Content-Type: application/json | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| { | ||||||||||||||||||||||||||||||||||||||
| "source": "vanta", | ||||||||||||||||||||||||||||||||||||||
| "artifact_hash": "sha256:93f6f35a550cbe1c3f0b5f0c12b9f0d62f3f9c6f8c6a4eddd8fa1fbfd4654af1", | ||||||||||||||||||||||||||||||||||||||
| "control_id": "CC6.1", | ||||||||||||||||||||||||||||||||||||||
| "timestamp": "2026-03-11T21:00:00Z", | ||||||||||||||||||||||||||||||||||||||
|
Comment on lines
+46
to
+54
|
||||||||||||||||||||||||||||||||||||||
| "metadata": { | ||||||||||||||||||||||||||||||||||||||
| "artifact_type": "compliance_evidence", | ||||||||||||||||||||||||||||||||||||||
| "collector": "aws-config-snapshot" | ||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||
| ``` | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| Default local ports: | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| - web app: `http://localhost:3000` | ||||||||||||||||||||||||||||||||||||||
| - API: `http://localhost:3001` | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| ## Run The API Evaluation Flow | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| Once the local API is running, use the evaluator quickstart or the public examples directly: | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| ```bash | ||||||||||||||||||||||||||||||||||||||
| curl -X POST "http://localhost:3001/api/v1/verify" \ | ||||||||||||||||||||||||||||||||||||||
| -H "Content-Type: application/json" \ | ||||||||||||||||||||||||||||||||||||||
| -H "x-api-key: $TRUSTSIGNAL_API_KEY" \ | ||||||||||||||||||||||||||||||||||||||
| --data @examples/verification-request.json | ||||||||||||||||||||||||||||||||||||||
| ### Signed Receipt Response | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| ```json | ||||||||||||||||||||||||||||||||||||||
| HTTP/1.1 201 Created | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| { | ||||||||||||||||||||||||||||||||||||||
| "receipt_id": "tsig_rcpt_01JTQY8N1Q0M4F4F5T4J4B8Y9R", | ||||||||||||||||||||||||||||||||||||||
| "status": "signed", | ||||||||||||||||||||||||||||||||||||||
|
Comment on lines
+65
to
+69
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
This sample response shows Useful? React with 👍 / 👎. |
||||||||||||||||||||||||||||||||||||||
| "source": "vanta", | ||||||||||||||||||||||||||||||||||||||
| "control_id": "CC6.1", | ||||||||||||||||||||||||||||||||||||||
| "attested_at": "2026-03-11T21:00:01Z", | ||||||||||||||||||||||||||||||||||||||
| "signature": "tsig_sig_01JTQY8QK6X4YF7M6T2P9A5D3H", | ||||||||||||||||||||||||||||||||||||||
| "provenance": { | ||||||||||||||||||||||||||||||||||||||
|
Comment on lines
+64
to
+74
|
||||||||||||||||||||||||||||||||||||||
| "artifact_type": "compliance_evidence", | ||||||||||||||||||||||||||||||||||||||
| "collector": "aws-config-snapshot" | ||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||
| ``` | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| Then retrieve the stored receipt and run later verification: | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| ```bash | ||||||||||||||||||||||||||||||||||||||
| curl "http://localhost:3001/api/v1/receipt/$RECEIPT_ID" \ | ||||||||||||||||||||||||||||||||||||||
| -H "x-api-key: $TRUSTSIGNAL_API_KEY" | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| curl -X POST "http://localhost:3001/api/v1/receipt/$RECEIPT_ID/verify" \ | ||||||||||||||||||||||||||||||||||||||
| -H "x-api-key: $TRUSTSIGNAL_API_KEY" | ||||||||||||||||||||||||||||||||||||||
| ``` | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| ## What The Developer Trial Proves | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| The evaluator flow demonstrates that: | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| - TrustSignal can fit behind an existing workflow without replacing the system of record | ||||||||||||||||||||||||||||||||||||||
| - the API returns signed verification receipts and verification signals in one flow | ||||||||||||||||||||||||||||||||||||||
| - later verification is explicit and separate from initial receipt issuance | ||||||||||||||||||||||||||||||||||||||
| - the system is built for attack surfaces such as tampered evidence, provenance loss, and artifact substitution in later review paths | ||||||||||||||||||||||||||||||||||||||
| --- | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| ## Integration Fit | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| TrustSignal is designed to sit behind an existing workflow such as: | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| - a compliance evidence pipeline | ||||||||||||||||||||||||||||||||||||||
| - a partner portal | ||||||||||||||||||||||||||||||||||||||
| - an intake or case-management system | ||||||||||||||||||||||||||||||||||||||
| - a deed or property-record workflow | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| The upstream platform remains the system of record. TrustSignal adds an integrity layer at the boundary and returns technical verification artifacts that the upstream workflow can store and use later. | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| ## Integration Boundary Notes | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| The local evaluator path is intentionally constrained. Local development defaults are a deliberate evaluator and development path, and they fail closed where production trust assumptions are not satisfied. | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| Authentication is `x-api-key` with scoped access. Revocation additionally requires issuer authorization headers: `x-issuer-id`, `x-signature-timestamp`, and `x-issuer-signature`. | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| The repository also still includes a legacy JWT-authenticated `/v1/*` surface used by the current JavaScript SDK: | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| - `POST /v1/verify-bundle` | ||||||||||||||||||||||||||||||||||||||
| - `GET /v1/status/:bundleId` | ||||||||||||||||||||||||||||||||||||||
| - `POST /v1/revoke` | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| ## Production Deployment Requirements | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| Production deployment requires explicit authentication, signing configuration, and environment setup. Public documentation should be read as architecturally mature and bounded, not as a claim that every deployment control is satisfied automatically. | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| For production use, plan for at least: | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| - explicit API-key and JWT configuration | ||||||||||||||||||||||||||||||||||||||
| - signing configuration and key management through environment setup | ||||||||||||||||||||||||||||||||||||||
| - receipt lifecycle checks before downstream reliance | ||||||||||||||||||||||||||||||||||||||
| - database and network security controls appropriate for the deployment environment | ||||||||||||||||||||||||||||||||||||||
| - environment-specific operational controls outside this repository | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| Fail-closed defaults are part of the security posture. They are meant to prevent the system from silently assuming production trust conditions that have not been configured. | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| ## Public API Contract And Examples | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| The public evaluation artifacts in this repo are: | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| - [openapi.yaml](/Users/christopher/Projects/trustsignal/openapi.yaml) | ||||||||||||||||||||||||||||||||||||||
| - [verification-request.json](/Users/christopher/Projects/trustsignal/examples/verification-request.json) | ||||||||||||||||||||||||||||||||||||||
| - [verification-response.json](/Users/christopher/Projects/trustsignal/examples/verification-response.json) | ||||||||||||||||||||||||||||||||||||||
| - [verification-receipt.json](/Users/christopher/Projects/trustsignal/examples/verification-receipt.json) | ||||||||||||||||||||||||||||||||||||||
| - [verification-status.json](/Users/christopher/Projects/trustsignal/examples/verification-status.json) | ||||||||||||||||||||||||||||||||||||||
| - [partner evaluation kit](/Users/christopher/Projects/trustsignal/docs/partner-eval/overview.md) | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| These artifacts document the public verification lifecycle only. They intentionally avoid proof internals, model outputs, circuit identifiers, signing infrastructure specifics, and internal service topology. | ||||||||||||||||||||||||||||||||||||||
| TrustSignal sits **behind** the system that collected the artifact. | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| | Layer | What Stays in Place | | ||||||||||||||||||||||||||||||||||||||
| |---|---| | ||||||||||||||||||||||||||||||||||||||
| | Evidence collection | Your existing platform (Vanta, Drata, internal collector) | | ||||||||||||||||||||||||||||||||||||||
| | System of record | Unchanged - TrustSignal adds to it, not replaces it | | ||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||
| | System of record | Unchanged - TrustSignal adds to it, not replaces it | | |
| | System of record | Unchanged — TrustSignal adds to it; it does not replace it | |
Copilot
AI
Mar 21, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The "Receipt Model" example uses snake_case fields (e.g., receipt_id, receipt_status, verification_status) that don't appear in the OpenAPI receipt/response schemas (which use camelCase like receiptId, plus nested receipt/canonicalReceipt for stored receipts). Suggest aligning this model to openapi.yaml so integrators don't implement against a non-existent shape.
| receipt_id: "tsig_rcpt_01JTQY8N1Q0M4F4F5T4J4B8Y9R", | |
| source: "vanta", | |
| artifact_hash: "sha256:93f6f35a550cbe1c3f0b5f0c12b9f0d62f3f9c6f8c6a4eddd8fa1fbfd4654af1", | |
| control_id: "CC6.1", | |
| timestamp: "2026-03-11T21:00:00Z", | |
| receipt_status: "signed", | |
| verification_status: "match", | |
| provenance: { | |
| artifact_type: "compliance_evidence", | |
| receiptId: "tsig_rcpt_01JTQY8N1Q0M4F4F5T4J4B8Y9R", | |
| source: "vanta", | |
| artifactHash: "sha256:93f6f35a550cbe1c3f0b5f0c12b9f0d62f3f9c6f8c6a4eddd8fa1fbfd4654af1", | |
| controlId: "CC6.1", | |
| createdAt: "2026-03-11T21:00:00Z", | |
| receiptStatus: "signed", | |
| verificationStatus: "match", | |
| provenance: { | |
| artifactType: "compliance_evidence", |
Copilot
AI
Mar 21, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The README lists info@trustsignal.dev as the vulnerability reporting address, but SECURITY.md instructs reporters to use security@trustsignal.dev. Please make these consistent so security reports go to the right inbox.
| To report a vulnerability: [info@trustsignal.dev](mailto:info@trustsignal.dev) | |
| To report a vulnerability: [security@trustsignal.dev](mailto:security@trustsignal.dev) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The README references a
POST /api/attest-evidenceendpoint, but this path doesn't exist in the repo/OpenAPI contract (current public endpoint isPOST /api/v1/verify). Please update the diagram to match the actual API surface (or update the OpenAPI/implementation if the endpoint was renamed).