Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
807 changes: 56 additions & 751 deletions README.md

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
# Vanta Proof-Boundary Hygiene Receipt - 2026-06-29

Run time: 2026-06-29 11:05 CDT

## Scope

This note records the current local proof/deployment boundary for the Weekly Top
5 improvement follow-up. It does not push, deploy, mutate provider state, touch
wallets/funds, claim production/private readiness, or mark live status complete.

## Current Git Boundary

`/Users/clay/Desktop/Vanta` was inspected in Review + Careful mode.

Observed status before this note:

```text
## main...origin/main [ahead 9]
?? output/
```

Ahead commits observed:

```text
111866e9 docs: reattest final live UI bundle
5337048e fix(ui): cap swap controls on mobile
b5fdf2b5 fix(ui): contain mobile form and receipt layout
7e62f0f6 docs: reattest live website bundle
4c38b232 fix(ui): surface strategy preview packet
f6e3666e fix(ui): polish full-site responsive flows
a0cf10c0 Fix CI blockers for slim README PR.
dc2c1287 Fix memo-encryption-check for privatePoolV2IndexerClient import.
8d24c51e docs: slim README to shield-first beta positioning
```

## Local Artifact Boundary

Untracked `output/` contains 45 local audit artifacts from 2026-06-28, including
JSON audits, interaction/internal-link checks, header/swap measurements,
Peekaboo text output, and four PNG screenshots:

- `vanta-desktop-products-after.png`
- `vanta-desktop-products-after2.png`
- `vanta-mobile-docs-after.png`
- `vanta-mobile-swap-after.png`

These are local proof artifacts until reviewed. They should not be treated as
committed source truth, pushed evidence, deployed/live evidence, or production
readiness proof merely because filenames contain `live` or `after-deploy`.

## Decision

The safe completed improvement for this run is boundary clarification:

- Current tracked Vanta code had no dirty diff before this note.
- The branch is still ahead of `origin/main` and not pushed by this run.
- The untracked `output/` folder still needs an artifact keeper decision:
`keep`, `archive`, `ignore`, or `delete-with-approval`.
- Push, deploy, Render/GitHub checks, live smoke verification, provider log
review, and public-readiness claims still require explicit same-turn approval.

## Smallest Next Verification

Before any Vanta push/deploy/live claim:

1. Review the nine ahead commits as a single proof packet.
2. Classify `output/` artifacts and either commit selected evidence, archive it,
ignore generated noise, or delete only with explicit approval.
3. Run the relevant local Vanta commands for the touched surface.
4. Only after push/deploy approval, verify provider state and live URL behavior;
keep beta/local proof boundaries intact unless production gates actually pass.

## Lumi

- Local: boundary receipt added locally.
- Committed: pending at receipt creation.
- Pushed: no; ahead commits remain local unless separately pushed.
- Deployed/live: not changed and not freshly verified by this receipt.
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -337,6 +337,7 @@
"pay:merchant-trust-status-check": "node scripts/print-vanta-pay-merchant-trust-status.mjs --check",
"pay:approval-packet-check": "node scripts/check-vanta-pay-approval-packet.mjs",
"pay:customer-side-zk-escrow-binding-check": "node scripts/check-vanta-pay-customer-side-zk-escrow-binding.mjs",
"pay:receipt-privacy-contract-check": "node scripts/check-vanta-pay-receipt-privacy-contract.mjs",
"pay:receipt-public-view-check": "node scripts/check-vanta-pay-receipt-public-view.mjs",
"compliance:gateway-check": "node scripts/check-vanta-compliance-gateway.mjs",
"pay:institutional-disclosure-receipt-check": "node scripts/check-vanta-pay-institutional-disclosure-receipt.mjs",
Expand Down
12 changes: 6 additions & 6 deletions public/.well-known/vanta-audit.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,21 @@
"schemaVersion": "vanta-public-audit-discovery-0.1",
"path": "/.well-known/vanta-audit.json",
"name": "Vanta public audit discovery",
"generatedAt": "2026-06-10",
"generatedAt": "2026-06-28",
"refsOnly": true,
"auditClaimAllowed": false,
"thirdPartyAuditAccepted": false,
"productionReady": false,
"mainnetReady": false,
"liveDeploymentVerified": true,
"websiteDeployment": {
"status": "last-verified-june-10-render-pay-operator-bundle-repair",
"lastVerifiedCommit": "486c8e5a6a1b7943e48292c555d6bd1f9c7ca9df",
"lastVerifiedAt": "2026-06-10T19:22:54Z",
"staticDeployId": "dep-d8krht7avr4c73emeceg",
"status": "last-verified-june-28-ui-ux-live-fix",
"lastVerifiedCommit": "5337048ec767524d30305bd6faf67e5b6a059992",
"lastVerifiedAt": "2026-06-28T17:29:36Z",
"staticDeployId": "dep-d90lgtdaeets73e6us9g",
"operatorDeployId": "dep-d8krgfpkh4rs73ffra80",
"liveUrl": "https://vantaprivacy.xyz",
"truthBoundary": "This records the static website entry asset assets/index-Dc9phHY1.js and Pay operator deploys for commit 486c8e5a6a1b7943e48292c555d6bd1f9c7ca9df on 2026-06-10 UTC after the Render Pay operator runtime bundle repair. The public discovery manifest is a reviewer map only. Private settlement, SBF, verifier, custody, anonymity, audit, generated browser Groth16 proofs, on-chain verifier acceptance, real-funds, and mainnet evidence remain blocked."
"truthBoundary": "This records the live Vanta UI/UX repair static website entry asset assets/index-CI_UI_OS.js from Render static deploy dep-d90lgtdaeets73e6us9g for commit 5337048ec767524d30305bd6faf67e5b6a059992 on 2026-06-28 UTC. The public discovery manifest is a reviewer map only. Private settlement, SBF, verifier, custody, anonymity, audit, generated browser Groth16 proofs, on-chain verifier acceptance, real-funds, and mainnet evidence remain blocked."
},
"privacyClaimAllowed": false,
"anonymityClaimAllowed": false,
Expand Down
4 changes: 3 additions & 1 deletion scripts/check-vanta-action-memo-encryption.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ const sourceFiles = [
"privacy/protocolAdapter.ts",
"privacy/privatePoolV2Types.ts",
"privacy/privatePoolV2ProofRequests.ts",
"privacy/privatePoolV2IndexerClient.ts",
"solana/vantaShieldViewingKey.ts",
"solana/vantaShieldState.ts",
];
Expand Down Expand Up @@ -70,7 +71,8 @@ function copySource(relativePath) {
.replace(/from "@\/solana\/shieldConfig"/g, 'from "./shieldConfig"')
.replace(/from "@\/solana\/vantaShieldViewingKey"/g, 'from "./vantaShieldViewingKey"')
.replace(/from "@\/solana\/client"/g, 'from "./client"')
.replace(/from "@\/solana\/nativeSolShield"/g, 'from "./nativeSolShield"');
.replace(/from "@\/solana\/nativeSolShield"/g, 'from "./nativeSolShield"')
.replace(/from "@\/privacy\/privatePoolV2IndexerClient"/g, 'from "../privacy/privatePoolV2IndexerClient"');
writeFileSync(join(tempTsDir, relativePath), source);
}

Expand Down
15 changes: 7 additions & 8 deletions scripts/check-vanta-docs-source-of-truth.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ for (const lane of ["Shield", "Send", "Swap", "Unshield", "Strategy", "Pay"]) {
}

for (const phrase of [
"Last updated: 2026-05-12",
"Last updated: 2026-06-10",
"Reviewed local feedback commit:",
"productionReady",
"Verifier present",
Expand Down Expand Up @@ -162,35 +162,34 @@ for (const phrase of [
rejectPhrase(zkReview, phrase, "VANTA_ZK_REVIEW.md");
}
requirePhrase(operatorRunbook, "If You Have 10 Minutes", "docs/operator-runbook.md");
requirePhrase(readme, "Vanta is not production-ready until it has", "README.md");
requirePhrase(
readme,
"Shield, Claim, Swap-to-shielded, actual-private-spend, and Send local bb artifact-backed proof-result adapter",
"Vanta is not production-ready or mainnet-ready.",
"README.md",
);
requirePhrase(
readme,
"actual-private-spend and Send also have dev-only browser/Web Worker proof execution plus worker-side witness generation from typed witness input",
"Proving stays local/dev-only",
"README.md",
);
requirePhrase(
readme,
"Claim has dev-only Claim browser/Web Worker proof execution plus worker-side witness generation from typed Claim witness input",
"active-v0 legacy",
"README.md",
);
requirePhrase(
readme,
"Swap-to-shielded now has dev-only Swap-to-shielded browser/Web Worker proof execution plus worker-side witness generation from typed Swap-to-shielded witness input",
"Private Pool v2 entry",
"README.md",
);
requirePhrase(
readme,
"opt-in browser-worker proof-result adapter",
"selectedRuntimeDirection: remote-service-production-prover",
"README.md",
);
requirePhrase(
readme,
"C01 local proof-format observation",
"selectedProverRuntime` stays null",
"README.md",
);

Expand Down
12 changes: 6 additions & 6 deletions scripts/check-vanta-public-audit-discovery.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ assert.ok(

assert.equal(discovery.schemaVersion, "vanta-public-audit-discovery-0.1");
assert.equal(discovery.path, "/.well-known/vanta-audit.json");
assert.equal(discovery.generatedAt, "2026-06-10");
assert.equal(discovery.generatedAt, "2026-06-28");
assert.equal(discovery.auditClaimAllowed, false);
assert.equal(discovery.thirdPartyAuditAccepted, false);
assert.equal(discovery.productionReady, false);
Expand All @@ -140,14 +140,14 @@ assert.equal(discovery.liveDeploymentVerified, true);
// Keep crawler-visible deployment evidence refs-only and claim-bounded: this is
// a public reviewer map, not a private-settlement or readiness attestation.
assert.deepEqual(discovery.websiteDeployment, {
status: "last-verified-june-10-render-pay-operator-bundle-repair",
lastVerifiedCommit: "486c8e5a6a1b7943e48292c555d6bd1f9c7ca9df",
lastVerifiedAt: "2026-06-10T19:22:54Z",
staticDeployId: "dep-d8krht7avr4c73emeceg",
status: "last-verified-june-28-ui-ux-live-fix",
lastVerifiedCommit: "5337048ec767524d30305bd6faf67e5b6a059992",
lastVerifiedAt: "2026-06-28T17:29:36Z",
staticDeployId: "dep-d90lgtdaeets73e6us9g",
operatorDeployId: "dep-d8krgfpkh4rs73ffra80",
liveUrl: "https://vantaprivacy.xyz",
truthBoundary:
"This records the static website entry asset assets/index-Dc9phHY1.js and Pay operator deploys for commit 486c8e5a6a1b7943e48292c555d6bd1f9c7ca9df on 2026-06-10 UTC after the Render Pay operator runtime bundle repair. The public discovery manifest is a reviewer map only. Private settlement, SBF, verifier, custody, anonymity, audit, generated browser Groth16 proofs, on-chain verifier acceptance, real-funds, and mainnet evidence remain blocked.",
"This records the live Vanta UI/UX repair static website entry asset assets/index-CI_UI_OS.js from Render static deploy dep-d90lgtdaeets73e6us9g for commit 5337048ec767524d30305bd6faf67e5b6a059992 on 2026-06-28 UTC. The public discovery manifest is a reviewer map only. Private settlement, SBF, verifier, custody, anonymity, audit, generated browser Groth16 proofs, on-chain verifier acceptance, real-funds, and mainnet evidence remain blocked.",
});
assert.equal(discovery.privacyClaimAllowed, false);
assert.equal(discovery.anonymityClaimAllowed, false);
Expand Down
12 changes: 9 additions & 3 deletions src/components/ModulePage.tsx
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import { Link } from "react-router-dom";

type ModulePageProps = {
title: string;
status: string;
Expand All @@ -7,6 +9,7 @@ type ModulePageProps = {
primaryCardCopy: string;
previewLabel?: string;
buttonLabel?: string;
buttonTo?: string;
secondaryItems: Array<{
label: string;
value: string;
Expand All @@ -22,6 +25,7 @@ export function ModulePage({
primaryCardCopy,
previewLabel = "Workflow preview",
buttonLabel = "View module scope",
buttonTo,
secondaryItems,
}: ModulePageProps) {
return (
Expand All @@ -43,9 +47,11 @@ export function ModulePage({
<span>{previewLabel}</span>
<h3>{primaryCardTitle}</h3>
<p>{primaryCardCopy}</p>
<button className="button button-primary" type="button">
{buttonLabel}
</button>
{buttonTo ? (
<Link className="button button-primary" to={buttonTo}>
{buttonLabel}
</Link>
) : null}
</article>

<article className="module-card">
Expand Down
1 change: 1 addition & 0 deletions src/pages/LaunchPage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ export function LaunchPage() {
primaryCardCopy="This space is reserved for future launch policies, participant access controls, and distribution workflows that benefit from stronger privacy defaults."
previewLabel="Future module"
buttonLabel="View future direction"
buttonTo="/docs/roadmap"
secondaryItems={[
{ label: "Distribution mode", value: "Roadmap configuration" },
{ label: "Participant policy", value: "Privacy controls reserved" },
Expand Down
14 changes: 13 additions & 1 deletion src/pages/ProductsPage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -180,6 +180,18 @@ function ProductWorkbench({ surface }: { surface: VantaProductSurface }) {
);
}

function getProductSurfaceCtaLabel(surface: VantaProductSurface) {
if (surface.appRoute === "/app/pay") {
return "Open Pay preview";
}

if (surface.appRoute === "/app/proof") {
return "Open proof center";
}

return "Open app surface";
}

export function ProductsPage() {
return (
<ProductsBodyClass>
Expand Down Expand Up @@ -318,7 +330,7 @@ export function ProductDetailPage() {

<div className="product-detail__actions">
<Link className="landing-btn landing-btn--primary" to={surface.appRoute}>
Open related Vanta surface
{getProductSurfaceCtaLabel(surface)}
</Link>
<Link className="landing-btn landing-btn--ghost" to="/app/proof">
Review proof details
Expand Down
11 changes: 7 additions & 4 deletions src/pages/ReceiptVerificationPage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,14 @@ export function ReceiptVerificationPage() {
why production privacy is not enabled.
</p>
<div className="route-fallback__actions" aria-label="Receipt verification actions">
<Link className="route-fallback__action route-fallback__action--primary" to="/app/pay">
Request private settlement
<Link
className="route-fallback__action route-fallback__action--primary"
to={`/app/pay?receipt=${encodeURIComponent(safeReceiptId)}`}
>
Open Pay preview
</Link>
<Link className="route-fallback__action" to="/app/pay">
Accept committed checkout
<Link className="route-fallback__action" to="/docs/pay">
Review Pay docs
</Link>
<Link className="route-fallback__action" to="/docs/trust">
Review trust docs
Expand Down
36 changes: 32 additions & 4 deletions src/pages/StrategyPage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -273,6 +273,7 @@ function describeDestinationWallet(input: {

export function StrategyPage() {
const [form, setForm] = useState<StrategyFormState>(defaultForm);
const [previewSubmitted, setPreviewSubmitted] = useState(false);
const { privateCoreHoldState, privateCoreOwner } = usePrivacyFlow();
const { walletAddressShort, walletConnected } = useWalletState();
const strategyPair = deriveStrategyPair(form);
Expand Down Expand Up @@ -393,8 +394,17 @@ export function StrategyPage() {
key: Key,
value: StrategyFormState[Key],
) => {
setPreviewSubmitted(false);
setForm((current) => ({ ...current, [key]: value }));
};
const previewPacketDisabled = strategyPlan === null || strategyPreviewLedger === null || capabilityState.submitDisabled;
const previewPacket = () => {
if (previewPacketDisabled) {
return;
}

setPreviewSubmitted(true);
};

return (
<section className="send-page strategy-page" aria-labelledby="strategy-title">
Expand Down Expand Up @@ -428,10 +438,7 @@ export function StrategyPage() {
className="send-card send-card--workspace strategy-card strategy-card--primary"
onSubmit={(event) => {
event.preventDefault();

if (!strategyPlan || capabilityState.submitDisabled) {
return;
}
previewPacket();
}}
>
<div className="shield-card__header strategy-card__header">
Expand Down Expand Up @@ -559,6 +566,27 @@ export function StrategyPage() {
</section>
) : null}

<div className="strategy-preview-actions">
<button
aria-controls="strategy-preview-confirmation"
className="button button-secondary"
disabled={previewPacketDisabled}
onClick={previewPacket}
type="button"
>
Preview packet
</button>
<span>Generates a local receipt preview only; no trades are submitted.</span>
</div>

{previewSubmitted && strategyPlan && strategyPreviewLedger ? (
<div className="strategy-preview-confirmation" id="strategy-preview-confirmation" role="status">
<span>Preview packet ready</span>
<strong>{strategyPlan.id}</strong>
<small>{strategyPreviewLedger.summary}</small>
</div>
) : null}

<StrategyAdvancedPanel
maxSlippage={form.maxSlippage}
maxSlippageError={formErrors.maxSlippage}
Expand Down
Loading
Loading