fcop 3.2.2__tar.gz → 3.2.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (136) hide show
  1. {fcop-3.2.2 → fcop-3.2.3}/CHANGELOG.md +46 -0
  2. {fcop-3.2.2 → fcop-3.2.3}/PKG-INFO +1 -1
  3. fcop-3.2.3/README.md +390 -0
  4. fcop-3.2.3/README.zh.md +361 -0
  5. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/_version.py +16 -16
  6. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/project.py +10 -12
  7. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/rules/_data/agent-bringup-prompt.zh.md +361 -361
  8. fcop-3.2.3/src/fcop/rules/_data/fcop-protocol.mdc +1810 -0
  9. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/rules/_data/fcop-rules.mdc +127 -10
  10. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/rules/_data/letter-to-admin.en.md +6 -6
  11. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/rules/_data/letter-to-admin.zh.md +10 -10
  12. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/teams/_data/README.en.md +2 -2
  13. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/teams/_data/README.md +2 -2
  14. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/teams/_data/dev-team/TEAM-OPERATING-RULES.en.md +2 -2
  15. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/teams/_data/dev-team/TEAM-OPERATING-RULES.md +2 -2
  16. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/teams/_data/dev-team/roles/DEV.en.md +3 -3
  17. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/teams/_data/dev-team/roles/DEV.md +3 -3
  18. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/teams/_data/dev-team/roles/OPS.en.md +3 -3
  19. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/teams/_data/dev-team/roles/OPS.md +3 -3
  20. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/teams/_data/dev-team/roles/PM.en.md +2 -2
  21. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/teams/_data/dev-team/roles/PM.md +2 -2
  22. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/teams/_data/dev-team/roles/QA.en.md +3 -3
  23. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/teams/_data/dev-team/roles/QA.md +4 -4
  24. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/teams/_data/media-team/TEAM-OPERATING-RULES.en.md +3 -3
  25. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/teams/_data/media-team/TEAM-OPERATING-RULES.md +2 -2
  26. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/teams/_data/media-team/roles/COLLECTOR.en.md +3 -3
  27. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/teams/_data/media-team/roles/COLLECTOR.md +3 -3
  28. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/teams/_data/media-team/roles/EDITOR.en.md +3 -3
  29. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/teams/_data/media-team/roles/EDITOR.md +4 -4
  30. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/teams/_data/media-team/roles/PUBLISHER.en.md +2 -2
  31. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/teams/_data/media-team/roles/PUBLISHER.md +2 -2
  32. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/teams/_data/media-team/roles/WRITER.en.md +3 -3
  33. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/teams/_data/media-team/roles/WRITER.md +3 -3
  34. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/teams/_data/mvp-team/TEAM-OPERATING-RULES.en.md +3 -3
  35. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/teams/_data/mvp-team/TEAM-OPERATING-RULES.md +2 -2
  36. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/teams/_data/mvp-team/roles/BUILDER.en.md +3 -3
  37. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/teams/_data/mvp-team/roles/BUILDER.md +3 -3
  38. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/teams/_data/mvp-team/roles/DESIGNER.en.md +3 -3
  39. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/teams/_data/mvp-team/roles/DESIGNER.md +3 -3
  40. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/teams/_data/mvp-team/roles/MARKETER.en.md +2 -2
  41. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/teams/_data/mvp-team/roles/MARKETER.md +2 -2
  42. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/teams/_data/mvp-team/roles/RESEARCHER.en.md +3 -3
  43. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/teams/_data/mvp-team/roles/RESEARCHER.md +3 -3
  44. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/teams/_data/qa-team/TEAM-OPERATING-RULES.en.md +3 -3
  45. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/teams/_data/qa-team/TEAM-OPERATING-RULES.md +2 -2
  46. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/teams/_data/qa-team/roles/AUTO-TESTER.en.md +3 -3
  47. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/teams/_data/qa-team/roles/AUTO-TESTER.md +3 -3
  48. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/teams/_data/qa-team/roles/LEAD-QA.en.md +2 -2
  49. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/teams/_data/qa-team/roles/LEAD-QA.md +2 -2
  50. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/teams/_data/qa-team/roles/PERF-TESTER.en.md +3 -3
  51. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/teams/_data/qa-team/roles/PERF-TESTER.md +3 -3
  52. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/teams/_data/qa-team/roles/TESTER.en.md +3 -3
  53. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/teams/_data/qa-team/roles/TESTER.md +3 -3
  54. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/teams/_data/solo/TEAM-OPERATING-RULES.en.md +4 -4
  55. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/teams/_data/solo/TEAM-OPERATING-RULES.md +4 -4
  56. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/teams/_data/solo/TEAM-ROLES.en.md +2 -2
  57. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/teams/_data/solo/TEAM-ROLES.md +2 -2
  58. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/teams/_data/solo/roles/ME.en.md +4 -4
  59. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/teams/_data/solo/roles/ME.md +4 -4
  60. fcop-3.2.2/README.md +0 -389
  61. fcop-3.2.2/README.zh.md +0 -360
  62. fcop-3.2.2/src/fcop/rules/_data/fcop-protocol.mdc +0 -2192
  63. {fcop-3.2.2 → fcop-3.2.3}/.gitignore +0 -0
  64. {fcop-3.2.2 → fcop-3.2.3}/LICENSE +0 -0
  65. {fcop-3.2.2 → fcop-3.2.3}/adr/README.md +0 -0
  66. {fcop-3.2.2 → fcop-3.2.3}/essays/README.md +0 -0
  67. {fcop-3.2.2 → fcop-3.2.3}/fcop-README.pypi.md +0 -0
  68. {fcop-3.2.2 → fcop-3.2.3}/pyproject.toml +0 -0
  69. {fcop-3.2.2 → fcop-3.2.3}/spec/README.md +0 -0
  70. {fcop-3.2.2 → fcop-3.2.3}/spec/archived/README.md +0 -0
  71. {fcop-3.2.2 → fcop-3.2.3}/spec/schemas/README.md +0 -0
  72. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/__init__.py +0 -0
  73. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/_compat_cli.py +0 -0
  74. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/_data/schemas/agent.schema.json +0 -0
  75. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/_data/schemas/boundary.schema.json +0 -0
  76. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/_data/schemas/encoding.schema.json +0 -0
  77. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/_data/schemas/event.schema.json +0 -0
  78. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/_data/schemas/failure.schema.json +0 -0
  79. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/_data/schemas/ipc-envelope.schema.json +0 -0
  80. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/_data/schemas/review.schema.json +0 -0
  81. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/_data/schemas/skill.schema.json +0 -0
  82. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/cli/__init__.py +0 -0
  83. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/cli/_main.py +0 -0
  84. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/cli/migrate_v3.py +0 -0
  85. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/cli/migrate_workspace.py +0 -0
  86. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/core/__init__.py +0 -0
  87. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/core/boundary.py +0 -0
  88. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/core/config.py +0 -0
  89. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/core/events.py +0 -0
  90. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/core/filename.py +0 -0
  91. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/core/frontmatter.py +0 -0
  92. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/core/jsonschema_validator.py +0 -0
  93. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/core/recovery.py +0 -0
  94. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/core/schema.py +0 -0
  95. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/errors.py +0 -0
  96. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/inspection.py +0 -0
  97. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/lifecycle/__init__.py +0 -0
  98. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/lifecycle/atomic.py +0 -0
  99. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/lifecycle/detect.py +0 -0
  100. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/lifecycle/events.py +0 -0
  101. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/lifecycle/migrate.py +0 -0
  102. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/lifecycle/state.py +0 -0
  103. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/lifecycle/transitions.py +0 -0
  104. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/models.py +0 -0
  105. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/py.typed +0 -0
  106. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/rules/__init__.py +0 -0
  107. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/rules/_data/agent-bringup-prompt.en.md +0 -0
  108. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/rules/_data/agent-install-prompt.en.md +0 -0
  109. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/rules/_data/agent-install-prompt.zh.md +0 -0
  110. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/rules/_data/fcop-spec-v1.0.en.md +0 -0
  111. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/rules/_data/fcop-spec-v1.0.zh.md +0 -0
  112. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/rules/_data/fcop-spec-v1.1.en.md +0 -0
  113. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/rules/_data/fcop-spec-v1.1.zh.md +0 -0
  114. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/rules/_data/internal-readme.en.md +0 -0
  115. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/rules/_data/internal-readme.zh.md +0 -0
  116. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/teams/__init__.py +0 -0
  117. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/teams/_data/dev-team/README.en.md +0 -0
  118. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/teams/_data/dev-team/README.md +0 -0
  119. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/teams/_data/dev-team/TEAM-ROLES.en.md +0 -0
  120. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/teams/_data/dev-team/TEAM-ROLES.md +0 -0
  121. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/teams/_data/index.json +0 -0
  122. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/teams/_data/media-team/README.en.md +0 -0
  123. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/teams/_data/media-team/README.md +0 -0
  124. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/teams/_data/media-team/TEAM-ROLES.en.md +0 -0
  125. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/teams/_data/media-team/TEAM-ROLES.md +0 -0
  126. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/teams/_data/mvp-team/README.en.md +0 -0
  127. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/teams/_data/mvp-team/README.md +0 -0
  128. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/teams/_data/mvp-team/TEAM-ROLES.en.md +0 -0
  129. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/teams/_data/mvp-team/TEAM-ROLES.md +0 -0
  130. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/teams/_data/qa-team/README.en.md +0 -0
  131. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/teams/_data/qa-team/README.md +0 -0
  132. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/teams/_data/qa-team/TEAM-ROLES.en.md +0 -0
  133. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/teams/_data/qa-team/TEAM-ROLES.md +0 -0
  134. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/teams/_data/solo/README.en.md +0 -0
  135. {fcop-3.2.2 → fcop-3.2.3}/src/fcop/teams/_data/solo/README.md +0 -0
  136. {fcop-3.2.2 → fcop-3.2.3}/workspace/README.md +0 -0
@@ -8,6 +8,52 @@ This file tracks both packages together because they release in lockstep.
8
8
  See [adr/ADR-0002](./adr/ADR-0002-package-split-and-migration.md) for the
9
9
  versioning strategy.
10
10
 
11
+ ## [3.2.3] — 2026-05-23 (Team template & documentation sync · FCoP 3.0 compliance)
12
+
13
+ ### Fixed — `fcop` (bundled team templates)
14
+ - **`letter-to-admin.zh.md` / `letter-to-admin.en.md`** — tool count updated
15
+ 32 → 45; all directory references updated from legacy `tasks/reports/log/`
16
+ to `_lifecycle/` topology introduced in FCoP 3.0.
17
+ - **All `roles/*.md` files** across `dev-team`, `media-team`, `mvp-team`,
18
+ `qa-team`, `solo` templates — `fcop/tasks/` → `_lifecycle/inbox/`,
19
+ `log/` → `_lifecycle/archive/` paths corrected to FCoP 3.0 standard.
20
+ - **`TEAM-OPERATING-RULES.md` / `TEAM-OPERATING-RULES.en.md`** — v2 directory
21
+ references replaced with v3 `_lifecycle/` lifecycle-stage model.
22
+ - **`README.md` / `README.en.md`** — corrected directory references to use
23
+ `_lifecycle/` structure.
24
+ - **`.cursor/rules/fcop-rules.mdc`** and **`.cursor/rules/fcop-protocol.mdc`**
25
+ synchronized to match the bundled versions (previously diverged to v3.0.0).
26
+
27
+ ### Added — `fcop`
28
+ - `scripts/fcop_prerelease_check.py` — dedicated pre-release validation script
29
+ for the `fcop` library; checks version consistency, critical file presence,
30
+ rule-file frontmatter, lifecycle directory documentation, team template
31
+ existence, and `.cursor/rules/` sync (10 checks total).
32
+
33
+ ---
34
+
35
+ ## [3.2.2] — 2026-05-23 (Pre-release check hardening · rule-file consistency gates)
36
+
37
+ ### Added — `fcop-mcp`
38
+ - `prerelease_check.py` gains checks 7–10:
39
+ - **Check 7** — `fcop` library version == `fcop-mcp` version (lockstep guard).
40
+ - **Check 8** — All critical bundled rule files (`fcop-rules.mdc`,
41
+ `fcop-protocol.mdc`, `agent-bringup-prompt.{zh,en}.md`,
42
+ `letter-to-admin.{zh,en}.md`) exist and are non-empty.
43
+ - **Check 9** — `fcop-rules.mdc` references current major version and
44
+ documents the `_lifecycle/` directory structure introduced in FCoP 3.0.
45
+ - **Check 10** — `fcop-protocol.mdc` covers all v3 lifecycle stages
46
+ (`inbox → active → review → done → archive`).
47
+ - `CHANGELOG.md` path in `prerelease_check.py` corrected to project root
48
+ (`PROJECT_ROOT / "CHANGELOG.md"`) from the erroneous `mcp/CHANGELOG.md`.
49
+
50
+ ### Fixed — `fcop-rules.mdc` / `fcop-protocol.mdc` (bundled)
51
+ - Both files updated to document the FCoP v3 `_lifecycle/` directory topology
52
+ and lifecycle state machine, replacing the legacy `tasks/ reports/ issues/
53
+ shared/ log/` references in the pre-release gate and rule-distribution layer.
54
+
55
+ ---
56
+
11
57
  ## [3.2.0] — 2026-05-22 (History deep archive · date-sharded `history/YYYY-MM-DD/` layer)
12
58
 
13
59
  ### Added — `fcop`
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fcop
3
- Version: 3.2.2
3
+ Version: 3.2.3
4
4
  Summary: FCoP protocol: official Python library — Project API, task/report/issue files, filename parsing, bundled rules. PyYAML only; not an MCP server.
5
5
  Project-URL: Homepage, https://github.com/joinwell52-AI/FCoP
6
6
  Project-URL: Repository, https://github.com/joinwell52-AI/FCoP
fcop-3.2.3/README.md ADDED
@@ -0,0 +1,390 @@
1
+ <p align="center">
2
+ <img src="assets/fcop-logo-256.png" alt="FCoP Logo" width="180" />
3
+ </p>
4
+
5
+ <h1 align="center">FCoP 鈥?File-based Coordination Protocol</h1>
6
+
7
+ <p align="center">
8
+ <em>The <strong>AI Agent behavior governance protocol</strong> 鈥?the runtime contract for agent collaboration on a shared filesystem.</em><br/>
9
+ <strong>Core invariant: <code>Filename as Protocol</code>. Folders are the message bus.</strong>
10
+ </p>
11
+
12
+ <p align="center">
13
+ <strong><a href="https://joinwell52-ai.github.io/FCoP/">馃寪 Project homepage</a></strong> 路
14
+ <a href="README.zh.md">绠€浣撲腑鏂?/a> 路
15
+ <a href="docs/getting-started.en.md">Getting started</a> 路
16
+ <a href="src/fcop/rules/_data/agent-install-prompt.en.md"><strong>馃憠 Let AI install!</strong></a> 路
17
+ <a href="src/fcop/rules/_data/agent-bringup-prompt.en.md"><strong>馃憠 Let AI bring up a project!</strong></a> 路
18
+ <a href="docs/mcp-tools.md"><strong>MCP Tools (45)</strong></a> 路
19
+ <a href="essays/when-ai-organizes-its-own-work.en.md">Field Report</a> 路
20
+ <a href="essays/fcop-natural-protocol.en.md">Natural Protocol</a> 路
21
+ <a href="spec/fcop-3.0-spec.md"><strong>3.0 Spec</strong></a> 路
22
+ <a href="adr/README.md">ADR Index</a>
23
+ </p>
24
+
25
+ <p align="center">
26
+ <a href="https://dev.to/joinwell52/we-replaced-our-multi-agent-middleware-with-a-folder-48-hours-later-the-ai-invented-6-42a9">
27
+ <img src="https://img.shields.io/badge/DEV-Featured%20Essay-black?style=flat-square&logo=dev.to&logoColor=white" alt="DEV Community essay" />
28
+ </a>
29
+ <a href="https://forum.cursor.com/t/fcop-let-multiple-cursor-agents-collaborate-by-filename-mit-0-infra/158447">
30
+ <img src="https://img.shields.io/badge/Cursor%20Forum-Discuss-0066FF?style=flat-square" alt="Cursor Community Forum" />
31
+ </a>
32
+ <a href="LICENSE">
33
+ <img src="https://img.shields.io/badge/license-MIT-blue?style=flat-square" alt="MIT License" />
34
+ </a>
35
+ <a href="CHANGELOG.md">
36
+ <img src="https://img.shields.io/badge/release-3.2.3-brightgreen?style=flat-square" alt="3.2.3" />
37
+ </a>
38
+ <a href="spec/fcop-3.0-spec.md">
39
+ <img src="https://img.shields.io/badge/spec-FCoP%203.0-orange?style=flat-square" alt="FCoP 3.0 spec" />
40
+ </a>
41
+ <a href="https://registry.modelcontextprotocol.io/v0/servers?search=io.github.joinwell52-AI%2Ffcop">
42
+ <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" />
43
+ </a>
44
+ <a href="https://doi.org/10.5281/zenodo.19886036">
45
+ <img src="https://zenodo.org/badge/DOI/10.5281/zenodo.19886036.svg" alt="DOI 10.5281/zenodo.19886036" />
46
+ </a>
47
+ </p>
48
+
49
+ ---
50
+
51
+ ## 馃啎 FCoP 3.0 is here 鈥?*Files carry protocol. Paths address state. Events replay transitions.*
52
+
53
+ <p align="center">
54
+ <a href="spec/fcop-3.0-spec.md">
55
+ <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" />
56
+ </a>
57
+ </p>
58
+
59
+ > **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).
60
+ >
61
+ > **Two paths to v3:**
62
+ > - **New project** 鈫?`fcop init` / MCP `init_solo|init_project|create_custom_team` (鈮?3.0.2 produces v3 topology directly).
63
+ > - **Existing 2.x project** 鈫?`python -m fcop migrate --to-v3`.
64
+ >
65
+ > 鈿狅笍 **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.
66
+
67
+ | Doc | Purpose |
68
+ |---|---|
69
+ | [`spec/fcop-3.0-spec.md`](spec/fcop-3.0-spec.md) 路 [zh](spec/fcop-3.0-spec.zh.md) | Single-page canonical spec |
70
+ | [`spec/fcop-3.0-rfc.md`](spec/fcop-3.0-rfc.md) 路 [zh](spec/fcop-3.0-rfc.zh.md) | IETF-style RFC projection |
71
+ | [`docs/MIGRATION-3.0.md`](docs/MIGRATION-3.0.md) 路 [zh](docs/MIGRATION-3.0.zh.md) | 2.x 鈫?3.0 migration guide |
72
+ | [`CHANGELOG.md` `[3.0.0]`](CHANGELOG.md) | Full release notes |
73
+ | [`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 |
74
+
75
+ ---
76
+
77
+ ## Where FCoP sits in the stack
78
+
79
+ FCoP is the **behavior governance protocol layer** for multi-agent collaboration 鈥?standardizing how agents report actions, review outcomes, and operate within governed capability boundaries.
80
+
81
+ ```
82
+ Application Layer CodeFlow / Cursor / Claude Desktop 鈫?business products / agent applications
83
+ Host Adapter Layer fcop-mcp / fcop-cli / @fcop/claude 鈫?integration adapters / host bridges
84
+ 鈽?FCoP Protocol 鈽? Agent collaboration / reporting / 鈫?this is FCoP
85
+ review / capability governance /
86
+ event semantics / failure boundaries /
87
+ auditability
88
+ Reference Impl fcop (Python library) 鈫?protocol reference implementation
89
+ Execution Substrate LLM APIs / MCP tools / filesystem / 鈫?execution environment
90
+ process manager / operating system
91
+ ```
92
+
93
+ > **FCoP governs agent behavior, not execution runtime.** 鈥?[ADR-0029](adr/ADR-0029-fcop-behavior-governance-charter.md)
94
+
95
+ v1.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).
96
+
97
+ 鈫?**Start here**: [`docs/getting-started.md`](docs/getting-started.md) 路 [`docs/getting-started.en.md`](docs/getting-started.en.md)
98
+
99
+ ---
100
+
101
+ ## The one-paragraph pitch
102
+
103
+ Most multi-agent frameworks lean on message queues, databases, or custom RPC layers. FCoP throws all of that away and keeps only the **filesystem**:
104
+
105
+ - **Directories are statuses.** `tasks/`, `reports/`, `issues/`, `log/` 鈥?moving a file between them _is_ the state transition.
106
+ - **Filenames are routing.** `TASK-20260418-001-PM-to-DEV.md` tells you the sender, recipient, kind, and sequence at a glance.
107
+ - **Contents are payload.** Markdown + a small YAML frontmatter. Agents read and write it the same way humans do.
108
+ - **`os.rename()` is the only sync primitive.** POSIX guarantees atomicity within a mount point 鈥?no locks, no brokers, no consensus.
109
+
110
+ That'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.
111
+
112
+ > If TCP is "bytes over wires," **FCoP is "tasks over folders."**
113
+
114
+ > In engineering terms, you get a **serializable, versionable collaboration surface** instead of relying on **proprietary, heavyweight infrastructure**.
115
+
116
+ ## Why should you care?
117
+
118
+ Because agents are easier to supervise when you can literally **see** what they're doing.
119
+
120
+ We 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.
121
+
122
+ Then 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.
123
+
124
+ Both stories are written up as field reports in the essays index below.
125
+
126
+ ## Essays 路 field reports from the wild
127
+
128
+ | # | Title | Versions | One-liner |
129
+ |---|---|---|---|
130
+ | 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. |
131
+ | 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). |
132
+ | 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. |
133
+ | 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. |
134
+ | 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/). |
135
+ | 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."** |
136
+ | 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 娑岀幇鐜板満鎶ュ憡锛?026-05-12锛夛細USER HOME 鍏ㄥ眬姹℃煋 / GATE 鎻忚堪鑷懡涓?/ `supersedes:` 瀛楁鐜板満鍙戞槑鈥斺€斾互鍙婂崗璁浣曞湪闆舵宕╂簝鐨勬儏鍐典笅锛屼互灏忔椂绾ч€熷害灏嗗畠浠叏閮ㄥ弽鍚戝惛鏀躲€?|
137
+ | 08 | **鍗忚涓轰粈涔堢煭锛屽巻鍙蹭负浠€涔堥暱** | [GitHub 涓枃](essays/why-the-protocol-stays-short.md) 路 [GitHub English](essays/why-the-protocol-stays-short.en.md) | 涓€浠界粰鍗忚缁存姢鑰呯殑璁捐鍝插绛旀锛?杩欐牱鐨勬秾鐜颁細涓嶄細娌℃湁姝㈠锛?鈥斺€旂煭绛旓細浼氭敹鏁涗絾涓嶄細鍋溿€傚洓绫绘秾鐜扮殑澶勭悊璺緞銆佷笁鏉$粨鏋勫姏瀛︿负浣曡兘璁╁崗璁鏋朵笉琚秾鐜板帇鍨紝浠ュ強"鍗忚鐭槸涓轰簡璁╁巻鍙茶兘鏃犻檺闀?鐨勫簳灞傞€昏緫銆?|
138
+ | 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` 鐨勬簮澶存渚嬨€?|
139
+ | 10 | **涓€琛?frontmatter 鐨勬梾绋?* | [GitHub 涓枃](essays/the-supersedes-field-story.md) 路 [GitHub English](essays/the-supersedes-field-story.en.md) | `supersedes:` 瀛楁浠庝竴娆″崗璁袱闅剧幇鍦哄彂鏄庡埌 `ipc-envelope.schema.json` 姝e紡瀛楁鐨勪袱灏忔椂鏃呯▼锛歊ule 5锛坅ppend-only锛? Rule 6锛坮eciprocity锛? Rule 0.c锛坱ruthful锛変笁鏉¤鍒欏悓鏃舵垚绔嬫椂锛宎gent 鐢ㄤ竴琛?YAML 鑷繁瑙d簡鍥板眬鈥斺€旇繖鏉¤矾寰勫睍绀?FCoP 娑岀幇钀藉湴鐨勬渶浣庢垚鏈Э鍔裤€?|
140
+ | 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()` 涓轰粈涔?鍙湅涓嶆敼"鈥斺€擫1 妫€娴?/ L2 瑙i噴 / L3 鏂囨。涓夊眰鎶?鐪嬭"鍜?鍔ㄦ墜"鍒囧紑锛屼骇鍑?`INSPECTION.md`锛堝缓璁潪鍛戒护锛夛紝鎵ц鏉冪暀缁欎汉銆俙adr/FCoP-semantic-execution-chain.md` 鐨勭鏅増銆?|
141
+ | 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锛屼綘鎬庝箞鐪嬭繖濂楀崗璁紵"鈥斺€斾簲绉嶆埅鐒朵笉鍚岀殑鍐呴儴瑙嗚锛圕hatGPT 璋堣韩浠藉悎娉曟€с€丆laude 璋堣瘹瀹炶竟鐣屻€丏eepSeek 璋堜綋闈㈢敓瀛樸€丟rok 鍋氭妧鏈瘎瀹°€佽眴鍖呰璁捐鍝插锛夛紝浠ュ強瀹冧滑涔嬮棿鏈€鏈夋剰鎬濈殑鍒嗘銆?|
142
+ | 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. |
143
+ | 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锛孌EV-01 鍦?55 绉掑唴鑷富璋冪敤 7 娆?fcop-mcp 宸ュ叿锛屽啓鍑虹涓€浠藉畬鏁?FCoP report銆侳CoP 鑷韩涔熷湪杩欐绐佺牬涓畬鎴愯湑鍙橈細浠?鍗忎綔鎵嬪唽"鍗囩骇涓?鍙墽琛岀殑鍗忎綔鍩虹璁炬柦"銆?|
144
+ > 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.
145
+
146
+ ## Repository layout
147
+
148
+ The repo is not *only* Markdown specs: the PyPI package **`fcop`** lives
149
+ under `src/fcop/`, **`fcop-mcp`** is a separate subproject under `mcp/`, and
150
+ there are `tests/`, `docs/`, and `adr/` alongside the essays and specs.
151
+
152
+ ```
153
+ FCoP/
154
+ 鈹溾攢鈹€ src/fcop/ # `fcop` package: Project API; `rules/_data/`
155
+ 鈹? # bundles fcop-rules / fcop-protocol (templates for `init` deploy)
156
+ 鈹溾攢鈹€ mcp/ # `fcop-mcp` subproject (MCP server; has its own pyproject)
157
+ 鈹溾攢鈹€ tests/ # pytest for `fcop` and `fcop-mcp`
158
+ 鈹溾攢鈹€ spec/ # Normative spec (see spec/README.md)
159
+ 鈹? 鈹溾攢鈹€ fcop-3.0-spec.md # 鈽?English normative spec (FCoP 3.0, canonical)
160
+ 鈹? 鈹溾攢鈹€ fcop-3.0-spec.zh.md # Chinese parallel (informative)
161
+ 鈹? 鈹溾攢鈹€ fcop-3.0-rfc.md # IETF-style RFC edition (English)
162
+ 鈹? 鈹溾攢鈹€ fcop-3.0-rfc.zh.md # IETF-style RFC edition (Chinese)
163
+ 鈹? 鈹溾攢鈹€ schemas/ # 8 JSON Schemas (machine-readable)
164
+ 鈹? 鈹斺攢鈹€ archived/ # v1.0 / v1.1 / 0.7.x spec drafts (superseded, retained for history)
165
+ 鈹溾攢鈹€ docs/ # Getting-started, migrations, releases, MCP tools
166
+ 鈹? 鈹斺攢鈹€ getting-started.en.md # 鈫?start here if new to FCoP
167
+ 鈹溾攢鈹€ adr/ # Architecture decision records (ADR-0001..0022)
168
+ 鈹溾攢鈹€ .github/workflows/ # CI
169
+ 鈹溾攢鈹€ pyproject.toml # Root `fcop` package and tooling
170
+ 鈹溾攢鈹€ essays/
171
+ 鈹? 鈹溾攢鈹€ when-ai-organizes-its-own-work.en.md
172
+ 鈹? 鈹溾攢鈹€ when-ai-organizes-its-own-work.md
173
+ 鈹? 鈹溾攢鈹€ fcop-natural-protocol.en.md
174
+ 鈹? 鈹溾攢鈹€ fcop-natural-protocol.md
175
+ 鈹? 鈹溾攢鈹€ fcop-natural-protocol-evidence/
176
+ 鈹? 鈹溾攢鈹€ fcop-tmpa-lineage.en.md
177
+ 鈹? 鈹溾攢鈹€ fcop-tmpa-lineage.md
178
+ 鈹? 鈹溾攢鈹€ when-ai-vacates-its-own-seat.en.md
179
+ 鈹? 鈹溾攢鈹€ when-ai-vacates-its-own-seat.md
180
+ 鈹? 鈹溾攢鈹€ when-ai-vacates-its-own-seat-evidence/
181
+ 鈹? 鈹溾攢鈹€ what-agents-say-about-fcop.en.md
182
+ 鈹? 鈹斺攢鈹€ what-agents-say-about-fcop.md
183
+ 鈹溾攢鈹€ examples/workspace-example/
184
+ 鈹溾攢鈹€ integrations/windows-file-association/
185
+ 鈹溾攢鈹€ assets/
186
+ 鈹溾攢鈹€ LICENSE
187
+ 鈹斺攢鈹€ README.md / README.zh.md
188
+ ```
189
+
190
+ ## 30-second quickstart
191
+
192
+ FCoP is **adopted**, not a long-running daemon. The current **rule split**
193
+ is **[`fcop-rules.mdc`](src/fcop/rules/_data/fcop-rules.mdc)** (charter) plus
194
+ **[`fcop-protocol.mdc`](src/fcop/rules/_data/fcop-protocol.mdc)**
195
+ (commentary) 鈥?both belong under **`.cursor/rules/`**. The single file
196
+ [`spec/codeflow-core.mdc`](spec/codeflow-core.mdc) is a **deprecated stub** so
197
+ old links do not 404 鈥?it is *not* the full protocol text for 0.6+.
198
+
199
+ **Path A 鈥?`fcop` library (recommended).** One shot creates
200
+ `fcop/` and `fcop.json`:
201
+
202
+ ```python
203
+ from fcop import Project
204
+ Project(".").init() # default dev-team; use .init_solo() for single-AI
205
+ ```
206
+
207
+ **Path B 鈥?rules only, no Python.** Copy the two `.mdc` files from this repo
208
+ into `.cursor/rules/`. If the tree is empty, at least create the five
209
+ buckets the library uses:
210
+
211
+ ```bash
212
+ mkdir -p fcop/{tasks,reports,issues,shared,log}
213
+ ```
214
+
215
+ With the rules in place, agents know how to claim work, name reports, raise
216
+ issues, and stay out of other roles' files. Deeper structure and team
217
+ templates: packages below and [`examples/workspace-example/`](examples/workspace-example/).
218
+
219
+ ## Python SDK & MCP server (optional)
220
+
221
+ The protocol is filesystem-first. **If you need** programmatic task/report/issue
222
+ I/O or an IDE bridge, use the two official PyPI packages (since `0.6.0`):
223
+
224
+ | Package | Install | Purpose | Depends on |
225
+ |---|---|---|---|
226
+ | [`fcop`](https://pypi.org/project/fcop/) | `pip install fcop` | Pure Python library. Read/write tasks, reports, issues, reviews programmatically. Zero MCP dependency. | `pyyaml` |
227
+ | [`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` |
228
+
229
+ **Pointers** (one row each, no version baked in):
230
+
231
+ | You want to鈥?| Go to |
232
+ |---|---|
233
+ | Install `fcop-mcp` into Cursor / Claude Desktop step-by-step | [`mcp/README.md`](mcp/README.md) |
234
+ | 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`) |
235
+ | Upgrade an existing `0.6.x` install (both packages in lockstep + protocol-rule refresh) | [`docs/upgrade-fcop-mcp.md`](docs/upgrade-fcop-mcp.md) |
236
+ | Browse all 45 MCP tools and 14 resources by category | [`docs/mcp-tools.md`](docs/mcp-tools.md) |
237
+ | Read the per-release record (what changed when, why) | [`CHANGELOG.md`](CHANGELOG.md) and [`docs/releases/`](docs/releases/) |
238
+
239
+ **Recent releases** (full notes in [`docs/releases/`](docs/releases/)):
240
+
241
+ | Version | One-line |
242
+ |---|---|
243
+ | **3.2.2** ([CHANGELOG](CHANGELOG.md)) | **v3.2.2 鈥?Deep history archiving + 10 new MCP tools (35 鈫?45).** Adds history/YYYY-MM-DD/ date-sharded long-term archive layer; new tools: create_task, rchive_to_history, ulk_archive_to_history, list_history, get_history_stats, search_history, move_to_history, cleanup_history, export_history, import_from_history. Manual and scheduled archiving of completed task-report pairs into history/. Both cop and cop-mcp align to 3.2.2 (lockstep). |
244
+ | **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. |
245
+ | **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. |
246
+ | **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. |
247
+ | **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`. |
248
+ | **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. |
249
+ | **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). |
250
+ | **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. |
251
+ | **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`). |
252
+ | **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. |
253
+ | **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. |
254
+ | **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鈥?027), 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. |
255
+ | **1.0.1** | Spec files bundled in wheel (`get_spec()`); `fcop://spec` MCP resource; workspace paths migrated `docs/agents/` 鈫?`fcop/`; CI green. |
256
+ | **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). |
257
+ | **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鈫攂ody consistency tests. **No protocol or API change.** |
258
+
259
+ > **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).
260
+
261
+ **Library** 鈥?use from any Python script or agent:
262
+
263
+ ```python
264
+ from fcop import Project
265
+
266
+ proj = Project(".") # project root; no fcop.json until init
267
+ proj.init() # dirs + shared/ + log/ + writes fcop.json
268
+ task = proj.write_task(sender="PM", recipient="DEV", priority="P1",
269
+ subject="Add auth middleware", body="...",
270
+ risk_level="high") # v1.1: triggers needs_human review gate
271
+ print(proj.list_tasks(recipient="DEV"))
272
+
273
+ # v1.1 review + human approval flow
274
+ review = proj.write_review(reviewer_role="ADMIN", subject_type="task",
275
+ subject_ref=task.filename, decision="needs_human",
276
+ rationale="Irreversible infra change 鈥?escalate.")
277
+ proj.mark_human_approved(review.review_id, approver="ADMIN",
278
+ decision="approve", channel="cli")
279
+ ```
280
+
281
+ **MCP server** 鈥?add to `mcp.json` (Cursor) or `claude_desktop_config.json`:
282
+
283
+ ```json
284
+ {
285
+ "mcpServers": {
286
+ "fcop": {
287
+ "command": "uvx",
288
+ "args": ["fcop-mcp"]
289
+ }
290
+ }
291
+ }
292
+ ```
293
+
294
+ **Don't want to edit JSON yourself?** Have an agent do it. Open a fresh
295
+ chat with any shell-capable AI and paste the canonical install prompt
296
+ ([`agent-install-prompt.en.md`](src/fcop/rules/_data/agent-install-prompt.en.md)
297
+ 路 [涓枃](src/fcop/rules/_data/agent-install-prompt.zh.md)) 鈥?the agent
298
+ detects your OS, installs `uv`, edits your `mcp.json` (preserving
299
+ existing servers), and tells you when to restart. After install the
300
+ same prompt is also available as the MCP resource
301
+ `fcop://prompt/install`. The prompt explicitly forbids the agent from
302
+ auto-initialising a project after install 鈥?initialisation is ADMIN's
303
+ three-way choice (solo / preset team / custom).
304
+
305
+ Stability contract: **additive-only for the full `0.6.x` minor**. Details in [`adr/ADR-0003-stability-charter.md`](adr/ADR-0003-stability-charter.md).
306
+
307
+ > **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).
308
+ >
309
+ > **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.
310
+
311
+ ## How to read FCoP docs
312
+
313
+ | Your goal | Start here |
314
+ |---|---|
315
+ | **New to FCoP** 鈥?hands-on 45-min setup | [`docs/getting-started.en.md`](docs/getting-started.en.md) |
316
+ | **Upgrading from 0.7.x** 鈥?workspace migration + new abstractions | [`docs/MIGRATION-1.0.md`](docs/MIGRATION-1.0.md) |
317
+ | **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) |
318
+ | **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. |
319
+ | **v1.2 Capability Governance** 鈥?FCoPGovernanceMiddleware, risk tagging, audit log | [CHANGELOG](CHANGELOG.md) 路 ADR-0030-bis |
320
+ | **v1.1 new fields** 鈥?risk_level, needs_human, human_approval, skill tools | [CHANGELOG](CHANGELOG.md) 路 ADR-0023..0027 |
321
+ | **Understand why decisions were made** 鈥?reasoning behind each choice | [`adr/`](adr/) 鈥?start with [ADR-0029](adr/ADR-0029-fcop-behavior-governance-charter.md) |
322
+ | **All 45 MCP tools & 14 resources** | [`docs/mcp-tools.md`](docs/mcp-tools.md) |
323
+ | **Release notes** 鈥?full changelog | [`CHANGELOG.md`](CHANGELOG.md) |
324
+ | **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) |
325
+
326
+ ---
327
+
328
+ ## Design principles
329
+
330
+ 1. **Filename is the single source of truth.** Directory + filename define the state; frontmatter is redundant metadata.
331
+ 2. **Atomicity comes from `rename()`.** Nothing else. No locks, no transactions.
332
+ 3. **Human-machine isomorphism.** The same artefact a human reads with `cat` is what agents parse. No debug mode, no admin console.
333
+ 4. **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.
334
+ 5. **Infrastructure-free.** If you have a filesystem, you have FCoP. Works on a laptop, on a cluster, across machines via `rsync`.
335
+
336
+ ## Reference implementations
337
+
338
+ Two official reference implementations, both MIT-licensed:
339
+
340
+ 1. **`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).
341
+ 2. **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`.
342
+
343
+ ## Status & versioning
344
+
345
+ - **Current release**: `v3.2.2` (2026-05-22) 鈥?**Init topology fix.** Critical patch: `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 required by spec 搂1.1 鈥?every fresh project initialised on those releases was therefore born non-compliant. 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 鈥?init was doing the wrong thing. Predecessor **v3.0.1** (2026-05-21) 鈥?Path-consolidation patch (docs-only). Predecessor **v3.0.0** (2026-05-21) 鈥?**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)) "Files are the protocol; location defines state; events record history" + 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 / Event / Boundary Charter) + 7 allowed transitions (off-table MUST be rejected) + write-then-rename atomicity; ADR-0037 Custody Layer **was withdrawn during RFC review and never reached Accepted**. See [`spec/fcop-3.0-spec.md`](spec/fcop-3.0-spec.md) and [`docs/MIGRATION-3.0.md`](docs/MIGRATION-3.0.md). Earlier releases: v2.0.2 (fcop-mcp registered to official MCP registry), v2.0.0 (two-diagram philosophical major bump + Rule 4.6 `fcop/internal/`), v1.6 (trailing-slug filename grammar, ADR-0033), v1.5 (84-doc protocol-awareness sync), v1.4 (write-side bind + `supersedes:` correction), v1.3 (GAL + `fcop_audit()` inspection compiler). See [CHANGELOG](CHANGELOG.md).
346
+ - **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)
347
+ - **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)
348
+ - **Change log**: [`CHANGELOG.md`](CHANGELOG.md)
349
+ - **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).
350
+
351
+ ## How to cite
352
+
353
+ If FCoP 鈥?the protocol, the field-report essays, the tutorials, or the reference implementations 鈥?informs your research, software, or writing, please cite the [Zenodo research snapshot](https://doi.org/10.5281/zenodo.19886036):
354
+
355
+ - **DOI**: [`10.5281/zenodo.19886036`](https://doi.org/10.5281/zenodo.19886036)
356
+ - **Snapshot tag**: [`research-snapshot-2026-04-29`](https://github.com/joinwell52-AI/FCoP/releases/tag/research-snapshot-2026-04-29) (commit `7f59395`)
357
+ - **Machine-readable metadata**: [`CITATION.cff`](CITATION.cff) (GitHub auto-renders a *Cite this repository* button from this file in the right sidebar)
358
+
359
+ ```bibtex
360
+ @misc{fcop2026snapshot,
361
+ author = {Zhu, Wei},
362
+ title = {{FCoP}: A Filename-as-Protocol coordination layer for multi-agent {AI} development (Research Snapshot, April 2026)},
363
+ month = apr,
364
+ year = 2026,
365
+ publisher = {Zenodo},
366
+ version = {research-snapshot-2026-04-29},
367
+ doi = {10.5281/zenodo.19886036},
368
+ url = {https://doi.org/10.5281/zenodo.19886036}
369
+ }
370
+ ```
371
+
372
+ For 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.
373
+
374
+ ## Contributing
375
+
376
+ This repository is intentionally small and stable. Protocol evolution happens through real-world reports, not committee edits. The highest-leverage contributions are:
377
+
378
+ 1. **Field reports.** Try FCoP on your own agent team and open an issue with what broke, what the agents invented, what naming conventions emerged.
379
+ 2. **Ports & SDKs.** Thin wrappers for Python / TypeScript / Go that implement the filename parser and `rename()` state transitions.
380
+ 3. **Editor / MCP integrations.** Syntax highlighting for `.fcop` files, MCP bridges that expose the folder to other agent runtimes.
381
+
382
+ PRs to the spec itself should link to the concrete problem they're solving.
383
+
384
+ ## License
385
+
386
+ MIT 鈥?see [LICENSE](LICENSE).
387
+
388
+ ## Credits
389
+
390
+ FCoP 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).