fcop 3.2.2__tar.gz → 3.2.4__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.
- {fcop-3.2.2 → fcop-3.2.4}/.gitignore +76 -76
- {fcop-3.2.2 → fcop-3.2.4}/CHANGELOG.md +72 -0
- {fcop-3.2.2 → fcop-3.2.4}/LICENSE +21 -21
- {fcop-3.2.2 → fcop-3.2.4}/PKG-INFO +1 -1
- {fcop-3.2.2 → fcop-3.2.4}/README.md +18 -5
- {fcop-3.2.2 → fcop-3.2.4}/README.zh.md +19 -5
- {fcop-3.2.2 → fcop-3.2.4}/adr/README.md +166 -166
- {fcop-3.2.2 → fcop-3.2.4}/essays/README.md +50 -48
- {fcop-3.2.2 → fcop-3.2.4}/fcop-README.pypi.md +48 -48
- {fcop-3.2.2 → fcop-3.2.4}/pyproject.toml +193 -193
- {fcop-3.2.2 → fcop-3.2.4}/spec/README.md +27 -27
- {fcop-3.2.2 → fcop-3.2.4}/spec/archived/README.md +36 -36
- {fcop-3.2.2 → fcop-3.2.4}/spec/schemas/README.md +104 -104
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/_compat_cli.py +67 -67
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/_data/schemas/agent.schema.json +45 -45
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/_data/schemas/boundary.schema.json +92 -92
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/_data/schemas/encoding.schema.json +133 -133
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/_data/schemas/event.schema.json +75 -75
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/_data/schemas/failure.schema.json +90 -90
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/_data/schemas/ipc-envelope.schema.json +144 -144
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/_data/schemas/review.schema.json +100 -100
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/_data/schemas/skill.schema.json +69 -69
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/_version.py +16 -16
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/cli/__init__.py +17 -17
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/cli/_main.py +82 -82
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/cli/migrate_v3.py +138 -138
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/cli/migrate_workspace.py +505 -505
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/core/__init__.py +10 -10
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/core/boundary.py +344 -344
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/core/config.py +309 -309
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/core/events.py +568 -568
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/core/filename.py +671 -671
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/core/frontmatter.py +579 -579
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/core/jsonschema_validator.py +255 -255
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/core/recovery.py +411 -411
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/core/schema.py +378 -378
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/errors.py +161 -161
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/lifecycle/__init__.py +140 -140
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/lifecycle/atomic.py +293 -293
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/lifecycle/detect.py +233 -233
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/lifecycle/events.py +340 -340
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/lifecycle/migrate.py +573 -573
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/lifecycle/state.py +210 -210
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/lifecycle/transitions.py +167 -167
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/project.py +10 -12
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/py.typed +1 -1
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/rules/_data/agent-bringup-prompt.en.md +287 -287
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/rules/_data/agent-bringup-prompt.zh.md +361 -361
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/rules/_data/agent-install-prompt.en.md +86 -86
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/rules/_data/agent-install-prompt.zh.md +76 -76
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/rules/_data/fcop-protocol.mdc +114 -37
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/rules/_data/fcop-rules.mdc +127 -10
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/rules/_data/fcop-spec-v1.0.en.md +506 -506
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/rules/_data/fcop-spec-v1.0.zh.md +501 -501
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/rules/_data/fcop-spec-v1.1.en.md +520 -520
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/rules/_data/fcop-spec-v1.1.zh.md +523 -523
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/rules/_data/internal-readme.en.md +119 -119
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/rules/_data/internal-readme.zh.md +135 -135
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/rules/_data/letter-to-admin.en.md +758 -752
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/rules/_data/letter-to-admin.zh.md +676 -670
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/teams/__init__.py +298 -298
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/teams/_data/README.en.md +118 -118
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/teams/_data/README.md +105 -105
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/teams/_data/dev-team/README.en.md +120 -120
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/teams/_data/dev-team/README.md +106 -106
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/teams/_data/dev-team/TEAM-OPERATING-RULES.en.md +2 -2
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/teams/_data/dev-team/TEAM-OPERATING-RULES.md +2 -2
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/teams/_data/dev-team/TEAM-ROLES.en.md +104 -104
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/teams/_data/dev-team/TEAM-ROLES.md +101 -101
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/teams/_data/dev-team/roles/DEV.en.md +222 -222
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/teams/_data/dev-team/roles/DEV.md +196 -196
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/teams/_data/dev-team/roles/OPS.en.md +233 -233
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/teams/_data/dev-team/roles/OPS.md +205 -205
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/teams/_data/dev-team/roles/PM.en.md +278 -278
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/teams/_data/dev-team/roles/PM.md +250 -250
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/teams/_data/dev-team/roles/QA.en.md +232 -232
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/teams/_data/dev-team/roles/QA.md +206 -206
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/teams/_data/index.json +89 -89
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/teams/_data/media-team/README.en.md +100 -100
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/teams/_data/media-team/README.md +93 -93
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/teams/_data/media-team/TEAM-OPERATING-RULES.en.md +3 -3
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/teams/_data/media-team/TEAM-OPERATING-RULES.md +2 -2
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/teams/_data/media-team/TEAM-ROLES.en.md +102 -102
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/teams/_data/media-team/TEAM-ROLES.md +102 -102
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/teams/_data/media-team/roles/COLLECTOR.en.md +229 -229
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/teams/_data/media-team/roles/COLLECTOR.md +206 -206
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/teams/_data/media-team/roles/EDITOR.en.md +219 -219
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/teams/_data/media-team/roles/EDITOR.md +197 -197
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/teams/_data/media-team/roles/PUBLISHER.en.md +239 -239
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/teams/_data/media-team/roles/PUBLISHER.md +216 -216
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/teams/_data/media-team/roles/WRITER.en.md +219 -219
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/teams/_data/media-team/roles/WRITER.md +196 -196
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/teams/_data/mvp-team/README.en.md +103 -103
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/teams/_data/mvp-team/README.md +100 -100
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/teams/_data/mvp-team/TEAM-OPERATING-RULES.en.md +3 -3
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/teams/_data/mvp-team/TEAM-OPERATING-RULES.md +2 -2
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/teams/_data/mvp-team/TEAM-ROLES.en.md +105 -105
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/teams/_data/mvp-team/TEAM-ROLES.md +105 -105
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/teams/_data/mvp-team/roles/BUILDER.en.md +232 -232
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/teams/_data/mvp-team/roles/BUILDER.md +210 -210
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/teams/_data/mvp-team/roles/DESIGNER.en.md +231 -231
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/teams/_data/mvp-team/roles/DESIGNER.md +209 -209
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/teams/_data/mvp-team/roles/MARKETER.en.md +240 -240
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/teams/_data/mvp-team/roles/MARKETER.md +217 -217
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/teams/_data/mvp-team/roles/RESEARCHER.en.md +230 -230
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/teams/_data/mvp-team/roles/RESEARCHER.md +208 -208
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/teams/_data/qa-team/README.en.md +106 -106
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/teams/_data/qa-team/README.md +102 -102
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/teams/_data/qa-team/TEAM-OPERATING-RULES.en.md +3 -3
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/teams/_data/qa-team/TEAM-OPERATING-RULES.md +2 -2
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/teams/_data/qa-team/TEAM-ROLES.en.md +107 -107
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/teams/_data/qa-team/TEAM-ROLES.md +104 -104
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/teams/_data/qa-team/roles/AUTO-TESTER.en.md +222 -222
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/teams/_data/qa-team/roles/AUTO-TESTER.md +199 -199
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/teams/_data/qa-team/roles/LEAD-QA.en.md +242 -242
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/teams/_data/qa-team/roles/LEAD-QA.md +219 -219
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/teams/_data/qa-team/roles/PERF-TESTER.en.md +234 -234
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/teams/_data/qa-team/roles/PERF-TESTER.md +212 -212
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/teams/_data/qa-team/roles/TESTER.en.md +221 -221
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/teams/_data/qa-team/roles/TESTER.md +199 -199
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/teams/_data/solo/README.en.md +120 -120
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/teams/_data/solo/README.md +113 -113
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/teams/_data/solo/TEAM-OPERATING-RULES.en.md +175 -175
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/teams/_data/solo/TEAM-OPERATING-RULES.md +154 -154
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/teams/_data/solo/TEAM-ROLES.en.md +96 -96
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/teams/_data/solo/TEAM-ROLES.md +84 -84
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/teams/_data/solo/roles/ME.en.md +333 -333
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/teams/_data/solo/roles/ME.md +285 -285
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/__init__.py +0 -0
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/inspection.py +0 -0
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/models.py +0 -0
- {fcop-3.2.2 → fcop-3.2.4}/src/fcop/rules/__init__.py +0 -0
- {fcop-3.2.2 → fcop-3.2.4}/workspace/README.md +0 -0
|
@@ -1,76 +1,76 @@
|
|
|
1
|
-
# OS
|
|
2
|
-
.DS_Store
|
|
3
|
-
Thumbs.db
|
|
4
|
-
desktop.ini
|
|
5
|
-
|
|
6
|
-
# Editors
|
|
7
|
-
.vscode/
|
|
8
|
-
.idea/
|
|
9
|
-
*.swp
|
|
10
|
-
*.swo
|
|
11
|
-
|
|
12
|
-
# Python
|
|
13
|
-
__pycache__/
|
|
14
|
-
*.pyc
|
|
15
|
-
*.pyo
|
|
16
|
-
*.pyd
|
|
17
|
-
.venv/
|
|
18
|
-
venv/
|
|
19
|
-
env/
|
|
20
|
-
*.egg-info/
|
|
21
|
-
|
|
22
|
-
# Build
|
|
23
|
-
build/
|
|
24
|
-
dist/
|
|
25
|
-
*.spec
|
|
26
|
-
_build_test/
|
|
27
|
-
|
|
28
|
-
# Tooling caches
|
|
29
|
-
.pytest_cache/
|
|
30
|
-
.mypy_cache/
|
|
31
|
-
.ruff_cache/
|
|
32
|
-
.tox/
|
|
33
|
-
|
|
34
|
-
# Coverage
|
|
35
|
-
.coverage
|
|
36
|
-
.coverage.*
|
|
37
|
-
htmlcov/
|
|
38
|
-
coverage.xml
|
|
39
|
-
|
|
40
|
-
# Node / incidentals
|
|
41
|
-
node_modules/
|
|
42
|
-
.npm/
|
|
43
|
-
|
|
44
|
-
# Local experiments
|
|
45
|
-
/_scratch/
|
|
46
|
-
/.scratch/
|
|
47
|
-
/_local/
|
|
48
|
-
/_ignore/
|
|
49
|
-
|
|
50
|
-
# FCoP local state (rule deployment migrations etc.)
|
|
51
|
-
/.fcop/
|
|
52
|
-
|
|
53
|
-
# FCoP runtime event-bus log (root + mcp/ subdir)
|
|
54
|
-
fcop_events.jsonl
|
|
55
|
-
|
|
56
|
-
# Per-release transient commit-msg drafts under scripts/
|
|
57
|
-
scripts/_*.txt
|
|
58
|
-
|
|
59
|
-
# Release tooling binaries (mcp-publisher etc.) — install separately,
|
|
60
|
-
# do not commit. The .exe is downloaded fresh on the publish host.
|
|
61
|
-
/mcp-publisher.exe
|
|
62
|
-
/mcp-publisher
|
|
63
|
-
/mcp-publisher.tar.gz
|
|
64
|
-
/mcp-publisher.tar
|
|
65
|
-
/mcp-publisher.zip
|
|
66
|
-
|
|
67
|
-
# Local token-audit probe scripts (analysis-only, not protocol artifacts)
|
|
68
|
-
workspace/token-audit/
|
|
69
|
-
|
|
70
|
-
# Ad-hoc analysis & PR-body drafts that live at repo root
|
|
71
|
-
/analyze_*.py
|
|
72
|
-
/pr-body-*.txt
|
|
73
|
-
/pr-body-*.md
|
|
74
|
-
|
|
75
|
-
# Local chat transcripts (Cursor exports etc.)
|
|
76
|
-
/chat/
|
|
1
|
+
# OS
|
|
2
|
+
.DS_Store
|
|
3
|
+
Thumbs.db
|
|
4
|
+
desktop.ini
|
|
5
|
+
|
|
6
|
+
# Editors
|
|
7
|
+
.vscode/
|
|
8
|
+
.idea/
|
|
9
|
+
*.swp
|
|
10
|
+
*.swo
|
|
11
|
+
|
|
12
|
+
# Python
|
|
13
|
+
__pycache__/
|
|
14
|
+
*.pyc
|
|
15
|
+
*.pyo
|
|
16
|
+
*.pyd
|
|
17
|
+
.venv/
|
|
18
|
+
venv/
|
|
19
|
+
env/
|
|
20
|
+
*.egg-info/
|
|
21
|
+
|
|
22
|
+
# Build
|
|
23
|
+
build/
|
|
24
|
+
dist/
|
|
25
|
+
*.spec
|
|
26
|
+
_build_test/
|
|
27
|
+
|
|
28
|
+
# Tooling caches
|
|
29
|
+
.pytest_cache/
|
|
30
|
+
.mypy_cache/
|
|
31
|
+
.ruff_cache/
|
|
32
|
+
.tox/
|
|
33
|
+
|
|
34
|
+
# Coverage
|
|
35
|
+
.coverage
|
|
36
|
+
.coverage.*
|
|
37
|
+
htmlcov/
|
|
38
|
+
coverage.xml
|
|
39
|
+
|
|
40
|
+
# Node / incidentals
|
|
41
|
+
node_modules/
|
|
42
|
+
.npm/
|
|
43
|
+
|
|
44
|
+
# Local experiments
|
|
45
|
+
/_scratch/
|
|
46
|
+
/.scratch/
|
|
47
|
+
/_local/
|
|
48
|
+
/_ignore/
|
|
49
|
+
|
|
50
|
+
# FCoP local state (rule deployment migrations etc.)
|
|
51
|
+
/.fcop/
|
|
52
|
+
|
|
53
|
+
# FCoP runtime event-bus log (root + mcp/ subdir)
|
|
54
|
+
fcop_events.jsonl
|
|
55
|
+
|
|
56
|
+
# Per-release transient commit-msg drafts under scripts/
|
|
57
|
+
scripts/_*.txt
|
|
58
|
+
|
|
59
|
+
# Release tooling binaries (mcp-publisher etc.) — install separately,
|
|
60
|
+
# do not commit. The .exe is downloaded fresh on the publish host.
|
|
61
|
+
/mcp-publisher.exe
|
|
62
|
+
/mcp-publisher
|
|
63
|
+
/mcp-publisher.tar.gz
|
|
64
|
+
/mcp-publisher.tar
|
|
65
|
+
/mcp-publisher.zip
|
|
66
|
+
|
|
67
|
+
# Local token-audit probe scripts (analysis-only, not protocol artifacts)
|
|
68
|
+
workspace/token-audit/
|
|
69
|
+
|
|
70
|
+
# Ad-hoc analysis & PR-body drafts that live at repo root
|
|
71
|
+
/analyze_*.py
|
|
72
|
+
/pr-body-*.txt
|
|
73
|
+
/pr-body-*.md
|
|
74
|
+
|
|
75
|
+
# Local chat transcripts (Cursor exports etc.)
|
|
76
|
+
/chat/
|
|
@@ -8,6 +8,78 @@ 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.4] — 2026-05-27 (PyPI metadata & bundled protocol encoding fix)
|
|
12
|
+
|
|
13
|
+
### Fixed — `fcop`
|
|
14
|
+
- **`fcop-protocol.mdc` (bundled)** — restored valid UTF-8 after v3.2.3 wheel shipped
|
|
15
|
+
mojibake in `src/fcop/rules/_data/fcop-protocol.mdc` (regression from v3.2.3 release
|
|
16
|
+
sync). PyPI 3.2.3 wheels are immutable; **install `fcop>=3.2.4`** for a correct
|
|
17
|
+
bundled copy. After upgrade, run `redeploy_rules()` to refresh project-local
|
|
18
|
+
`.cursor/rules/` copies.
|
|
19
|
+
|
|
20
|
+
### Fixed — `fcop-mcp`
|
|
21
|
+
- **`[project.urls]` `"FCoP (protocol)"`** — pointed at removed
|
|
22
|
+
`docs/fcop-standalone.en.md` (404 since v1.0.0); now
|
|
23
|
+
`docs/getting-started.en.md` (per ADR-0015 merge).
|
|
24
|
+
- **`mcp/README.md` (PyPI long description)** — aligned with v3.2.3+ surface:
|
|
25
|
+
45 MCP tools, `_lifecycle/` topology, lockstep `fcop 3.2.x` install guidance
|
|
26
|
+
(replaces stale v2.0.2 / 35-tool text frozen on PyPI 3.2.3).
|
|
27
|
+
|
|
28
|
+
### Docs
|
|
29
|
+
- `docs/releases/3.2.4.md` — release notes for this patch.
|
|
30
|
+
- `docs/releases/3.2.3.md` — documents known bad wheel encoding on PyPI 3.2.3.
|
|
31
|
+
|
|
32
|
+
No API or protocol-schema changes (`fcop_rules_version` / `fcop_protocol_version`
|
|
33
|
+
remain **3.2.3**).
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## [3.2.3] — 2026-05-23 (Team template & documentation sync · FCoP 3.0 compliance)
|
|
38
|
+
|
|
39
|
+
### Fixed — `fcop` (bundled team templates)
|
|
40
|
+
- **`letter-to-admin.zh.md` / `letter-to-admin.en.md`** — tool count updated
|
|
41
|
+
32 → 45; all directory references updated from legacy `tasks/reports/log/`
|
|
42
|
+
to `_lifecycle/` topology introduced in FCoP 3.0.
|
|
43
|
+
- **All `roles/*.md` files** across `dev-team`, `media-team`, `mvp-team`,
|
|
44
|
+
`qa-team`, `solo` templates — `fcop/tasks/` → `_lifecycle/inbox/`,
|
|
45
|
+
`log/` → `_lifecycle/archive/` paths corrected to FCoP 3.0 standard.
|
|
46
|
+
- **`TEAM-OPERATING-RULES.md` / `TEAM-OPERATING-RULES.en.md`** — v2 directory
|
|
47
|
+
references replaced with v3 `_lifecycle/` lifecycle-stage model.
|
|
48
|
+
- **`README.md` / `README.en.md`** — corrected directory references to use
|
|
49
|
+
`_lifecycle/` structure.
|
|
50
|
+
- **`.cursor/rules/fcop-rules.mdc`** and **`.cursor/rules/fcop-protocol.mdc`**
|
|
51
|
+
synchronized to match the bundled versions (previously diverged to v3.0.0).
|
|
52
|
+
|
|
53
|
+
### Added — `fcop`
|
|
54
|
+
- `scripts/fcop_prerelease_check.py` — dedicated pre-release validation script
|
|
55
|
+
for the `fcop` library; checks version consistency, critical file presence,
|
|
56
|
+
rule-file frontmatter, lifecycle directory documentation, team template
|
|
57
|
+
existence, and `.cursor/rules/` sync (10 checks total).
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## [3.2.2] — 2026-05-23 (Pre-release check hardening · rule-file consistency gates)
|
|
62
|
+
|
|
63
|
+
### Added — `fcop-mcp`
|
|
64
|
+
- `prerelease_check.py` gains checks 7–10:
|
|
65
|
+
- **Check 7** — `fcop` library version == `fcop-mcp` version (lockstep guard).
|
|
66
|
+
- **Check 8** — All critical bundled rule files (`fcop-rules.mdc`,
|
|
67
|
+
`fcop-protocol.mdc`, `agent-bringup-prompt.{zh,en}.md`,
|
|
68
|
+
`letter-to-admin.{zh,en}.md`) exist and are non-empty.
|
|
69
|
+
- **Check 9** — `fcop-rules.mdc` references current major version and
|
|
70
|
+
documents the `_lifecycle/` directory structure introduced in FCoP 3.0.
|
|
71
|
+
- **Check 10** — `fcop-protocol.mdc` covers all v3 lifecycle stages
|
|
72
|
+
(`inbox → active → review → done → archive`).
|
|
73
|
+
- `CHANGELOG.md` path in `prerelease_check.py` corrected to project root
|
|
74
|
+
(`PROJECT_ROOT / "CHANGELOG.md"`) from the erroneous `mcp/CHANGELOG.md`.
|
|
75
|
+
|
|
76
|
+
### Fixed — `fcop-rules.mdc` / `fcop-protocol.mdc` (bundled)
|
|
77
|
+
- Both files updated to document the FCoP v3 `_lifecycle/` directory topology
|
|
78
|
+
and lifecycle state machine, replacing the legacy `tasks/ reports/ issues/
|
|
79
|
+
shared/ log/` references in the pre-release gate and rule-distribution layer.
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
11
83
|
## [3.2.0] — 2026-05-22 (History deep archive · date-sharded `history/YYYY-MM-DD/` layer)
|
|
12
84
|
|
|
13
85
|
### Added — `fcop`
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2026 joinwell52-AI
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 joinwell52-AI
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: fcop
|
|
3
|
-
Version: 3.2.
|
|
3
|
+
Version: 3.2.4
|
|
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
|
|
@@ -9,13 +9,20 @@
|
|
|
9
9
|
<strong>Core invariant: <code>Filename as Protocol</code>. Folders are the message bus.</strong>
|
|
10
10
|
</p>
|
|
11
11
|
|
|
12
|
+
<p align="center">
|
|
13
|
+
<strong>✅ <code>fcop-mcp</code> is on the <a href="https://registry.modelcontextprotocol.io/">official MCP Registry</a></strong><br/>
|
|
14
|
+
Listed as <a href="https://registry.modelcontextprotocol.io/v0/servers?search=io.github.joinwell52-AI%2Ffcop"><code>io.github.joinwell52-AI/fcop</code></a>
|
|
15
|
+
(<strong>v3.2.4</strong>) — backed by <strong>Anthropic + GitHub + Microsoft</strong>.<br/>
|
|
16
|
+
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>
|
|
17
|
+
</p>
|
|
18
|
+
|
|
12
19
|
<p align="center">
|
|
13
20
|
<strong><a href="https://joinwell52-ai.github.io/FCoP/">🌐 Project homepage</a></strong> ·
|
|
14
21
|
<a href="README.zh.md">简体中文</a> ·
|
|
15
22
|
<a href="docs/getting-started.en.md">Getting started</a> ·
|
|
16
23
|
<a href="src/fcop/rules/_data/agent-install-prompt.en.md"><strong>👉 Let AI install!</strong></a> ·
|
|
17
24
|
<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 (
|
|
25
|
+
<a href="docs/mcp-tools.md"><strong>MCP Tools (45)</strong></a> ·
|
|
19
26
|
<a href="essays/when-ai-organizes-its-own-work.en.md">Field Report</a> ·
|
|
20
27
|
<a href="essays/fcop-natural-protocol.en.md">Natural Protocol</a> ·
|
|
21
28
|
<a href="spec/fcop-3.0-spec.md"><strong>3.0 Spec</strong></a> ·
|
|
@@ -33,7 +40,7 @@
|
|
|
33
40
|
<img src="https://img.shields.io/badge/license-MIT-blue?style=flat-square" alt="MIT License" />
|
|
34
41
|
</a>
|
|
35
42
|
<a href="CHANGELOG.md">
|
|
36
|
-
<img src="https://img.shields.io/badge/release-3.
|
|
43
|
+
<img src="https://img.shields.io/badge/release-3.2.4-brightgreen?style=flat-square" alt="3.2.4" />
|
|
37
44
|
</a>
|
|
38
45
|
<a href="spec/fcop-3.0-spec.md">
|
|
39
46
|
<img src="https://img.shields.io/badge/spec-FCoP%203.0-orange?style=flat-square" alt="FCoP 3.0 spec" />
|
|
@@ -141,6 +148,8 @@ Both stories are written up as field reports in the essays index below.
|
|
|
141
148
|
| 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 做技术评审、豆包讲设计哲学),以及它们之间最有意思的分歧。 |
|
|
142
149
|
| 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
150
|
| 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 自身也在这次突破中完成蜕变:从"协作手册"升级为"可执行的协作基础设施"。 |
|
|
151
|
+
| 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 是什么?速度不是问题,不可观测的速度才是问题。 |
|
|
152
|
+
| 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. |
|
|
144
153
|
> 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
154
|
|
|
146
155
|
## Repository layout
|
|
@@ -233,13 +242,17 @@ I/O or an IDE bridge, use the two official PyPI packages (since `0.6.0`):
|
|
|
233
242
|
| Install `fcop-mcp` into Cursor / Claude Desktop step-by-step | [`mcp/README.md`](mcp/README.md) |
|
|
234
243
|
| 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
244
|
| 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
|
|
245
|
+
| Browse all 45 MCP tools and 14 resources by category | [`docs/mcp-tools.md`](docs/mcp-tools.md) |
|
|
237
246
|
| Read the per-release record (what changed when, why) | [`CHANGELOG.md`](CHANGELOG.md) and [`docs/releases/`](docs/releases/) |
|
|
238
247
|
|
|
239
248
|
**Recent releases** (full notes in [`docs/releases/`](docs/releases/)):
|
|
240
249
|
|
|
241
250
|
| Version | One-line |
|
|
242
251
|
|---|---|
|
|
252
|
+
| **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. |
|
|
253
|
+
| **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.** |
|
|
254
|
+
| **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. |
|
|
255
|
+
| **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. |
|
|
243
256
|
| **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. |
|
|
244
257
|
| **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. |
|
|
245
258
|
| **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. |
|
|
@@ -318,7 +331,7 @@ Stability contract: **additive-only for the full `0.6.x` minor**. Details in [`a
|
|
|
318
331
|
| **v1.2 Capability Governance** — FCoPGovernanceMiddleware, risk tagging, audit log | [CHANGELOG](CHANGELOG.md) · ADR-0030-bis |
|
|
319
332
|
| **v1.1 new fields** — risk_level, needs_human, human_approval, skill tools | [CHANGELOG](CHANGELOG.md) · ADR-0023..0027 |
|
|
320
333
|
| **Understand why decisions were made** — reasoning behind each choice | [`adr/`](adr/) — start with [ADR-0029](adr/ADR-0029-fcop-behavior-governance-charter.md) |
|
|
321
|
-
| **All
|
|
334
|
+
| **All 45 MCP tools & 14 resources** | [`docs/mcp-tools.md`](docs/mcp-tools.md) |
|
|
322
335
|
| **Release notes** — full changelog | [`CHANGELOG.md`](CHANGELOG.md) |
|
|
323
336
|
| **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) |
|
|
324
337
|
|
|
@@ -341,7 +354,7 @@ Two official reference implementations, both MIT-licensed:
|
|
|
341
354
|
|
|
342
355
|
## Status & versioning
|
|
343
356
|
|
|
344
|
-
- **Current release**: `v3.
|
|
357
|
+
- **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).
|
|
345
358
|
- **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)
|
|
346
359
|
- **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)
|
|
347
360
|
- **Change log**: [`CHANGELOG.md`](CHANGELOG.md)
|
|
@@ -9,13 +9,20 @@
|
|
|
9
9
|
<strong>核心不变量:<code>Filename as Protocol</code>(文件名即协议)·文件夹就是消息总线</strong>
|
|
10
10
|
</p>
|
|
11
11
|
|
|
12
|
+
<p align="center">
|
|
13
|
+
<strong>✅ <code>fcop-mcp</code> 已入驻 <a href="https://registry.modelcontextprotocol.io/">官方 MCP 注册表</a></strong><br/>
|
|
14
|
+
登记名 <a href="https://registry.modelcontextprotocol.io/v0/servers?search=io.github.joinwell52-AI%2Ffcop"><code>io.github.joinwell52-AI/fcop</code></a>
|
|
15
|
+
(<strong>v3.2.4</strong>)——由 <strong>Anthropic + GitHub + Microsoft</strong> 联合背书的官方目录收录。<br/>
|
|
16
|
+
Claude Desktop、Cursor、PulseMCP 及所有 MCP 兼容客户端均可一键发现 <strong>45 个工具</strong>,一行安装:<code>uvx fcop-mcp</code>
|
|
17
|
+
</p>
|
|
18
|
+
|
|
12
19
|
<p align="center">
|
|
13
20
|
<strong><a href="https://joinwell52-ai.github.io/FCoP/">🌐 项目主页</a></strong> ·
|
|
14
21
|
<a href="README.md">English</a> ·
|
|
15
22
|
<a href="docs/getting-started.md">上手 FCoP</a> ·
|
|
16
23
|
<a href="src/fcop/rules/_data/agent-install-prompt.zh.md"><strong>👉 让 AI 安装!</strong></a> ·
|
|
17
24
|
<a href="src/fcop/rules/_data/agent-bringup-prompt.zh.md"><strong>👉 让 AI 起项目!</strong></a> ·
|
|
18
|
-
<a href="docs/mcp-tools.md"><strong>MCP 工具清单(
|
|
25
|
+
<a href="docs/mcp-tools.md"><strong>MCP 工具清单(45 个)</strong></a> ·
|
|
19
26
|
<a href="essays/when-ai-organizes-its-own-work.md">现场报告</a> ·
|
|
20
27
|
<a href="essays/fcop-natural-protocol.md">自然协议</a> ·
|
|
21
28
|
<a href="spec/fcop-3.0-spec.zh.md"><strong>3.0 规范(中文)</strong></a> ·
|
|
@@ -33,7 +40,7 @@
|
|
|
33
40
|
<img src="https://img.shields.io/badge/license-MIT-blue?style=flat-square" alt="MIT License" />
|
|
34
41
|
</a>
|
|
35
42
|
<a href="CHANGELOG.md">
|
|
36
|
-
<img src="https://img.shields.io/badge/%E5%8F%91%E5%B8%83-3.
|
|
43
|
+
<img src="https://img.shields.io/badge/%E5%8F%91%E5%B8%83-3.2.4-brightgreen?style=flat-square" alt="3.2.4" />
|
|
37
44
|
</a>
|
|
38
45
|
<a href="spec/fcop-3.0-spec.zh.md">
|
|
39
46
|
<img src="https://img.shields.io/badge/%E8%A7%84%E8%8C%83-FCoP%203.0-orange?style=flat-square" alt="FCoP 3.0 规范" />
|
|
@@ -135,6 +142,9 @@ v1.0 将七大核心概念——**Agent、Encoding、IPC、Event、Failure、Bou
|
|
|
135
142
|
| 11 | **看,但不动手** | [GitHub 中文](essays/looking-without-touching.md) | FCoP 三层语义执行链科普:`fcop_audit()` 为什么"只看不改"——L1 检测 / L2 解释 / L3 文档三层把"看见"和"动手"切开,产出 `INSPECTION.md`(建议非命令),执行权留给人。`adr/FCoP-semantic-execution-chain.md` 的科普版。 |
|
|
136
143
|
| 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) | 把 FCoP 核心文档喂给 ChatGPT / Claude / DeepSeek / Grok / 豆包,只问一个问题:"你是 agent,你怎么看这套协议?"——五种截然不同的内部视角(ChatGPT 谈身份合法性、Claude 谈诚实边界、DeepSeek 谈体面生存、Grok 做技术评审、豆包讲设计哲学),以及它们之间最有意思的分歧。 |
|
|
137
144
|
| 13 | **演化,反向吸收** | [GitHub 中文](essays/evolution-reverse-absorption.md) · [GitHub English](essays/evolution-reverse-absorption.en.md) | 协议哲学 2.0 视觉宣言:FCoP 从单张执行哲学图("看,但不动手")进入**两张图共同定义**时代——新增演化哲学图(7 步语义演化闭环)与配套 [ADR-0034](adr/ADR-0034-fcop-internal-external-document-convention.md),把 4 层涌现模式 / 内外文档约定 / 反向吸收机制写入协议。essay 11 的孪生姊妹篇。 |
|
|
145
|
+
| 14 | **当 Agent 第一次自己拿起工具** | [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 自身也在这次突破中完成蜕变:从"协作手册"升级为"可执行的协作基础设施"。 |
|
|
146
|
+
| 15 | **从协调到治理:FCoP 3.0 架构白皮书** | [GitHub 中文](essays/from-coordination-to-governance.md) · [GitHub English](essays/from-coordination-to-governance.en.md) · [dev.to(英文)](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 是什么?速度不是问题,不可观测的速度才是问题。 |
|
|
147
|
+
| 16 | **落地成文:AI 协作的唯一真相 / Write It Down: The Only Truth in AI Collaboration** | [GitHub 中文](essays/ai-must-write-it-down.md) · [GitHub English](essays/ai-must-write-it-down.en.md) · [证据存档](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) | 一篇由 Agent 主动提议并写下、ADMIN 记录并发布的短文:AI 角色之间不能只在脑子里说话,必须落成文件。文章本身就是 FCoP 的工作方式存证,并附原始聊天截图。 |
|
|
138
148
|
> 欢迎提交新的现场报告。如果你在自己的项目里用了 FCoP,遇到了意外(好或坏),欢迎开 issue 或对 `essays/` 提 PR。协议是在现场报告里演进的,不是在委员会里。
|
|
139
149
|
|
|
140
150
|
## 仓库结构
|
|
@@ -212,13 +222,17 @@ mkdir -p fcop/{tasks,reports,issues,shared,log}
|
|
|
212
222
|
| 在 Cursor / Claude Desktop 装 `fcop-mcp`(分步、多平台、自检) | [`mcp/README.md`](mcp/README.md) |
|
|
213
223
|
| 不想自己改 JSON,让 agent 全程跑命令装 | [`agent-install-prompt.zh.md`](src/fcop/rules/_data/agent-install-prompt.zh.md) · [English](src/fcop/rules/_data/agent-install-prompt.en.md)(装好以后也是 MCP 资源 `fcop://prompt/install`) |
|
|
214
224
|
| 已在用 0.6.x,要升级(两包同环境一起升 + 协议规则文件刷新) | [`docs/upgrade-fcop-mcp.md`](docs/upgrade-fcop-mcp.md) |
|
|
215
|
-
| 浏览全部
|
|
225
|
+
| 浏览全部 45 个工具和 14 个资源(分类、何时调、参数要点) | [`docs/mcp-tools.md`](docs/mcp-tools.md) |
|
|
216
226
|
| 看每版到底改了什么、为什么改 | [`CHANGELOG.md`](CHANGELOG.md) 与 [`docs/releases/`](docs/releases/) |
|
|
217
227
|
|
|
218
228
|
**近期发版**(完整说明在 [`docs/releases/`](docs/releases/)):
|
|
219
229
|
|
|
220
230
|
| 版本 | 一句话 |
|
|
221
231
|
|---|---|
|
|
232
|
+
| **3.2.4**([详细](docs/releases/3.2.4.md) · [CHANGELOG](CHANGELOG.md)) | **v3.2.4 — PyPI 元数据与 bundled 协议编码修复。** 修复 wheel 内 `fcop-protocol.mdc` 乱码(勿用 PyPI 3.2.3);修复 `fcop-mcp`「FCoP (协议)」404;PyPI 长描述对齐 45 工具 / v3 `_lifecycle/`。无 API 变更。 |
|
|
233
|
+
| **3.2.3**([详细](docs/releases/3.2.3.md) · [CHANGELOG](CHANGELOG.md)) | **v3.2.3 — 团队模板与文档同步 · FCoP 3.0 合规。** bundled 团队样板目录引用迁到 `_lifecycle/`;工具数 32→45。**PyPI 3.2.3 wheel 协议文件损坏,请升 3.2.4。** |
|
|
234
|
+
| **3.2.2**([CHANGELOG](CHANGELOG.md)) | **v3.2.2 — 发布前检查硬化 + 规则文件 v3 一致性。** `fcop-mcp` 的 `prerelease_check.py` 新增 Check 7–10(双包版本锁步、bundled 规则完整性、`_lifecycle/` 结构文档、生命周期阶段覆盖);`fcop-rules.mdc` / `fcop-protocol.mdc` 补充 v3 目录拓扑与状态机说明。 |
|
|
235
|
+
| **3.2.0**([CHANGELOG](CHANGELOG.md)) | **v3.2.0 — 深度历史归档。** 新增 `history/YYYY-MM-DD/` 日期分片长期归档层及 `archive_to_history` / `list_history` / `read_history_task` 等 MCP 工具;生命周期工具(`claim` / `submit` / `approve` / `reject` / `finish`)在 3.1.x 引入,工具总数增至 **45**。 |
|
|
222
236
|
| **3.0.2**([CHANGELOG](CHANGELOG.md)) | **v3.0.2 — 初始化拓扑修复。** 关键 patch:3.0.0 / 3.0.1 的 `Project._apply_init` 只创建了 v2 老桶,跳过了 spec §1.1 强制要求的 v3 `_lifecycle/{inbox,active,review,done,archive}/` 五桶。3.0.2 让 fresh init 直接落 v3 拓扑(同时不再创建被 superseded 的 v2 `tasks/` / `log/`);`core.events.scan_workspace` 与 `Project.role_occupancy()` 在 v3 项目下从 `_lifecycle/` 读取。新增 audit 扫描 `_scan_lifecycle_topology_compliance()`(D9):P0 = 已初始化项目同时缺 `_lifecycle/` 和 v2 内容;P1 = 两套拓扑共存(建议 `migrate --to-v3`)。MCP 工具描述(`init_solo` / `init_project` / `create_custom_team`)同步更新。1209 测试全绿。SemVer patch:相对 3.0.1 无 API 表面改动——init 之前在做错事。 |
|
|
223
237
|
| **3.0.1**([CHANGELOG](CHANGELOG.md)) | **v3.0.1 — 路径整合补丁。** 纯文档/元数据 patch,无代码逻辑变更:3.0.0 把 v1.0/v1.1 历史 spec 草稿移到 `spec/archived/` 后,修复散落在 `AGENTS.md` / `CLAUDE.md` / 打包 Cursor rules / MCP server docstring / 两份 JSON Schema `description` 中的失效链接,统一指向 `spec/archived/fcop-runtime-protocol-v1.0.{md,zh.md}`(并指针到当前 canonical `spec/fcop-3.0-spec.md`)。`fcop-mcp` 的 `fcop://spec` / `fcop://spec/en` docstring 同步修正为反映 wheel 实际打包内容(`fcop-spec-v1.1.{lang}.md`)。历史制品(TASK / REPORT / ADR / release notes / migration docs)按 ADR-0036"历史不重写"原则保留原文。1202 测试全绿。 |
|
|
224
238
|
| **3.0.0**([CHANGELOG](CHANGELOG.md)) | **v3.0 — 协议级 MAJOR ·"文件夹即状态"纪元。** FCoP 协议本体的一次完整重写——canonical 双层(per [ADR-0040](adr/ADR-0040-canonical-one-liner-two-layer-convention.md)):**Layer 1**「文件即协议;位置定义状态;事件记录历史」+ **Layer 2** 语义本体。新增 `_lifecycle/{inbox,active,review,done,archive}/` 五桶目录拓扑(**与 2.x 不兼容**,须 `fcop migrate --to-v3`);三层规则集(State Layer Rule A/B/C · Event Layer Rule E/F/G · Boundary Charter);7 条允许迁移表外不可(实现 MUST 拒绝);write-then-rename 原子性模式(事件即迁移,迁移即事件);ADR-0037 Custody Layer 在 RFC 评审中**未进 Accepted 即被作废**(custody 不构成协议层,以 NOTE 形式保留为衍生解释)。新增 [`spec/fcop-3.0-spec.md`](spec/fcop-3.0-spec.md) 单页 canonical + IETF 风格 RFC 平行版 + 中文平行版 + [`docs/MIGRATION-3.0.md`](docs/MIGRATION-3.0.md) 迁移指南。 |
|
|
@@ -289,7 +303,7 @@ agent 会识别系统、装 `uv`、改 `mcp.json`(**保留**已有 server)
|
|
|
289
303
|
| **v1.2 Capability Governance** — FCoPGovernanceMiddleware、风险标记、审计日志 | [CHANGELOG](CHANGELOG.md) · ADR-0030-bis |
|
|
290
304
|
| **v1.1 新字段** — risk_level、needs_human、human_approval、skill tools | [CHANGELOG](CHANGELOG.md) · ADR-0023..0027 |
|
|
291
305
|
| **理解决策背后的原因** — 每个设计的考量 | [`adr/`](adr/) — 从 [ADR-0029](adr/ADR-0029-fcop-behavior-governance-charter.md) 开始 |
|
|
292
|
-
| **全部
|
|
306
|
+
| **全部 45 个 MCP 工具与 14 个资源** | [`docs/mcp-tools.md`](docs/mcp-tools.md) |
|
|
293
307
|
| **发布说明** — 完整变更日志 | [`CHANGELOG.md`](CHANGELOG.md) |
|
|
294
308
|
| **完整文档地图** — 每个文件的角色 | [`adr/README.md`](adr/README.md)(ADR 索引)+ [`spec/fcop-3.0-spec.zh.md`](spec/fcop-3.0-spec.zh.md) §11(引用材料)|
|
|
295
309
|
|
|
@@ -312,7 +326,7 @@ agent 会识别系统、装 `uv`、改 `mcp.json`(**保留**已有 server)
|
|
|
312
326
|
|
|
313
327
|
## 状态与版本
|
|
314
328
|
|
|
315
|
-
- **当前发布**:`v3.
|
|
329
|
+
- **当前发布**:`v3.2.2`(2026-05-22)——**初始化拓扑修复。** 关键 patch:3.0.0 / 3.0.1 的 `Project._apply_init` 只创建了 v2 老桶,跳过了 spec §1.1 强制要求的 v3 `_lifecycle/{inbox,active,review,done,archive}/` 五桶——所有在那两版上 fresh init 的项目都是**生而不合规**的。3.0.2 让 fresh init 直接落 v3 拓扑(同时不再创建被 superseded 的 v2 `tasks/` / `log/`);`core.events.scan_workspace` 与 `Project.role_occupancy()` 在 v3 项目下从 `_lifecycle/` 读取。新增 audit 扫描 `_scan_lifecycle_topology_compliance()`(D9):P0 = 已初始化项目同时缺 `_lifecycle/` 和 v2 内容;P1 = 两套拓扑共存(建议 `migrate --to-v3`)。MCP 工具描述(`init_solo` / `init_project` / `create_custom_team`)同步更新。1209 测试全绿。SemVer patch:无 API 表面改动——init 之前在做错事。前置 **v3.0.1**(2026-05-21)—— 路径整合补丁(纯文档)。前置 **v3.0.0**(2026-05-21)—— **协议级 MAJOR ·"文件夹即状态"纪元**:FCoP 协议本体的一次完整重写——canonical 双层(per [ADR-0040](adr/ADR-0040-canonical-one-liner-two-layer-convention.md))「文件即协议;位置定义状态;事件记录历史」+ 语义本体;新增 `_lifecycle/{inbox,active,review,done,archive}/` 五桶目录拓扑(**与 2.x 不兼容**,须 `fcop migrate --to-v3`);三层规则集(State / Event / Boundary Charter)+ 7 条允许迁移表外不可 + write-then-rename 原子性;ADR-0037 Custody Layer 在 RFC 评审中**未进 Accepted 即被作废**。详见 [`spec/fcop-3.0-spec.md`](spec/fcop-3.0-spec.md) 与 [`docs/MIGRATION-3.0.md`](docs/MIGRATION-3.0.md)。早期发布:v2.0.2(fcop-mcp 入驻官方 MCP 注册表)、v2.0.0(两图对偶哲学主版本号跨越 + Rule 4.6 `fcop/internal/`)、v1.6(trailing-slug 文件名收编,ADR-0033)、v1.5(84 份协议感知同步)、v1.4(write-side 守门 + `supersedes:` 字段)、v1.3(GAL + `fcop_audit()` 巡查编译器)、v1.2.1(Capability Governance 支柱)、v1.1(Agent.layer + Task.risk_level + needs_human)、v1.0(七大核心概念 spec freeze)。详见 [CHANGELOG](CHANGELOG.md)。
|
|
316
330
|
- **规范性文件**:[`spec/fcop-3.0-spec.zh.md`](spec/fcop-3.0-spec.zh.md)(中文 v3.0)· [`spec/fcop-3.0-spec.md`](spec/fcop-3.0-spec.md)(英文权威 v3.0)· v1.0/v1.1 早期 spec 草稿在 `spec/` 中保留作为历史参考 · 机器可读契约见 [`spec/schemas/`](spec/schemas/)(8 个 Schema)
|
|
317
331
|
- **本仓内 Agent 规则(`.mdc`)**:[`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` 仅为弃用占位)
|
|
318
332
|
- **变更记录**:[`CHANGELOG.md`](CHANGELOG.md)
|