{
  "about": "Facts about the PromptReports products. Each line carries its evidence and whether that evidence checked on checked_at. \"cannot tell\" means it did not. A merged change is named, not linked, because the product repos are private. roster is the one product list every family site's footer reads: list the products whose footer is true, under their group's heading, and link the company's products_page for the rest.",
  "checked_at": "2026-11-10",
  "claims_sha256": "9563376045867590487682ea86f8b25dd081559580909e581c35b950d46041e2",
  "roster": {
    "company": {
      "name": "PromptReports",
      "site": "https://promptreports.ai/",
      "products_page": "https://promptreports.ai/products/"
    },
    "groups": [
      {
        "name": "AI coding",
        "heading": "AI coding",
        "footer": true
      },
      {
        "name": "Go-to-market and revenue",
        "heading": "Go-to-market",
        "footer": true
      },
      {
        "name": "Financial",
        "heading": "Financial",
        "footer": false
      }
    ],
    "products": [
      {
        "name": "RepoOps",
        "site": "https://repoops.ai/",
        "domain": "repoops.ai",
        "group": "AI coding",
        "footer": true
      },
      {
        "name": "PromptCompute",
        "site": "https://promptcompute.ai/",
        "domain": "promptcompute.ai",
        "group": "AI coding",
        "footer": true
      },
      {
        "name": "ContextFile",
        "site": "https://contextfile.ai/",
        "domain": "contextfile.ai",
        "group": "AI coding",
        "footer": true
      },
      {
        "name": "AI Source of Truth",
        "site": "https://aisourceoftruth.com/",
        "domain": "aisourceoftruth.com",
        "group": "AI coding",
        "footer": true
      },
      {
        "name": "Sales as Code",
        "site": "https://salesascode.com/",
        "domain": "salesascode.com",
        "group": "Go-to-market and revenue",
        "footer": true
      },
      {
        "name": "CommitOps",
        "site": "https://commitops.ai/",
        "domain": "commitops.ai",
        "group": "Go-to-market and revenue",
        "footer": true
      },
      {
        "name": "15 Minute Markets",
        "site": "https://15minutemarkets.com/",
        "domain": "15minutemarkets.com",
        "group": "Financial",
        "footer": false
      },
      {
        "name": "StockGaines",
        "site": "https://stockgaines.com/",
        "domain": "stockgaines.com",
        "group": "Financial",
        "footer": false
      }
    ]
  },
  "products": [
    {
      "name": "RepoOps",
      "site": "https://repoops.ai/",
      "group": "AI coding",
      "tagline": "Trace a production error to the agent session behind it.",
      "role": "Decision, outcome and learning",
      "status": "live",
      "world_model": {
        "title": "Production",
        "knows": "What broke before in each repo. It traces an incident to its likely change and puts the change risk on each pull request.",
        "state": "merged",
        "since": "2026-11-05",
        "evidence": [
          {
            "kind": "change",
            "label": "repo-dashboard #6863, merged 2026-11-05",
            "ok": true,
            "date": "2026-11-05",
            "url": null
          },
          {
            "kind": "change",
            "label": "repo-dashboard #6868, merged 2026-11-05",
            "ok": true,
            "date": "2026-11-05",
            "url": null
          }
        ]
      }
    },
    {
      "name": "PromptCompute",
      "site": "https://promptcompute.ai/",
      "group": "AI coding",
      "tagline": "A person approves what touches the world.",
      "role": "Approved execution",
      "status": "live",
      "world_model": {
        "title": "Approvals",
        "knows": "The resources each approval touches and each one's history, shown on the approval card.",
        "state": "live",
        "since": "2026-11-05",
        "evidence": [
          {
            "kind": "change",
            "label": "promptcompute.ai #105, merged 2026-11-05",
            "ok": true,
            "date": "2026-11-05",
            "url": null
          },
          {
            "kind": "change",
            "label": "promptcompute.ai #109, merged 2026-11-05",
            "ok": true,
            "date": "2026-11-05",
            "url": null
          },
          {
            "kind": "file",
            "label": "promptcompute.ai .claude/brain/sessions/2026-11-05-world-model-deploy.md",
            "quote": "Deployed main at 719b3a1 (#105 to #114) to production",
            "ok": true,
            "date": null,
            "url": null
          }
        ]
      }
    },
    {
      "name": "ContextFile",
      "site": "https://contextfile.ai/",
      "group": "AI coding",
      "tagline": "Versioned context for agents.",
      "role": "Shared context",
      "status": "live",
      "world_model": {
        "title": "Context",
        "knows": "Each artifact's neighborhood: what it depends on, replaces and conflicts with, and how past purchases turned out.",
        "state": "merged",
        "since": "2026-11-05",
        "evidence": [
          {
            "kind": "change",
            "label": "ContextFile #92, merged 2026-11-05",
            "ok": true,
            "date": "2026-11-05",
            "url": null
          },
          {
            "kind": "change",
            "label": "ContextFile #93, merged 2026-11-05",
            "ok": true,
            "date": "2026-11-05",
            "url": null
          },
          {
            "kind": "change",
            "label": "ContextFile #94, merged 2026-11-05",
            "ok": true,
            "date": "2026-11-05",
            "url": null
          }
        ]
      }
    },
    {
      "name": "AI Source of Truth",
      "site": "https://aisourceoftruth.com/",
      "group": "AI coding",
      "tagline": "A public record you can check later.",
      "role": "Public record of learning",
      "status": "live",
      "world_model": {
        "title": "The public record",
        "knows": "Every published claim as it stood on any past date, so a check made today can be repeated later.",
        "state": "merged",
        "since": "2026-11-05",
        "evidence": [
          {
            "kind": "change",
            "label": "aisourceoftruth #165, merged 2026-11-05",
            "ok": true,
            "date": "2026-11-05",
            "url": null
          }
        ]
      }
    },
    {
      "name": "Sales as Code",
      "site": "https://salesascode.com/",
      "group": "Go-to-market and revenue",
      "tagline": "Outreach and forecasts that score themselves.",
      "role": "Forecast and proposal, the revenue loop's decision",
      "status": "live",
      "world_model": {
        "title": "Deals",
        "knows": "The odds of each deal, the drivers behind them, and a marker for what the model cannot see.",
        "state": "merged",
        "since": "2026-11-06",
        "evidence": [
          {
            "kind": "change",
            "label": "Sales-Intelligence #2767, merged 2026-11-06",
            "ok": true,
            "date": "2026-11-06",
            "url": null
          },
          {
            "kind": "change",
            "label": "Sales-Intelligence #2768, merged 2026-11-06",
            "ok": true,
            "date": "2026-11-06",
            "url": null
          }
        ]
      }
    },
    {
      "name": "CommitOps",
      "site": "https://commitops.ai/",
      "group": "Go-to-market and revenue",
      "tagline": "Every promise to a customer, and the work behind it.",
      "role": "Promise and outcome, joined to the code loop",
      "status": "live",
      "world_model": {
        "title": "Promises",
        "knows": "What was promised to each customer, the capability behind it, and whether it can land by a date.",
        "state": "merged",
        "since": "2026-11-05",
        "evidence": [
          {
            "kind": "change",
            "label": "commitops #73, merged 2026-11-05",
            "ok": true,
            "date": "2026-11-05",
            "url": null
          },
          {
            "kind": "change",
            "label": "commitops #74, merged 2026-11-05",
            "ok": true,
            "date": "2026-11-05",
            "url": null
          },
          {
            "kind": "change",
            "label": "commitops #75, merged 2026-11-05",
            "ok": true,
            "date": "2026-11-05",
            "url": null
          }
        ]
      }
    },
    {
      "name": "15 Minute Markets",
      "site": "https://15minutemarkets.com/",
      "group": "Financial",
      "tagline": "Research on short-dated event markets.",
      "role": "Market decisions, trading gated and off by default",
      "status": "live",
      "world_model": null
    },
    {
      "name": "StockGaines",
      "site": "https://stockgaines.com/",
      "group": "Financial",
      "tagline": "Stock research with its record kept.",
      "role": "Investment research",
      "status": "live",
      "world_model": {
        "title": "Your portfolio",
        "knows": "How your portfolio fares in each scenario, the suppliers and customers your holdings share, and a weekly scorecard of its own forecasts.",
        "state": "merged",
        "since": "2026-11-07",
        "evidence": [
          {
            "kind": "change",
            "label": "trading-cowork #883, merged 2026-11-07",
            "ok": true,
            "date": "2026-11-07",
            "url": null
          },
          {
            "kind": "change",
            "label": "trading-cowork #885, merged 2026-11-07",
            "ok": true,
            "date": "2026-11-07",
            "url": null
          },
          {
            "kind": "change",
            "label": "trading-cowork #889, merged 2026-11-07",
            "ok": true,
            "date": "2026-11-07",
            "url": null
          }
        ]
      }
    }
  ],
  "joins": [
    {
      "title": "Risk on every approval",
      "from": "RepoOps",
      "to": "PromptCompute",
      "to_short": "PromptCompute",
      "to_color_of": "PromptCompute",
      "both_ways": false,
      "what": "Each merge and deploy routed for approval carries its change risk and what broke before.",
      "state": "merged",
      "since": "2026-11-06",
      "evidence": [
        {
          "kind": "change",
          "label": "promptcompute.ai #123, merged 2026-11-06",
          "ok": true,
          "date": "2026-11-06",
          "url": null
        },
        {
          "kind": "change",
          "label": "repo-dashboard #6910, merged 2026-11-06",
          "ok": true,
          "date": "2026-11-06",
          "url": null
        }
      ]
    },
    {
      "title": "A bad outcome starts a lesson",
      "from": "PromptCompute",
      "to": "RepoOps",
      "to_short": "RepoOps",
      "to_color_of": "RepoOps",
      "both_ways": false,
      "what": "When an approved action turns out badly, PromptCompute tells RepoOps, and a lesson candidate opens.",
      "state": "merged",
      "since": "2026-11-06",
      "evidence": [
        {
          "kind": "change",
          "label": "promptcompute.ai #121, merged 2026-11-05",
          "ok": true,
          "date": "2026-11-05",
          "url": null
        },
        {
          "kind": "change",
          "label": "promptcompute.ai #125, merged 2026-11-06",
          "ok": true,
          "date": "2026-11-06",
          "url": null
        },
        {
          "kind": "change",
          "label": "repo-dashboard #6916, merged 2026-11-06",
          "ok": true,
          "date": "2026-11-06",
          "url": null
        }
      ]
    },
    {
      "title": "Promises meet the code",
      "from": "CommitOps",
      "to": "RepoOps",
      "to_short": "RepoOps",
      "to_color_of": "RepoOps",
      "both_ways": true,
      "what": "Promises show on the pull requests that keep them, change risk marks the forecast without moving a date, a broken promise opens a case, and agent cost flows back.",
      "state": "switching on",
      "since": "2026-11-08",
      "evidence": [
        {
          "kind": "change",
          "label": "commitops #106, merged 2026-11-07",
          "ok": true,
          "date": "2026-11-07",
          "url": null
        },
        {
          "kind": "change",
          "label": "repo-dashboard #7045, merged 2026-11-08",
          "ok": true,
          "date": "2026-11-08",
          "url": null
        }
      ]
    },
    {
      "title": "Forecasts teach the brain",
      "from": "Sales as Code",
      "to": "RepoOps shared brain",
      "to_short": "Shared brain",
      "to_color_of": "RepoOps",
      "both_ways": false,
      "what": "The coding agents that build Sales as Code read the shared brain. A release that forecasts worse files a lesson in it for review, once the RepoOps token is set.",
      "state": "switching on",
      "since": "2026-11-07",
      "evidence": [
        {
          "kind": "change",
          "label": "Sales-Intelligence #2745, merged 2026-11-05",
          "ok": true,
          "date": "2026-11-05",
          "url": null
        },
        {
          "kind": "change",
          "label": "Sales-Intelligence #2770, merged 2026-11-07",
          "ok": true,
          "date": "2026-11-07",
          "url": null
        },
        {
          "kind": "file",
          "label": "Sales-Intelligence docs/features/family-brain.md",
          "quote": "Agents working here call the RepoOps brain",
          "ok": true,
          "date": null,
          "url": null
        },
        {
          "kind": "file",
          "label": "Sales-Intelligence changelog.d/2026-11-06-publish-accuracy-proof.md",
          "quote": "files one lesson candidate in RepoOps (`propose_brain_entry`)",
          "ok": true,
          "date": null,
          "url": null
        },
        {
          "kind": "file",
          "label": "Sales-Intelligence openspec/changes/publish-accuracy-proof/tasks.md",
          "quote": "dormant without `REPOOPS_MCP_TOKEN`",
          "ok": true,
          "date": null,
          "url": null
        }
      ]
    },
    {
      "title": "Can we promise this by then?",
      "from": "CommitOps",
      "to": "CRM deal cards and Slack",
      "to_short": "Deal cards",
      "to_color_of": "Sales as Code",
      "both_ways": false,
      "what": "CommitOps answers from Slack and from HubSpot, Salesforce and Attio deal cards: shipped, projected before, projected after, or cannot tell.",
      "state": "merged",
      "since": "2026-11-05",
      "evidence": [
        {
          "kind": "change",
          "label": "commitops #75, merged 2026-11-05",
          "ok": true,
          "date": "2026-11-05",
          "url": null
        }
      ]
    },
    {
      "title": "A record's verdict beside its context",
      "from": "ContextFile",
      "to": "AI Source of Truth",
      "to_short": "AI Source of Truth",
      "to_color_of": "AI Source of Truth",
      "both_ways": true,
      "what": "ContextFile shows AI Source of Truth's verdict on each artifact version's public record, and a recalled report files its correction there.",
      "state": "merged",
      "since": "2026-11-07",
      "evidence": [
        {
          "kind": "change",
          "label": "ContextFile #125, merged 2026-11-07",
          "ok": true,
          "date": "2026-11-07",
          "url": null
        }
      ]
    },
    {
      "title": "A corrected eval holds back a date",
      "from": "CommitOps",
      "to": "AI Source of Truth",
      "to_short": "AI Source of Truth",
      "to_color_of": "AI Source of Truth",
      "both_ways": false,
      "what": "When AI Source of Truth holds a correction on CommitOps's own published eval for the release in use, a projected date becomes cannot tell until someone confirms the promises.",
      "state": "switching on",
      "since": "2026-11-07",
      "evidence": [
        {
          "kind": "change",
          "label": "commitops #104, merged 2026-11-07",
          "ok": true,
          "date": "2026-11-07",
          "url": null
        },
        {
          "kind": "file",
          "label": "commitops .env.example",
          "quote": "AISOT_ERRATA_CHECK=",
          "ok": true,
          "date": null,
          "url": null
        }
      ]
    },
    {
      "title": "Test before adopting",
      "from": "ContextFile",
      "to": "AI Source of Truth",
      "to_short": "AI Source of Truth",
      "to_color_of": "AI Source of Truth",
      "both_ways": true,
      "what": "Each reads the other's family feed, holds what it reads in quarantine until it passes a check, counts the other's verdicts toward trust, and applies a correction the other shares.",
      "state": "merged",
      "since": "2026-11-09",
      "evidence": [
        {
          "kind": "change",
          "label": "ContextFile #138, merged 2026-11-09",
          "ok": true,
          "date": "2026-11-09",
          "url": null
        },
        {
          "kind": "change",
          "label": "ContextFile #139, merged 2026-11-09",
          "ok": true,
          "date": "2026-11-09",
          "url": null
        },
        {
          "kind": "change",
          "label": "ContextFile #140, merged 2026-11-09",
          "ok": true,
          "date": "2026-11-09",
          "url": null
        },
        {
          "kind": "change",
          "label": "aisourceoftruth #226, merged 2026-11-09",
          "ok": true,
          "date": "2026-11-09",
          "url": null
        },
        {
          "kind": "change",
          "label": "aisourceoftruth #227, merged 2026-11-09",
          "ok": true,
          "date": "2026-11-09",
          "url": null
        }
      ]
    },
    {
      "title": "The public record read back",
      "from": "AI Source of Truth",
      "to": "ContextFile",
      "to_short": "ContextFile",
      "to_color_of": "ContextFile",
      "both_ways": false,
      "what": "When a record a report cites is sealed or corrected, ContextFile rechecks the report and tells its owner.",
      "state": "merged",
      "since": "2026-11-09",
      "evidence": [
        {
          "kind": "change",
          "label": "aisourceoftruth #228, merged 2026-11-09",
          "ok": true,
          "date": "2026-11-09",
          "url": null
        },
        {
          "kind": "change",
          "label": "ContextFile #142, merged 2026-11-09",
          "ok": true,
          "date": "2026-11-09",
          "url": null
        }
      ]
    }
  ],
  "joins_recorded": {
    "source": "https://aisourceoftruth.com/v1/family/facts",
    "ok": true,
    "count": 0
  },
  "shared_layer": [
    {
      "name": "Identity",
      "part": "PromptReports ID",
      "what": "One sign-in that carries your organization and role. An owner's sign-in links the team and connects approvals. Five products have the Sign in with PromptReports button, each off until the ID serves their sign-ins.",
      "who": [
        "RepoOps",
        "PromptCompute",
        "ContextFile",
        "Sales as Code",
        "CommitOps"
      ],
      "label": "Built in five, switching on",
      "state": "switching on",
      "since": "2026-11-08",
      "evidence": [
        {
          "kind": "change",
          "label": "repo-dashboard #6691, merged 2026-11-02",
          "ok": true,
          "date": "2026-11-02",
          "url": null
        },
        {
          "kind": "change",
          "label": "repo-dashboard #7041, merged 2026-11-08",
          "ok": true,
          "date": "2026-11-08",
          "url": null
        },
        {
          "kind": "change",
          "label": "Sales-Intelligence #2748, merged 2026-11-06",
          "ok": true,
          "date": "2026-11-06",
          "url": null
        },
        {
          "kind": "change",
          "label": "commitops #109, merged 2026-11-08",
          "ok": true,
          "date": "2026-11-08",
          "url": null
        },
        {
          "kind": "file",
          "label": "repo-dashboard docs/features/promptreports-sign-in.md",
          "quote": "is the one sign-in for promptcompute, RepoOps and ContextFile.",
          "ok": true,
          "date": null,
          "url": null
        },
        {
          "kind": "file",
          "label": "promptcompute.ai docs/promptreports-id.md",
          "quote": "| `org_id`, `org_name`, `org_role` | the person has an org | The org chosen for this sign-in. Absent when the person has none. |",
          "ok": true,
          "date": null,
          "url": null
        },
        {
          "kind": "file",
          "label": "repo-dashboard docs/LEDGER.md",
          "quote": "The sign-in is built and off until LDG-1556 registers the client and turns `PROMPTREPORTS_SIGNIN` on.",
          "ok": true,
          "date": null,
          "url": null
        }
      ]
    },
    {
      "name": "Approval",
      "part": "PromptCompute",
      "what": "For a team that connects, the exact action goes to a person before it runs: rollbacks, fixes and memory writes; outbound sends; customer notices from CommitOps. Each approval is signed.",
      "who": [
        "RepoOps",
        "Sales as Code",
        "CommitOps"
      ],
      "label": "Built, switching on",
      "state": "switching on",
      "since": "2026-11-07",
      "evidence": [
        {
          "kind": "change",
          "label": "repo-dashboard #5693, merged 2026-10-23",
          "ok": true,
          "date": "2026-10-23",
          "url": null
        },
        {
          "kind": "change",
          "label": "repo-dashboard #6912, merged 2026-11-06",
          "ok": true,
          "date": "2026-11-06",
          "url": null
        },
        {
          "kind": "change",
          "label": "promptcompute.ai #142, merged 2026-11-07",
          "ok": true,
          "date": "2026-11-07",
          "url": null
        },
        {
          "kind": "file",
          "label": "repo-dashboard docs/features/promptcompute-approvals.md",
          "quote": "When a team connects promptcompute, those actions go to promptcompute Approvals instead.",
          "ok": true,
          "date": null,
          "url": null
        },
        {
          "kind": "file",
          "label": "repo-dashboard docs/features/promptcompute-approvals.md",
          "quote": "a valid Ed25519 signature",
          "ok": true,
          "date": null,
          "url": null
        },
        {
          "kind": "file",
          "label": "promptcompute.ai docs/connect-products.md",
          "quote": "| `commitops.customer.notify` | `tool`, `account` (string or null), `ref` (string or null), `channel`, `input_sha256` | `account` commitops_account, `ref` commitops_promise | high, never_auto |",
          "ok": true,
          "date": null,
          "url": null
        },
        {
          "kind": "file",
          "label": "Sales-Intelligence src/lib/promptcompute/actions.ts",
          "quote": "outboundSend: 'outbound.send'",
          "ok": true,
          "date": null,
          "url": null
        }
      ]
    },
    {
      "name": "Record",
      "part": "Tasks and claims",
      "what": "Every goal gets a task id and an append-only list of events. Every claim has one of seven statuses; a correction is a new statement, never an edit.",
      "who": [
        "RepoOps"
      ],
      "label": "Built in RepoOps",
      "state": "built",
      "since": "2026-11-08",
      "evidence": [
        {
          "kind": "change",
          "label": "repo-dashboard #7048, merged 2026-11-08",
          "ok": true,
          "date": "2026-11-08",
          "url": null
        },
        {
          "kind": "change",
          "label": "repo-dashboard #7046, merged 2026-11-08",
          "ok": true,
          "date": "2026-11-08",
          "url": null
        },
        {
          "kind": "file",
          "label": "repo-dashboard docs/features/task-record.md",
          "quote": "A task has a `T-` id",
          "ok": true,
          "date": null,
          "url": null
        },
        {
          "kind": "file",
          "label": "repo-dashboard docs/features/task-record.md",
          "quote": "It is never edited.",
          "ok": true,
          "date": null,
          "url": null
        },
        {
          "kind": "file",
          "label": "repo-dashboard lib/claim-status.mjs",
          "quote": "APPEND ONLY. A status change is a new statement that points at the one before",
          "ok": true,
          "date": null,
          "url": null
        }
      ]
    },
    {
      "name": "Memory",
      "part": "The brain",
      "what": "Lessons, decisions and past errors that agents read before they act. A person publishes and can revoke each lesson. The coding agents that build Sales as Code read the same brain, and a release that forecasts worse is built to file a lesson in it.",
      "who": [
        "RepoOps",
        "Sales as Code"
      ],
      "label": "Built",
      "state": "built",
      "since": "2026-11-08",
      "evidence": [
        {
          "kind": "change",
          "label": "repo-dashboard #7060, merged 2026-11-08",
          "ok": true,
          "date": "2026-11-08",
          "url": null
        },
        {
          "kind": "file",
          "label": "repo-dashboard docs/features/claim-correction.md",
          "quote": "After that, Revoke takes a reason and appends a new statement",
          "ok": true,
          "date": null,
          "url": null
        },
        {
          "kind": "change",
          "label": "Sales-Intelligence #2745, merged 2026-11-05",
          "ok": true,
          "date": "2026-11-05",
          "url": null
        },
        {
          "kind": "change",
          "label": "Sales-Intelligence #2770, merged 2026-11-07",
          "ok": true,
          "date": "2026-11-07",
          "url": null
        },
        {
          "kind": "file",
          "label": "Sales-Intelligence docs/features/family-brain.md",
          "quote": "Agents working here call the RepoOps brain",
          "ok": true,
          "date": null,
          "url": null
        },
        {
          "kind": "file",
          "label": "Sales-Intelligence changelog.d/2026-11-06-publish-accuracy-proof.md",
          "quote": "files one lesson candidate in RepoOps (`propose_brain_entry`)",
          "ok": true,
          "date": null,
          "url": null
        }
      ]
    },
    {
      "name": "World model",
      "part": "Joined models",
      "what": "Each of the six products models its own part of the world and says what it cannot see. The joins between them are growing: some merged, some switching on.",
      "who": [
        "RepoOps",
        "Sales as Code",
        "CommitOps",
        "PromptCompute",
        "ContextFile",
        "AI Source of Truth"
      ],
      "label": "{merged_joins} joins merged",
      "state": "merged",
      "since": "2026-11-06",
      "evidence": [
        {
          "kind": "change",
          "label": "promptcompute.ai #123, merged 2026-11-06",
          "ok": true,
          "date": "2026-11-06",
          "url": null
        },
        {
          "kind": "change",
          "label": "promptcompute.ai #121, merged 2026-11-05",
          "ok": true,
          "date": "2026-11-05",
          "url": null
        },
        {
          "kind": "change",
          "label": "commitops #75, merged 2026-11-05",
          "ok": true,
          "date": "2026-11-05",
          "url": null
        }
      ]
    },
    {
      "name": "Public record",
      "part": "AI Source of Truth",
      "what": "Provenance, accuracy figures and corrections published where anyone can check them later.",
      "who": [
        "AI Source of Truth",
        "Sales as Code"
      ],
      "label": "Built, off by default",
      "state": "switching on",
      "since": null,
      "evidence": [
        {
          "kind": "file",
          "label": "repo-dashboard .claude/brain/config.md",
          "quote": "`off` (default, nothing read or sent), `dry-run` (each record logged, nothing sent) or `live`",
          "ok": true,
          "date": null,
          "url": null
        },
        {
          "kind": "file",
          "label": "Sales-Intelligence changelog.d/2026-11-06-publish-accuracy-proof.md",
          "quote": "AISoT stays in dry-run until the operator registers the publisher key.",
          "ok": true,
          "date": null,
          "url": null
        }
      ]
    },
    {
      "name": "Statement",
      "part": "The family statement",
      "what": "One signed shape for a claim that leaves one product for another: who issued it, what it came from and which org it belongs to. A changed copy or another org's statement is refused. Each product signs once its key is set.",
      "who": [
        "RepoOps",
        "PromptCompute",
        "ContextFile",
        "AI Source of Truth",
        "CommitOps",
        "Sales as Code"
      ],
      "label": "Built in all six, switching on",
      "state": "switching on",
      "since": "2026-11-08",
      "evidence": [
        {
          "kind": "change",
          "label": "repo-dashboard #7080, merged 2026-11-08",
          "ok": true,
          "date": "2026-11-08",
          "url": null
        },
        {
          "kind": "change",
          "label": "promptcompute.ai #186, merged 2026-11-08",
          "ok": true,
          "date": "2026-11-08",
          "url": null
        },
        {
          "kind": "change",
          "label": "ContextFile #133, merged 2026-11-08",
          "ok": true,
          "date": "2026-11-08",
          "url": null
        },
        {
          "kind": "change",
          "label": "aisourceoftruth #221, merged 2026-11-08",
          "ok": true,
          "date": "2026-11-08",
          "url": null
        },
        {
          "kind": "change",
          "label": "commitops #113, merged 2026-11-08",
          "ok": true,
          "date": "2026-11-08",
          "url": null
        },
        {
          "kind": "change",
          "label": "Sales-Intelligence #2785, merged 2026-11-08",
          "ok": true,
          "date": "2026-11-08",
          "url": null
        },
        {
          "kind": "file",
          "label": "repo-dashboard docs/specs/family-statement-v1.md",
          "quote": "PromptCompute, ContextFile, AI Source of Truth, CommitOps and Sales as Code each\nimplement it",
          "ok": true,
          "date": null,
          "url": null
        },
        {
          "kind": "file",
          "label": "Sales-Intelligence .env.example",
          "quote": "FAMILY_STATEMENT_SEED=",
          "ok": true,
          "date": null,
          "url": null
        }
      ]
    },
    {
      "name": "Feed",
      "part": "The family feed",
      "what": "Each product keeps one feed per org of the statements it may share, off until an admin turns sharing on. The others read it from a cursor and test what they read before they adopt it.",
      "who": [
        "RepoOps",
        "ContextFile",
        "AI Source of Truth",
        "CommitOps",
        "Sales as Code"
      ],
      "label": "Built in five, switching on",
      "state": "switching on",
      "since": "2026-11-09",
      "evidence": [
        {
          "kind": "change",
          "label": "repo-dashboard #7091, merged 2026-11-08",
          "ok": true,
          "date": "2026-11-08",
          "url": null
        },
        {
          "kind": "change",
          "label": "ContextFile #138, merged 2026-11-09",
          "ok": true,
          "date": "2026-11-09",
          "url": null
        },
        {
          "kind": "change",
          "label": "aisourceoftruth #226, merged 2026-11-09",
          "ok": true,
          "date": "2026-11-09",
          "url": null
        },
        {
          "kind": "change",
          "label": "commitops #118, merged 2026-11-09",
          "ok": true,
          "date": "2026-11-09",
          "url": null
        },
        {
          "kind": "change",
          "label": "Sales-Intelligence #2790, merged 2026-11-09",
          "ok": true,
          "date": "2026-11-09",
          "url": null
        }
      ]
    },
    {
      "name": "Context",
      "part": "ContextFile, optional",
      "what": "The loops run without it. Connected, it adds the agent's context history: which version each session read, and what changed since.",
      "who": [
        "ContextFile"
      ],
      "label": null,
      "state": "planned",
      "since": null,
      "evidence": [
        {
          "kind": "file",
          "label": "repo-dashboard docs/ledger.d/portfolio-contract.md",
          "quote": "### LDG-2210 - Connecting ContextFile adds the agent's context history to the loop",
          "ok": true,
          "date": null,
          "url": null
        }
      ]
    }
  ],
  "lines": [
    {
      "id": "sac-proof",
      "name": "Sales as Code proof",
      "label": "Sales as Code proof: built",
      "state": "built",
      "since": "2026-11-07",
      "evidence": [
        {
          "kind": "change",
          "label": "Sales-Intelligence #2768, merged 2026-11-06",
          "ok": true,
          "date": "2026-11-06",
          "url": null
        },
        {
          "kind": "change",
          "label": "Sales-Intelligence #2770, merged 2026-11-07",
          "ok": true,
          "date": "2026-11-07",
          "url": null
        }
      ]
    },
    {
      "id": "revenue-approvals",
      "name": "Approvals for revenue actions",
      "label": "In the catalog",
      "state": "in the catalog",
      "since": null,
      "evidence": [
        {
          "kind": "file",
          "label": "promptcompute.ai packages/catalog/src/data/actions.json",
          "quote": "\"key\": \"sales.proposal.send\"",
          "ok": true,
          "date": null,
          "url": null
        },
        {
          "kind": "file",
          "label": "promptcompute.ai packages/catalog/src/data/actions.json",
          "quote": "\"key\": \"sales.sequence.enroll\"",
          "ok": true,
          "date": null,
          "url": null
        },
        {
          "kind": "file",
          "label": "promptcompute.ai packages/catalog/src/data/actions.json",
          "quote": "\"key\": \"sales.discount.approve\"",
          "ok": true,
          "date": null,
          "url": null
        },
        {
          "kind": "file",
          "label": "Sales-Intelligence src/lib/promptcompute/actions.ts",
          "quote": "outboundSend: 'outbound.send'",
          "ok": true,
          "date": null,
          "url": null
        }
      ]
    },
    {
      "id": "commitops-link",
      "name": "The RepoOps and CommitOps link",
      "label": "Built, switching on",
      "state": "switching on",
      "since": "2026-11-08",
      "evidence": [
        {
          "kind": "change",
          "label": "commitops #106, merged 2026-11-07",
          "ok": true,
          "date": "2026-11-07",
          "url": null
        },
        {
          "kind": "change",
          "label": "repo-dashboard #7045, merged 2026-11-08",
          "ok": true,
          "date": "2026-11-08",
          "url": null
        }
      ]
    },
    {
      "id": "promises-on-change-page",
      "name": "Promises on the change page",
      "label": "Built, switching on",
      "state": "switching on",
      "since": "2026-11-08",
      "evidence": [
        {
          "kind": "change",
          "label": "commitops #106, merged 2026-11-07",
          "ok": true,
          "date": "2026-11-07",
          "url": null
        },
        {
          "kind": "change",
          "label": "repo-dashboard #7045, merged 2026-11-08",
          "ok": true,
          "date": "2026-11-08",
          "url": null
        }
      ]
    },
    {
      "id": "agent-cost-to-commitops",
      "name": "Agent cost back to CommitOps",
      "label": "Built, switching on",
      "state": "switching on",
      "since": "2026-11-08",
      "evidence": [
        {
          "kind": "change",
          "label": "commitops #106, merged 2026-11-07",
          "ok": true,
          "date": "2026-11-07",
          "url": null
        },
        {
          "kind": "change",
          "label": "repo-dashboard #7045, merged 2026-11-08",
          "ok": true,
          "date": "2026-11-08",
          "url": null
        }
      ]
    },
    {
      "id": "change-risk-for-commitops",
      "name": "Change risk for CommitOps",
      "label": "Built, switching on",
      "state": "switching on",
      "since": "2026-11-08",
      "evidence": [
        {
          "kind": "change",
          "label": "commitops #106, merged 2026-11-07",
          "ok": true,
          "date": "2026-11-07",
          "url": null
        },
        {
          "kind": "change",
          "label": "repo-dashboard #7045, merged 2026-11-08",
          "ok": true,
          "date": "2026-11-08",
          "url": null
        }
      ]
    },
    {
      "id": "broken-promise-case",
      "name": "A broken promise opens a case",
      "label": "Built, switching on",
      "state": "switching on",
      "since": "2026-11-08",
      "evidence": [
        {
          "kind": "change",
          "label": "commitops #106, merged 2026-11-07",
          "ok": true,
          "date": "2026-11-07",
          "url": null
        },
        {
          "kind": "change",
          "label": "repo-dashboard #7045, merged 2026-11-08",
          "ok": true,
          "date": "2026-11-08",
          "url": null
        }
      ]
    },
    {
      "id": "record-task-id",
      "name": "Task id",
      "label": "Built",
      "state": "built",
      "since": "2026-11-08",
      "evidence": [
        {
          "kind": "change",
          "label": "repo-dashboard #7048, merged 2026-11-08",
          "ok": true,
          "date": "2026-11-08",
          "url": null
        },
        {
          "kind": "file",
          "label": "repo-dashboard docs/features/task-record.md",
          "quote": "A task has a `T-` id",
          "ok": true,
          "date": null,
          "url": null
        }
      ]
    },
    {
      "id": "record-context",
      "name": "Context",
      "label": "Built",
      "state": "built",
      "since": "2026-11-08",
      "evidence": [
        {
          "kind": "change",
          "label": "repo-dashboard #7068, merged 2026-11-08",
          "ok": true,
          "date": "2026-11-08",
          "url": null
        },
        {
          "kind": "file",
          "label": "repo-dashboard docs/features/context-packet.md",
          "quote": "puts one sha256 over the whole (`packet_hash`)",
          "ok": true,
          "date": null,
          "url": null
        }
      ]
    },
    {
      "id": "record-approval",
      "name": "Decision and approval",
      "label": "Built",
      "state": "built",
      "since": "2026-10-23",
      "evidence": [
        {
          "kind": "change",
          "label": "repo-dashboard #5693, merged 2026-10-23",
          "ok": true,
          "date": "2026-10-23",
          "url": null
        },
        {
          "kind": "file",
          "label": "repo-dashboard docs/features/promptcompute-approvals.md",
          "quote": "a valid Ed25519 signature",
          "ok": true,
          "date": null,
          "url": null
        }
      ]
    },
    {
      "id": "record-outcome",
      "name": "Outcome",
      "label": "Built",
      "state": "built",
      "since": "2026-11-08",
      "evidence": [
        {
          "kind": "change",
          "label": "repo-dashboard #7057, merged 2026-11-08",
          "ok": true,
          "date": "2026-11-08",
          "url": null
        },
        {
          "kind": "file",
          "label": "repo-dashboard docs/features/success-criteria.md",
          "quote": "met, not met or not measured",
          "ok": true,
          "date": null,
          "url": null
        }
      ]
    },
    {
      "id": "record-timeline",
      "name": "Timeline page",
      "label": "Next",
      "state": "planned",
      "since": null,
      "evidence": []
    },
    {
      "id": "portal",
      "name": "The customer portal at accounts.promptreports.ai",
      "label": "Planned",
      "state": "planned",
      "since": null,
      "evidence": []
    },
    {
      "id": "runner",
      "name": "The workflow runner, which counts workflow requests",
      "label": "Planned",
      "state": "planned",
      "since": null,
      "evidence": []
    },
    {
      "id": "id-signin-repoops",
      "name": "Sign in with PromptReports ID on RepoOps",
      "label": "Built, switching on",
      "state": "switching on",
      "since": "2026-11-02",
      "evidence": [
        {
          "kind": "change",
          "label": "repo-dashboard #6691, merged 2026-11-02",
          "ok": true,
          "date": "2026-11-02",
          "url": null
        },
        {
          "kind": "file",
          "label": "repo-dashboard docs/LEDGER.md",
          "quote": "The sign-in is built and off until LDG-1556 registers the client and turns `PROMPTREPORTS_SIGNIN` on.",
          "ok": true,
          "date": null,
          "url": null
        }
      ]
    },
    {
      "id": "id-signin-promptcompute",
      "name": "Sign in with PromptReports ID on PromptCompute",
      "label": "Built, switching on",
      "state": "switching on",
      "since": null,
      "evidence": [
        {
          "kind": "file",
          "label": "repo-dashboard docs/features/promptreports-sign-in.md",
          "quote": "is the one sign-in for promptcompute, RepoOps and ContextFile.",
          "ok": true,
          "date": null,
          "url": null
        },
        {
          "kind": "file",
          "label": "repo-dashboard docs/LEDGER.md",
          "quote": "The sign-in is built and off until LDG-1556 registers the client and turns `PROMPTREPORTS_SIGNIN` on.",
          "ok": true,
          "date": null,
          "url": null
        }
      ]
    },
    {
      "id": "id-signin-contextfile",
      "name": "Sign in with PromptReports ID on ContextFile",
      "label": "Built, switching on",
      "state": "switching on",
      "since": null,
      "evidence": [
        {
          "kind": "file",
          "label": "repo-dashboard docs/features/promptreports-sign-in.md",
          "quote": "is the one sign-in for promptcompute, RepoOps and ContextFile.",
          "ok": true,
          "date": null,
          "url": null
        },
        {
          "kind": "file",
          "label": "repo-dashboard docs/LEDGER.md",
          "quote": "The sign-in is built and off until LDG-1556 registers the client and turns `PROMPTREPORTS_SIGNIN` on.",
          "ok": true,
          "date": null,
          "url": null
        }
      ]
    },
    {
      "id": "id-signin-sales-as-code",
      "name": "Sign in with PromptReports ID on Sales as Code",
      "label": "Built, switching on",
      "state": "switching on",
      "since": "2026-11-06",
      "evidence": [
        {
          "kind": "change",
          "label": "Sales-Intelligence #2748, merged 2026-11-06",
          "ok": true,
          "date": "2026-11-06",
          "url": null
        },
        {
          "kind": "file",
          "label": "repo-dashboard docs/LEDGER.md",
          "quote": "The sign-in is built and off until LDG-1556 registers the client and turns `PROMPTREPORTS_SIGNIN` on.",
          "ok": true,
          "date": null,
          "url": null
        }
      ]
    },
    {
      "id": "id-signin-commitops",
      "name": "Sign in with PromptReports ID on CommitOps",
      "label": "Built, switching on",
      "state": "switching on",
      "since": "2026-11-08",
      "evidence": [
        {
          "kind": "change",
          "label": "commitops #109, merged 2026-11-08",
          "ok": true,
          "date": "2026-11-08",
          "url": null
        },
        {
          "kind": "file",
          "label": "repo-dashboard docs/LEDGER.md",
          "quote": "The sign-in is built and off until LDG-1556 registers the client and turns `PROMPTREPORTS_SIGNIN` on.",
          "ok": true,
          "date": null,
          "url": null
        }
      ]
    },
    {
      "id": "id-oauth21",
      "name": "OAuth 2.1",
      "label": "Built",
      "state": "built",
      "since": null,
      "evidence": [
        {
          "kind": "file",
          "label": "promptcompute.ai apps/web/src/lib/oauth/validate.ts",
          "quote": "PKCE with code_challenge_method=S256 is required",
          "ok": true,
          "date": null,
          "url": null
        },
        {
          "kind": "file",
          "label": "promptcompute.ai apps/web/src/lib/oauth/oidc.ts",
          "quote": "PromptReports ID clients use authorization_code only",
          "ok": true,
          "date": null,
          "url": null
        }
      ]
    },
    {
      "id": "id-token-exchange",
      "name": "RFC 8693 token exchange",
      "label": "Built, off until its key is set",
      "state": "switching on",
      "since": "2026-11-01",
      "evidence": [
        {
          "kind": "change",
          "label": "promptcompute.ai #72, merged 2026-11-01",
          "ok": true,
          "date": "2026-11-01",
          "url": null
        },
        {
          "kind": "file",
          "label": "promptcompute.ai packages/approvals/src/agent-tokens.ts",
          "quote": "act: { sub: a.agentId, agent_version: body.agent_version_id ?? a.versionId },",
          "ok": true,
          "date": null,
          "url": null
        },
        {
          "kind": "file",
          "label": "promptcompute.ai docs/manual-tasks.md",
          "quote": "Agent tokens (client credentials and grant token exchange) stay off until the first one is done",
          "ok": true,
          "date": null,
          "url": null
        }
      ]
    },
    {
      "id": "id-rar",
      "name": "RFC 9396 authorization details",
      "label": "Built",
      "state": "built",
      "since": "2026-11-01",
      "evidence": [
        {
          "kind": "change",
          "label": "promptcompute.ai #72, merged 2026-11-01",
          "ok": true,
          "date": "2026-11-01",
          "url": null
        },
        {
          "kind": "file",
          "label": "promptcompute.ai apps/web/src/lib/oauth/config.ts",
          "quote": "authorization_details_types_supported: [\"promptcompute_action\"],",
          "ok": true,
          "date": null,
          "url": null
        }
      ]
    },
    {
      "id": "id-ciba",
      "name": "CIBA",
      "label": "Built",
      "state": "built",
      "since": "2026-11-01",
      "evidence": [
        {
          "kind": "change",
          "label": "promptcompute.ai #80, merged 2026-11-01",
          "ok": true,
          "date": "2026-11-01",
          "url": null
        },
        {
          "kind": "file",
          "label": "promptcompute.ai apps/web/src/lib/oauth/config.ts",
          "quote": "backchannel_authentication_endpoint: `${iss}/oauth/bc-authorize`,",
          "ok": true,
          "date": null,
          "url": null
        }
      ]
    },
    {
      "id": "id-dpop",
      "name": "DPoP",
      "label": "Partly built",
      "state": "built",
      "since": "2026-11-02",
      "evidence": [
        {
          "kind": "change",
          "label": "promptcompute.ai #87, merged 2026-11-02",
          "ok": true,
          "date": "2026-11-02",
          "url": null
        },
        {
          "kind": "file",
          "label": "promptcompute.ai packages/agents/src/outside.ts",
          "quote": "export async function verifyDpopProof(",
          "ok": true,
          "date": null,
          "url": null
        }
      ]
    },
    {
      "id": "id-jag",
      "name": "ID-JAG",
      "label": "Partly built",
      "state": "built",
      "since": "2026-11-02",
      "evidence": [
        {
          "kind": "change",
          "label": "promptcompute.ai #87, merged 2026-11-02",
          "ok": true,
          "date": "2026-11-02",
          "url": null
        },
        {
          "kind": "file",
          "label": "promptcompute.ai packages/approvals/src/id-jag.ts",
          "quote": "export const ID_JAG_TYP = \"oauth-id-jag+jwt\";",
          "ok": true,
          "date": null,
          "url": null
        }
      ]
    },
    {
      "id": "id-cimd",
      "name": "Client ID Metadata Documents",
      "label": "Built",
      "state": "built",
      "since": "2026-11-01",
      "evidence": [
        {
          "kind": "change",
          "label": "promptcompute.ai #68, merged 2026-11-01",
          "ok": true,
          "date": "2026-11-01",
          "url": null
        },
        {
          "kind": "file",
          "label": "promptcompute.ai apps/web/src/lib/oauth/config.ts",
          "quote": "client_id_metadata_document_supported: true,",
          "ok": true,
          "date": null,
          "url": null
        }
      ]
    },
    {
      "id": "id-spiffe",
      "name": "SPIFFE",
      "label": "Built",
      "state": "built",
      "since": "2026-11-08",
      "evidence": [
        {
          "kind": "change",
          "label": "promptcompute.ai #87, merged 2026-11-02",
          "ok": true,
          "date": "2026-11-02",
          "url": null
        },
        {
          "kind": "change",
          "label": "promptcompute.ai #166, merged 2026-11-08",
          "ok": true,
          "date": "2026-11-08",
          "url": null
        },
        {
          "kind": "file",
          "label": "promptcompute.ai packages/agents/src/outside.ts",
          "quote": "export async function verifyX509Svid(",
          "ok": true,
          "date": null,
          "url": null
        }
      ]
    },
    {
      "id": "id-agent-tokens-everywhere",
      "name": "Every product accepts the ID's agent token",
      "label": "Planned",
      "state": "planned",
      "since": null,
      "evidence": []
    },
    {
      "id": "packet-approvals",
      "name": "Approvals, signed",
      "label": "Planned",
      "state": "planned",
      "since": null,
      "evidence": []
    },
    {
      "id": "packet-incidents",
      "name": "Incidents, causes, recoveries and lessons, signed",
      "label": "Planned",
      "state": "planned",
      "since": null,
      "evidence": []
    },
    {
      "id": "packet-promises",
      "name": "Promises made and kept, signed",
      "label": "Planned",
      "state": "planned",
      "since": null,
      "evidence": []
    },
    {
      "id": "packet-verify",
      "name": "A verify page for a whole packet",
      "label": "Planned",
      "state": "planned",
      "since": null,
      "evidence": []
    },
    {
      "id": "map-soc2",
      "name": "SOC 2 change management",
      "label": "Planned",
      "state": "planned",
      "since": null,
      "evidence": []
    },
    {
      "id": "map-eu-ai-act",
      "name": "EU AI Act Articles 12, 19 and 50",
      "label": "Planned",
      "state": "planned",
      "since": null,
      "evidence": []
    },
    {
      "id": "soc2-audit",
      "name": "A SOC 2 report from an auditor",
      "label": "Not started",
      "state": "planned",
      "since": null,
      "evidence": []
    },
    {
      "id": "wf-launch-with-proof",
      "name": "Launch with proof",
      "label": "Partly built: three of five parts merged, the RepoOps release trace and the PromptCompute approval to go",
      "state": "built",
      "since": "2026-11-09",
      "evidence": [
        {
          "kind": "change",
          "label": "ContextFile #153, merged 2026-11-09",
          "ok": true,
          "date": "2026-11-09",
          "url": null
        },
        {
          "kind": "change",
          "label": "aisourceoftruth #240, merged 2026-11-09",
          "ok": true,
          "date": "2026-11-09",
          "url": null
        },
        {
          "kind": "change",
          "label": "PromptReports #19, merged 2026-11-07",
          "ok": true,
          "date": "2026-11-07",
          "url": null
        }
      ]
    },
    {
      "id": "wf-trust-packet",
      "name": "A trust packet a buyer can check",
      "label": "Partly built: three of five parts merged, the PromptCompute and RepoOps signed sections to go",
      "state": "built",
      "since": "2026-11-10",
      "evidence": [
        {
          "kind": "change",
          "label": "aisourceoftruth #241, merged 2026-11-09",
          "ok": true,
          "date": "2026-11-09",
          "url": null
        },
        {
          "kind": "url",
          "label": "The trust packet check on aisourceoftruth.com",
          "ok": true,
          "date": null,
          "url": "https://aisourceoftruth.com/verify/packet"
        },
        {
          "kind": "change",
          "label": "PromptReports #32, merged 2026-11-09",
          "ok": true,
          "date": "2026-11-09",
          "url": null
        },
        {
          "kind": "url",
          "label": "The trust center on promptreports.ai",
          "ok": true,
          "date": null,
          "url": "https://promptreports.ai/trust/"
        },
        {
          "kind": "change",
          "label": "commitops #149, merged 2026-11-10",
          "ok": true,
          "date": "2026-11-10",
          "url": null
        }
      ]
    },
    {
      "id": "wf-escalation-to-recovery",
      "name": "Customer escalation to recovery",
      "label": "Partly built: two of four parts merged, the RepoOps trace and fix and the PromptCompute approval to go",
      "state": "built",
      "since": "2026-11-10",
      "evidence": [
        {
          "kind": "change",
          "label": "Sales-Intelligence #2808, merged 2026-11-09",
          "ok": true,
          "date": "2026-11-09",
          "url": null
        },
        {
          "kind": "file",
          "label": "Sales-Intelligence src/lib/family-calibration.ts",
          "quote": "export function promiseChanges(",
          "ok": true,
          "date": null,
          "url": null
        },
        {
          "kind": "change",
          "label": "commitops #148, merged 2026-11-10",
          "ok": true,
          "date": "2026-11-10",
          "url": null
        }
      ]
    },
    {
      "id": "wf-roadmap-to-revenue",
      "name": "Roadmap to revenue",
      "label": "Partly built: two of three parts merged, the RepoOps report of the deals a shipped change moved to go",
      "state": "built",
      "since": "2026-11-10",
      "evidence": [
        {
          "kind": "change",
          "label": "Sales-Intelligence #2809, merged 2026-11-09",
          "ok": true,
          "date": "2026-11-09",
          "url": null
        },
        {
          "kind": "file",
          "label": "Sales-Intelligence src/lib/deal-demand.ts",
          "quote": "export function demandDraft(",
          "ok": true,
          "date": null,
          "url": null
        },
        {
          "kind": "change",
          "label": "commitops #150, merged 2026-11-10",
          "ok": true,
          "date": "2026-11-10",
          "url": null
        }
      ]
    },
    {
      "id": "wf-cost-per-outcome",
      "name": "Cost per outcome",
      "label": "Partly built: two of four parts merged, the RepoOps spend join and PromptCompute budget approvals to go",
      "state": "built",
      "since": "2026-11-10",
      "evidence": [
        {
          "kind": "change",
          "label": "Sales-Intelligence #2810, merged 2026-11-09",
          "ok": true,
          "date": "2026-11-09",
          "url": null
        },
        {
          "kind": "file",
          "label": "Sales-Intelligence src/lib/cost-per-outcome.ts",
          "quote": "export interface CostPerOutcome",
          "ok": true,
          "date": null,
          "url": null
        },
        {
          "kind": "change",
          "label": "commitops #151, merged 2026-11-10",
          "ok": true,
          "date": "2026-11-10",
          "url": null
        }
      ]
    },
    {
      "id": "wf-discount-and-promise-guard",
      "name": "Discount and promise guard",
      "label": "Partly built: three of three parts merged, the CommitOps promise switching on, the runner to go",
      "state": "built",
      "since": "2026-11-10",
      "evidence": [
        {
          "kind": "change",
          "label": "Sales-Intelligence #2812, merged 2026-11-09",
          "ok": true,
          "date": "2026-11-09",
          "url": null
        },
        {
          "kind": "file",
          "label": "Sales-Intelligence src/lib/deal-terms.ts",
          "quote": "export function routingOn(",
          "ok": true,
          "date": null,
          "url": null
        },
        {
          "kind": "change",
          "label": "promptcompute.ai #221, merged 2026-11-10",
          "ok": true,
          "date": "2026-11-10",
          "url": null
        },
        {
          "kind": "change",
          "label": "commitops #152, merged 2026-11-10",
          "ok": true,
          "date": "2026-11-10",
          "url": null
        }
      ]
    },
    {
      "id": "wf-graded-research",
      "name": "Graded research",
      "label": "Partly built: the AI Source of Truth scorecard is live, three parts to go",
      "state": "built",
      "since": "2026-11-09",
      "evidence": [
        {
          "kind": "change",
          "label": "aisourceoftruth #242, merged 2026-11-09",
          "ok": true,
          "date": "2026-11-09",
          "url": null
        },
        {
          "kind": "url",
          "label": "A publisher scorecard on aisourceoftruth.com",
          "ok": true,
          "date": null,
          "url": "https://aisourceoftruth.com/p/promptreports/scorecard"
        }
      ]
    },
    {
      "id": "wf-investor-update",
      "name": "Investor update with proof",
      "label": "Partly built: four of five parts merged, the PromptCompute approval before sending to go",
      "state": "built",
      "since": "2026-11-10",
      "evidence": [
        {
          "kind": "change",
          "label": "aisourceoftruth #243, merged 2026-11-09",
          "ok": true,
          "date": "2026-11-09",
          "url": null
        },
        {
          "kind": "url",
          "label": "The investor update check on aisourceoftruth.com",
          "ok": true,
          "date": null,
          "url": "https://aisourceoftruth.com/verify/investor-update"
        },
        {
          "kind": "change",
          "label": "Sales-Intelligence #2813, merged 2026-11-09",
          "ok": true,
          "date": "2026-11-09",
          "url": null
        },
        {
          "kind": "change",
          "label": "commitops #153, merged 2026-11-10",
          "ok": true,
          "date": "2026-11-10",
          "url": null
        },
        {
          "kind": "change",
          "label": "repo-dashboard #7171, merged 2026-11-10",
          "ok": true,
          "date": "2026-11-10",
          "url": null
        }
      ]
    },
    {
      "id": "post-record-badge",
      "name": "The record badge on each blog post",
      "label": "Built, switching on: the posts have records, and the badge shows from the next deploy",
      "state": "switching on",
      "since": "2026-11-09",
      "evidence": [
        {
          "kind": "change",
          "label": "PromptReports #19, merged 2026-11-07",
          "ok": true,
          "date": "2026-11-07",
          "url": null
        },
        {
          "kind": "change",
          "label": "PromptReports #39, merged 2026-11-09",
          "ok": true,
          "date": "2026-11-09",
          "url": null
        },
        {
          "kind": "record",
          "label": "The record of one post on aisourceoftruth.com",
          "ok": true,
          "date": null,
          "url": "https://aisourceoftruth.com/r/8bbd5aadf1610d4ec12481c7fc7429fb33bf161eae578d03d93ee8135ee5a7c9"
        }
      ]
    },
    {
      "id": "trust-center-page",
      "name": "The trust center page",
      "label": "Built",
      "state": "built",
      "since": null,
      "evidence": [
        {
          "kind": "file",
          "label": "PromptReports src/pages/trust/index.astro",
          "quote": "A packet your reviewer <em>can check.</em>",
          "ok": true,
          "date": null,
          "url": null
        }
      ]
    },
    {
      "id": "gap-task-id",
      "name": "One task id carried by every product",
      "label": null,
      "state": "planned",
      "since": null,
      "evidence": []
    },
    {
      "id": "gap-claim-statuses",
      "name": "Claim statuses in the other products",
      "label": "Claim statuses: AI Source of Truth turns a failed CommitOps claim into an erratum, and a Sales as Code correction replaces a claim without deleting it",
      "state": "built",
      "since": "2026-11-09",
      "evidence": [
        {
          "kind": "change",
          "label": "aisourceoftruth #227, merged 2026-11-09",
          "ok": true,
          "date": "2026-11-09",
          "url": null
        },
        {
          "kind": "change",
          "label": "Sales-Intelligence #2792, merged 2026-11-09",
          "ok": true,
          "date": "2026-11-09",
          "url": null
        }
      ]
    },
    {
      "id": "gap-connect-page",
      "name": "One Connect page",
      "label": "One Connect page: PromptCompute issues connect keys for eight products, and the page comes with the portal",
      "state": "built",
      "since": "2026-11-08",
      "evidence": [
        {
          "kind": "change",
          "label": "promptcompute.ai #156, merged 2026-11-08",
          "ok": true,
          "date": "2026-11-08",
          "url": null
        },
        {
          "kind": "file",
          "label": "promptcompute.ai docs/connect-products.md",
          "quote": "RepoOps, ContextFile, 15 Minute Markets, Sales as Code, PromptReports, CommitOps, AI Source of Truth and StockGaines send risky actions to promptcompute Approvals for sign-off.",
          "ok": true,
          "date": null,
          "url": null
        }
      ]
    },
    {
      "id": "wf-hire-an-agent",
      "name": "Hire an agent",
      "label": "Partly built: one of three parts merged, the PromptCompute hire flow and the RepoOps lessons to go",
      "state": "built",
      "since": "2026-11-09",
      "evidence": [
        {
          "kind": "change",
          "label": "ContextFile #154, merged 2026-11-09",
          "ok": true,
          "date": "2026-11-09",
          "url": null
        }
      ]
    },
    {
      "id": "wf-incident-to-policy",
      "name": "Incident to policy",
      "label": "Partly built: one of three parts merged, the RepoOps policy proposal and the PromptCompute approval to go",
      "state": "built",
      "since": "2026-11-09",
      "evidence": [
        {
          "kind": "change",
          "label": "ContextFile #155, merged 2026-11-09",
          "ok": true,
          "date": "2026-11-09",
          "url": null
        }
      ]
    },
    {
      "id": "wf-agent-vendor-evaluation",
      "name": "Evaluate an agent before you buy it",
      "label": "Planned",
      "state": "planned",
      "since": null,
      "evidence": []
    },
    {
      "id": "wf-ask-the-family",
      "name": "Ask across the family",
      "label": "Planned",
      "state": "planned",
      "since": null,
      "evidence": []
    },
    {
      "id": "wf-customer-promise-page",
      "name": "A customer's view of what was promised",
      "label": "Partly built: one of two parts merged, off by default, the RepoOps delivery evidence through the feed to go",
      "state": "built",
      "since": "2026-11-10",
      "evidence": [
        {
          "kind": "change",
          "label": "commitops #154, merged 2026-11-10",
          "ok": true,
          "date": "2026-11-10",
          "url": null
        }
      ]
    }
  ],
  "loops": [
    {
      "id": "code",
      "steps": [
        {
          "title": "Error",
          "product": "RepoOps",
          "link": "https://www.repoops.ai/production"
        },
        {
          "title": "Deploy",
          "product": "RepoOps",
          "link": "https://www.repoops.ai/docs/production-evidence"
        },
        {
          "title": "Change",
          "product": "RepoOps",
          "link": "https://www.repoops.ai/docs/features/incident-correlator"
        },
        {
          "title": "Agent session",
          "product": "RepoOps",
          "link": "https://www.repoops.ai/attribution"
        },
        {
          "title": "Approval",
          "product": "RepoOps",
          "link": "https://www.repoops.ai/remediation"
        },
        {
          "title": "Recovery",
          "product": "RepoOps",
          "link": "https://www.repoops.ai/docs/verified-recovery"
        },
        {
          "title": "Lesson",
          "product": "RepoOps",
          "link": "https://www.repoops.ai/memory-and-brain"
        }
      ]
    },
    {
      "id": "revenue",
      "steps": [
        {
          "title": "Forecast",
          "product": "Sales as Code",
          "link": "https://salesascode.com/docs/library/forecast-governance"
        },
        {
          "title": "Approval",
          "product": "PromptCompute",
          "link": "https://promptcompute.ai/docs/decide-requests"
        },
        {
          "title": "Promise",
          "product": "CommitOps",
          "link": "https://commitops.ai/docs/the-ledger"
        },
        {
          "title": "Delivery",
          "product": "RepoOps",
          "link": null
        },
        {
          "title": "Outcome",
          "product": "CommitOps",
          "link": "https://commitops.ai/docs/outcomes"
        },
        {
          "title": "Lesson",
          "product": "RepoOps",
          "link": "https://www.repoops.ai/memory-and-brain"
        }
      ]
    }
  ],
  "site": "https://promptreports.ai/"
}
