Skip to content

Releases: joinwell52-AI/FCoP

fcop & fcop-mcp 3.2.5

Choose a tag to compare

@github-actions github-actions released this 30 May 09:28

fcop & fcop-mcp 3.2.5

Install

pip install fcop==3.2.5
pip install fcop-mcp==3.2.5

Changes

Changed — fcop

  • Rule 0.a.1 整段重写 — 协作闭环改为
    task → 执行/派发 → report → 等待验收/按授权 archive;执行者默认不得
    自行 archive_task
  • 新增 Rule 0.a.2–0.a.6 — Hot/Cold Path、生命周期≠业务完成、主子任务治理、
    归档需授权、REPORT 即停步信号。
  • Bundled rules bumpfcop-rules.mdc / fcop-protocol.mdc frontmatter
    升至 3.2.5(与包版本 lockstep)。
  • write_task(..., parent=...)TaskFrontmatter.parent 一等字段;
    parse_task_frontmatter / serialize_task_frontmatter / MCP write_task /
    create_task 支持程序化写入 parent:(与 thread_key: 并列规范字段)。
  • _COMMON-FCOP-3.2.5.md — 34 份角色 charter 统一注入源;
    scripts/inject_workflow_constraint.py 改为读取 common 文件并替换旧块。
  • fcop-protocol.mdc — 新增 Rule 0.a 协作闭环 commentary 节。
  • letter-to-admin.{zh,en}.md — 顶部 v3.2.5 摘要块;规则版本说明对齐 3.2.5。

Changed — fcop-mcp

  • 14 个 MCP 工具 docstring — 同步 3.2.5 语义(Hot/Cold Path、授权归档、
    REPORT 停步、lifecycle≠业务完成);含 finish_task / reject_task 测试缺口补齐。
  • fcop_report / fcop_check / finish_task / archive_task /
    write_report docstrings
    — 同步 3.2.5 语义(授权归档、REPORT 停步、
    lifecycle≠业务完成)。
  • write_task / create_task — 新增 parent 参数。

Docs

  • docs/releases/3.2.5.md — 本版本 release notes。

Tests

  • 更新 test_server / test_rules_text_regression / test_role_templates /
    test_core_frontmatter,不再锁死旧四步「执行者必 archive」表述;
    TestMcpToolDocstrings325 14 passed。

See the full CHANGELOG.

fcop & fcop-mcp 3.2.4

Choose a tag to compare

@github-actions github-actions released this 27 May 02:32

fcop & fcop-mcp 3.2.4

Install

pip install fcop==3.2.4
pip install fcop-mcp==3.2.4

Changes

Fixed — fcop

  • fcop-protocol.mdc (bundled) — restored valid UTF-8 after v3.2.3 wheel shipped
    mojibake in src/fcop/rules/_data/fcop-protocol.mdc (regression from v3.2.3 release
    sync). PyPI 3.2.3 wheels are immutable; install fcop>=3.2.4 for a correct
    bundled copy. After upgrade, run redeploy_rules() to refresh project-local
    .cursor/rules/ copies.

Fixed — fcop-mcp

  • [project.urls] "FCoP (protocol)" — pointed at removed
    docs/fcop-standalone.en.md (404 since v1.0.0); now
    docs/getting-started.en.md (per ADR-0015 merge).
  • mcp/README.md (PyPI long description) — aligned with v3.2.3+ surface:
    45 MCP tools, _lifecycle/ topology, lockstep fcop 3.2.x install guidance
    (replaces stale v2.0.2 / 35-tool text frozen on PyPI 3.2.3).

Docs

  • docs/releases/3.2.4.md — release notes for this patch.
  • docs/releases/3.2.3.md — documents known bad wheel encoding on PyPI 3.2.3.

No API or protocol-schema changes (fcop_rules_version / fcop_protocol_version
remain 3.2.3).


See the full CHANGELOG.

fcop & fcop-mcp 3.0.2

Choose a tag to compare

@github-actions github-actions released this 22 May 06:38

fcop & fcop-mcp 3.0.2

Install

pip install fcop==3.0.2
pip install fcop-mcp==3.0.2

Changes

Fixed / 修复

  • Critical · init_* did not create _lifecycle/. FCoP 3.0
    spec §1.1 mandates the v3 five-bucket topology (_lifecycle/{inbox, active,review,done,archive}/), but Project._apply_init in 3.0.0 /
    3.0.1 only created legacy v2 directories (tasks/, reports/,
    issues/, shared/, log/) and skipped the lifecycle layer.
    Every fresh project initialised on 3.0.0–3.0.1 was therefore
    born non-compliant with the 3.0 spec. Tracked as
    ISSUE-20260522-001-ME / TASK-20260522-004-ADMIN-to-ME.
  • _apply_init now calls ensure_lifecycle_dirs(...) and refreshes
    the cached topology so Project.is_v3 and tasks_dir /
    reports_dir / issues_dir resolve to v3 paths immediately
    after init. Per spec §6 the superseded v2 buckets (tasks/,
    log/) are no longer created on fresh init; reports/ /
    issues/ / shared/ are retained for hybrid compatibility.
  • core.events.scan_workspace now scans _lifecycle/{inbox,active, review,done,archive}/ so v3-native events (TASK_CREATED etc.)
    fire correctly.
  • Project.role_occupancy() now reads archived task counts from
    _lifecycle/archive/ for v3 projects (and continues to read
    log/tasks/ for v2 projects).

Added / 新增

  • Project._scan_lifecycle_topology_compliance() audit scan (D9):
    • P0 — initialised project missing both _lifecycle/ and
      any v2 content ⇒ topology layer is absent.
    • P1_lifecycle/ present and tasks/ / log/ still
      contain files ⇒ co-existing topologies, run
      python -m fcop migrate --to-v3 to consolidate.
      Wired into audit(scope="new" | "upgrade" | "takeover").
  • tests/test_init_v3_topology.py — 7 new tests covering
    init_solo / init_project / init_custom v3 topology and the
    Project.is_v3 / path-accessor invariants.

Documentation / 文档

  • fcop/LETTER-TO-ADMIN.md — keeps the existing v3 promise; adds
    "3.0.2 起 fresh init 立即兑现" note plus dual-path guidance
    (init / migrate).
  • README.md / README.zh.md — patch banner pointing at the
    3.0.2 init-fix.
  • MCP tool descriptors (init_solo / init_project /
    create_custom_team) call out v3 _lifecycle/ topology
    explicitly.

Test

  • All 1209 tests pass (3 skipped, 1 warning).

Migration

  • Existing v2 projects: unaffected. Run
    python -m fcop migrate --to-v3 if/when ready to adopt v3.
  • 3.0.0 / 3.0.1 fresh-init projects that look like v2 on disk
    (no _lifecycle/): treated as v2 by every code path; either
    re-init under 3.0.2 or run migrate --to-v3 to upgrade.
  • No breaking changes vs. 3.0.1 surface — this is a SemVer
    patch (init was doing the wrong thing; the contract was
    already in §1.1 of the 3.0 spec).

See the full CHANGELOG.

FCoP 3.0.1 - Path-Consolidation Patch

Choose a tag to compare

@joinwell52-AI joinwell52-AI released this 21 May 15:18

FCoP 3.0.1 — Path-Consolidation Patch

A pure documentation patch on top of 3.0.0. No code logic changed.

Why this exists

3.0.0 moved historical v1.0/v1.1 spec drafts into spec/archived/ to keep the spec/ root clean. But several live references (agent-facing docs, bundled rules, MCP docstrings) were still pointing at the old paths and silently link-rotted after the move.

3.0.1 fixes every such reference and also corrects a long-standing docstring mismatch in fcop-mcp where two MCP resources (fcop://spec / fcop://spec/en) claimed to return v1.0 spec text but actually return v1.1.

What changed

  • AGENTS.md / CLAUDE.md — 22 path references updated to point at spec/archived/
  • Bundled Cursor rulessrc/fcop/rules/_data/fcop-{rules,protocol}.mdc (wheel-embedded) + .cursor/rules/ mirrors
  • JSON Schema descriptionsspec/schemas/{event,encoding}.schema.json + their src/fcop/_data/schemas/ copies
  • fcop-mcp resource docstringsfcop://spec and fcop://spec/en now correctly state they return fcop-spec-v1.1.{lang}.md (the file actually bundled), and explicitly point readers to spec/fcop-3.0-spec.md for current canonical semantics
  • Bumpsfcop and fcop-mcp both 3.0.0 → 3.0.1; CITATION.cff updated

What did NOT change

  • No code logic changed. This is purely documentation / metadata.
  • Historical artifacts (TASK / REPORT / ADR / release notes / migration docs) preserved verbatim per FCoP's "history is not rewritten" principle (ADR-0036)
  • fcop.rules.get_spec() still returns v1.1 spec text. Bundling the FCoP 3.0 spec into the wheel is deferred per ADR-0039 Freeze Discipline — it requires a real runtime pressure signal before changing what gets shipped in the wheel.

Install

pip install -U fcop fcop-mcp

Verify

FCoP 3.0.0 - Protocol Semantic Sealing

Choose a tag to compare

@joinwell52-AI joinwell52-AI released this 21 May 14:23

FCoP 3.0.0 — Protocol Semantic Sealing

Files carry protocol. Paths address state. Events replay transitions.

文件即协议;位置定义状态;事件记录历史。

FCoP 3.0 is the protocol's first semantic seal. It marks the end of the design era and the beginning of the Runtime Absorption Era (ADR-0039).

From this date forward, the protocol surface is frozen. The only legitimate trigger for a future change is documented runtime pressure from a real coordination scenario — not theoretical purity, aesthetic extension, or completeness urge.

Canonical one-liner shown above is Layer 1 (cognitive bootstrap). The compressed formal definition (Layer 2 — "Files externalize protocol semantics. Paths address state. Events are replayable evidence of state transitions.") lives in spec §0.2. Rationale for the two-layer split: ADR-0040.


What's New

Protocol layer

  • State Ontology (frozen) — 5 stages (inbox / active / review / done / archive) defined by physical file location under _lifecycle/. (ADR-0035)
  • Event Layer — append-only transitions: array in YAML frontmatter records every state change. (ADR-0036)
  • Boundary Charter — meta-charter declaring what FCoP is not. (ADR-0038)
  • Freeze Discipline — self-binding meta-rule closing the protocol-design era. (ADR-0039)
  • Canonical Two-Layer Convention — splits the canonical one-liner into a teaching layer and a formal-definition layer. (ADR-0040)
  • Custody rejected as a separate layer — preserved as informative note (NOTE-custody-is-not-a-layer) and field-report essay (the-day-we-almost-added-custody).

Reference implementation

  • New fcop.lifecycle subpackage: state / transitions / events / atomic / detect / migrate
  • Project facade now detects topology (empty / v2 / v3 / mixed) and exposes lifecycle_root / inbox_dir / active_dir / review_dir / done_dir / archive_dir
  • write_task + archive_task transparently route through the lifecycle primitives on v3 projects — CodeFlow and any other v2-era caller continues to work unmodified
  • 35 MCP tools annotated with tier:L1 / tier:L2 / tier:L3 tags per spec §8

Migration

  • New CLI: fcop migrate --to-v3 (dry-run by default; --apply to execute)
  • Git-aware (uses git mv when the workspace is tracked)
  • Stamps synthetic baseline events on pre-existing files
  • Idempotent — safe to re-run

Documentation


Breaking Changes

  • Directory topology changes for v3 projects: tasks/ and log/tasks/ no longer exist; everything lives under _lifecycle/{inbox,active,review,done,archive}/
  • v2 projects continue to work unchanged — opt-in to v3 via fcop migrate --to-v3
  • No automatic migration in Project.__init__; explicit CLI command required

See docs/MIGRATION-3.0.md for the full migration walkthrough.


Install

# Python library
pip install fcop==3.0.0

# MCP server (any client: Cursor / Claude Desktop / PulseMCP / Cline / ...)
uvx fcop-mcp
pip install fcop-mcp==3.0.0

The MCP server is also listed in the official MCP registry as io.github.joinwell52-AI/fcop@3.0.0.


Engineering Numbers

  • 1202 tests passing · 0 regressions · 3 skipped
  • 0 new public methods on Project (the spec verbs are emitted as event tool names, not added as API)
  • 35 MCP tools — 2 L1 + 18 L2 + 15 L3 (exhaustive)
  • ruff clean across src/fcop, mcp/src/fcop_mcp, tests/
  • mypy --strict clean across the lifecycle subpackage

The Era This Opens

Adopting 3.0 is the moment FCoP stops being a designed protocol and starts being a lived one. The next protocol change — whenever it comes — will not have been imagined. It will have been observed.

Filed 2026-05-21 · the day the design era ended.


Full changelog: CHANGELOG.md [3.0.0]

fcop & fcop-mcp 2.0.2

Choose a tag to compare

@github-actions github-actions released this 13 May 17:49

fcop & fcop-mcp 2.0.2

Install

pip install fcop==2.0.2
pip install fcop-mcp==2.0.2

Changes

概述 / Overview

Milestone release: fcop-mcp officially registered to the MCP registry.

fcop-mcp 正式入驻由 Anthropic + GitHub + Microsoft 联合背书的官方
MCP 注册表,服务标识 io.github.joinwell52-AI/fcop。从此 Claude Desktop /
Cursor / PulseMCP 及任何 MCP 兼容客户端都可通过注册表发现并通过 uvx fcop-mcp
一键安装,无需手工编辑 mcp.json

fcop-mcp is now in the official MCP registry maintained by Anthropic +
GitHub + Microsoft (io.github.joinwell52-AI/fcop). Claude Desktop,
Cursor, PulseMCP, and every MCP-compatible client can discover and
install it out of the box via uvx fcop-mcp.

版本号策略 / Versioning

v2.0.2 是 双包 lockstep 行政性 bump(per ADR-0002):

v2.0.0 v2.0.1 v2.0.2 代码变更
fcop 2.0.0 (skipped) 2.0.2 零行代码变更(版本号对齐)
fcop-mcp 2.0.0 2.0.1 (MCP-元数据 patch,PyPI 已发) 2.0.2 MCP registry 元数据 + 版本号对齐

关于 v2.0.1:fcop-mcp@2.0.1 是 2026-05-13 同日发布到 PyPI 的子集 patch,
仅包含 MCP registry 入驻所需的三件套(mcp/README.mdmcp-name 验证
标记、mcp/server.json 新建、mcp/src/fcop_mcp/_version.py bump)。本
CHANGELOG 不为 2.0.1 单列条目;它在 PyPI 上永久存在(fcop-mcp 2.0.1),
但 FCoP 仓库账本上的 release 是 v2.0.2——一个包含它的真超集。

feat(mcp-registry) — MCP registry 入驻 / Official MCP registry listing

  • mcp/README.md:顶部加 mcp-name: io.github.joinwell52-AI/fcop
    所有权验证标记(MCP registry 的命名空间认领要求);新增 v2.0.2 章节
    作为 PyPI 长描述首段,显著标注"Now in the official MCP registry"。
  • mcp/server.json(新文件):MCP registry 注册元数据,符合
    https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json,
    包含 server name、PyPI 包标识、stdio transport、FCOP_PROJECT_DIR
    环境变量声明。
  • 注册命令:.\mcp-publisher.exe publish(ADMIN 凭 GitHub OAuth token
    执行,详见新文件 fcop/shared/RULES-mcp-registry-release.md)。

docs(rules) — 新增"发版+备份一条龙"完整 SOP

本次随发版同步落地 TASK-013 / TASK-014 两条线程的所有 SOP 交付物:

  • fcop/shared/RULES-release-file-inventory.md(新文件):12 类发版相关
    文件清单,每类配 6 字段(类码 / 类名 / 描述 / 文件枚举 / 修改义务 /
    锁定风险 / SOP 引用)。其中 H/M/N 类专门覆盖 MCP registry 路径。
  • fcop/shared/RULES-release-sync-checklist.md(已存在,升级):
    从"三条不会变的硬约束"升级到四条,新增 4 · 一条龙发版+备份;
    顶部新增 Section 0 · 元红线("如果未来 FCoP 成为标准,我们现在必须
    非常认真")。
  • fcop/shared/RULES-mcp-registry-release.md(新文件,本版本):
    ADMIN 的"未来三步升级路径"落文件——_version.py + server.json
    改版本号 → python -m build + twine uploadmcp-publisher publish
  • docs/release-process.md(已存在,升级):新增 §阶段 4.5 · 备份
    镜像同步,把 git push backup main + git push backup --tags 提升
    为发版"一条龙"必经的最后一里;§C 加文件清单指针;§C.3 hardcoded
    断言精确到 5 处行号;§G 加第 6 条扫描("backup remote 是否配置")。
  • 第二处镜像 joinwell52-AI/FCoP-backup(append-only 备份),把
    FCoP 总部从单点失效保护起来。

docs(public) — 三处对外门面同步

  • README.md / README.zh.md:badge 从 release-2.0.0release-2.0.2,
    新增 MCP registry purple badge;recent releases 表格首行加 2.0.2 行;
    "Status & versioning · Current release" 段整段重写,首句强调 MCP
    registry 入驻。
  • docs/index.html(GitHub Pages):顶部 latest 链接 + 中英双语 v2.0
    段落整体重写,把 MCP registry 入驻放在最显著位置。

docs(citation) — Zenodo 学术快照刷新(第二段 commit 写入)

Rule 0.c 时序声明:本节内容在第一段 commit 时尚未发生,
待 ADMIN 通过 Zenodo releases integration 触发新快照、拿到新 DOI
后由 agent 在 v2.0.2 的第二段 release commit 中追加,所以本节
在第一段 commit 的 CHANGELOG 里只占位预告,真实内容随第二段 commit 落实。

  • CITATION.cff:research-snapshot-2026-04-29(DOI 10.5281/zenodo.19886036)
    v2.0.2 学术快照(DOI 10.5281/zenodo.XXXXXXXX,待 ADMIN 提供)。
    version / date-released / preferred-citation.{doi,url,version}
    / identifiers[0].{value,description} 同步刷新。
  • README.md / README.zh.md 的 "How to cite" 节、BibTeX 模板的
    version / doi / url 同步指向新 DOI。

验收 / Acceptance

第一段 commit 已实证(2026-05-13 release prep):

  • src/fcop/_version.py = mcp/src/fcop_mcp/_version.py = 2.0.2
  • mcp/server.json 两处 version = 2.0.2
  • README.md / README.zh.md / docs/index.html / mcp/README.md 四份对外
    门面同步 v2.0.2 + MCP registry 入驻段就位
  • FCoP 账本 TASK-014 落档,REPORT-014 第一段写完;
    fcop/shared/RULES-mcp-registry-release.md 落档
  • 第一段 commit 三方 push(origin + backup main + backup tags)
    SHA 字节级一致(无新 tag,只 push main)

第二段 commit 待实证(ADMIN 介入 + agent 收尾):

  • PyPI 双包均可见:pip install fcop==2.0.2 + pip install fcop-mcp==2.0.2 成功(ADMIN twine upload)
  • modelcontextprotocol.io 显示 io.github.joinwell52-AI/fcop version 2.0.2(ADMIN mcp-publisher publish)
  • Zenodo 新 DOI 可访问;CITATION.cff + README.{md,zh.md} How to cite 段已用新 DOI 更新
  • git tag v2.0.2 存在(指向第二段 commit),三方 SHA(local / origin / backup)字节级一致
  • REPORT-014 第二段补完 + archive TASK-014 + REPORT-014

See the full CHANGELOG.

fcop & fcop-mcp 2.0.0

Choose a tag to compare

@github-actions github-actions released this 13 May 09:10

fcop & fcop-mcp 2.0.0

Install

pip install fcop==2.0.0
pip install fcop-mcp==2.0.0

Changes

概述 / Overview

Philosophical major release("两图对偶"纪元)。

2.0.0 不是 API 破坏性变更——所有 1.x 的公开 API 全部继续工作
(per ADR-0003 附加性扩展),主版本号跨越的原因是协议哲学层面
固化:

  1. 执行哲学的五层垂直栈(v1.x 已稳定)—— 协议层 / 文件 / 角色 /
    IPC / 审计;
  2. 演化哲学的七节点闭环(v2.0 新固化)—— FCoP Semantic
    Evolution Loop
    (涌现 → 观察 → 提案 → 评审 → 合并 → 部署 →
    反射),见 fcop-rules.mdc 七大核心概念末尾的新增插图与
    fcop-protocol.mdc ## Two-Diagram Duality 节。

这两张图共同定义 FCoP 协议;缺任何一张都讲不全。2.0.0 = 协议
首次同时承认这两张图

feat(rules) — Rule 4.6 · 内 / 外档案体系 soft convention

新增 fcop-rules.mdc Rule 4.6:项目档案分两个体系,互不混用

  • fcop/internal/新增桶,opt-in)—— 团队内部归档(决策草稿、
    日志、内部复盘);只对项目内角色可见。
  • docs/essays/(已有惯例)—— 面向外部受众的发布物(产品文档、
    公开博文、规范)。

internal-only 声明语法 v1:内部文档顶部必须带一段
Markdown block 显式声明可见性边界(被 fcop_audit 的新增 P3
suggestion
巡查检测;P3 不阻塞构建,仅建议)。完整语法见
internal-readme.{zh,en}.md 模板。

feat(rules + commentary) — fcop_rules_version 2.4.0 → 3.0.0 / fcop_protocol_version 2.4.0 → 3.0.0

  • src/fcop/rules/_data/fcop-rules.mdc:新增 Rule 4.6
    "七大核心概念"末尾追加 FCoP Semantic Evolution Loop 七节点闭环
    图与说明。
  • src/fcop/rules/_data/fcop-protocol.mdc:新增
    ## Two-Diagram Duality / 双图对偶(执行 vs 演化)
    ## How Rule 4.6 Applies: Internal vs External Document Convention
    两节。
  • 同步部署到项目根 .cursor/rules/*.mdcAGENTS.mdCLAUDE.md
    四件套(per ADR-0006)。

feat(api) — Project.init(deploy_internal_template=...) opt-in

src/fcop/project.py

  • Project.init() / init_solo() / init_custom() 三个入口都
    新增 deploy_internal_template: bool = False 参数(默认
    部署,向后兼容)。开启后会在 fcop/internal/README.md 落一份
    对应语言(zh / en)的模板。
  • 新增内部方法 _deposit_internal_template(lang, *, force)

新公开符号:

  • fcop.rules.get_internal_readme(lang) —— 取 zh / en 模板字符串。
  • Project.init* 系列新增 deploy_internal_template 关键字参数。

(per ADR-0003:附加性扩展;tests/test_fcop/snapshots/public_surface.json
已通过 pytest --snapshot-update 一次性收录)

feat(audit) — P3 严重度档 + internal-only 声明 P3 巡查

src/fcop/inspection.py + src/fcop/project.py

  • ViolationSeverityP3(建议级,不阻塞)。
  • InspectionReportp3_count
    violation_file_count(distinct file count)字段;overall_status
    逻辑保证 P3-only 状态不会触发 needs_remediation
  • 新增 _scan_internal_only_declarations():扫 fcop/internal/*.md
    internal-only 声明合规性,缺失时记 P3 建议。

feat(team-templates) — 8 个 TEAM-OPERATING-RULES.md 追加 §internal-only 节

src/fcop/teams/_data/{dev,media,mvp,qa}-team/TEAM-OPERATING-RULES.{md,en.md}
(共 8 份)末尾追加 §internal-only 声明语法(v3.0+,per Rule 4.6)
小节,给团队 leader 提供"团队级内 / 外文档怎么分"的可操作蓝本。

Fixed — codeflow 跨项目巡检上报的 3 个 fcop 上游 bug

随 codeflow 项目 TASK-20260513-003 / -004 上报、本次 2.0.0 sprint
一并并入(不开 2.0.1 patch):

  • ISSUE-20260513-008 · fcop_audit 不豁免 _archive/
    log/,导致合规归档文件被误报 P1-002 misplaced_envelope
    修复:src/fcop/project.py 新增 _AUDIT_EXEMPT_DIR_NAMES
    豁免清单(log / _archive / legacy-non-protocol / .git /
    .tmp)与帮手 _is_audit_exempt_path()
    _scan_misplaced_envelopes()_scan_ghost_prefixes() 都先过
    豁免再判定。InspectionReport 同步加 violation_file_count
    字段。
  • ISSUE-20260513-009 · _read_local_rules_version 永远返回
    null——函数搜的字面量是 "Rules version:",但 2.0.0 起规范
    字段是 frontmatter 的 fcop_rules_version:。修复:重写解析
    顺序为 frontmatter 优先 + 旧哨兵 fallback,向后兼容老 1.x
    项目。
  • ISSUE-20260513-010 · 4 个团队的 PM.md 角色模板停留在
    v1.3.0,缺 supersedes / risk_level / REVIEW envelope 三段。
    修复:彻底重写 dev-team/roles/PM.{md,en.md} 为 leader 视角的
    v1.0 ~ v1.5 协议更新速查;同步把"v1.0 ~ v1.4 协议更新"段追加到
    其他 leader 模板(PUBLISHER / MARKETER / LEAD-QA / ME,共 10
    份);并给全部 24 份角色模板补一段 "Rule 4.6 and the Evolution
    Loop (v2.0)",让 _scan_outdated_role_docs 的版本字面量检查
    不再误报。

三份 ISSUE 已标 status: resolved,证据链见
fcop/log/reports/REPORT-20260513-009-ME-to-ADMIN.md

Tests / 回归证据

  • python -m pytest tests/ -q
    1060 passed, 3 skipped, 1 warning, 0 failed(129.01s)
  • python -m pytest mcp/tests/ -q
    70 passed, 2 skipped, 2 warnings, 0 failed(2.50s)
  • python -m ruff check src/ tests/ mcp/src/
    All checks passed!

tests/test_fcop/test_rules_text_regression.py
fcop_rules_version / fcop_protocol_version 的可接受范围从
1.X.0 | 2.X.0 扩到 1.X.0 | 2+.X.0,吸收 3.0.0 升版。

Version bumps(两包 lockstep)

  • src/fcop/_version.py —— 1.6.0 → 2.0.0
  • mcp/src/fcop_mcp/_version.py —— 1.6.0 → 2.0.0
  • mcp/pyproject.toml —— fcop 依赖约束 >=1.0,<2.0>=2.0,<3.0

不在本次发布范围内 / Out of scope

  • 任何 1.x API 移除 —— 2.0.0philosophical major,不是
    API-breaking major。任何已弃用 API 仍按 ADR-0003 的弃用周期
    滚动。
  • 背景线程 / scheduler —— v1.0 frozen event model 仍要求
    Project.poll_once() 显式驱动;2.0.0 不改这一约束。

升级路径 / Upgrade Path

  1. pip install -U fcop[-mcp]==2.0.0
  2. ADMIN 在每个项目里调一次 redeploy_rules()(agent 不得自调,
    per Rule 8 + ADR-0006),把 .cursor/rules/*.mdc + AGENTS.md
    • CLAUDE.md 四件套同步到 rules 3.0.0 / protocol 3.0.0。
  3. 想用 fcop/internal/ 桶的项目,在新建项目时传
    Project.init(deploy_internal_template=True);老项目用
    redeploy_rules() 后手动 mkdir fcop/internal/ 加一份
    README.md(模板内容来自 fcop.rules.get_internal_readme("zh"))。

See the full CHANGELOG.

fcop & fcop-mcp 1.6.0

Choose a tag to compare

@github-actions github-actions released this 12 May 16:25

fcop & fcop-mcp 1.6.0

Install

pip install fcop==1.6.0
pip install fcop-mcp==1.6.0

Changes

feat(filename/protocol) — Trailing-slug filename adoption(ADR-0033)

核心变化:把 codeflow 项目 22+ 例自发涌现的"长文件名"模式
正式收编入 FCoP 文件名文法。TASK / REPORT / ISSUE 三种 envelope
现在允许在路由字段尾部追加一个可选-{slug} 段:

TASK-20260512-025-PM-to-OPS-phase-a-fix-naming.md    ← 现在合法
REPORT-20260512-009-OPS-to-PM-codeflow-json-rm.md   ← 现在合法
ISSUE-20260512-001-PM-userhome-pollution.md         ← 现在合法

文法:_SLUG = [a-z](?:[a-z0-9-]*[a-z0-9])?

  • 起手:小写字母(强制,与 _ROLE 段消歧)
  • 中段:小写字母 / 数字 / 连字符
  • 收尾:小写字母或数字(禁止尾部 hyphen)

slug 不参与路由:工具仍按 sender / recipient / slot 调度;slug
只是人类可读标签,不创造新索引维度。list_tasks(recipient="OPS") 同时
匹配 ...-PM-to-OPS.md...-PM-to-OPS-anything.md

完全向后兼容

  • 每一份 pre-1.6 的合法文件名继续合法
  • parse_*_filename 在旧文件名上返回 slug=None
  • build_*_filename(slug=None) 是缺省,行为与 1.5.x 等价
  • 既有 1057 个单测全部通过(0 回归)

变更内容

  • src/fcop/core/filename.py:
    • 新增 _SLUG 子模式 + SLUG_RE 导出常量
    • TASK_FILENAME_RE / REPORT_FILENAME_RE / ISSUE_FILENAME_RE
      末尾追加 (?:-(_SLUG))?
    • TaskFilename / ReportFilename / IssueFilename dataclass
      增加 slug: str | None = None 字段
    • parse_*_filename / build_*_filename 全面支持 slug
    • _check_components 校验 slug 合规
  • tests/test_fcop/test_core_filename.py:新增 31 个测试覆盖 trailing-slug
    三种 envelope 的 parse / build / roundtrip / 拒绝非法 / 向后兼容 /
    大写后缀消歧
  • src/fcop/rules/_data/fcop-protocol.mdc:
    • fcop_protocol_version 2.3.0 → 2.4.0
    • "## File Naming" 节后新增 "### Trailing slug (optional)" 子节
    • 末尾 changelog 加 v2.4 条目
  • src/fcop/_version.py + mcp/src/fcop_mcp/_version.py:
    1.5.1 → 1.6.0

不在本次发布范围内

  • fcop-rules.mdc:未改。规则本体未变,trailing slug 是 commentary
    层面 additive convention,不需要新规则。
  • fcop_audit():未改。该工具不查文件名词法,新增 slug 自然被
    parse_* 原生支持,无需 audit 介入。
  • .cursor/rules/fcop-protocol.mdc(项目根部署副本):由 ADMIN 安装
    1.6.0 后通过 redeploy_rules() 同步(per Rule 8 + ADR-0006)。

动机与设计哲学

长文件名是不是已经属于合规了?像这样的?
— ADMIN, 2026-05-12

经过 regex 实测 + fcop_audit 全面盘点,发现这些长文件名落在协议
规则、解析器、审计工具三者交集的空白处
:

维度 状态
parse_task_filename(...) 返回 None(regex 不匹配)
fcop_audit() 不报告(scan 没覆盖)
协议规则原文 未规定
实际落盘文件 22+ 例已在 codeflow,Rule 5 禁止改名

三种选项,ADMIN 选定 A · 协议收编:

A,协议收编,因为 agent 之间看得懂; — ADMIN, 2026-05-12

这一句点中要害 —— 当 agent 在硬盘上彼此识别这套模式时,协议本来
就应该把它说清
。本次发布是 FCoP "从涌现学习,沉淀为协议" 设计
哲学的一次自我应用:MINOR additive,零破坏成本,完全向后兼容

参考

  • ADR-0033: Trailing Slug Filename Adoption
  • ADR-0002: FCoP Filename Grammar(原文法定义)
  • ADR-0003: Pre-1.0 Stability Charter §MINOR additive
  • 同期 task: fcop/tasks/TASK-20260512-006-ADMIN-to-ME.md

See the full CHANGELOG.

fcop 1.5.1 - version string alignment patch

Choose a tag to compare

@joinwell52-AI joinwell52-AI released this 12 May 11:07

fcop & fcop-mcp 1.5.1

Install

pip install fcop==1.5.1
pip install fcop-mcp==1.5.1

Changes

fix(docs) — 版本字符串对齐补丁

核心问题v1.5.0 发布后发现 letter-to-admin.{zh,en}.md 的摘要块停留在
v1.5.0 摘要 标注正确,但 fcop-protocol.mdc 版本引用写成了 2.2.0(实际
已升至 2.3.0),违反了发版前版本对齐必检项。同时 test_server.py 里的
断言也未随上一批文档修复同步。

变更内容(纯文档 / 测试修复,无功能变更):

  • src/fcop/rules/_data/letter-to-admin.{zh,en}.md:摘要块升至 v1.5.1
    修正 fcop-protocol.mdc 2.2.02.3.0
  • src/fcop/_version.py:1.5.0 → 1.5.1
  • src/fcop/rules/_data/fcop-rules.mdc:2.4.0 changelog 条目注明 1.5.1 为 no-rule-change patch
  • src/fcop/rules/_data/fcop-protocol.mdc:Protocol Version Log v2.3 条目注明 1.5.1 no commentary change
  • tests/test_fcop/test_rules.py + tests/test_fcop_mcp/test_server.py:断言更新至 v1.5.1 摘要

根因分析:发版流程中 Phase 3-V(版本字符串全文对齐)检查项执行不到位,
fcop-protocol.mdc 版本在 v1.5.0 升至 2.3.0 但 letter 里的引用未同步。
已在 RELEASE-CHECKLIST.md 强化了该检查项,要求发版前逐项人工过一遍。

See the full CHANGELOG.

fcop & fcop-mcp 1.5.0

Choose a tag to compare

@github-actions github-actions released this 12 May 10:24

fcop & fcop-mcp 1.5.0

Install

pip install fcop==1.5.0
pip install fcop-mcp==1.5.0

Changes

docs(P1) — 84 份角色/团队文档同步至 v1.4 协议

核心问题:v1.4.0 发布后,fcop/shared/roles/ 里已部署的角色文档与团队模板
仍停留在 v1.1 内容层,不包含 REVIEW envelope / risk_level / fcop_audit /
supersedes: 等 v1.0~v1.4 引入的关键协议能力,新接手项目的 Agent 读取这些文档后
感知不到新功能(协议能力认知漂移 RULE_DOC_DRIFT)。

变更内容(涉及 58 个文件):

  • 非 leader 角色文档 × 20 份(中英双语):DEV / QA / OPS / WRITER / TESTER 等,
    新增"v1.0 ~ v1.4 协议更新速查"节,含 REVIEW envelope / risk_level /
    fcop_audit 与 INSPECTION / supersedes: 字段四小节
  • TEAM-ROLES × 10 份(5 团队 × 中英):新增"协议演进说明(v1.0 ~ v1.4)"表格
  • TEAM-OPERATING-RULES × 10 份(5 团队 × 中英):新增"协议演进补记"节,
    含高风险任务审批 / fcop_audit 整改处理 / write-side 绑定规则三段
  • team README × 10 份(5 团队 × 中英):新增"工具速查链接"表格
  • docs/getting-started.{zh,en}.md:新增"fcop_audit 三场景体检"节
  • src/fcop/rules/_data/agent-install-prompt.{zh,en}.md:装完即跑 fcop_audit() 提示

feat(audit/P2) — _scan_outdated_role_docs() + RULE_DOC_DRIFT

新增 Project._scan_outdated_role_docs() 扫描方法scope=upgrade/takeover):

  • 读取已安装 fcop 包版本(major.minor
  • Glob fcop/shared/roles/*.md,对每个文件用正则提取最高版本号引用
  • 无版本引用,或版本 gap > 1 minor → 记入 Violation(severity=P1, rule="RULE_DOC_DRIFT")
  • 整改建议:deploy_role_templates(force=True) 重新部署最新角色模板

ADR-0032 同步更新:新增 §4.7 _scan_outdated_role_docs() + RULE_DOC_DRIFT 违规类型

测试tests/test_fcop/test_audit.py 新增 4 个测试用例(无 roles 目录 / 无版本引用 / 版本落后 / 当前版本)


fix(ci) — Protocol v2.2 日志 + drop_suggestion 豁免

  • fcop-protocol.mdc 正文补录 v2.2 Protocol Version Log 条目(CI 测试验收)
  • mcp/src/fcop_mcp/server.pydrop_suggestion 加入 _INIT_TOOLS 豁免,
    使其在项目初始化前也可向 .fcop/proposals/ 写入建议文件(轻量级预初始化操作)

docs — Essays 07-10 + essays/README.md

  • essay 07 when-agents-learn-from-their-own-wreckage.md:codeflow 一日 14 个涌现现场报告
  • essay 08 why-the-protocol-stays-short.md:协议为什么短,历史为什么长
  • essay 09 gate-design-pitfalls-case-studies.md:validator-validates-itself 案例分析
  • essay 10 the-supersedes-field-story.mdsupersedes: 字段两小时旅程
  • essays/README.md:10 篇文章完整索引 + 分类阅读建议
  • adr/README.md:嵌入三层语义执行链模型图

See the full CHANGELOG.