Skip to content

simplify(dashboard): reuse canonical curation decoders - #4274

Merged
ScriptedAlchemy merged 8 commits into
masterfrom
simplify/dashboard-curation-decoder
Oct 18, 2026
Merged

ScriptedAlchemy merged 8 commits into
masterfrom
simplify/dashboard-curation-decoder

Conversation

@ScriptedAlchemy

@ScriptedAlchemy ScriptedAlchemy commented Oct 18, 2026 •

Copy link
Copy Markdown
Owner

Why

The dashboard repeated the automatic-curation binding identity, result schema, canonical hashing and receipt checks beside the TypeScript SDK. Its handwritten envelope schema also accepted responses that the existing canonical SDK decoder rejected.

Changes

  • Use generated catalog metadata and canonical success/problem decoding in the dashboard curation adapter.
  • Put browser-compatible scope, request-digest and curation-receipt validation in the existing shared code-generation source.
  • Remove the dashboard's duplicate envelope schemas, constants and hash/receipt helpers, together with the standalone SDK receipt module.
  • Preserve scoped dispatch, refusal presentation and run-ledger ownership of the terminal result.
  • Share the SDK's canonical binding rule: concealed denials omit binding identity, while ordinary problems must name an expected binding. A valid concealed 404 remains an ambiguous refusal; disclosed bindings and inconsistent statuses/contracts are rejected.
  • Migrate adapter, SDK, DOM and story tests to the shared decoder, covering missing execution metadata, inconsistent identity/scope, mismatched status and partial-effect receipts.
  • Provide a Bazel dashboard unit-test target for the focused browser checks.

Validation

  • Canonical SDK regeneration through bazel run //sdks/codegen:generate passed for the follow-up generator source. Generated dashboard application contracts and SDK types were produced from that source.
  • Current follow-up: bazel test //dashboard:unit_test filtered to the curator adapter passed all 29 tests, including concealed 404s, leaked bindings, missing ordinary bindings and inconsistent status/result contracts.
  • Current follow-up: bazel test //sdks/typescript:unit_test --test_arg=--maxWorkers=1 passed all 46 tests: 42 client tests and 4 stream-disposal tests.
  • Before the concealed-binding follow-up, the initial integration passed all 14 Rust generator tests and all 97 focused dashboard tests across the adapter, KnowledgeCuration DOM and story fixture files. Those broader suites were not repeated for the latest binding change.
  • The initial dashboard run caught and resolved a stale story scope digest and Vitest symlink resolution through Bazel runfiles. The configuration retains Bazel and Vite filesystem restrictions.
  • Pinned nightly rustfmt and git diff --check passed; source review completed.
  • Full hosted CI remains pending on the updated PR head.

Fixes #4192

@changeset-bot

changeset-bot Bot commented Oct 18, 2026 •

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 119d105

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

devin-ai-integration[bot]

This comment was marked as resolved.

@ScriptedAlchemy
ScriptedAlchemy merged commit aa71f4a into master Oct 18, 2026
5 of 8 checks passed
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.

simplify(dashboard): reuse canonical SDK decoding and curation receipt validation

1 participant