Purpose & architecture
The repository contains a React website, Node and TypeScript email service, an illustrated workshop interaction system and shared discovery-provider interfaces. Authored source separates public content, provider answers, local animation control, consent and deployment evidence. Its ASTRA documents describe website implementation and acceptance work around the workshop and mobile character rigs. This usage of Astra is explicitly kept separate from the historical proposal for an Astra consciousness node.
Source and recorded acceptance reports do not establish the current production deployment or external provider availability. Compiled animation inspection dumps are inventoried as visual evidence rather than mathematical AI source. No email or external provider request was sent during this audit.
This source generation
This record follows the main branch of Janady13/thatstupidcomputer at commit 57555cde46910102dd25d6c1c1fb2c359e9655bd. The snapshot identifies the source inspected in this audit. It is not a statement about which revision is currently running on a device.
| Field | Source record |
|---|---|
| Revision | 57555cde46910102dd25d6c1c1fb2c359e9655bd |
| Branch | main |
| Recorded generation | Workshop website / AI discovery integration |
Recovered implementation structure
These paths locate the components and entry points represented by this build. The source register contains their inspected revisions.
- AGENTS.md
- CLAUDE.md
- README.md
- apps/api/README.md
- apps/api/src/app.ts
- apps/api/src/config.ts
- apps/api/src/crawlers.ts
- apps/api/src/index.ts
- apps/api/src/mail.ts
- apps/api/src/responses.ts
- apps/api/src/static.ts
- apps/api/src/validation.ts
- apps/web/index.html
- apps/web/public/animation/manifest.json
- apps/web/public/animation/mobile/app-bot/pivots.json
- apps/web/public/animation/mobile/app-bot/scene.json
- apps/web/public/animation/mobile/flip-phone/pivots.json
- apps/web/public/animation/mobile/flip-phone/scene.json
- apps/web/public/animation/mobile/handheld/pivots.json
- apps/web/public/animation/mobile/handheld/scene.json
- apps/web/public/animation/mobile/pager/pivots.json
- apps/web/public/animation/mobile/pager/scene.json
- apps/web/public/animation/mobile/smartphone/pivots.json
- apps/web/public/animation/mobile/smartphone/scene.json
- apps/web/public/animation/office/object-bounds.json
- apps/web/public/animation/office/room-manifest.json
- apps/web/public/animation/office/room-motion-map.json
- apps/web/public/animation/runtime/version.json
- apps/web/src/App.tsx
- apps/web/src/animation/AdaptiveScene.tsx
- apps/web/src/animation/choreography/usePageChoreography.ts
- apps/web/src/animation/choreography/useSmoothScroll.ts
- apps/web/src/animation/choreography/useWorkshopAttention.ts
- apps/web/src/animation/choreography/useWorkshopStory.ts
- apps/web/src/animation/conversation/director.mjs
- apps/web/src/animation/core/AnimationBoundary.tsx
- apps/web/src/animation/core/contracts.mjs
- apps/web/src/animation/core/geometry.mjs
- apps/web/src/animation/core/useMedia.ts
- apps/web/src/animation/desktop/ComputerActor.tsx
- apps/web/src/animation/desktop/ComputerGeometry.tsx
- apps/web/src/animation/desktop/DesktopCharacter.tsx
- apps/web/src/animation/desktop/DesktopGestures.tsx
- apps/web/src/animation/desktop/cable-poses.json
- apps/web/src/animation/desktop/computer-motion.mjs
- apps/web/src/animation/desktop/gesture-geometry.mjs
- apps/web/src/animation/desktop/performances.mjs
- apps/web/src/animation/index.ts
- apps/web/src/animation/mobile/CharacterArt.tsx
- apps/web/src/animation/mobile/MobileCharacter.tsx
- apps/web/src/animation/mobile/cast.ts
- apps/web/src/animation/mobile/character-controller.mjs
- apps/web/src/animation/mobile/types.ts
- apps/web/src/animation/office/RoomObject.tsx
- apps/web/src/animation/office/RoomScene.tsx
- apps/web/src/animation/office/catalog.ts
- apps/web/src/animation/office/index.ts
- apps/web/src/animation/office/model.ts
- apps/web/src/animation/office/motion/room-motion.mjs
- apps/web/src/animation/office/navigation.ts
- apps/web/src/animation/office/objects/AirDust.tsx
- apps/web/src/animation/office/objects/Baseboard.tsx
- apps/web/src/animation/office/objects/Binders.tsx
- apps/web/src/animation/office/objects/Blinds.tsx
- apps/web/src/animation/office/objects/BoardBlueprint.tsx
- apps/web/src/animation/office/objects/BoardPhoto.tsx
- apps/web/src/animation/office/objects/BoardReminder.tsx
- apps/web/src/animation/office/objects/BoardSmallNote.tsx
- apps/web/src/animation/office/objects/BoardSmile.tsx
- apps/web/src/animation/office/objects/BulletinBoard.tsx
- apps/web/src/animation/office/objects/CableReel.tsx
- apps/web/src/animation/office/objects/CartBox.tsx
- apps/web/src/animation/office/objects/CartToolCup.tsx
- apps/web/src/animation/office/objects/Clock.tsx
- apps/web/src/animation/office/objects/CoffeeMug.tsx
- apps/web/src/animation/office/objects/DeskLamp.tsx
- apps/web/src/animation/office/objects/DeskPaper.tsx
- apps/web/src/animation/office/objects/DeskPedestal.tsx
- apps/web/src/animation/office/objects/DeskPlant.tsx
- apps/web/src/animation/office/objects/DrawerBottom.tsx
- apps/web/src/animation/office/objects/DrawerTop.tsx
- apps/web/src/animation/office/objects/FilingCabinet.tsx
- apps/web/src/animation/office/objects/Floor.tsx
- apps/web/src/animation/office/objects/FloorBox.tsx
- apps/web/src/animation/office/objects/LooseHardware.tsx
- apps/web/src/animation/office/objects/Outlet.tsx
- apps/web/src/animation/office/objects/Outside.tsx
- apps/web/src/animation/office/objects/PartsOrganizer.tsx
- apps/web/src/animation/office/objects/PencilCup.tsx
- apps/web/src/animation/office/objects/Screwdriver.tsx
- apps/web/src/animation/office/objects/Shelf.tsx
- apps/web/src/animation/office/objects/ShelfPlant.tsx
- apps/web/src/animation/office/objects/SolderingStation.tsx
- apps/web/src/animation/office/objects/StorageBoxes.tsx
- apps/web/src/animation/office/objects/TapeRoll.tsx
- apps/web/src/animation/office/objects/TestMeter.tsx
- apps/web/src/animation/office/objects/ToolCart.tsx
- apps/web/src/animation/office/objects/Wall.tsx
- apps/web/src/animation/office/objects/Window.tsx
- apps/web/src/animation/office/objects/Workbench.tsx
- apps/web/src/animation/office/objects/index.ts
- apps/web/src/animation/office/registry.ts
- apps/web/src/animation/office/types.ts
- apps/web/src/animation/orchestration/AnimationProvider.tsx
- apps/web/src/animation/orchestration/animationMachine.ts
- apps/web/src/animation/performances/attention.ts
- apps/web/src/animation/performances/catalog.mjs
- apps/web/src/animation/performances/stage-shows.ts
- apps/web/src/animation/performances/workshop.ts
- apps/web/src/animation/rive/Character.tsx
- apps/web/src/animation/rive/RiveCharacter.tsx
- apps/web/src/animation/rive/playback-gate.mjs
- apps/web/src/animation/rive/types.ts
- apps/web/src/animation/rive/verified-assets.json
- apps/web/src/animation/stage/CharacterStage.tsx
- apps/web/src/animation/stage/README.md
- apps/web/src/animation/stage/engine.mjs
- apps/web/src/animation/stage/index.ts
- apps/web/src/components/CharacterPlayground.tsx
- apps/web/src/components/ComputerConversation.tsx
- apps/web/src/components/DemoCompanion.tsx
- apps/web/src/components/DemoForm.tsx
- apps/web/src/components/Icons.tsx
- apps/web/src/components/PageContent.tsx
- apps/web/src/components/ServiceBoardScenery.tsx
- apps/web/src/components/Workshop.tsx
- apps/web/src/components/demo-intent.mjs
- apps/web/src/entry-client.tsx
- apps/web/src/entry-server.tsx
- apps/web/src/measurement/ConsentControls.tsx
- apps/web/src/measurement/analytics.mjs
- apps/web/src/measurement/index.ts
- apps/web/src/vendor-compat.d.ts
- apps/web/vite.config.ts
- deploy/local-validation.json
- deploy/release.mjs
- deploy/release.test.mjs
- deploy/truth-adapter.mjs
- docs/ACCEPTANCE.md
- docs/ANIMATION-UPGRADE-INTEGRATION.md
- docs/ANIMATION-UPGRADE-PRACTICE.md
- docs/ANIMATION-UPGRADES.md
- docs/ANIMATION.md
- docs/ARCHITECTURE.md
- docs/ASTRA-ATTENTION-PLAN.md
- docs/ASTRA-PLAN.md
- docs/ASTRA-VERIFICATION.md
- docs/CLAUDE-DEPLOYMENT.md
- docs/DESKTOP-ACCEPTANCE.md
- docs/DESKTOP-INTEGRATION.md
- docs/DESKTOP-MEASUREMENT.md
- docs/DESKTOP-VISUAL-PROOF.md
- docs/DESKTOP-WORK-LEDGER.md
- docs/MEASUREMENT-SEARCH-VERIFICATION.md
- docs/MEASUREMENT.md
- docs/NATIVE-UPGRADE.md
- docs/TRUTH-INTEGRATION.md
- docs/UPGRADE-ACCEPTANCE.md
- docs/WORKSHOP-CLEANUP-ACCEPTANCE.md
- docs/WORKSHOP-CLEANUP-INTEGRATION.md
- docs/standards/README.md
- docs/standards/build-integration-initial.json
- docs/standards/build-integration.json
- docs/standards/coverage-ledger.json
- docs/standards/decisions.json
- docs/standards/local-verification-initial.json
- docs/standards/local-verification.json
- docs/standards/observations.json
- docs/superpowers/plans/2026-09-13-measurement-search.md
- native/build-source/app-bot/rive.yaml
- native/build-source/flip-phone/rive.yaml
- native/build-source/handheld/rive.yaml
- native/build-source/pager/rive.yaml
- native/build-source/smartphone/rive.yaml
- native/canvas-verified-assets.json
- native/canvas-visual-review.json
- native/reports/asset-audit.json
- native/reports/browser-boundary.json
- native/reports/cli-provenance.json
- native/reports/contact-sheets.json
- native/reports/native-canvas.json
- native/reports/native-compiled.json
- native/reports/rive-transform-schema.txt
- native/reports/timeline-sync.json
- native/rml/app-bot/native-map.json
- native/rml/app-bot/rive.yaml
- native/rml/flip-phone/native-map.json
- native/rml/flip-phone/rive.yaml
- native/rml/handheld/native-map.json
- native/rml/handheld/rive.yaml
- native/rml/pager/native-map.json
- native/rml/pager/rive.yaml
- native/rml/smartphone/native-map.json
- native/rml/smartphone/rive.yaml
- native/visual-review.example.json
- package.json
- packages/discovery/README.md
- packages/discovery/adapters.ts
- packages/discovery/answers.ts
- packages/discovery/contract.ts
- packages/discovery/evidence.ts
- packages/discovery/http.ts
- packages/discovery/observe.ts
- packages/discovery/protocol.ts
- packages/discovery/providers/anthropic/answers.ts
- packages/discovery/providers/anthropic/profile.ts
- packages/discovery/providers/bing/backlinks.ts
- packages/discovery/providers/bing/collect.ts
- packages/discovery/providers/bing/profile.ts
- packages/discovery/providers/bing/webmaster.ts
- packages/discovery/providers/deepseek/profile.ts
- packages/discovery/providers/google/answers.ts
- packages/discovery/providers/google/auth.ts
- packages/discovery/providers/google/profile.ts
- packages/discovery/providers/google/search-console.ts
- packages/discovery/providers/mistral/answers.ts
- packages/discovery/providers/mistral/profile.ts
- packages/discovery/providers/openai/answers.ts
- packages/discovery/providers/openai/profile.ts
- packages/discovery/providers/perplexity/answers.ts
- packages/discovery/providers/perplexity/profile.ts
- packages/discovery/providers/xai/answers.ts
- packages/discovery/providers/xai/profile.ts
- packages/discovery/registry.ts
- packages/site/content.ts
- packages/site/inquiry.mjs
- packages/site/search.ts
- packages/site/truth.ts
- playwright.config.ts
- private/standards/Graph-Expansion.txt
- private/standards/SEO-AIO-Library.txt
- private/standards/document-001.txt
- private/standards/document-002.txt
- private/standards/document-003.txt
- private/standards/document-004.txt
- private/standards/document-005.txt
- private/standards/document-006.txt
- private/standards/document-007.txt
- private/standards/document-008.txt
- private/standards/document-009.txt
- private/standards/document-010.txt
- private/standards/document-011.txt
- private/standards/document-012.txt
- private/standards/document-013.txt
- private/standards/document-014.txt
- private/standards/document-015.txt
- private/standards/document-016.txt
- private/standards/document-017.txt
- private/standards/document-018.txt
- private/standards/document-019.txt
- private/standards/document-020.txt
- private/standards/document-021.txt
- private/standards/document-022.txt
- private/standards/document-023.txt
- private/standards/document-024.txt
- private/standards/document-025.txt
- private/standards/document-026.txt
- private/standards/document-027.txt
- private/standards/document-028.txt
- private/standards/document-029.txt
- private/standards/document-030.txt
- private/standards/document-031.txt
- private/standards/document-032.txt
- private/standards/document-033.txt
- private/standards/document-034.txt
- private/standards/document-035.txt
- private/standards/document-036.txt
- private/standards/document-037.txt
- private/standards/document-038.txt
- private/standards/document-039.txt
- private/standards/document-040.txt
- private/standards/document-041.txt
- private/standards/document-042.txt
- private/standards/document-043.txt
- private/standards/document-044.txt
- private/standards/document-045.txt
- private/standards/document-046.txt
- private/standards/document-047.txt
- private/standards/document-048.txt
- private/standards/document-049.txt
- private/standards/document-050.txt
- private/standards/document-051.txt
- private/standards/document-052.txt
- private/standards/document-053.txt
- private/standards/document-054.txt
- private/standards/document-055.txt
- private/standards/document-056.txt
- private/standards/document-057.txt
- private/standards/document-058.txt
- private/standards/document-059.txt
- private/standards/document-060.txt
- private/standards/document-061.txt
- private/standards/document-062.txt
- private/standards/document-063.txt
- private/standards/document-064.txt
- private/standards/document-065.txt
- private/standards/document-066.txt
- private/standards/document-067.txt
- private/standards/document-068.txt
- private/standards/document-069.txt
- private/standards/document-070.txt
- private/standards/document-071.txt
- private/standards/document-072.txt
- private/standards/document-073.txt
- private/standards/document-074.txt
- private/standards/document-075.txt
- private/standards/document-076.txt
- private/standards/document-077.txt
- private/standards/document-078.txt
- private/standards/document-079.txt
- private/standards/document-080.txt
- private/standards/document-081.txt
- private/standards/document-082.txt
- private/standards/document-083.txt
- private/standards/document-084.txt
- private/standards/document-085.txt
- private/standards/document-086.txt
- private/standards/document-087.txt
- private/standards/document-088.txt
- private/standards/document-089.txt
- private/standards/document-090.txt
- private/standards/document-091.txt
- private/standards/document-092.txt
- private/standards/document-093.txt
- private/standards/document-094.txt
- private/standards/document-095.txt
- private/standards/document-096.txt
- private/standards/document-097.txt
- private/standards/document-098.txt
- private/standards/document-099.txt
- private/standards/document-100.txt
- private/standards/document-101.txt
- private/standards/document-102.txt
- private/standards/document-103.txt
- private/standards/document-104.txt
- private/standards/document-105.txt
- private/standards/document-106.txt
- private/standards/document-107.txt
- private/standards/document-108.txt
- private/standards/document-109.txt
- private/standards/document-110.txt
- private/standards/document-111.txt
- private/standards/document-112.txt
- private/standards/document-113.txt
- private/standards/document-114.txt
- private/standards/document-115.txt
- private/standards/document-116.txt
- private/standards/document-117.txt
- private/standards/document-118.txt
- private/standards/document-119.txt
- private/standards/document-120.txt
- private/standards/document-121.txt
- private/standards/document-122.txt
- private/standards/document-123.txt
- private/standards/document-124.txt
- private/standards/document-125.txt
- private/standards/document-126.txt
- private/standards/document-127.txt
- private/standards/document-128.txt
- private/standards/document-129.txt
- private/standards/document-130.txt
- private/standards/document-131.txt
- private/standards/document-132.txt
- private/standards/document-133.txt
- private/standards/document-134.txt
- private/standards/document-135.txt
- private/standards/document-index.json
- release-manifest.json
- scripts/apply-room-tab-cleanup.mjs
- scripts/audit-assets.ts
- scripts/author-performances.mjs
- scripts/browser-server.ts
- scripts/build.ts
- scripts/check-architecture.mjs
- scripts/check-build.ts
- scripts/compile-native.mjs
- scripts/dev.mjs
- scripts/discovery.ts
- scripts/generate-search.ts
- scripts/import-truth.ts
- scripts/install-native-cli.mjs
- scripts/native-contact-sheets.mjs
- scripts/native-harness-server.mjs
- scripts/package.ts
- scripts/prepare-native-rml.mjs
- scripts/preview.mjs
- scripts/promote-native.mjs
- scripts/render-desktop-preview.mjs
- scripts/standards-inventory.ts
- scripts/sync-native-timelines.mjs
- scripts/sync-rive-wasm.mjs
- scripts/test.mjs
- scripts/verify-local.mjs
- scripts/verify-native.mjs
- scripts/verify-release.mjs
- tests/animation/contracts.test.mjs
- tests/animation/conversation.test.mjs
- tests/animation/demo-intent.test.mjs
- tests/animation/demo-ssr.test.ts
- tests/animation/desktop-core.test.mjs
- tests/animation/desktop-expressions.test.mjs
- tests/animation/desktop-geometry.test.mjs
- tests/animation/desktop-performances.test.mjs
- tests/animation/desktop-rendering.test.mjs
- tests/animation/fixtures/v1-baseline.json
- tests/animation/native-harness.html
- tests/animation/native-harness.mjs
- tests/animation/native-pipeline.test.mjs
- tests/animation/native-playback-gate.test.mjs
- tests/animation/native-runtime.spec.ts
- tests/animation/performances.test.mjs
- tests/animation/room-tab-cleanup-installer.test.mjs
- tests/animation/stage.test.mjs
- tests/animation/upgrade-acceptance.test.mjs
- tests/api/api.test.ts
- tests/api/crawlers.test.ts
- tests/api/inquiry.test.ts
- tests/browser/animation-upgrades.spec.ts
- tests/browser/desktop-conversation.spec.ts
- tests/browser/publishing.spec.ts
- tests/browser/service-board.spec.ts
- tests/browser/site.spec.ts
- tests/browser/workshop-attention.spec.ts
- tests/browser/workshop-stories.spec.ts
- tests/discovery/bing.test.ts
- tests/discovery/evidence.test.ts
- tests/discovery/google.test.ts
- tests/discovery/model-answers.test.ts
- tests/discovery/registry.test.ts
- tests/measurement/computer-funnel.test.mjs
- tests/measurement/measurement.test.mjs
- tests/site/architecture.test.ts
- tests/site/content.test.ts
- tests/site/fixture.ts
- tests/site/publishing.test.ts
- tests/site/search.test.ts
- tests/site/truth.test.ts
- tsconfig.json
- workshop-cleanup-manifest.json
Behavior & verification limits
Source and recorded acceptance reports do not establish the current production deployment or external provider availability. Compiled animation inspection dumps are inventoried as visual evidence rather than mathematical AI source. No email or external provider request was sent during this audit.
Original project documentation
The following documentation is preserved as a dated source account. Claims in it retain the source’s wording and must be read alongside the implementation notes above.
That Stupid Computer — complete website
The complete React website and Node/TypeScript email backend for thatstupidcomputer.com. The supplied workshop artwork fills the home page below a clear header: the bulletin board, clock, desk drawer and coffee mug are the navigation (invisible hit shapes over the drawing, no floating labels), the computer turns toward whatever the visitor points at, and its conversation runs as one caption on the floor under the desk. The same service explanations follow as ordinary page content. Mobile visitors get a dedicated character scene, a link grid and readable, flowing pages.
This delivery includes editable source, the pinned dependency lock, compiled preview files, the original desktop computer with 32 performances, five expanded native Rive mobile characters, animation source and proof, automated tests, the supplied SEO/AIO build manual and its implementation mapping, and BUBBLES deployment files. It uses no Next.js, Python, PostgreSQL or lead database.
Open the website
Use Node 24.19 or newer within Node 24, and npm 11.9. Extract the archive, open its TSC-WORKSHOP-CLEANUP-v4 directory, then:
node scripts/verify-release.mjs
npm ci
npm run preview
Open http://localhost:4173. The archive already contains the compiled preview. To rebuild after editing, run npm run build before preview. For development with live updates, run npm run dev and open http://localhost:5173.
The website works without analytics or SMTP credentials. The form accurately reports that sending is unavailable until its mail service is configured. It never displays a fake successful submission. All principal pages, links and the native HTML form also have useful initial HTML before JavaScript runs.
Pages and functionality
| Page | Address |
|---|---|
| Interactive workshop | / |
| Services | /services/ |
| Website design | /services/website-design/ |
| Website rescue | /services/website-rescue/ |
| Search visibility | /services/search-visibility/ |
| Website care | /services/website-care/ |
| Work: an interactive demonstration of this actual site | /work/ |
| Process | /process/ |
| About | /about/ |
| Demo request | /contact/ |
| Privacy | /privacy/ |
Unknown addresses return an actual 404 page and status. Navigation uses normal links with enhanced client navigation, browser history and focus handling. Motion respects pause, reduced motion, visibility and intersection. The five mobile rigs now have 32 actions each, with their original fourteen preserved. The original desktop computer now has 32 performances, with additive cable arms, expressive hands, facepalm, shush, pointing, beckoning and permanently censored rude gestures behind an explicit request. The room retains its forty props. The Work page includes an interactive character playground with bounded movement, dragging, keyboard controls, opt-in performances and a shared pause. The workshop computer offers three project choices, playful roasts and direct demo links in an inline disclosure below the room. The expanded controls share space with a compact preview of the original character, without covering the artwork. Its chosen project category carries into the untouched form, where the same computer responds during submission, acceptance and recoverable errors.
The backend validates every submission, enforces same-origin delivery and rate limits, bounds mail concurrency, deduplicates recent submissions in process memory, and sends directly to one configured SMTP recipient. It records no form content in application logs or a database. An accepted result means the configured SMTP server accepted that recipient; it is not proof of inbox delivery.
Analytics loads only after explicit consent and a valid real GA4 ID. Route and conversion events use finite schemas. Form values, full browsing URLs, query strings, selectors and receipt IDs never enter the analytics payload. Optional Google and Bing verification tokens come from actual account configuration.
Give this to Claude Code
If Claude is already modifying the live website, first read docs/WORKSHOP-CLEANUP-INTEGRATION.md. The targeted cleanup removes only the floating room-navigation JSX from the actual edited Workshop file, preserving the live room layout and all other bytes. Merge the inline conversation and companion preview from this complete reference only after reviewing current source. Do not run an older full animation installer or overwrite the edited live project wholesale. Otherwise, start Claude Code in this extracted directory and have it read CLAUDE.md and docs/CLAUDE-DEPLOYMENT.md. The website is already implemented. The remaining deployment work is to inspect BUBBLES, connect its existing canonical truth export, verified SMTP recipient and analytics/search accounts, run the browser acceptance suite, and activate a reviewed release using the included deployment files.
The supplied compiled files are deliberately a noindex preview. A production build requires the real approved public truth projection with exact revision/digest pins and explicit crawler-policy choices. The project consumes the existing organization/person graph by exact reference; it never creates another one. Do not turn synthetic test fixtures into business facts or copy credentials from unrelated services.
Copy .env.example to .env for local configuration. Use protected configuration outside the public tree in production. npm run build:production creates indexable production HTML only after the truth and crawler-policy checks pass. The public document root is exclusively apps/web/dist; serve it through the compiled API with the provided proxy configuration.
Verification
npm run verify:local
This runs strict TypeScript, application tests, the complete build, asset and manual-inventory checks, and HTTP integration checks against the actual compiled pages through Fastify injection. No socket or live mailbox is needed.
On a machine with permitted browser access, install the Playwright browsers and execute the browser suite:
npx playwright install chromium firefox webkit
npm run test:browser
Some Linux hosts additionally need Playwright's documented system libraries. Inspect the host before installing system packages. npm run verify includes the browser gate after local verification. npm run verify:production performs the corresponding production build and acceptance sequence with protected build configuration already loaded.
Current results and limits are recorded in docs/WORKSHOP-CLEANUP-ACCEPTANCE.md and the machine-readable verification reports. Earlier v1/v2/v3 reports are historical for changed files; deployment scope remains in docs/ACCEPTANCE.md. The cloud browser's URL policy prevented live browser execution; the browser suite is included but is not represented as passed. Mailbox delivery, live account collection, public hosting and field performance require observations on the deployment target.
The original desktop SVG/controller has offline render proof for every performance and a 30-second preview in docs/desktop-preview/. This is actual controller output, not a browser recording. The SVG experience is fully active. The five .riv files are compiled and verified through the official Canvas runtime; switching the website to its WebGL adapter requires the separate actual-browser promotion gate in docs/ANIMATION.md. The project does not falsify that gate.
Where to work
| Location | Responsibility |
|---|---|
apps/web/src/ | React interface, scene, form, styles and consented measurement |
apps/web/public/ | Public artwork, native animation files and matched Rive runtime |
apps/api/src/ | Validation, direct SMTP, HTTP routing, security and static delivery |
packages/site/ | Shared public content, exact truth adapter and search output |
native/ | Original/repaired animation source, compiled files and scoped evidence |
tests/ | Application, browser, measurement and native acceptance tests |
private/standards/ | Complete supplied manual bytes, extracted document bodies and index |
docs/standards/ | Requirement mapping and implementation review evidence |
deploy/ | Reviewed-host deployment templates and release tooling |
Read docs/ARCHITECTURE.md, docs/TRUTH-INTEGRATION.md, docs/MEASUREMENT.md and docs/ANIMATION.md for the corresponding implementation contracts. The manual is a build authority, not content for the public website. The catalog's 146 older file references are retained with their unavailable-source status; no claim is made to have read absent originals.
npm run package regenerates a complete ZIP and SHA-256 sidecar under artifacts/. It includes source and built output, excludes credentials and dependencies, and writes a file-by-file transfer manifest inside the archive. The manifest verifies delivered bytes; changes made after extraction intentionally require a fresh build and package.