Skip to content

feat(basis): unify Basis and the Surface Trust Panel - #234

Merged
briananderson1222 merged 7 commits into
mainfrom
feat/207-basis-trust-panel
Aug 25, 2026
Merged

feat(basis): unify Basis and the Surface Trust Panel#234
briananderson1222 merged 7 commits into
mainfrom
feat/207-basis-trust-panel

Conversation

@briananderson1222

Copy link
Copy Markdown
Contributor

Outcome

Makes Basis and the Surface Trust Panel one Viewer concept with three supported delivery paths:

  • a browser-safe, render-ready @kontourai/surface/basis/view model for native product renderers
  • explicit Basis mode on the existing surface-trust-panel element
  • a self-contained @kontourai/surface/basis/mcp resource using the official MCP Apps client

Closes #207.

Semantics

  • Surface remains the only standing and assessment authority.
  • Context never becomes support without an explicit Surface assessment relationship.
  • Entailing evidence, citations, and counterevidence remain distinct.
  • Failed cited or explicitly nonblocking evidence cannot become standing-affecting counterevidence.
  • Viewer labels, facts, relationship prose, region order, gaps, unresolved reasons, disclosure defaults, and recovery copy are Surface-owned.
  • Tool visibility, registration, authorization, and owner reads remain caller-owned.

MCP Apps

  • Pins @modelcontextprotocol/ext-apps 1.7.5 at build time.
  • Bundles the official App client into a checked, self-contained generated IIFE.
  • Uses MCP Apps protocol 2026-01-26 with appInfo/appCapabilities.
  • Accepts only official validated initialization and CallToolResult schemas.
  • Exposes canonical nested resourceUri metadata without choosing visibility.
  • Keeps protected owner data out of browser fetches.

Compatibility and accessibility

  • Existing report property, src loading, heading, and report mode remain compatible.
  • Basis mode is explicit; no input shape sniffing.
  • Standing and gaps remain visible; assessment opens by default; context, relationships, and technical details use stable native disclosures.
  • Focus/open state survives refresh.
  • Recovery announces through a polite status region.
  • 320px/390px geometry, 44px targets, reduced motion, dark/light axe serious/critical, inert hostile text, and no horizontal overflow are covered.

Verification

  • Independent Sol review at d061029: PASS, no findings.
  • Full pre-push npm run verify: passed.
  • Unit: 624 passed.
  • Browser: 56 passed, 4 intentional project-specific skips.
  • Package contents, packed consumer smoke, external adapter, generated sync, docs, and typecheck: passed.
  • Veritas: 0 failures, 2 pre-existing warnings, run veritas-1787689270399.
  • Transitive minified gzip ratchets: view 6,307; MCP 107,413; element 10,905 bytes. The docs record why the official zero-network MCP client carries the additional optional cost.

@github-actions

Copy link
Copy Markdown
Contributor

Trust Verify needs attention

Trust Verify completed with result: failure.

Open the workflow run

Failure details
[bundle-required-no-declared-marker] delivery/DECLARED marker present but out of scope for this change — STALE-SCOPE SUSPECTED: 7 of 9 well-formed entries PARTIALLY matched (some conditions matched, at least one did not). An exemption covering this change plausibly exists and a condition has drifted — e.g. a rotated bot actor (#1011) — rather than this change having no exemption at all. Per-entry breakdown below.

This is advisory and non-blocking; it does not change the Trust Verify verdict or merge requirements.

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.

Trust-panel element: themable via parts, and bless the headless embedding path

2 participants