[PR #332] [CLOSED] feat: moderation v2 trust verification pipeline #329

Closed
opened 2026-02-15 17:16:56 -05:00 by yindo · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/openclaw/clawhub/pull/332
Author: @ArthurzKV
Created: 2/15/2026
Status: Closed

Base: mainHead: codex/skill-verification-v2-clawhub


📝 Commits (1)

  • 2b9acf5 feat: ship moderation v2 verification across API, CLI, and UI

📊 Changes

25 files changed (+6546 additions, -4872 deletions)

View changed files

📝 convex/httpApiV1.handlers.test.ts (+788 -718)
📝 convex/httpApiV1/skillsV1.ts (+307 -219)
📝 convex/lib/moderation.ts (+27 -27)
convex/lib/moderationEngine.test.ts (+54 -0)
convex/lib/moderationEngine.ts (+360 -0)
convex/lib/moderationReasonCodes.ts (+60 -0)
📝 convex/lib/public.ts (+55 -49)
📝 convex/lib/skillPublish.ts (+174 -158)
📝 convex/lib/skillSafety.ts (+11 -6)
📝 convex/schema.ts (+216 -177)
📝 convex/skills.ts (+1773 -1551)
📝 convex/vt.ts (+549 -457)
📝 docs/security.md (+25 -1)
📝 docs/spec.md (+33 -7)
📝 packages/clawdhub/src/cli.ts (+264 -263)
📝 packages/clawdhub/src/cli/commands/inspect.test.ts (+107 -70)
📝 packages/clawdhub/src/cli/commands/inspect.ts (+239 -149)
📝 packages/clawdhub/src/cli/commands/skills.ts (+329 -228)
📝 packages/clawdhub/src/schema/schemas.ts (+204 -178)
packages/clawdhub/src/security/staticScan.ts (+227 -0)

...and 5 more files

📄 Description

Summary

Implements moderation/verification v2 across schema, engine, publish pipeline, API, CLI, UI, and backfill flow.

What changed

  • Added normalized moderation fields on skills and deterministic staticScan payload on skillVersions.
  • Introduced canonical moderation engine and reason-code contract.
  • Replaced broad keyword-only moderation heuristics with context-aware static analyzers.
  • Unified static + VT + LLM merge behavior into explicit verdict policy.
  • Updated visibility/safety logic to use normalized verdicts and reason codes.
  • Extended API contracts:
    • GET /api/v1/skills/:slug additive moderation fields (verdict, reasonCodes, updatedAt, engineVersion, summary).
    • Added GET /api/v1/skills/:slug/moderation detailed evidence endpoint with owner/staff vs public behavior.
  • Extended CLI:
    • inspect --moderation for detailed structured moderation output.
    • install/update trust UX now surfaces reason/evidence hints.
    • local static verification on downloaded files with mismatch guardrails.
  • Added UI moderation transparency on skill detail pages.
  • Added historical backfill internal action for published, non-hard-deleted skills.
  • Updated security/spec docs with moderation semantics and reason-code behavior.

Compatibility

  • Legacy moderation fields and booleans are preserved and mirrored for compatibility.

Validation

  • Ran lint and targeted test suites for moderation engine, API handlers, CLI commands, and merge behavior.

Greptile Summary

Implements moderation v2 trust verification across the full stack (schema, engine, API, CLI, UI). Adds normalized moderationVerdict, moderationReasonCodes, and moderationEvidence fields to skills, with deterministic staticScan payload on skill versions. Replaces keyword-only heuristics with context-aware static analyzers and explicit verdict policy merging static + VT + LLM signals.

Major changes:

  • Added canonical moderation engine with structured reason codes and evidence findings
  • Extended schema with additive moderation fields while preserving legacy compatibility
  • Implemented GET /api/v1/skills/:slug/moderation endpoint with owner/staff vs public access control
  • Added CLI --moderation flag for inspect command and local static verification on install/update
  • Updated UI to display verdict, reason codes, and moderation summary
  • Implemented backfill action for historical skills

Key observations:

  • Static scanning logic is duplicated between server (convex/lib/moderationEngine.ts) and CLI (packages/clawdhub/src/security/staticScan.ts), requiring manual synchronization for future updates
  • Reason codes correctly match between implementations
  • Legacy moderation fields preserved for backward compatibility
  • Test coverage includes basic moderation engine scenarios

Confidence Score: 4/5

  • This PR is safe to merge with minor considerations around code duplication
  • The moderation v2 implementation is comprehensive and well-tested, with proper separation between server and client-side scanning logic. The schema changes are additive and backward-compatible. However, the static scanning logic is duplicated between server (convex/lib/moderationEngine.ts) and CLI (packages/clawdhub/src/security/staticScan.ts), which creates maintenance risk. The reason codes match correctly, but any future updates must be synchronized manually across both implementations.
  • Pay attention to convex/lib/moderationEngine.ts and packages/clawdhub/src/security/staticScan.ts - these contain duplicated scanning logic that must stay synchronized

Last reviewed commit: 2b9acf5

(3/5) Reply to the agent's comments like "Can you suggest a fix for this @greptileai?" or ask follow-up questions!


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/openclaw/clawhub/pull/332 **Author:** [@ArthurzKV](https://github.com/ArthurzKV) **Created:** 2/15/2026 **Status:** ❌ Closed **Base:** `main` ← **Head:** `codex/skill-verification-v2-clawhub` --- ### 📝 Commits (1) - [`2b9acf5`](https://github.com/openclaw/clawhub/commit/2b9acf51a833173aa28ba950f588a25e5128048b) feat: ship moderation v2 verification across API, CLI, and UI ### 📊 Changes **25 files changed** (+6546 additions, -4872 deletions) <details> <summary>View changed files</summary> 📝 `convex/httpApiV1.handlers.test.ts` (+788 -718) 📝 `convex/httpApiV1/skillsV1.ts` (+307 -219) 📝 `convex/lib/moderation.ts` (+27 -27) ➕ `convex/lib/moderationEngine.test.ts` (+54 -0) ➕ `convex/lib/moderationEngine.ts` (+360 -0) ➕ `convex/lib/moderationReasonCodes.ts` (+60 -0) 📝 `convex/lib/public.ts` (+55 -49) 📝 `convex/lib/skillPublish.ts` (+174 -158) 📝 `convex/lib/skillSafety.ts` (+11 -6) 📝 `convex/schema.ts` (+216 -177) 📝 `convex/skills.ts` (+1773 -1551) 📝 `convex/vt.ts` (+549 -457) 📝 `docs/security.md` (+25 -1) 📝 `docs/spec.md` (+33 -7) 📝 `packages/clawdhub/src/cli.ts` (+264 -263) 📝 `packages/clawdhub/src/cli/commands/inspect.test.ts` (+107 -70) 📝 `packages/clawdhub/src/cli/commands/inspect.ts` (+239 -149) 📝 `packages/clawdhub/src/cli/commands/skills.ts` (+329 -228) 📝 `packages/clawdhub/src/schema/schemas.ts` (+204 -178) ➕ `packages/clawdhub/src/security/staticScan.ts` (+227 -0) _...and 5 more files_ </details> ### 📄 Description ## Summary Implements moderation/verification v2 across schema, engine, publish pipeline, API, CLI, UI, and backfill flow. ## What changed - Added normalized moderation fields on `skills` and deterministic `staticScan` payload on `skillVersions`. - Introduced canonical moderation engine and reason-code contract. - Replaced broad keyword-only moderation heuristics with context-aware static analyzers. - Unified static + VT + LLM merge behavior into explicit verdict policy. - Updated visibility/safety logic to use normalized verdicts and reason codes. - Extended API contracts: - `GET /api/v1/skills/:slug` additive moderation fields (`verdict`, `reasonCodes`, `updatedAt`, `engineVersion`, `summary`). - Added `GET /api/v1/skills/:slug/moderation` detailed evidence endpoint with owner/staff vs public behavior. - Extended CLI: - `inspect --moderation` for detailed structured moderation output. - install/update trust UX now surfaces reason/evidence hints. - local static verification on downloaded files with mismatch guardrails. - Added UI moderation transparency on skill detail pages. - Added historical backfill internal action for published, non-hard-deleted skills. - Updated security/spec docs with moderation semantics and reason-code behavior. ## Compatibility - Legacy moderation fields and booleans are preserved and mirrored for compatibility. ## Validation - Ran lint and targeted test suites for moderation engine, API handlers, CLI commands, and merge behavior. <!-- greptile_comment --> <h3>Greptile Summary</h3> Implements moderation v2 trust verification across the full stack (schema, engine, API, CLI, UI). Adds normalized `moderationVerdict`, `moderationReasonCodes`, and `moderationEvidence` fields to skills, with deterministic `staticScan` payload on skill versions. Replaces keyword-only heuristics with context-aware static analyzers and explicit verdict policy merging static + VT + LLM signals. **Major changes:** - Added canonical moderation engine with structured reason codes and evidence findings - Extended schema with additive moderation fields while preserving legacy compatibility - Implemented `GET /api/v1/skills/:slug/moderation` endpoint with owner/staff vs public access control - Added CLI `--moderation` flag for inspect command and local static verification on install/update - Updated UI to display verdict, reason codes, and moderation summary - Implemented backfill action for historical skills **Key observations:** - Static scanning logic is duplicated between server (`convex/lib/moderationEngine.ts`) and CLI (`packages/clawdhub/src/security/staticScan.ts`), requiring manual synchronization for future updates - Reason codes correctly match between implementations - Legacy moderation fields preserved for backward compatibility - Test coverage includes basic moderation engine scenarios <h3>Confidence Score: 4/5</h3> - This PR is safe to merge with minor considerations around code duplication - The moderation v2 implementation is comprehensive and well-tested, with proper separation between server and client-side scanning logic. The schema changes are additive and backward-compatible. However, the static scanning logic is duplicated between server (convex/lib/moderationEngine.ts) and CLI (packages/clawdhub/src/security/staticScan.ts), which creates maintenance risk. The reason codes match correctly, but any future updates must be synchronized manually across both implementations. - Pay attention to convex/lib/moderationEngine.ts and packages/clawdhub/src/security/staticScan.ts - these contain duplicated scanning logic that must stay synchronized <sub>Last reviewed commit: 2b9acf5</sub> <!-- greptile_other_comments_section --> <sub>(3/5) Reply to the agent's comments like "Can you suggest a fix for this @greptileai?" or ask follow-up questions!</sub> <!-- /greptile_comment --> --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
yindo added the pull-request label 2026-02-15 17:16:56 -05:00
yindo closed this issue 2026-02-15 17:16:56 -05:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: openclaw/clawhub#329