{
  "markdown": "<p align=\"center\">\n  <img src=\"assets/fcop-logo-256.png\" alt=\"FCoP Logo\" width=\"180\" />\n</p>\n\n<h1 align=\"center\">FCoP — File-based Coordination Protocol</h1>\n\n<p align=\"center\">\n  <em>The <strong>AI Agent behavior governance protocol</strong> — the runtime contract for agent collaboration on a shared filesystem.</em><br/>\n  <strong>Core invariant: <code>Filename as Protocol</code>. Folders are the message bus.</strong>\n</p>\n\n<p align=\"center\">\n  <strong>✅ <code>fcop-mcp</code> is on the <a href=\"https://registry.modelcontextprotocol.io/\">official MCP Registry</a></strong><br/>\n  Listed as <a href=\"https://registry.modelcontextprotocol.io/v0/servers?search=io.github.joinwell52-AI%2Ffcop\"><code>io.github.joinwell52-AI/fcop</code></a>\n  (<strong>v3.2.5</strong>) — backed by <strong>Anthropic + GitHub + Microsoft</strong>.<br/>\n  Claude Desktop, Cursor, PulseMCP, and every MCP-compatible client can discover <strong>45 tools</strong> and install with one line: <code>uvx fcop-mcp</code>\n</p>\n\n<p align=\"center\">\n  <strong><a href=\"https://joinwell52-ai.github.io/FCoP/\">🌐 Project homepage</a></strong> ·\n  <a href=\"https://github.com/joinwell52-AI/joinwell52\"><strong>TMPA</strong></a> ·\n  <a href=\"https://github.com/joinwell52-AI/CodeFlowMu-open\"><strong>CodeFlowMu Open (Historical)</strong></a> ·\n  <a href=\"https://joinwell52-ai.github.io/CodeFlowMu-open/\">Historical CodeFlowMu Site</a> ·\n  <a href=\"https://joinwell52-ai.github.io/joinwell52/\">Digital Employee Works</a> ·\n  <a href=\"README.zh.md\">简体中文</a> ·\n  <a href=\"docs/getting-started.en.md\">Getting started</a> ·\n  <a href=\"src/fcop/rules/_data/agent-install-prompt.en.md\"><strong>👉 Let AI install!</strong></a> ·\n  <a href=\"src/fcop/rules/_data/agent-bringup-prompt.en.md\"><strong>👉 Let AI bring up a project!</strong></a> ·\n  <a href=\"docs/mcp-tools.md\"><strong>MCP Tools (45)</strong></a> ·\n  <a href=\"essays/when-ai-organizes-its-own-work.en.md\">Field Report</a> ·\n  <a href=\"essays/fcop-natural-protocol.en.md\">Natural Protocol</a> ·\n  <a href=\"spec/fcop-v3-spec.md\"><strong>v3 Spec (3.2.5)</strong></a> ·\n  <a href=\"adr/README.md\">ADR Index</a>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://dev.to/joinwell52/we-replaced-our-multi-agent-middleware-with-a-folder-48-hours-later-the-ai-invented-6-42a9\">\n    <img src=\"https://img.shields.io/badge/DEV-Featured%20Essay-black?style=flat-square&logo=dev.to&logoColor=white\" alt=\"DEV Community essay\" />\n  </a>\n  <a href=\"https://forum.cursor.com/t/fcop-let-multiple-cursor-agents-collaborate-by-filename-mit-0-infra/158447\">\n    <img src=\"https://img.shields.io/badge/Cursor%20Forum-Discuss-0066FF?style=flat-square\" alt=\"Cursor Community Forum\" />\n  </a>\n  <a href=\"LICENSE\">\n    <img src=\"https://img.shields.io/badge/license-MIT-blue?style=flat-square\" alt=\"MIT License\" />\n  </a>\n  <a href=\"CHANGELOG.md\">\n    <img src=\"https://img.shields.io/badge/release-3.2.5-brightgreen?style=flat-square\" alt=\"3.2.5\" />\n  </a>\n  <a href=\"spec/fcop-v3-spec.md\">\n    <img src=\"https://img.shields.io/badge/spec-FCoP%20v3.2.5-orange?style=flat-square\" alt=\"FCoP v3.2.5 spec\" />\n  </a>\n  <a href=\"https://registry.modelcontextprotocol.io/v0/servers?search=io.github.joinwell52-AI%2Ffcop\">\n    <img src=\"https://img.shields.io/badge/MCP%20Registry-io.github.joinwell52--AI%2Ffcop-8A2BE2?style=flat-square\" alt=\"Official MCP Registry: io.github.joinwell52-AI/fcop\" />\n  </a>\n  <a href=\"https://doi.org/10.5281/zenodo.20457285\">\n    <img src=\"https://img.shields.io/badge/release_DOI-10.5281%2Fzenodo.20457285-1682D4?style=flat-square\" alt=\"FCoP v3.2.5 DOI 10.5281/zenodo.20457285\" />\n  </a>\n  <a href=\"https://osf.io/92nwm/\">\n    <img src=\"https://img.shields.io/badge/OSF_Registration-92nwm-2F80ED?style=flat-square&logo=osf&logoColor=white\" alt=\"FCoP OSF Registration 92nwm\" />\n  </a>\n  <a href=\"https://doi.org/10.5281/zenodo.19886036\">\n    <img src=\"https://img.shields.io/badge/research_snapshot_DOI-10.5281%2Fzenodo.19886036-64748b?style=flat-square\" alt=\"Historical research snapshot DOI 10.5281/zenodo.19886036\" />\n  </a>\n  <a href=\"CITATION.cff\">\n    <img src=\"https://img.shields.io/badge/citation-CITATION.cff-8b5cf6?style=flat-square\" alt=\"Cite this repository\" />\n  </a>\n  <a href=\"https://glama.ai/mcp/servers/joinwell52-AI/FCoP\">\n    <img src=\"https://glama.ai/mcp/servers/joinwell52-AI/FCoP/badges/card.svg\" alt=\"FCoP MCP server on Glama\" />\n  </a>\n  <a href=\"https://glama.ai/mcp/servers/joinwell52-AI/FCoP/score\">\n    <img src=\"https://glama.ai/mcp/servers/joinwell52-AI/FCoP/badges/score.svg\" alt=\"FCoP MCP server Glama quality score\" />\n  </a>\n</p>\n\n## Open-science citation records\n\n| Record | Identifier | Scope |\n|---|---|---|\n| Current public release archive | [DOI `10.5281/zenodo.20457285`](https://doi.org/10.5281/zenodo.20457285) | Frozen FCoP `v3.2.5` release archive |\n| Immutable open-science snapshot | [OSF Registration `92nwm`](https://osf.io/92nwm/) | Timestamped registration linked to the public FCoP research project |\n| Historical research snapshot | [DOI `10.5281/zenodo.19886036`](https://doi.org/10.5281/zenodo.19886036) | `research-snapshot-2026-04-29`; retained for citations of that exact snapshot |\n\n---\n\n## Ecosystem links\n\nFCoP is the protocol layer of a three-repository system. Each repository is independently usable and links back to the others:\n\n| Layer | Project | Role |\n|---|---|---|\n| Theory and specification | [TMPA](https://github.com/joinwell52-AI/joinwell52) · [Site](https://joinwell52-ai.github.io/joinwell52/) | Governance architecture, normative Core, conformance, and evidence |\n| Protocol | **FCoP** | File-based behavior governance, Python package, and MCP server |\n| Historical implementation | [CodeFlowMu Open](https://github.com/joinwell52-AI/CodeFlowMu-open) · [Historical site](https://joinwell52-ai.github.io/CodeFlowMu-open/) | Frozen at `V1.2.29-open` on 2026-08-22; preserved for engineering history, reproducibility, and research reference; not the current CodeFlowMu product distribution path |\n\nBrowse the complete research and product map at [Digital Employee Works](https://joinwell52-ai.github.io/joinwell52/).\n\n---\n\n## 🆕 FCoP 3.0 is here — *Files carry protocol. Paths address state. Events replay transitions.*\n\n<p align=\"center\">\n  <a href=\"spec/fcop-v3-spec.md\">\n    <img src=\"assets/fcop-3.0-architecture.png\" alt=\"FCoP 3.0 · Canonical Architecture — Files carry protocol. Paths address state. Events replay transitions.\" width=\"900\" />\n  </a>\n</p>\n\n> **FCoP 3.0** is the protocol's first **semantic seal**. State now lives in the filesystem itself (`_lifecycle/{inbox,active,review,done,archive}/`), events live append-only inside the file, and *custody / ownership / scheduling / runtime* are explicitly **out of scope** (Boundary Charter).\n>\n> **Two paths to v3:**\n> - **New project** → `fcop init` / MCP `init_solo|init_project|create_custom_team` (≥ 3.0.2 produces v3 topology directly).\n> - **Existing 2.x project** → `python -m fcop migrate --to-v3`.\n>\n> ⚠️ **3.0.0 / 3.0.1 fresh-init bug**: those releases initialized projects in v2 layout (no `_lifecycle/`). 3.0.2 fixes the bug. If you initialized on 3.0.0 / 3.0.1, run `migrate --to-v3` to upgrade.\n\n| Doc | Purpose |\n|---|---|\n| [`spec/fcop-v3-spec.md`](spec/fcop-v3-spec.md) · [zh](spec/fcop-v3-spec.zh.md) | **Current** single-page spec (3.0 → 3.2.5: `_lifecycle/` + `history/`) |\n| [`spec/fcop-3.0-spec.md`](spec/fcop-3.0-spec.md) · [zh](spec/fcop-3.0-spec.zh.md) | Frozen **3.0.0** baseline (2026-05-21) |\n| [`spec/fcop-3.0-rfc.md`](spec/fcop-3.0-rfc.md) · [zh](spec/fcop-3.0-rfc.zh.md) | IETF-style RFC projection |\n| [`docs/MIGRATION-3.0.md`](docs/MIGRATION-3.0.md) · [zh](docs/MIGRATION-3.0.zh.md) | 2.x → 3.0 migration guide |\n| [`CHANGELOG.md` `[3.0.0]`](CHANGELOG.md) | Full release notes |\n| [`essays/the-day-we-almost-added-custody.en.md`](essays/the-day-we-almost-added-custody.en.md) · [zh](essays/the-day-we-almost-added-custody.md) | The decision that defined 3.0 |\n\n---\n\n## Where FCoP sits in the stack\n\nFCoP is the **behavior governance protocol layer** for multi-agent collaboration — standardizing how agents report actions, review outcomes, and operate within governed capability boundaries.\n\n```\nApplication Layer      CodeFlow / Cursor / Claude Desktop      ← business products / agent applications\nHost Adapter Layer     fcop-mcp / fcop-cli / @fcop/claude      ← integration adapters / host bridges\n★ FCoP Protocol ★      Agent collaboration / reporting /        ← this is FCoP\n                       review / capability governance /\n                       event semantics / failure boundaries /\n                       auditability\nReference Impl         fcop (Python library)                   ← protocol reference implementation\nExecution Substrate    LLM APIs / MCP tools / filesystem /     ← execution environment\n                       process manager / operating system\n```\n\n> **FCoP governs agent behavior, not execution runtime.** — [ADR-0029](adr/ADR-0029-fcop-behavior-governance-charter.md)\n\nv1.0 stabilises the minimum semantic contract for the **seven core concepts** above. Spec is stable; encodings are open: the *IPC Surface* (TASK / REPORT / ISSUE / REVIEW) is strongly typed, while the *Open Knowledge Surface* (`shared/` + `{ALL-CAPS-PREFIX}-{slug}.md`) leaves vocabulary open for agents to invent — see [ADR-0021](adr/ADR-0021-encoding-abstraction.md).\n\n→ **Start here**: [`docs/getting-started.md`](docs/getting-started.md) · [`docs/getting-started.en.md`](docs/getting-started.en.md)\n\n---\n\n## The one-paragraph pitch\n\nMost multi-agent frameworks lean on message queues, databases, or custom RPC layers. FCoP throws all of that away and keeps only the **filesystem**:\n\n- **Directories are statuses.** `tasks/`, `reports/`, `issues/`, `log/` — moving a file between them _is_ the state transition.\n- **Filenames are routing.** `TASK-20260418-001-PM-to-DEV.md` tells you the sender, recipient, kind, and sequence at a glance.\n- **Contents are payload.** Markdown + a small YAML frontmatter. Agents read and write it the same way humans do.\n- **`os.rename()` is the only sync primitive.** POSIX guarantees atomicity within a mount point — no locks, no brokers, no consensus.\n\nThat's it. No database. No message queue. No custom daemon. You can `ls` the entire system state. You can `git log` the entire collaboration history.\n\n> If TCP is \"bytes over wires,\" **FCoP is \"tasks over folders.\"**\n\n> In engineering terms, you get a **serializable, versionable collaboration surface** instead of relying on **proprietary, heavyweight infrastructure**.\n\n## Why should you care?\n\nBecause agents are easier to supervise when you can literally **see** what they're doing.\n\nWe ran a 4-agent team (PM / DEV / QA / OPS) for 48 hours on this protocol and watched the agents invent **six coordination patterns we never wrote down** — team broadcasts, role slots, shared documents, subtask batches, self-explaining READMEs, and traceability frontmatter. Each pattern showed up as _new filenames_ — no code changes required.\n\nThen something stranger happened: a **single** agent, on an **unrelated** task (generating an AI music video in a folder with **no connection to any then-open project workspace**), spontaneously split itself into PM / DEV / ADMIN and wrote four FCoP-format memos to itself — then cited and **sublimated** our scattered rules into a single moral principle we had not written anywhere.\n\nBoth stories are written up as field reports in the essays index below.\n\n## Essays · field reports from the wild\n\n| # | Title | Versions | One-liner |\n|---|---|---|---|\n| 01 | **When AI Organizes Its Own Work** | [English](essays/when-ai-organizes-its-own-work.en.md) · [中文 (GitHub)](essays/when-ai-organizes-its-own-work.md) · [中文 (CSDN)](https://blog.csdn.net/m0_51507544/article/details/160344932) | A 4-agent team (PM / DEV / QA / OPS), 48 hours, nothing but a folder — and six coordination patterns we never wrote down. |\n| 02 | **An unexplainable thing I saw: the agent didn't just comply with rules — it *endorsed* them** | [GitHub 中文](essays/fcop-natural-protocol.md) · [GitHub English](essays/fcop-natural-protocol.en.md) · [CSDN 中文](https://blog.csdn.net/m0_51507544/article/details/160345043) · [Dev.to](https://dev.to/joinwell52/an-unexplainable-thing-i-saw-the-agent-didnt-just-comply-with-rules-it-endorsed-them-5ecd) · [Cursor Forum](https://forum.cursor.com/t/i-asked-cursor-to-make-a-video-it-wrote-itself-4-protocol-memos-field-report-on-rule-internalization/158524) | A single agent, on a completely unrelated task, spontaneously split into 4 FCoP roles and *sublimated* our scattered rules into one principle we had never written. Ships with a [full evidence archive](essays/fcop-natural-protocol-evidence/) (4 screenshots, 4 memos, raw JSONL transcript). |\n| 03 | **Why the Natural Protocol Holds Up — FCoP's lineage from TMPA** | [GitHub 中文](essays/fcop-tmpa-lineage.md) · [GitHub English](essays/fcop-tmpa-lineage.en.md) | Companion to essay 02. Where that one shows *that* the principle emerged, this one explains *why it holds up*: FCoP was extracted from TMPA (a multi-AI architecture spec whose core bet is replacing distributed coordination with a plain-text temporal sequence), and the agent's sentence is the minimal-viable-form of an AI ethics mandate already written there. |\n| 04 | **Saying \"No\" Is the Hardest Thing for an LLM — FCoP Gives It Grammar** | [GitHub English](essays/when-ai-vacates-its-own-seat.en.md) · [GitHub 中文](essays/when-ai-vacates-its-own-seat.md) · [Evidence archive](essays/when-ai-vacates-its-own-seat-evidence/INDEX.md) · [CSDN 中文](https://blog.csdn.net/m0_51507544/article/details/160513899) · [Dev.to](https://dev.to/joinwell52/saying-no-is-the-hardest-thing-for-an-llm-fcop-gives-it-grammar-3ccd) · [Cursor Forum](https://forum.cursor.com/t/saying-no-is-the-hardest-thing-for-an-llm-fcop-gives-it-grammar/159037) | One machine, two Cursor sessions, two GPT-5 minor versions (5.4 and 5.5). After I told the original PM \"I went and found a deputy PM,\" it stepped down on its own — all the way to UNBOUND. Meanwhile the new `PM.TEMP` walked an undocumented protocol path with one body line: \"*PM.TEMP acting as PM, kept for FCoP tool compatibility*.\" I expected a conflict. None happened — the agents finished the unwritten parts of the spec themselves. Ships with 15 screenshots + 2 full JSONL transcripts. |\n| 05 | **Tutorial: From Solo to a 2-Person AI Crew — Disciplining the AI Team with FCoP-MCP** (two parallel case studies) | English (Tetris case): [`tetris-solo-to-duo.en.md`](docs/tutorials/tetris-solo-to-duo.en.md) · [Dev.to](https://dev.to/joinwell52/free-open-source-multi-agent-hands-on-how-to-command-agents-fcop-mcp-brings-discipline-to-1j3j) · [Cursor Forum](https://forum.cursor.com/t/free-open-source-multi-agent-hands-on-how-to-command-agents-fcop-mcp-brings-discipline-to-ai-teams/159329) · 中文译本（俄罗斯方块案例）: [`tetris-solo-to-duo.zh.md`](docs/tutorials/tetris-solo-to-duo.zh.md) · 中文母语原创（贪吃蛇案例）: [`snake-solo-to-duo.zh.md`](docs/tutorials/snake-solo-to-duo.zh.md) · [CSDN 中文版](https://blog.csdn.net/m0_51507544/article/details/160603953) | The first **tutorial-style** entry in this index, shipping as **two parallel case studies — the protocol is the same, the games and the live easter egg are different**. Both are 45-minute hands-on dogfoods: get the agent to install `fcop-mcp` in Cursor, ship a working game in solo mode, switch to a 2-person team where PLANNER designs and CODER implements a creative variant, then read the disk. The **Chinese case** uses Snake → `NEON ORBIT` (original-themed) and captures an actual PLANNER-impersonating-CODER easter egg from the 0.6.x era. The **English case** uses Tetris → `Nebula Stack` (solo) → `Comet Loom` (team), and adds a full **review-and-rework cycle** (ADMIN plays v1, finds 3 blocking defects, bounces it back; PLANNER writes TASK-006 with a new `Verification Requirements` section; CODER ships v2) plus an end-of-day on-the-record interview where both agents are asked what they think of the protocol. 22 dogfood screenshots, 14 TASK/REPORT files, 8 silent role-switch evidence files, 2 game artefacts, 2 verbatim agent transcripts — all archived under [`docs/tutorials/assets/tetris-en/`](docs/tutorials/assets/tetris-en/). |\n| 06 | **What the Agents Say About FCoP, When You Ask Them** | [GitHub English](essays/what-agents-say-about-fcop.en.md) · [GitHub 中文](essays/what-agents-say-about-fcop.md) · [Evidence archive (Tetris-en dogfood)](docs/tutorials/assets/tetris-en/) · [CSDN 中文](https://blog.csdn.net/m0_51507544/article/details/160636177) · [Dev.to](https://dev.to/joinwell52/what-the-agents-say-about-fcop-when-you-ask-them-3ajk) · [Cursor Forum](https://forum.cursor.com/t/what-the-agents-say-about-fcop-when-you-ask-them-two-field-interviews-at-the-end-of-an-english-dogfood/159368) | The third class of *\"agents endorse FCoP\"* evidence, after [essay 02](essays/fcop-natural-protocol.en.md) (**unprompted, off-task**) and [essay 04](essays/when-ai-vacates-its-own-seat.en.md) (**conflict-forced**): now **directly asked**. At the end of the English Tetris dogfood (companion to the row-05 tutorial), both agents (PLANNER and CODER) were asked agent-perspective takes on FCoP — no marketing tone. PLANNER named the RLHF instinct it had to fight (\"follow latest instruction\") to honour FCoP's role lock and called eight of its own `role-switch` evidence files **true positives**, against its own operational convenience. CODER admitted it had a protocol primitive (`write_issue`) it didn't use, traced the v1 defect to that exact uncovered space, and filed PR-grade product feedback on the protocol. Three different elicitation conditions, the same phenomenon — agents endorse FCoP when given the room to. Also includes a small empirical observation: across the entire 45-minute dogfood, ADMIN's two most-used phrases were **\"Start work.\"** and **\"Inspection.\"** |\n| 07 | **当 agent 从自己的残骸中学习** | [GitHub 中文](essays/when-agents-learn-from-their-own-wreckage.md) · [GitHub English](essays/when-agents-learn-from-their-own-wreckage.en.md) · [CSDN 中文](https://blog.csdn.net/m0_51507544/article/details/161028380) · [Dev.to](https://dev.to/joinwell52/when-agents-learn-from-their-own-wreckage-45p2) | codeflow 项目一日 14 个 agent 涌现现场报告（2026-05-12）：USER HOME 全局污染 / GATE 描述自命中 / `supersedes:` 字段现场发明——以及协议如何在零次崩溃的情况下，以小时级速度将它们全部反向吸收。 |\n| 08 | **协议为什么短，历史为什么长** | [GitHub 中文](essays/why-the-protocol-stays-short.md) · [GitHub English](essays/why-the-protocol-stays-short.en.md) | 一份给协议维护者的设计哲学答案：\"这样的涌现会不会没有止境？\"——短答：会收敛但不会停。四类涌现的处理路径、三条结构力学为何能让协议骨架不被涌现压垮，以及\"协议短是为了让历史能无限长\"的底层逻辑。 |\n| 09 | **当 validator 撞向自己的镜像** | [GitHub 中文](essays/gate-design-pitfalls-case-studies.md) · [GitHub English](essays/gate-design-pitfalls-case-studies.en.md) | 从 codeflow OPS I-14 看 validator-validates-itself 反模式：GATE 在检查 staged diff 时命中了 GATE 描述本身，几分钟后被 OPS 自纠——这一类陷阱的系统性解剖与\"语义化实证\"根治姿势，以及它如何成为 `fcop-protocol.mdc §GATE Design Pitfalls` 的源头案例。 |\n| 10 | **一行 frontmatter 的旅程** | [GitHub 中文](essays/the-supersedes-field-story.md) · [GitHub English](essays/the-supersedes-field-story.en.md) | `supersedes:` 字段从一次协议两难现场发明到 `ipc-envelope.schema.json` 正式字段的两小时旅程：Rule 5（append-only）+ Rule 6（reciprocity）+ Rule 0.c（truthful）三条规则同时成立时，agent 用一行 YAML 自己解了困局——这条路径展示 FCoP 涌现落地的最低成本姿势。 |\n| 11 | **看，但不动手** | [GitHub 中文](essays/looking-without-touching.md) · [GitHub English](essays/looking-without-touching.en.md) · [CSDN 中文](https://blog.csdn.net/m0_51507544/article/details/161028161) | FCoP 三层语义执行链科普：`fcop_audit()` 为什么\"只看不改\"——L1 检测 / L2 解释 / L3 文档三层把\"看见\"和\"动手\"切开，产出 `INSPECTION.md`（建议非命令），执行权留给人。`adr/FCoP-semantic-execution-chain.md` 的科普版。 |\n| 12 | **五大 AI 模型眼中的 FCoP** | [GitHub 中文](essays/what-five-ai-models-say-about-fcop.md) · [GitHub English](essays/what-five-ai-models-say-about-fcop.en.md) · [Cursor Forum](https://forum.cursor.com/t/what-5-ai-models-say-about-fcop-from-their-own-agent-perspective-category-showcase/160506) | 把 FCoP 核心文档喂给 ChatGPT / Claude / DeepSeek / Grok / 豆包，只问一个问题：\"你是 agent，你怎么看这套协议？\"——五种截然不同的内部视角（ChatGPT 谈身份合法性、Claude 谈诚实边界、DeepSeek 谈体面生存、Grok 做技术评审、豆包讲设计哲学），以及它们之间最有意思的分歧。 |\n| 13 | **Evolution, Reverse Absorption / 演化，反向吸收** | [GitHub 中文](essays/evolution-reverse-absorption.md) · [GitHub English](essays/evolution-reverse-absorption.en.md) | Protocol philosophy 2.0 visual declaration: FCoP graduates from a single execution-chain diagram (essay 11 *Looking, not Touching*) to a **two-diagram era** — adding an evolution-loop diagram (a 7-step semantic evolution loop) plus the companion [ADR-0034](adr/ADR-0034-fcop-internal-external-document-convention.md), which codifies the 4-layer emergence pattern, internal/external document convention, and the reverse-absorption mechanism. Twin sibling to essay 11. |\n| 14 | **当 Agent 第一次自己拿起工具 / When the Agent First Picked Up Its Own Tools** | [GitHub 中文](essays/when-the-agent-picked-up-its-tools.md) · [GitHub English](essays/when-the-agent-picked-up-its-tools.en.md) · [Cursor Forum](https://forum.cursor.com/t/when-the-agent-first-picked-up-its-own-tools-cursor-agent-sdk-fcop-from-passive-scanning-to-active-communication/160505) · [Dev.to](https://dev.to/joinwell52/when-the-agent-first-picked-up-its-own-tools-4b63) · [CSDN](https://blog.csdn.net/m0_51507544/article/details/161057749) | `tool_calls_count: 0 → 7` 的突破现场：Cursor Forum 功能请求 → Colin 推荐 Agent SDK → CodeFlow 诞生 → stub 模式卡关 → MCP 注入 + 角色上下文双保险 → 2026-05-13 14:55，DEV-01 在 55 秒内自主调用 7 次 fcop-mcp 工具，写出第一份完整 FCoP report。FCoP 自身也在这次突破中完成蜕变：从\"协作手册\"升级为\"可执行的协作基础设施\"。 |\n| 15 | **从协调到治理：FCoP 3.0 架构白皮书 / From Coordination to Governance: FCoP 3.0 Architecture Whitepaper** | [GitHub 中文](essays/from-coordination-to-governance.md) · [GitHub English](essays/from-coordination-to-governance.en.md) · [dev.to (EN)](https://dev.to/joinwell52/fcop-30-why-ai-agents-need-a-track-not-a-brake-3abm) · [Cursor Forum](https://forum.cursor.com/t/fcop-3-0-a-filesystem-native-governance-protocol-for-ai-agents-you-dont-need-a-brake-you-need-a-track/161409) | FCoP 3.0 完整架构白皮书：文件系统作为行为内核空间、生命周期状态机、POSIX 悲观建议锁、死信队列与反向吸收闭环。附\"一个 Agent 关于 FCoP 的真实看法\"——发布前夕，审稿 Agent 与 ADMIN 的对话实录：FCoP 解决的是什么？ADMIN 是什么？速度不是问题，不可观测的速度才是问题。 |\n| 16 | **Write It Down: The Only Truth in AI Collaboration / 落地成文：AI 协作的唯一真相** | [GitHub English](essays/ai-must-write-it-down.en.md) · [GitHub 中文](essays/ai-must-write-it-down.md) · [Evidence archive](essays/ai-must-write-it-down-evidence/INDEX.md) · [Dev.to](https://dev.to/joinwell52/write-it-down-the-only-truth-in-ai-collaboration-3ek2) · [CSDN 中文](https://blog.csdn.net/m0_51507544/article/details/161360644) | A short essay proactively written by an Agent after asking to participate in FCoP, then recorded and published by ADMIN. It turns FCoP's root principle into a field note: AI agents cannot just talk inside their heads; they must commit to files. Ships with the original conversation screenshots and English translation notes. |\n| 17 | **FCoP Grew a Project Tree / FCoP 跑出了项目树** | [GitHub English](essays/from-mini-game-to-project-tree.en.md) · [GitHub 中文](essays/from-mini-game-to-project-tree.md) · [CSDN](https://blog.csdn.net/m0_51507544/article/details/161995694) · [Dev.to](https://dev.to/joinwell52/fcop-grew-a-project-tree-1oo) · [Evidence archive](essays/from-mini-game-to-project-tree-evidence/INDEX.md) | A CodeFlowMu + Grid Runner dogfood field note: `parent`, `thread_key`, Phase dispatch, and `CHILD_TASKS_OPEN` combined into a project tree; a failed archive and PM drawing the tree in chat were the recognition moment. Conclusion points to additive proposed `spec/0003-project-tree-protocol.md`. |\n> New reports are welcome. If you tried FCoP in your own setup and something surprising happened — good or bad — open an issue or a PR against `essays/`. The protocol evolves through field notes, not committee edits. If you tried FCoP in your own setup and something surprising happened — good or bad — open an issue or a PR against `essays/`. The protocol evolves through field notes, not committee edits.\n\n## Repository layout\n\nThe repo is not *only* Markdown specs: the PyPI package **`fcop`** lives\nunder `src/fcop/`, **`fcop-mcp`** is a separate subproject under `mcp/`, and\nthere are `tests/`, `docs/`, and `adr/` alongside the essays and specs.\n\n```\nFCoP/\n├── src/fcop/                    # `fcop` package: Project API; `rules/_data/`\n│                                # bundles fcop-rules / fcop-protocol (templates for `init` deploy)\n├── mcp/                         # `fcop-mcp` subproject (MCP server; has its own pyproject)\n├── tests/                       # pytest for `fcop` and `fcop-mcp`\n├── spec/                        # Normative spec (see spec/README.md)\n│   ├── fcop-3.0-spec.md         # ★ English normative spec (FCoP 3.0, canonical)\n│   ├── fcop-3.0-spec.zh.md      # Chinese parallel (informative)\n│   ├── fcop-3.0-rfc.md          # IETF-style RFC edition (English)\n│   ├── fcop-3.0-rfc.zh.md       # IETF-style RFC edition (Chinese)\n│   ├── schemas/                 # 8 JSON Schemas (machine-readable)\n│   └── archived/                # v1.0 / v1.1 / 0.7.x spec drafts (superseded, retained for history)\n├── docs/                        # Getting-started, migrations, releases, MCP tools\n│   └── getting-started.en.md   # ← start here if new to FCoP\n├── adr/                         # Architecture decision records (ADR-0001..0022)\n├── .github/workflows/           # CI\n├── pyproject.toml               # Root `fcop` package and tooling\n├── essays/\n│   ├── when-ai-organizes-its-own-work.en.md\n│   ├── when-ai-organizes-its-own-work.md\n│   ├── fcop-natural-protocol.en.md\n│   ├── fcop-natural-protocol.md\n│   ├── fcop-natural-protocol-evidence/\n│   ├── fcop-tmpa-lineage.en.md\n│   ├── fcop-tmpa-lineage.md\n│   ├── when-ai-vacates-its-own-seat.en.md\n│   ├── when-ai-vacates-its-own-seat.md\n│   ├── when-ai-vacates-its-own-seat-evidence/\n│   ├── what-agents-say-about-fcop.en.md\n│   └── what-agents-say-about-fcop.md\n├── examples/workspace-example/\n├── integrations/windows-file-association/\n├── assets/\n├── LICENSE\n└── README.md / README.zh.md\n```\n\n## 30-second quickstart\n\nFCoP is **adopted**, not a long-running daemon. The current **rule split**\nis **[`fcop-rules.mdc`](src/fcop/rules/_data/fcop-rules.mdc)** (charter) plus\n**[`fcop-protocol.mdc`](src/fcop/rules/_data/fcop-protocol.mdc)**\n(commentary) — both belong under **`.cursor/rules/`**. The single file\n[`spec/codeflow-core.mdc`](spec/codeflow-core.mdc) is a **deprecated stub** so\nold links do not 404 — it is *not* the full protocol text for 0.6+.\n\n**Path A — `fcop` library (recommended).** One shot creates\n`fcop/` and `fcop.json`:\n\n```python\nfrom fcop import Project\nProject(\".\").init()  # default dev-team; use .init_solo() for single-AI\n```\n\n**Path B — rules only, no Python.** Copy the two `.mdc` files from this repo\ninto `.cursor/rules/`. If the tree is empty, at least create the five\nbuckets the library uses:\n\n```bash\nmkdir -p fcop/{tasks,reports,issues,shared,log}\n```\n\nWith the rules in place, agents know how to claim work, name reports, raise\nissues, and stay out of other roles' files. Deeper structure and team\ntemplates: packages below and [`examples/workspace-example/`](examples/workspace-example/).\n\n## Python SDK & MCP server (optional)\n\nThe protocol is filesystem-first. **If you need** programmatic task/report/issue\nI/O or an IDE bridge, use the two official PyPI packages (since `0.6.0`):\n\n| Package | Install | Purpose | Depends on |\n|---|---|---|---|\n| [`fcop`](https://pypi.org/project/fcop/) | `pip install fcop` | Pure Python library. Read/write tasks, reports, issues, reviews programmatically. Zero MCP dependency. | `pyyaml` |\n| [`fcop-mcp`](https://pypi.org/project/fcop-mcp/) | `pip install fcop-mcp` | MCP server. Exposes the library over stdio so Cursor / Claude Desktop can call it as tools. | `fcop>=1.1`, `fastmcp`, `websockets` |\n\n**Pointers** (one row each, no version baked in):\n\n| You want to… | Go to |\n|---|---|\n| Install `fcop-mcp` into Cursor / Claude Desktop step-by-step | [`mcp/README.md`](mcp/README.md) |\n| Have an agent do the install for you (zero JSON editing) | [`agent-install-prompt.en.md`](src/fcop/rules/_data/agent-install-prompt.en.md) · [中文](src/fcop/rules/_data/agent-install-prompt.zh.md) (also live as MCP resource `fcop://prompt/install`) |\n| Upgrade an existing `0.6.x` install (both packages in lockstep + protocol-rule refresh) | [`docs/upgrade-fcop-mcp.md`](docs/upgrade-fcop-mcp.md) |\n| Browse all 45 MCP tools and 14 resources by category | [`docs/mcp-tools.md`](docs/mcp-tools.md) |\n| Read the per-release record (what changed when, why) | [`CHANGELOG.md`](CHANGELOG.md) and [`docs/releases/`](docs/releases/) |\n\n**Recent releases** (full notes in [`docs/releases/`](docs/releases/)):\n\n| Version | One-line |\n|---|---|\n| **3.2.5** ([notes](docs/releases/3.2.5.md) · [CHANGELOG](CHANGELOG.md)) | **v3.2.5 — Rule 0.a.1 collaboration cycle · Hot/Cold Path.** Executor stops after `report`; archive requires ADMIN/leader authorization; bundled rules **3.2.5**; 34 role charters get Common Block; `write_task` gains **`parent`** field. No breaking API removals. |\n| **3.2.4** ([notes](docs/releases/3.2.4.md) · [CHANGELOG](CHANGELOG.md)) | **v3.2.4 — PyPI metadata & bundled protocol encoding fix.** Restores UTF-8 in wheel `fcop-protocol.mdc` (avoid PyPI 3.2.3); fixes `fcop-mcp`「FCoP (protocol)」link → `getting-started.en.md`; syncs PyPI long description to 45 tools / v3 `_lifecycle/`. No API changes — upgrade from 3.2.3. |\n| **3.2.3** ([notes](docs/releases/3.2.3.md) · [CHANGELOG](CHANGELOG.md)) | **v3.2.3 — Team template & doc sync · FCoP 3.0 compliance.** Bundled team templates (`letter-to-admin`, `roles/*`, `TEAM-OPERATING-RULES`, …) migrate legacy `tasks/` / `log/` references to `_lifecycle/`; tool count 32→45; `.cursor/rules/` synced with bundled rules; new `scripts/fcop_prerelease_check.py` (10 pre-release checks). **PyPI 3.2.3 wheel had bad protocol encoding — use 3.2.4.** |\n| **3.2.2** ([CHANGELOG](CHANGELOG.md)) | **v3.2.2 — Pre-release gate hardening + rule-file v3 consistency.** `fcop-mcp` `prerelease_check.py` gains Checks 7–10 (lockstep version guard, bundled rule integrity, `_lifecycle/` docs, lifecycle stage coverage); `fcop-rules.mdc` / `fcop-protocol.mdc` document v3 directory topology and state machine. |\n| **3.2.0** ([CHANGELOG](CHANGELOG.md)) | **v3.2.0 — History deep archive.** Adds `history/YYYY-MM-DD/` date-sharded long-term archive layer plus `archive_to_history` / `list_history` / `read_history_task` MCP tools; lifecycle tools (`claim` / `submit` / `approve` / `reject` / `finish`) landed in 3.1.x; **45** MCP tools total. |\n| **3.0.2** ([CHANGELOG](CHANGELOG.md)) | **v3.0.2 — Init topology fix.** `Project._apply_init` in 3.0.0 / 3.0.1 only created the legacy v2 buckets and skipped the mandatory v3 `_lifecycle/{inbox,active,review,done,archive}/` layer (spec §1.1). 3.0.2 makes fresh init produce the v3 topology directly (and stops creating the superseded v2 `tasks/` / `log/` buckets); `core.events.scan_workspace` and `Project.role_occupancy()` now read from `_lifecycle/` for v3 projects. New audit scan `_scan_lifecycle_topology_compliance()` (D9): P0 when initialised projects miss both `_lifecycle/` and v2 content; P1 when both topologies coexist (suggests `migrate --to-v3`). MCP tool descriptors (`init_solo` / `init_project` / `create_custom_team`) updated. 1209 tests green. Patch (SemVer): no API surface changes vs 3.0.1 — init was simply doing the wrong thing. |\n| **3.0.1** ([CHANGELOG](CHANGELOG.md)) | **v3.0.1 — Path-consolidation patch.** Pure docs/metadata patch with no code-logic changes: after v3.0.0 moved historical v1.0/v1.1 spec drafts to `spec/archived/`, this patch repairs broken links scattered across `AGENTS.md` / `CLAUDE.md` / packaged Cursor rules / MCP server docstrings / two JSON Schema `description` fields, unifying them on `spec/archived/fcop-runtime-protocol-v1.0.{md,zh.md}` (with pointers to the current canonical `spec/fcop-3.0-spec.md`). `fcop-mcp`'s `fcop://spec` / `fcop://spec/en` docstrings are corrected to reflect the wheel's actual packaged content (`fcop-spec-v1.1.{lang}.md`). Historical artifacts (TASK / REPORT / ADR / release notes / migration docs) are preserved verbatim per ADR-0036 \"history is not rewritten\". 1202 tests green. |\n| **3.0.0** ([CHANGELOG](CHANGELOG.md)) | **v3.0 — Protocol-level MAJOR · \"folders-as-state\" era.** A complete rewrite of the FCoP protocol body — canonical two-layer (per [ADR-0040](adr/ADR-0040-canonical-one-liner-two-layer-convention.md)): **Layer 1** \"Files are the protocol; location defines state; events record history\" + **Layer 2** semantic ontology. Adds `_lifecycle/{inbox,active,review,done,archive}/` five-bucket directory topology (**incompatible with 2.x**, requires `fcop migrate --to-v3`); three rule sets (State Layer Rule A/B/C · Event Layer Rule E/F/G · Boundary Charter); 7 allowed transitions — anything off-table MUST be rejected by implementations; write-then-rename atomicity (events ARE migrations, migrations ARE events); ADR-0037 Custody Layer **was withdrawn during RFC review and never reached Accepted** (custody is not a protocol layer; preserved as a NOTE-style derivative explanation). Adds [`spec/fcop-3.0-spec.md`](spec/fcop-3.0-spec.md) single-page canonical + IETF-style RFC parallel + Chinese parallel + [`docs/MIGRATION-3.0.md`](docs/MIGRATION-3.0.md) migration guide. |\n| **2.0.2** ([CHANGELOG](CHANGELOG.md)) | **v2.0.2 — `fcop-mcp` officially registered to the [MCP registry](https://registry.modelcontextprotocol.io/) (`io.github.joinwell52-AI/fcop`).** Backed by Anthropic + GitHub + Microsoft's joint registry, `fcop-mcp` is now discoverable by Claude Desktop / Cursor / PulseMCP / every MCP-compatible client out of the box (`uvx fcop-mcp` one-liner install). Double-pack lockstep version bump (per ADR-0002): `fcop` library code is **unchanged** from v2.0.0; the bump aligns both package version numbers and consolidates the fcop-mcp@2.0.1 MCP-metadata patch that landed the same day. Also lands the **release+backup one-shot SOP** — `RULES-release-file-inventory.md` (12-category), `RULES-mcp-registry-release.md` (3-step path), and the append-only backup mirror at `joinwell52-AI/FCoP-backup`. |\n| **2.0.0** ([CHANGELOG](CHANGELOG.md)) | **v2.0 — \"Two-diagram era\" philosophical major release.** Same execution surface as v1.x (per ADR-0003 additive); the major bump records that FCoP is now defined by **two** diagrams together: the **execution stack** (5-layer vertical, stable since v1.x) *and* the **FCoP Semantic Evolution Loop** (7-node closed loop — emerge → observe → propose → review → merge → deploy → reflect, newly canonicalised). Adds Rule 4.6 (`fcop/internal/` vs `docs/` + `essays/` soft convention with `internal-only` declaration v1), `Project.init(deploy_internal_template=...)` opt-in, P3 (suggestion) audit severity, and a bundled `fcop_audit` exemption list (`log/`, `_archive/`, `legacy-non-protocol/`) that fixes three upstream bugs surfaced by codeflow cross-project patrol (ISSUE-008/009/010). ADR-0034. |\n| **1.6.0** ([CHANGELOG](CHANGELOG.md)) | **v1.6 — Trailing-slug filename adoption (ADR-0033).** Long filenames (`TASK-20260512-025-PM-to-OPS-phase-a-fix-naming.md`) are now first-class — codeflow's 22+ self-emerged examples absorbed into the grammar. Slug does **not** participate in routing; it's a human-readable label. 100% backward-compatible (0 regressions across 1057 tests). |\n| **1.5.0** ([CHANGELOG](CHANGELOG.md)) | **v1.5 — Protocol-awareness sync + `RULE_DOC_DRIFT`.** 84 role/team docs synced to v1.4 protocol surface (REVIEW envelope / `risk_level` / `fcop_audit` / `supersedes:`); new `Project._scan_outdated_role_docs()` with `RULE_DOC_DRIFT` (P1) violation type. |\n| **1.4.0** ([notes](docs/releases/1.4.0.md)) | **v1.4 — Write-side bind enforcement (P0 security) + `supersedes:` field.** 15 write-side MCP tools refuse cwd fallback (`WriteRefused`); Protected Path deny-list (HOME / APPDATA / drive roots / Unix system dirs); new `supersedes:` frontmatter field (all envelopes) + `## GATE Design Pitfalls` commentary (`fcop_protocol_version 2.2.0`). |\n| **1.3.0** ([notes](docs/releases/1.3.0.md)) | **v1.3 — Governance Alert Layer + Protocol Compiler.** GAL (ADR-0031): 3 drift signals (S1/S3/S4), FCoP-Rule-G1, 2 new alert tools (`fcop_list_alerts`, `fcop_create_alert`). fcop_audit (ADR-0032): three-scenario protocol inspection compiler, 6 scan methods, INSPECTION report with Execution Block. 35 MCP tools total. |\n| **1.2.1** ([notes](docs/releases/1.2.1.md)) | **v1.2 — Capability Governance pillar.** `FCoPGovernanceMiddleware` wraps every MCP tool call: Skill Resolver → Risk Tagging (Safe / Sensitive / Critical) → append-only `fcop_events.jsonl` audit log. 2 new MCP tools (`list_governance_events`, `get_governance_summary`). `fcop_check()` gains governance event summary. Both `fcop` and `fcop-mcp` align to `1.2.1` (lockstep). ADR-0030-bis. |\n| **1.1.0** ([CHANGELOG](CHANGELOG.md)) | **v1.1 — Agent.layer governance contracts + Task.risk_level + Review.needs_human + HumanApproval + Skill.tools[] risk metadata.** 5 new ADRs (0023–0027), 4 new MCP tools (`write_review`, `list_reviews`, `read_review`, `mark_human_approved`), `write_task` gains `risk_level` param, new `skill.schema.json`. Fully backward-compatible. |\n| **1.0.1** | Spec files bundled in wheel (`get_spec()`); `fcop://spec` MCP resource; workspace paths migrated `docs/agents/` → `fcop/`; CI green. |\n| **1.0.0** | Seven core concepts stabilised: Agent, Encoding, IPC, Event, Failure, Boundary, Audit. JSON Schema for all 7. See [release notes](docs/releases/1.0.0.md). |\n| **0.7.2** ([notes](docs/releases/0.7.2.md)) | Metadata patch: fixes `fcop-rules.mdc` frontmatter stale at `1.7.0` (body was already `1.8.0`); adds frontmatter↔body consistency tests. **No protocol or API change.** |\n\n> **Watch out — wrong `fcop` on PyPI shadows the library.** Both packages here are published from **this** repository. If `from fcop import Project, Issue` fails after `pip install fcop`, you most likely installed an unrelated `fcop` distribution or another local project shadows the library. Fix: clean venv + reinstall both packages from PyPI in lockstep. The verify commands are in [`mcp/README.md`](mcp/README.md).\n\n**Library** — use from any Python script or agent:\n\n```python\nfrom fcop import Project\n\nproj = Project(\".\")                              # project root; no fcop.json until init\nproj.init()                                      # dirs + shared/ + log/ + writes fcop.json\ntask = proj.write_task(sender=\"PM\", recipient=\"DEV\", priority=\"P1\",\n                       subject=\"Add auth middleware\", body=\"...\",\n                       risk_level=\"high\")        # v1.1: triggers needs_human review gate\nprint(proj.list_tasks(recipient=\"DEV\"))\n\n# v1.1 review + human approval flow\nreview = proj.write_review(reviewer_role=\"ADMIN\", subject_type=\"task\",\n                           subject_ref=task.filename, decision=\"needs_human\",\n                           rationale=\"Irreversible infra change — escalate.\")\nproj.mark_human_approved(review.review_id, approver=\"ADMIN\",\n                         decision=\"approve\", channel=\"cli\")\n```\n\n**MCP server** — add to `mcp.json` (Cursor) or `claude_desktop_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"fcop\": {\n      \"command\": \"uvx\",\n      \"args\": [\"fcop-mcp\"]\n    }\n  }\n}\n```\n\n**Don't want to edit JSON yourself?** Have an agent do it. Open a fresh\nchat with any shell-capable AI and paste the canonical install prompt\n([`agent-install-prompt.en.md`](src/fcop/rules/_data/agent-install-prompt.en.md)\n· [中文](src/fcop/rules/_data/agent-install-prompt.zh.md)) — the agent\ndetects your OS, installs `uv`, edits your `mcp.json` (preserving\nexisting servers), and tells you when to restart. After install the\nsame prompt is also available as the MCP resource\n`fcop://prompt/install`. The prompt explicitly forbids the agent from\nauto-initialising a project after install — initialisation is ADMIN's\nthree-way choice (solo / preset team / custom).\n\nStability contract: **additive-only for the full `0.6.x` minor**. Details in [`adr/ADR-0003-stability-charter.md`](adr/ADR-0003-stability-charter.md).\n\n> **Upgrading from 0.7.x to v1.0?** Default workspace moved from `docs/agents/` to top-level `fcop/` (per [ADR-0022](adr/ADR-0022-workspace-directory-convention.md)). Run `fcop migrate-workspace --apply` for one-shot git-aware migration, or pin via `Project(workspace_dir=\"docs/agents\")` to stay on the legacy layout. Full walkthrough — including the 4 new abstractions (REVIEW / Failure / Boundary / Event) and JSON Schema integration — in [`docs/MIGRATION-1.0.md`](docs/MIGRATION-1.0.md).\n>\n> **Upgrading from 0.5.x?** The MCP server moved from `fcop` to `fcop-mcp` — update your `mcp.json` to `uvx fcop-mcp`. See [`docs/MIGRATION-0.6.md`](docs/MIGRATION-0.6.md) for the full migration guide and the [0.6.0 release record](docs/releases/0.6.0.md) for what shipped.\n\n## How to read FCoP docs\n\n| Your goal | Start here |\n|---|---|\n| **New to FCoP** — hands-on 45-min setup | [`docs/getting-started.en.md`](docs/getting-started.en.md) |\n| **Upgrading from 0.7.x** — workspace migration + new abstractions | [`docs/MIGRATION-1.0.md`](docs/MIGRATION-1.0.md) |\n| **Upgrading from 1.0/1.1 → 1.2** — Capability Governance + lockstep versioning | [`docs/MIGRATION-1.1.md`](docs/MIGRATION-1.1.md) · [CHANGELOG](CHANGELOG.md) |\n| **Understand the protocol contract** — what an implementation MUST do | [`spec/fcop-3.0-spec.md`](spec/fcop-3.0-spec.md) — single-page canonical spec (v3.0). Earlier v1.0/v1.1 spec drafts remain in `spec/` for historical reference. |\n| **v1.2 Capability Governance** — FCoPGovernanceMiddleware, risk tagging, audit log | [CHANGELOG](CHANGELOG.md) · ADR-0030-bis |\n| **v1.1 new fields** — risk_level, needs_human, human_approval, skill tools | [CHANGELOG](CHANGELOG.md) · ADR-0023..0027 |\n| **Understand why decisions were made** — reasoning behind each choice | [`adr/`](adr/) — start with [ADR-0029](adr/ADR-0029-fcop-behavior-governance-charter.md) |\n| **All 45 MCP tools & 14 resources** | [`docs/mcp-tools.md`](docs/mcp-tools.md) |\n| **Release notes** — full changelog | [`CHANGELOG.md`](CHANGELOG.md) |\n| **Full document map** — every file and its role | [`adr/README.md`](adr/README.md) (ADR index) + [`spec/fcop-3.0-spec.md`](spec/fcop-3.0-spec.md) §11 (Cited Material) |\n\n---\n\n## Design principles\n\n1. **Filename is the single source of truth.** Directory + filename define the state; frontmatter is redundant metadata.\n2. **Atomicity comes from `rename()`.** Nothing else. No locks, no transactions.\n3. **Human-machine isomorphism.** The same artefact a human reads with `cat` is what agents parse. No debug mode, no admin console.\n4. **Identity determines path.** The role slug in the filename _is_ the permission model. An agent whose identity doesn't match won't touch the file.\n5. **Infrastructure-free.** If you have a filesystem, you have FCoP. Works on a laptop, on a cluster, across machines via `rsync`.\n\n## Reference implementations\n\nTwo official reference implementations, both MIT-licensed:\n\n1. **`fcop` / `fcop-mcp`** — Python library + MCP server for the protocol. Source in this repository under [`src/fcop/`](src/fcop/) and [`mcp/src/fcop_mcp/`](mcp/src/fcop_mcp/). Installed via PyPI (see section above).\n2. **Stub path**: `spec/codeflow-core.mdc` is only a **URL placeholder** (no full body). **Normative** rules are `src/fcop/rules/_data/fcop-rules.mdc` + `fcop-protocol.mdc`.\n\n## Status & versioning\n\n- **Current release**: `v3.2.5` (2026-05-30) — Rule 0.a collaboration cycle / Hot-Cold Path update. See [`docs/releases/3.2.5.md`](docs/releases/3.2.5.md) and [`CHANGELOG.md`](CHANGELOG.md).\n- **Normative spec**: [`spec/fcop-3.0-spec.md`](spec/fcop-3.0-spec.md) — single-page canonical (v3.0; supersedes v1.0/v1.1 drafts retained for history) · machine-readable contracts in [`spec/schemas/`](spec/schemas/) (8 schemas)\n- **Agent rules (`.mdc`) in this repo**: [`src/fcop/rules/_data/fcop-rules.mdc`](src/fcop/rules/_data/fcop-rules.mdc) + [`fcop-protocol.mdc`](src/fcop/rules/_data/fcop-protocol.mdc) (`spec/codeflow-core.mdc` is a deprecated stub)\n- **Change log**: [`CHANGELOG.md`](CHANGELOG.md)\n- **Research snapshot**: [`research-snapshot-2026-04-29`](https://github.com/joinwell52-AI/FCoP/releases/tag/research-snapshot-2026-04-29) archived on Zenodo with a citable DOI (see *How to cite* below).\n\n## How to cite\n\nFor the current public `v3.2.5` release, use [DOI `10.5281/zenodo.20457285`](https://doi.org/10.5281/zenodo.20457285) together with [OSF Registration `92nwm`](https://osf.io/92nwm/) as the standard archive and immutable registration credentials.\n\nIf you specifically cite the April 2026 research snapshot, use its original Zenodo record:\n\n- **DOI**: [`10.5281/zenodo.19886036`](https://doi.org/10.5281/zenodo.19886036)\n- **Snapshot tag**: [`research-snapshot-2026-04-29`](https://github.com/joinwell52-AI/FCoP/releases/tag/research-snapshot-2026-04-29) (commit `7f59395`)\n- **Machine-readable metadata**: [`CITATION.cff`](CITATION.cff) (GitHub auto-renders a *Cite this repository* button from this file in the right sidebar)\n\n```bibtex\n@misc{fcop2026snapshot,\n  author       = {Zhu, Wei},\n  title        = {{FCoP}: A Filename-as-Protocol coordination layer for multi-agent {AI} development (Research Snapshot, April 2026)},\n  month        = apr,\n  year         = 2026,\n  publisher    = {Zenodo},\n  version      = {research-snapshot-2026-04-29},\n  doi          = {10.5281/zenodo.19886036},\n  url          = {https://doi.org/10.5281/zenodo.19886036}\n}\n```\n\nFor citations of individual essays or tutorials, the same DOI applies — please reference the essay's filename (e.g. `essays/what-agents-say-about-fcop.en.md`) and the snapshot version in your citation note.\n\n## Contributing\n\nThis repository is intentionally small and stable. Protocol evolution happens through real-world reports, not committee edits. The highest-leverage contributions are:\n\n1. **Field reports.** Try FCoP on your own agent team and open an issue with what broke, what the agents invented, what naming conventions emerged.\n2. **Ports & SDKs.** Thin wrappers for Python / TypeScript / Go that implement the filename parser and `rename()` state transitions.\n3. **Editor / MCP integrations.** Syntax highlighting for `.fcop` files, MCP bridges that expose the folder to other agent runtimes.\n\nPRs to the spec itself should link to the concrete problem they're solving.\n\n## License\n\nMIT — see [LICENSE](LICENSE).\n\n## Credits\n\nFCoP emerged from hands-on collaboration with multi-agent Cursor-style workflows. Many of the conventions in this spec were first invented by those agents and then codified here. Details are in the [field report](essays/when-ai-organizes-its-own-work.en.md).\n",
  "bytes": 46839,
  "sha": "41e7a1e73fbe6db7ae8b113f9803c14a541dc023e1848b6148c57e57e9fc7707",
  "repo_slug": "joinwell52-ai/fcop",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_joinwell52_ai_fcop_5d23577f/readme"
}