Skip to content

Submission review: the reviewer cannot see the attestations they are approving #513

Description

@lonelycode

The contributor-submission flow is one of the strongest features in the product — /portal/submissions/{id} in particular. These are the gaps on the reviewer's side, where the reviewer approves without being shown what they are approving.

C4b — The reviewer cannot see the attestations the submitter accepted

attestations.accepted[{template_id, accepted_at}] is stored and returned by the API.

/admin/submissions/{id} renders Submission Info, Privacy, Support, Resource Configuration, Test Results and Review History — and nothing about what the submitter signed or when.

The entire point of a legal sign-off gate is that the reviewer can see the sign-off. The data is there and never rendered.

Fix: a panel on the review page listing each accepted attestation with its timestamp. This is the difference between an attestation feature and an attestation record.

C4c — "Test Connection" does not test the connection, for tools

POST /submissions/:id/test branches on resource type:

  • datasource → genuinely reaches out to the embedding service
  • tool → only re-runs ValidateOASSpec server-side and reports "Spec valid — 2 operations"

The button, the label and the result all read as "we called it and it answered". Same button, two different guarantees, and the name promises the stronger one. A reviewer can approve a tool whose server block points nowhere.

Fix: rename per resource type (Validate specification / Test connection), or actually probe the upstream.

C4d — Review History renders User #1

ui/admin-frontend/src/admin/pages/SubmissionReview.js:539

{activity.actor_name || `User #${activity.actor_id}`}  

Two panels above, the Reviewer field renders Alice correctly (:305 has the same fallback but the name resolves). An audit trail that does not name people is most of the way to not being an audit trail. Also at SubmissionReviewQueue.js:212.

Fix: populate actor_name on activity records.

C4e — Attestation Templates table prints the raw enum

Shows all where the form that created it offered All resource types / Data sources only / Tools only.

C4f — A Tool created from a submission has an empty tool_type

The seeded Weather tool carries "REST"; the submitted one carries "". Both work identically over REST and MCP, but the portal card renders REST · MCP · Community for one and only Community for the other — so a community contribution looks less capable than an identical admin-created tool, which is precisely backwards for a feature whose job is to make contributions first-class.

C4g — The contributions tab says PUBLISHED; the badge on the card says Approved

And "published" is the wrong word either way, since approval publishes nothing (see the permissive-defaults issue, B0).


Acceptance

  • Review page renders accepted attestations with timestamps
  • Test action names the guarantee it actually provides, per resource type
  • Review History names people
  • Attestation Templates table renders labels, not enum values
  • A submitted Tool carries the same tool_type as an equivalent admin-created one
  • Contribution status wording is consistent and accurate

From the UX & UI review of the demo set (section C4b–C4g).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions