Repository navigation
Conversation
`openadapt quickstart` now ends by opening the Seal of the run the person just did: one offline page built from the same code as openadapt.ai's Seal pages, with nothing uploaded. The same code as #1437 (reviewed there), squashed onto main, with the verifier's test key derived at run time instead of committed. - packages/seal-view (@openadapt/seal-view, MIT): openadapt.ai's Seal page (openadapt-web#587 through 4da61c59): the step ring, the read-back table, the iris drawn from the digests, the replay synced with the step table and the full program workbench (with a Seal card in its inspector), the tamper demo, and every check (offline Seals, run authorizations, Rekor anchors, RFC 3161 timestamps with their .tsr file). The site's parts come in as props; the rings read any program graph and fall back to each step's own record checks; a pure-JS Ed25519 check covers browsers without WebCrypto Ed25519. - The offline viewer: one HTML file (Preact, the program map and styles inlined), 212,474 bytes (68,660 gzipped), budget 262,144, CSP allowing no requests. The launcher ships it as openadapt/seal_view/viewer.html; openadapt.seal_view embeds a run's exact files in it. - Quickstart finale: seals the stopped run too, writes run-1/seal.html and run-broken/seal.html, opens the first when a display is available, and prints "Your Seal: <path>" then the openadapt.ai/seals line. The page says it was checked against your computer's Seal key. - `openadapt seal view RUN_DIR [--keys FILE] [--bundle DIR] [--no-open]`. - Tests: a real quickstart run's pages from file:// in Chromium (valid, tampered, no requests), the viewer's size snapshot, RFC 8032 vectors (public keys and signatures only), a Seal signed with a key derived from sha256("openadapt-test-seal"), and a published OpenEMR Seal's Rekor entry and timestamp; a seal-view job in packages.yml. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
openadapt quickstartnow ends by opening the Seal of the run the person just did. It's one offline page built from the same code as openadapt.ai's Seal pages, and it uploads nothing.This replaces #1437, where the code was reviewed and approved. It is the same code squashed into one commit on main. The one change is that the verifier test now derives its signing key at run time from
sha256("openadapt-test-seal"), so no private key is committed and.gitleaksignoreis unchanged from main.What changes
packages/seal-view(@openadapt/seal-view, MIT) holds openadapt.ai's Seal page, extracted from OpenAdaptAI/openadapt-web#587 through 4da61c59:.tsrtoken file.dist/seal-viewer.html): one file built with Preact, with the program map and styles inlined. It is 212,474 bytes (68,660 gzipped) against a 262,144-byte budget. Its CSP allows no requests, so it works fromfile://. The launcher wheel ships it asopenadapt/seal_view/viewer.html, which grows the wheel by about 70 KB compressed.openadapt.seal_viewembeds a run's exact files in it.run-1/seal.htmlandrun-broken/seal.htmland opens the first one when a display is available. It no longer opens the side-by-side page, which stays on the Details line.Your Seal: <path>, thenSee real Seals from OpenEMR runs: https://openadapt.ai/seals.seal.htmldoesn't read as third-party proof. The receipt counts the stopped run's Seal once that Seal is written.openadapt seal view RUN_DIR [--keys FILE] [--bundle DIR] [--no-open]writes and opens the page for any sealed run, or for each run in a folder of runs.Tests
tests/test_seal_view.pyuses a real quickstart run as its fixture and opens its pages fromfile://in Chromium. It checks:subject_mismatch), and so does a changed Seal (bad_signature);It also snapshots the viewer's size against its budget.
Package (vitest):
verifyLocalSealwith WebCrypto Ed25519 and with it switched off;CI: a new
seal-viewjob in packages.yml runs the unit tests, thenbuild.mjs --check(the rebuilt viewer must equal the shipped copy and fit its budget), then the browser tests with the browser required.Not in this PR
🤖 Generated with Claude Code