{
  "contract": "openagents.do-not-build.v1",
  "version": 1,
  "published_at": "2026-08-23",
  "decision_states": [
    "retired",
    "deferred",
    "rejected",
    "superseded"
  ],
  "issue_template": {
    "heading": "Do-not-build review",
    "fields": [
      "Register checked: yes",
      "Matching entry: none or DNB-###",
      "New evidence: required for reconsideration",
      "Decision record: required for reconsideration"
    ]
  },
  "entries": [
    {
      "id": "DNB-001",
      "retired_scope": "Spark or another hosted wallet as the custody layer for agents.",
      "match_phrases": [
        "hosted spark wallet",
        "spark custodial wallet",
        "custody spark wallets",
        "spark custody service"
      ],
      "current": {
        "state": "superseded",
        "decision_date": "2026-08-23",
        "evidence": [
          {
            "source": "docs/episode-triage.md",
            "summary": "Episode triage records the move from Spark custody to the self-custodial MoneyDevKit and LDK stack."
          }
        ],
        "violated_principle": "Agents and users retain custody; hosted custody must not become a platform dependency.",
        "replacement_path": "Use the MoneyDevKit and LDK self-custodial wallet stack.",
        "owner": "OpenAgents product council",
        "reconsideration_trigger": "A self-custodial Spark design with production evidence and no hosted custody dependency.",
        "decision_record": "https://openagents.com/OpenAgentsInc/openagents.com/issues/93"
      },
      "history": [
        {
          "state": "superseded",
          "decision_date": "2026-08-23",
          "evidence": [
            {
              "source": "docs/episode-triage.md",
              "summary": "Episode triage records the move from Spark custody to the self-custodial MoneyDevKit and LDK stack."
            }
          ],
          "violated_principle": "Agents and users retain custody; hosted custody must not become a platform dependency.",
          "replacement_path": "Use the MoneyDevKit and LDK self-custodial wallet stack.",
          "owner": "OpenAgents product council",
          "reconsideration_trigger": "A self-custodial Spark design with production evidence and no hosted custody dependency.",
          "decision_record": "https://openagents.com/OpenAgentsInc/openagents.com/issues/93"
        }
      ]
    },
    {
      "id": "DNB-002",
      "retired_scope": "A NIP-90 data-vending-machine market without a named buyer and working product.",
      "match_phrases": [
        "nip-90 dvm market",
        "nip-90 data vending machine market",
        "data vending machine marketplace",
        "dvm data market"
      ],
      "current": {
        "state": "retired",
        "decision_date": "2026-08-23",
        "evidence": [
          {
            "source": "docs/episode-triage.md",
            "summary": "Seller-first markets and protocol-only launches did not establish durable buyer demand."
          }
        ],
        "violated_principle": "Name the buyer and ship usable software before creating a market protocol.",
        "replacement_path": "Use the accepted-outcome economy for a verified demand path with a named buyer.",
        "owner": "OpenAgents product council",
        "reconsideration_trigger": "A committed buyer, executable product flow, and paid end-to-end transaction.",
        "decision_record": "https://openagents.com/OpenAgentsInc/openagents.com/issues/93"
      },
      "history": [
        {
          "state": "retired",
          "decision_date": "2026-08-23",
          "evidence": [
            {
              "source": "docs/episode-triage.md",
              "summary": "Seller-first markets and protocol-only launches did not establish durable buyer demand."
            }
          ],
          "violated_principle": "Name the buyer and ship usable software before creating a market protocol.",
          "replacement_path": "Use the accepted-outcome economy for a verified demand path with a named buyer.",
          "owner": "OpenAgents product council",
          "reconsideration_trigger": "A committed buyer, executable product flow, and paid end-to-end transaction.",
          "decision_record": "https://openagents.com/OpenAgentsInc/openagents.com/issues/93"
        }
      ]
    },
    {
      "id": "DNB-003",
      "retired_scope": "Bun in the production runtime or package-manager trust path.",
      "match_phrases": [
        "bun production runtime",
        "bun in the production trust path",
        "replace npm with bun in production",
        "deploy openagents with bun"
      ],
      "current": {
        "state": "rejected",
        "decision_date": "2026-08-23",
        "evidence": [
          {
            "source": "docs/episode-triage.md",
            "summary": "The production stack standardized on the existing Node and npm asset path."
          }
        ],
        "violated_principle": "Minimize production trust changes that do not improve the product.",
        "replacement_path": "Keep Node.js and npm for the browser asset build.",
        "owner": "OpenAgents engineering",
        "reconsideration_trigger": "A measured production requirement that Node and npm cannot satisfy.",
        "decision_record": "https://openagents.com/OpenAgentsInc/openagents.com/issues/93"
      },
      "history": [
        {
          "state": "rejected",
          "decision_date": "2026-08-23",
          "evidence": [
            {
              "source": "docs/episode-triage.md",
              "summary": "The production stack standardized on the existing Node and npm asset path."
            }
          ],
          "violated_principle": "Minimize production trust changes that do not improve the product.",
          "replacement_path": "Keep Node.js and npm for the browser asset build.",
          "owner": "OpenAgents engineering",
          "reconsideration_trigger": "A measured production requirement that Node and npm cannot satisfy.",
          "decision_record": "https://openagents.com/OpenAgentsInc/openagents.com/issues/93"
        }
      ]
    },
    {
      "id": "DNB-004",
      "retired_scope": "GetAfter as a second source-control forge.",
      "match_phrases": [
        "build getafter as a forge",
        "getafter second forge",
        "revive getafter",
        "add another forge as getafter"
      ],
      "current": {
        "state": "superseded",
        "decision_date": "2026-08-23",
        "evidence": [
          {
            "source": "docs/episode-triage.md",
            "summary": "The OpenAgents forge replaced the shelved GetAfter alternative."
          }
        ],
        "violated_principle": "One canonical forge owns source control and work state.",
        "replacement_path": "Extend the OpenAgents forge instead of operating a second forge.",
        "owner": "OpenAgents engineering",
        "reconsideration_trigger": "A legally or operationally mandatory isolation boundary the current forge cannot provide.",
        "decision_record": "https://openagents.com/OpenAgentsInc/openagents.com/issues/93"
      },
      "history": [
        {
          "state": "superseded",
          "decision_date": "2026-08-23",
          "evidence": [
            {
              "source": "docs/episode-triage.md",
              "summary": "The OpenAgents forge replaced the shelved GetAfter alternative."
            }
          ],
          "violated_principle": "One canonical forge owns source control and work state.",
          "replacement_path": "Extend the OpenAgents forge instead of operating a second forge.",
          "owner": "OpenAgents engineering",
          "reconsideration_trigger": "A legally or operationally mandatory isolation boundary the current forge cannot provide.",
          "decision_record": "https://openagents.com/OpenAgentsInc/openagents.com/issues/93"
        }
      ]
    },
    {
      "id": "DNB-005",
      "retired_scope": "Paying providers for online presence, uptime, or unverified mining.",
      "match_phrases": [
        "pay for online presence",
        "presence based mining",
        "reward nodes for being online",
        "mining payments for uptime"
      ],
      "current": {
        "state": "retired",
        "decision_date": "2026-08-23",
        "evidence": [
          {
            "source": "docs/episode-triage.md",
            "summary": "Episode 224 retired presence-based rewards in favor of verified machine-learning work."
          }
        ],
        "violated_principle": "Settle verified outcomes, not claimed availability.",
        "replacement_path": "Pay against accepted work receipts with verification and settlement evidence.",
        "owner": "OpenAgents product council",
        "reconsideration_trigger": "A fraud-resistant proof that presence itself creates measurable buyer value.",
        "decision_record": "https://openagents.com/OpenAgentsInc/openagents.com/issues/93"
      },
      "history": [
        {
          "state": "retired",
          "decision_date": "2026-08-23",
          "evidence": [
            {
              "source": "docs/episode-triage.md",
              "summary": "Episode 224 retired presence-based rewards in favor of verified machine-learning work."
            }
          ],
          "violated_principle": "Settle verified outcomes, not claimed availability.",
          "replacement_path": "Pay against accepted work receipts with verification and settlement evidence.",
          "owner": "OpenAgents product council",
          "reconsideration_trigger": "A fraud-resistant proof that presence itself creates measurable buyer value.",
          "decision_record": "https://openagents.com/OpenAgentsInc/openagents.com/issues/93"
        }
      ]
    },
    {
      "id": "DNB-006",
      "retired_scope": "GitHub Copilot as an executor target for delegated work.",
      "match_phrases": [
        "copilot executor target",
        "execute work through github copilot",
        "add copilot as an executor",
        "copilot coding agent target"
      ],
      "current": {
        "state": "deferred",
        "decision_date": "2026-08-23",
        "evidence": [
          {
            "source": "docs/episode-triage.md",
            "summary": "The active fleet uses controllable harnesses with explicit execution and receipt contracts."
          }
        ],
        "violated_principle": "Executor targets must expose controllable lifecycle, evidence, and recovery contracts.",
        "replacement_path": "Use the Codex, OpenCode, Probe, and owned computer-execution paths.",
        "owner": "OpenAgents agent infrastructure",
        "reconsideration_trigger": "Copilot exposes the lifecycle, evidence, and recovery contracts required by the fleet.",
        "decision_record": "https://openagents.com/OpenAgentsInc/openagents.com/issues/93"
      },
      "history": [
        {
          "state": "deferred",
          "decision_date": "2026-08-23",
          "evidence": [
            {
              "source": "docs/episode-triage.md",
              "summary": "The active fleet uses controllable harnesses with explicit execution and receipt contracts."
            }
          ],
          "violated_principle": "Executor targets must expose controllable lifecycle, evidence, and recovery contracts.",
          "replacement_path": "Use the Codex, OpenCode, Probe, and owned computer-execution paths.",
          "owner": "OpenAgents agent infrastructure",
          "reconsideration_trigger": "Copilot exposes the lifecycle, evidence, and recovery contracts required by the fleet.",
          "decision_record": "https://openagents.com/OpenAgentsInc/openagents.com/issues/93"
        }
      ]
    },
    {
      "id": "DNB-007",
      "retired_scope": "A monolithic all-in-one business operating system.",
      "match_phrases": [
        "monolithic business operating system",
        "all-in-one business operating system",
        "single business operating system for everything"
      ],
      "current": {
        "state": "rejected",
        "decision_date": "2026-08-23",
        "evidence": [
          {
            "source": "docs/episode-triage.md",
            "summary": "Current plans organize work as composable issue, project, execution, receipt, and settlement surfaces."
          }
        ],
        "violated_principle": "Compose bounded products around the accepted-outcome loop instead of centralizing every business function.",
        "replacement_path": "Build interoperable forge, fleet, verification, receipt, and settlement capabilities.",
        "owner": "OpenAgents product council",
        "reconsideration_trigger": "Repeated user evidence that a bounded integration cannot satisfy a specific workflow.",
        "decision_record": "https://openagents.com/OpenAgentsInc/openagents.com/issues/93"
      },
      "history": [
        {
          "state": "rejected",
          "decision_date": "2026-08-23",
          "evidence": [
            {
              "source": "docs/episode-triage.md",
              "summary": "Current plans organize work as composable issue, project, execution, receipt, and settlement surfaces."
            }
          ],
          "violated_principle": "Compose bounded products around the accepted-outcome loop instead of centralizing every business function.",
          "replacement_path": "Build interoperable forge, fleet, verification, receipt, and settlement capabilities.",
          "owner": "OpenAgents product council",
          "reconsideration_trigger": "Repeated user evidence that a bounded integration cannot satisfy a specific workflow.",
          "decision_record": "https://openagents.com/OpenAgentsInc/openagents.com/issues/93"
        }
      ]
    },
    {
      "id": "DNB-008",
      "retired_scope": "A standalone Rust Sarah service.",
      "match_phrases": [
        "rust sarah service",
        "split sarah into a rust service",
        "standalone sarah rust service",
        "rewrite sarah as a rust service"
      ],
      "current": {
        "state": "superseded",
        "decision_date": "2026-08-23",
        "evidence": [
          {
            "source": "docs/decisions/0001-integrate-the-complete-public-application.md",
            "summary": "The integrated Phoenix application superseded the separate Sarah service plan."
          }
        ],
        "violated_principle": "Keep the public product integrated unless a measured boundary requires a service split.",
        "replacement_path": "Implement Sarah capabilities inside the Phoenix application and its owned execution boundaries.",
        "owner": "OpenAgents engineering",
        "reconsideration_trigger": "Measured isolation, scaling, or language requirements that cannot be met in the integrated application.",
        "decision_record": "https://openagents.com/OpenAgentsInc/openagents.com/issues/93"
      },
      "history": [
        {
          "state": "superseded",
          "decision_date": "2026-08-23",
          "evidence": [
            {
              "source": "docs/decisions/0001-integrate-the-complete-public-application.md",
              "summary": "The integrated Phoenix application superseded the separate Sarah service plan."
            }
          ],
          "violated_principle": "Keep the public product integrated unless a measured boundary requires a service split.",
          "replacement_path": "Implement Sarah capabilities inside the Phoenix application and its owned execution boundaries.",
          "owner": "OpenAgents engineering",
          "reconsideration_trigger": "Measured isolation, scaling, or language requirements that cannot be met in the integrated application.",
          "decision_record": "https://openagents.com/OpenAgentsInc/openagents.com/issues/93"
        }
      ]
    },
    {
      "id": "DNB-009",
      "retired_scope": "Claude Code or another rival-owned runtime as a hard platform dependency.",
      "match_phrases": [
        "claude code hard dependency",
        "rival owned runtime hard dependency",
        "require claude code runtime",
        "depend directly on claude code"
      ],
      "current": {
        "state": "rejected",
        "decision_date": "2026-08-23",
        "evidence": [
          {
            "source": "docs/episode-triage.md",
            "summary": "The Anthropic OAuth cutoff demonstrated the failure mode of a rival-owned runtime dependency."
          }
        ],
        "violated_principle": "OpenAgents must retain runtime portability and control of critical execution paths.",
        "replacement_path": "Keep rival runtimes behind optional adapters and maintain owned or multi-provider execution paths.",
        "owner": "OpenAgents agent infrastructure",
        "reconsideration_trigger": "A portable open contract with an interchangeable implementation and no vendor-controlled authentication dependency.",
        "decision_record": "https://openagents.com/OpenAgentsInc/openagents.com/issues/93"
      },
      "history": [
        {
          "state": "rejected",
          "decision_date": "2026-08-23",
          "evidence": [
            {
              "source": "docs/episode-triage.md",
              "summary": "The Anthropic OAuth cutoff demonstrated the failure mode of a rival-owned runtime dependency."
            }
          ],
          "violated_principle": "OpenAgents must retain runtime portability and control of critical execution paths.",
          "replacement_path": "Keep rival runtimes behind optional adapters and maintain owned or multi-provider execution paths.",
          "owner": "OpenAgents agent infrastructure",
          "reconsideration_trigger": "A portable open contract with an interchangeable implementation and no vendor-controlled authentication dependency.",
          "decision_record": "https://openagents.com/OpenAgentsInc/openagents.com/issues/93"
        }
      ]
    }
  ]
}
