Skip to content

feat: declare completed-run impact statements in the catalog - #514

Open
hieptl wants to merge 1 commit into
mainfrom
hieptl/oss-10062
Open

feat: declare completed-run impact statements in the catalog#514
hieptl wants to merge 1 commit into
mainfrom
hieptl/oss-10062

Conversation

@hieptl

@hieptl hieptl commented Aug 26, 2026

Copy link
Copy Markdown
Contributor
  • A human has tested these changes.

Why

Agent Canvas is adding automation value statements — "70 review sweeps completed" — to dashboard cards and rows (OpenHands/OpenHands#16570). The claim half of such a statement (what one completed run means) is per-template knowledge, and per-template copy belongs in the catalog manifest, not hard-coded in the host. This adds the manifest contract for it and the declarations for the templates that can honestly carry one.

Summary

  • catalog.schema.json + index.d.ts: new optional impact entry field — basis (const completed-runs; unknown bases render nothing host-side, the forward-compat valve for future outcome counters) and one/other phrases validated as markup-free with {{count}} as the only admissible placeholder, required in the plural. The schema description encodes the honesty contract: declare only when one completed run always performs exactly one of the stated units of work.
  • Impact declarations for the five templates whose setup stores provenance: github-pr-reviewer ("PR review sweeps completed"), github-repo-monitor ("repo scans completed"), github-issue-to-pr ("issue sweeps completed"), github-agents-md-maintainer ("maintenance passes completed"), news-digest ("feed checks completed"). All deliberately run-shaped: every one is a cron sweep whose completed run can produce zero domain outcomes, so per-outcome phrasing ("PRs reviewed") would be an unbacked claim.
  • New parametrized schema test rejecting the declarations a host must never render: unknown basis, markup, a foreign placeholder namespace, a plural hiding the count, and extra keys.

Issue Number

Part of OpenHands/OpenHands#16570 (frontend acceptance criteria live there).

How to Test

  1. npm run build:automations — regenerates catalog-index.js / bundle-index.js; both are byte-identical (the field adds no entries and touches no bundles), and the freshness test guards this.
  2. uv run --group test pytest tests/ — 741 passed, including every-manifest schema validation and the five new test_schema_refuses_an_impact_statement_the_host_must_never_render cases.

Video/Screenshots

Data-only change — nothing renders in this repository. The consuming UI (companion OpenHands/OpenHands PR) carries card and list-row screenshots of the statements these declarations produce.

@hieptl hieptl self-assigned this Aug 26, 2026
@github-actions github-actions Bot added the type: feat A new feature label Aug 26, 2026
@all-hands-bot

Copy link
Copy Markdown
Contributor

👋 This PR needs a couple of things fixed before OpenHands can review it:

  • the PR description's HUMAN: section needs at least 20 characters describing what you tested, not just the template placeholder

Push an update once this is addressed and this check re-runs automatically.

This is an automated check - no AI was used to generate this comment.

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

Labels

type: feat A new feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants