> ## Documentation Index
> Fetch the complete documentation index at: https://cofounder.appeeky.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Knowledge Patches

> The agent proposes changes to your company context; you approve, edit, or dismiss. Nothing it infers can overwrite what you stated.

Your profiles and `business_context.md` are injected into every briefing and outrank anything the agent infers from store data. So the agent is not allowed to write them.

Instead it files a **patch**: *here is the field, here is what it says now, here is what I think it should say, and here's why.* You apply it, edit it first, or dismiss it. That asymmetry is the whole design — an agent that could edit its own ground truth would turn one wrong inference into a permanent fact and then keep confirming it.

Review them in **Settings → Business**, above the profile forms.

## What a patch looks like

```jsonc theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "targetType": "company_profile",     // or app_profile, document
  "targetField": "icp",
  "currentValue": "Indie iOS developers",
  "proposedValue": "Indie iOS developers and small studios running 2–5 apps",
  "operation": "replace",             // or append
  "rationale": "Three of your last five reviews mention managing multiple apps.",
  "origin": "drift_audit",
  "confidence": 0.8
}
```

A document patch targets a **section** rather than the whole file (`business_context.md › How we make money`), so applying it is surgery on that heading and not a rewrite of your prose.

Patches are fingerprinted on target plus proposed value, so a weekly job can't grow the queue a near-duplicate row every Monday.

## Where they come from

| Origin                | When                                                                                                                          |
| --------------------- | ----------------------------------------------------------------------------------------------------------------------------- |
| `run`                 | The agent noticed a mismatch while producing a briefing                                                                       |
| `chat`                | You said something durable in conversation — *"we stopped targeting Brazil"* becomes a proposal instead of a fact that decays |
| `drift_audit`         | Weekly: your standing context checked against the live store listing and active facts                                         |
| `fact_promotion`      | Weekly: a standing rule living only as a Vault fact gets promoted into the field an agent would actually look in              |
| `document_extraction` | You pressed **Update fields** to derive profile fields from `business_context.md`                                             |

Proposing works in **read mode** — it isn't a mutation, and a failed proposal never fails the briefing that produced it.

### Why drift and promotion run weekly

Nothing else ages your context out. Without the drift audit, a repositioning you made in March quietly poisons every briefing after it. And facts are *retrieved* while profiles are *injected* — so a rule that lives only as a fact is a rule the agent forgets the moment the retriever ranks it below something newer. Promotion moves standing rules where they belong. When an app-scoped source ends up needing changes, it raises the same `knowledge_drift` signal as anomalies, so it lands in your "needs attention" queue instead of waiting to be discovered.

## Reviewing

Three outcomes per patch:

* **Apply** — writes the value. The row becomes `source: user`, because you decided; a document patch records a revision under your name.
* **Edit, then apply** — the common case. A proposal is usually directionally right and phrased slightly wrong, so you fix the wording and apply that instead.
* **Dismiss** — rejected, and it won't come back with the same fingerprint.

If the target changed after the patch was written, apply returns a conflict showing what the field says now. Nothing is written; the patch stays pending so the decision you're in the middle of still has something to act on.

Applying never deletes the Vault fact behind a promotion. The fact carries provenance and a timestamp the profile field doesn't, and a duplicated standing truth costs a few tokens where a lost one costs a wrong recommendation.

## Two rules that are easy to get wrong

**Promote the rule, not the evidence.** Most facts are written as findings — *"adding a paywall dropped downloads 63%"*. The standing truth is *"don't gate downloads behind a paywall"*; the number will be stale within a quarter and would sit in every future briefing as if it were current.

**Append is not replace.** An append adds a line and can't destroy an edit, so it isn't blocked by a conflict. Otherwise every queued constraint would conflict the moment you touched that field — which is exactly what these proposals are asking you to go do.

## Deriving fields from your prose

The **Update fields** button on Settings → Business reads `business_context.md` and maps it onto the profile fields. It runs when you ask, not while you're typing, because it can both write and queue.

* **Empty fields are filled directly.** There is nothing to lose and no conflict to review.
* **Fields that disagree become patches.** You see your value against the proposed one.
* **Low-confidence findings are dropped** below a 0.55 floor.
* **Rewordings are rejected.** A proposal that restates your value with less detail in it is thrown away rather than queued — except for factual fields (company name, website, stage, business model, monetization, pricing) where replacing the old value *is* the point.

`teamSize` and `primaryMarkets` are deliberately never extracted: a document that mentions *"we're a team of three"* or names a country is far more likely describing a customer than a fact about your company.

## Related docs

* [Company Knowledge Base](../concepts/knowledge-base) — the layers a patch can target
* [Library](./library) — where document patches land
* [Memory](../concepts/memory) — facts and episodes, the layer promotion draws from
* [Knowledge Patches API](../api/knowledge-patches) — REST surface
