Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,9 @@ when releases begin.

### Changed

- Synchronized PE Version Info `v0.1.0-alpha.2` publication governance and
recorded MCP Doctor's evidence-backed JSONC compatibility increment without
relaxing the static no-execution boundary.
- Registered the verified Color Atlas and MD Porter Alpha releases in the
bilingual organization profile, settings policy, and release governance.
- Documented dependency-update review gates: Dependabot is proposal-only,
Expand Down
2 changes: 1 addition & 1 deletion docs/ACCESS_MODEL.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ must not be converted into current failures merely because they appear in a
| Setting | Current | Target | Apply when |
| --- | --- | --- | --- |
| Release publishers | Only the organization owner may deliberately create a protected project release tag; no organization-wide or unattended publisher is authorized | Separate build verification from least-privilege release publication | A project reaches its documented release gate, the exact commit and hosted evidence are reviewed, and tag creation is separately authorized |
| High-privilege automation | `cert_viewer`, `color_atlas`, `cron_maker`, `curl_builder`, `developer_primitives`, `diff_viz`, `dmg_background`, `encoding_toolbox`, `favicon_kit`, `image_to_icns`, `json_yaml_swiss`, `jwt_inspector`, `mcp_doctor`, `md_porter`, `qr_forge`, and `tool_call_trace` limit `contents: write` to their final tag-triggered publication jobs; their release Environments have no independent reviewer on GitHub Free | Require a protected Environment or appropriately scoped GitHub App with non-author approval | A second trusted owner is active, credentials and recovery are tested, and the exact automation is explicitly authorized |
| High-privilege automation | `cert_viewer`, `color_atlas`, `cron_maker`, `curl_builder`, `developer_primitives`, `diff_viz`, `dmg_background`, `encoding_toolbox`, `favicon_kit`, `image_to_icns`, `json_yaml_swiss`, `jwt_inspector`, `mcp_doctor`, `md_porter`, `pe_version_info`, `qr_forge`, and `tool_call_trace` limit `contents: write` to their final tag-triggered publication jobs; their release Environments have no independent reviewer on GitHub Free | Require a protected Environment or appropriately scoped GitHub App with non-author approval | A second trusted owner is active, credentials and recovery are tested, and the exact automation is explicitly authorized |

During the solo stage, a deliberate protected-tag push is an accountable owner
authorization, not independent review. It is permitted only under
Expand Down
2 changes: 1 addition & 1 deletion docs/INCIDENT_RESPONSE.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ public disclosure of sensitive evidence.
| Setting | Current | Target | Apply when |
| --- | --- | --- | --- |
| Emergency access restriction | No standing incident-specific remote rule is claimed | Temporarily revoke or narrow compromised access with least privilege | An authorized owner verifies a credible active risk, identifies exact affected access, records recovery privately, and approves the action |
| Workflow or release pause | Project-specific protected-tag release automation exists for `cert_viewer`, `color_atlas`, `cron_maker`, `curl_builder`, `developer_primitives`, `diff_viz`, `dmg_background`, `encoding_toolbox`, `favicon_kit`, `image_to_icns`, `json_yaml_swiss`, `jwt_inspector`, `mcp_doctor`, `md_porter`, `qr_forge`, and `tool_call_trace`; `data_toolbox` and `pe_version_info` currently produce candidate evidence without an unattended publication job, and organization release evidence remains read-only | Disable affected automation or publication while preserving evidence | A credible compromise could affect builds or releases, the incident lead records scope and rollback, and an authorized owner applies the pause |
| Workflow or release pause | Project-specific protected-tag release automation exists for `cert_viewer`, `color_atlas`, `cron_maker`, `curl_builder`, `developer_primitives`, `diff_viz`, `dmg_background`, `encoding_toolbox`, `favicon_kit`, `image_to_icns`, `json_yaml_swiss`, `jwt_inspector`, `mcp_doctor`, `md_porter`, `pe_version_info`, `qr_forge`, and `tool_call_trace`; `data_toolbox` currently produces candidate evidence without an unattended publication job, and organization release evidence remains read-only | Disable affected automation or publication while preserving evidence | A credible compromise could affect builds or releases, the incident lead records scope and rollback, and an authorized owner applies the pause |
| Repository interaction limits | No incident restriction is pre-authorized | Temporarily limit interactions only when abuse or disclosure cannot be contained otherwise | The incident lead documents necessity and duration, an authorized owner approves it, and restoration criteria are defined |
| Public advisory | No security advisory channel is claimed ready | Coordinate a minimal, accurate advisory and corrected release when appropriate | A private intake exists, affected scope and mitigation are understood, disclosure risk is reviewed, and publication is explicitly authorized |

Expand Down
4 changes: 2 additions & 2 deletions docs/RELEASE_POLICY.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@

| Setting | Current | Target | Apply when |
| --- | --- | --- | --- |
| Release automation | `cert_viewer`, `color_atlas`, `cron_maker`, `csv_sculptor`, `curl_builder`, `developer_primitives`, `diff_viz`, `dmg_background`, `encoding_toolbox`, `favicon_kit`, `image_to_icns`, `json_yaml_swiss`, `jwt_inspector`, `mcp_doctor`, `md_porter`, `qr_forge`, and `tool_call_trace` have project-specific, tag-triggered publication workflows; `data_toolbox` and `pe_version_info` currently build candidates without an unattended publication job, and the organization reusable workflow remains read-only | Build and verify reproducibly, then publish from a protected tag with least privilege and project-owned verification | A project has stable hosted checks, immutable release inputs, a documented artifact contract, and explicit owner authorization |
| Versioning | Published releases are `developer_primitives` and `tool_call_trace` at `v0.2.0`; `cert_viewer`, `json_yaml_swiss`, and `jwt_inspector` at `v0.1.1`; `csv_sculptor` at `v0.1.0-alpha.2`; `color_atlas`, `curl_builder`, `data_toolbox`, `md_porter`, and `pe_version_info` at `v0.1.0-alpha.1`; and `cron_maker`, `diff_viz`, `dmg_background`, `encoding_toolbox`, `favicon_kit`, `image_to_icns`, `mcp_doctor`, and `qr_forge` at `v0.1.0` | Use Semantic Versioning for public versions and document pre-`1.0.0` instability | A project declares a public contract and its first release is authorized |
| Release automation | `cert_viewer`, `color_atlas`, `cron_maker`, `csv_sculptor`, `curl_builder`, `developer_primitives`, `diff_viz`, `dmg_background`, `encoding_toolbox`, `favicon_kit`, `image_to_icns`, `json_yaml_swiss`, `jwt_inspector`, `mcp_doctor`, `md_porter`, `pe_version_info`, `qr_forge`, and `tool_call_trace` have project-specific, tag-triggered publication workflows; `data_toolbox` currently builds candidates without an unattended publication job, and the organization reusable workflow remains read-only | Build and verify reproducibly, then publish from a protected tag with least privilege and project-owned verification | A project has stable hosted checks, immutable release inputs, a documented artifact contract, and explicit owner authorization |
| Versioning | Published releases are `developer_primitives` and `tool_call_trace` at `v0.2.0`; `cert_viewer`, `json_yaml_swiss`, and `jwt_inspector` at `v0.1.1`; `csv_sculptor` and `pe_version_info` at `v0.1.0-alpha.2`; `color_atlas`, `curl_builder`, `data_toolbox`, and `md_porter` at `v0.1.0-alpha.1`; and `cron_maker`, `diff_viz`, `dmg_background`, `encoding_toolbox`, `favicon_kit`, `image_to_icns`, `mcp_doctor`, and `qr_forge` at `v0.1.0` | Use Semantic Versioning for public versions and document pre-`1.0.0` instability | A project declares a public contract and its first release is authorized |
| Changelog | This governance repository contains only an `Unreleased` section | Maintain Keep a Changelog categories and move entries to a dated version only during release | A reviewed release candidate is approved; do not create historical entries without release evidence |
| Git tags | Every published release above has a `vMAJOR.MINOR.PATCH` tag; repository rules protect current release tags from deletion or mutation | Use protected, immutable `vMAJOR.MINOR.PATCH` tags that point to the reviewed release commit | Tag protection is verified, the release commit and version agree, and tag creation is explicitly authorized |
| Artifacts | Release assets and verification material are project-specific; binary projects publish checksums, SBOMs, and attestations defined by their release contract | Publish platform artifacts with cryptographic checksums, an SBOM, and provenance appropriate to the build system | Artifact generation is reproducible, consumer verification instructions exist, and the release is approved |
Expand Down
6 changes: 6 additions & 0 deletions docs/agent-workflow-pain-points-2026-08.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ verify the result without collecting user secrets.
| --- | --- | --- |
| [MCP servers #719](https://github.com/modelcontextprotocol/servers/issues/719) | MCP initialization timed out while a local server downloaded dependencies. | Diagnostics must distinguish startup, dependency, PATH, and timeout causes. |
| [MCP servers #4199](https://github.com/modelcontextprotocol/servers/issues/4199) | A fetch server silently required Node.js and could block without a timeout. | Runtime prerequisites and subprocess limits must be explicit. |
| [GitHub Copilot CLI #4323](https://github.com/github/copilot-cli/issues/4323) | Comments in a repository `.mcp.json` caused a strict parser to skip every workspace MCP server. | Static diagnosis must accept client-native JSONC while preserving a narrow, non-executing parser boundary. |
| [MCP servers #3741](https://github.com/modelcontextprotocol/servers/issues/3741) | Production users requested private-network blocking, size/type limits, redirect validation, and fetch timeouts. | Network-capable tools need a security policy, not only a URL field. |
| [OpenAI Agents #4016](https://github.com/openai/openai-agents-python/issues/4016) | MCP credentials and query tokens appeared in errors, traces, and persisted metadata. | Redaction must happen before formatting, export, and persistence. |
| [OpenAI Agents #4353](https://github.com/openai/openai-agents-python/issues/4353) | Strict schema conversion silently removed constraints and emitted unsupported keywords. | Schema tooling needs fixture-based accept-set tests and loud failures. |
Expand All @@ -40,6 +41,11 @@ claim to detect every secret.

### P2: Bounded MCP probing

The evidence-backed static compatibility increment is complete: `mcp_doctor`
accepts JSONC comments and trailing commas, treats VS Code `${input:name}`
references as client-provided values, and still does not execute configured
commands.

Keep `mcp_doctor` static by default. An optional `--probe` may be considered
only after three external users reproduce failures that static checks cannot
explain. Any probe must execute only an explicitly selected command, enforce a
Expand Down
4 changes: 4 additions & 0 deletions docs/agent-workflow-pain-points-2026-08.zh-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
| --- | --- | --- |
| [MCP servers #719](https://github.com/modelcontextprotocol/servers/issues/719) | 本地服务器下载依赖时 MCP 初始化超时。 | 诊断必须区分启动、依赖、PATH 和超时原因。 |
| [MCP servers #4199](https://github.com/modelcontextprotocol/servers/issues/4199) | fetch server 静默依赖 Node.js,且可能无超时阻塞。 | 运行时前置条件和子进程限制必须明确。 |
| [GitHub Copilot CLI #4323](https://github.com/github/copilot-cli/issues/4323) | 仓库级 `.mcp.json` 中的注释使严格解析器跳过全部工作区 MCP server。 | 静态诊断需要兼容客户端原生 JSONC,同时保持窄边界且不执行命令。 |
| [MCP servers #3741](https://github.com/modelcontextprotocol/servers/issues/3741) | 用户要求阻断内网、限制大小/类型、验证重定向和设置超时。 | 网络型工具需要安全策略,而不只是 URL 字段。 |
| [OpenAI Agents #4016](https://github.com/openai/openai-agents-python/issues/4016) | MCP 凭证和 query token 出现在错误、trace 和持久化元数据中。 | 脱敏必须在格式化、导出和持久化之前完成。 |
| [OpenAI Agents #4353](https://github.com/openai/openai-agents-python/issues/4353) | 严格 schema 转换静默删除约束并输出不支持的关键字。 | schema 工具需要 fixture 接收集合测试,并在不支持时显式失败。 |
Expand All @@ -29,6 +30,9 @@

### P2:有界 MCP 探测

证据支持的静态兼容增量已经完成:`mcp_doctor` 接受 JSONC 注释和尾逗号,把 VS Code
`${input:name}` 引用视为客户端提供的值,同时仍不执行配置中的命令。

`mcp_doctor` 继续默认静态检查。只有三位外部用户复现静态检查无法解释的失败,才考虑可选 `--probe`。探测只能执行用户明确选择的命令,必须有硬超时、环境和输出清理,并禁止访问远程 URL。

### P3:上下文预算检查器
Expand Down