OpenCanon

Agent-ready. Human-readable. Runtime-enforced.

Finding output

Output examples.

Findings rendered as code, margin signals, and action details. Each example comes from a validator in this repo.

Validator output src/services/company.service.ts
import { db } from "../db/client";  ← service imports db client
 
export class CompanyService {
  async deactivate(id: string) {
    return db.from("companies").where({ id }).update({ status: "x" });  ← "companies" appears in 6 services
  }
}
  1. error service-no-db-client src/services/company.service.ts:1

    Route persistence through a repository in src/repositories/.

  2. warn repeated-domain-literals src/services/company.service.ts:5

    Extract into the shared domain table registry.

A service that reaches across the db boundary.
Validator output opencanon/conventions/index.ts
// opencanon/conventions/index.ts
export default [  ← generated docs are stale
  serviceDbBoundary,
  repeatedDomainLiterals,
  noDumpsterFolders,
];
  1. warn generated-doc-drift opencanon/conventions/index.ts:2

    Run opencanon canon render conventions, then review the Markdown diff.

Generated docs drift check.
Validator output runtime-response.json
{
  "ok": false,
  "error": {  ← runtime failure is explicit
    "kind": "problem",
    "message": "Project runtime is not initialized",
    "action": "Run opencanon setup --yes"
  }
}
  1. error explicit-error-contracts runtime-response.json:3

    Clients receive one error payload with a predictable recovery action.

Explicit runtime error contract.