From f2d349b8cbbd4867f30ee0a20615044c46418d59 Mon Sep 17 00:00:00 2001 From: loong10k <20489781+loong10k@users.noreply.github.com> Date: Tue, 22 Sep 2026 15:36:31 +0800 Subject: [PATCH] =?UTF-8?q?chore(openspec):=20=E5=AE=8C=E6=88=90=E8=AE=A1?= =?UTF-8?q?=E5=88=92=E7=B0=BF=E8=AE=B0=E2=80=94=E2=80=94M1=203.1=20hook=20?= =?UTF-8?q?import=20=E6=B3=A8=E9=87=8A=20+=20108=20=E4=B8=AA=E5=B7=B2?= =?UTF-8?q?=E6=89=A7=E8=A1=8C=E4=BB=BB=E5=8A=A1=E7=BF=BB=E5=8B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 完成度审计收尾(回答'全部完成了么'): - M1 add-detect-lang-splits 3.1:给 4 个 hook 的 from detect_lang import 追加注释标注 ensure_user_path/load_user_config 的真实定义文件 (scripts/paths.py、scripts/user_config.py)——全会话唯一真未执行的任务 - M1 5.1 图谱复验(新鲜证据):code-review-graph 于 HEAD 7fa79ab 重建, cross_community_edges_total=0、0 warnings(拆分前 19 边高耦合告警),达标 - 翻勾 7 个已归档 change 的 108 个任务框(全部任务均已实际执行并有验证证据; 归档时未翻属簿记遗漏)——仅剩并行会话活跃 change 的 28 框(PR #21 在途,非我方) 验证:我方套件 OK + run_all 141/141/0 + validator 0 errors + openspec strict 11/11 + diff clean --- hooks/env_check.py | 2 +- hooks/post_tool_lint.py | 2 +- hooks/pre_tool_git_guard.py | 2 +- hooks/user_prompt_validator.py | 2 +- .../tasks.md | 30 +++++++------- .../tasks.md | 28 ++++++------- .../tasks.md | 34 ++++++++-------- .../tasks.md | 40 +++++++++---------- .../tasks.md | 14 +++---- .../2026-09-22-add-run-per-language/tasks.md | 38 +++++++++--------- .../tasks.md | 32 +++++++-------- 11 files changed, 112 insertions(+), 112 deletions(-) diff --git a/hooks/env_check.py b/hooks/env_check.py index da36836..aa38ce1 100755 --- a/hooks/env_check.py +++ b/hooks/env_check.py @@ -14,7 +14,7 @@ PLUGIN_ROOT = Path(__file__).resolve().parents[1] # hooks/ 的上级 = 插件根(不依赖宿主环境变量) sys.path.insert(0, str(PLUGIN_ROOT / "scripts")) -from detect_lang import ( +from detect_lang import ( # ensure_user_path/load_user_config 实际定义:scripts/paths.py、scripts/user_config.py LANG_COMMANDS, REGISTRY, detect_languages, diff --git a/hooks/post_tool_lint.py b/hooks/post_tool_lint.py index 4eee8a6..169572c 100644 --- a/hooks/post_tool_lint.py +++ b/hooks/post_tool_lint.py @@ -18,7 +18,7 @@ PLUGIN_ROOT = Path(__file__).resolve().parents[1] # hooks/ 的上级 = 插件根 sys.path.insert(0, str(PLUGIN_ROOT / "scripts")) -from detect_lang import ( +from detect_lang import ( # ensure_user_path/load_user_config 实际定义:scripts/paths.py、scripts/user_config.py LANG_COMMANDS, detect_language, ensure_user_path, diff --git a/hooks/pre_tool_git_guard.py b/hooks/pre_tool_git_guard.py index dc7dec8..d659958 100755 --- a/hooks/pre_tool_git_guard.py +++ b/hooks/pre_tool_git_guard.py @@ -20,7 +20,7 @@ sys.path.insert(0, str(PLUGIN_ROOT / "scripts")) sys.path.insert(0, str(PLUGIN_ROOT / "hooks")) -from detect_lang import ensure_user_path, load_user_config +from detect_lang import ensure_user_path, load_user_config # # ensure_user_path/load_user_config 实际定义:scripts/paths.py、scripts/user_config.py from gate_lib import ( check_commit_safety, format_safety_report, diff --git a/hooks/user_prompt_validator.py b/hooks/user_prompt_validator.py index afdd064..ff0dc85 100755 --- a/hooks/user_prompt_validator.py +++ b/hooks/user_prompt_validator.py @@ -25,7 +25,7 @@ # 必须静默(子串匹配曾把它们当提交意图跑全仓 lint)。 import re as _re -from detect_lang import ( +from detect_lang import ( # # ensure_user_path/load_user_config 实际定义:scripts/paths.py、scripts/user_config.py detect_languages, ensure_user_path, find_project_root, diff --git a/openspec/changes/archive/2026-09-22-add-detect-lang-splits/tasks.md b/openspec/changes/archive/2026-09-22-add-detect-lang-splits/tasks.md index 9365a78..e9c4796 100644 --- a/openspec/changes/archive/2026-09-22-add-detect-lang-splits/tasks.md +++ b/openspec/changes/archive/2026-09-22-add-detect-lang-splits/tasks.md @@ -1,32 +1,32 @@ ## 1. New files -- [ ] 1.1 Create `scripts/paths.py` with `ensure_user_path(from_login_shell=False)` plus its internal static-dir and node-availability helpers, copied verbatim from `scripts/detect_lang.py`. -- [ ] 1.2 Create `scripts/user_config.py` with `load_user_config`, `load_project_overrides`, `get_overrides`, copied verbatim from `scripts/detect_lang.py`. +- [x] 1.1 Create `scripts/paths.py` with `ensure_user_path(from_login_shell=False)` plus its internal static-dir and node-availability helpers, copied verbatim from `scripts/detect_lang.py`. +- [x] 1.2 Create `scripts/user_config.py` with `load_user_config`, `load_project_overrides`, `get_overrides`, copied verbatim from `scripts/detect_lang.py`. ## 2. detect_lang.py refactor -- [ ] 2.1 Delete the implementation bodies of `ensure_user_path` and configuration helpers from `scripts/detect_lang.py`. -- [ ] 2.2 Replace them with re-exports (`from paths import ensure_user_path`, `from user_config import load_user_config, load_project_overrides, get_overrides`) and add `__all__` enumerating all externally imported symbols (existing + new re-exports). +- [x] 2.1 Delete the implementation bodies of `ensure_user_path` and configuration helpers from `scripts/detect_lang.py`. +- [x] 2.2 Replace them with re-exports (`from paths import ensure_user_path`, `from user_config import load_user_config, load_project_overrides, get_overrides`) and add `__all__` enumerating all externally imported symbols (existing + new re-exports). ## 3. Hooks annotation -- [ ] 3.1 In each of `hooks/env_check.py`, `hooks/pre_tool_git_guard.py`, `hooks/post_tool_lint.py`, `hooks/user_prompt_validator.py`, append an inline comment to the existing `from detect_lang import ...` line noting the source file (`paths.py` or `user_config.py`). +- [x] 3.1 In each of `hooks/env_check.py`, `hooks/pre_tool_git_guard.py`, `hooks/post_tool_lint.py`, `hooks/user_prompt_validator.py`, append an inline comment to the existing `from detect_lang import ...` line noting the source file (`paths.py` or `user_config.py`). ## 4. Validation -- [ ] 4.1 Run `python3 tests/run_all.py` — all hook simulation, language-registry, unit, CVE, edges, and field-regression subsets must pass. -- [ ] 4.2 Run `python3 -m unittest discover -s tests -p 'test_*.py' -v` — `test_plugin_manifests.py` and `test_skill_vendor.py` must pass (pre-existing baseline). -- [ ] 4.3 Run `git diff --check` — must be clean. -- [ ] 4.4 Run `openspec validate --all --strict` — must pass (3 pre-existing specs + new `language-gate-commands`). -- [ ] 4.5 Run `ruff check scripts/paths.py scripts/user_config.py scripts/detect_lang.py hooks/` — zero lint issues. +- [x] 4.1 Run `python3 tests/run_all.py` — all hook simulation, language-registry, unit, CVE, edges, and field-regression subsets must pass. +- [x] 4.2 Run `python3 -m unittest discover -s tests -p 'test_*.py' -v` — `test_plugin_manifests.py` and `test_skill_vendor.py` must pass (pre-existing baseline). +- [x] 4.3 Run `git diff --check` — must be clean. +- [x] 4.4 Run `openspec validate --all --strict` — must pass (3 pre-existing specs + new `language-gate-commands`). +- [x] 4.5 Run `ruff check scripts/paths.py scripts/user_config.py scripts/detect_lang.py hooks/` — zero lint issues. ## 5. Graph evidence -- [ ] 5.1 Rebuild `code-review-graph` and verify the cross-community edge count between `hooks-gate` and `scripts-scan` drops to ≤4 (was 19). +- [x] 5.1 Rebuild `code-review-graph` and verify the cross-community edge count between `hooks-gate` and `scripts-scan` drops to ≤4 (was 19). ## 6. Release -- [ ] 6.1 `node scripts/bump-plugin.mjs codeguard patch` — bump 0.6.0 → 0.6.1. -- [ ] 6.2 Commit plugin repo change, push `main` + tag `v0.6.1`. -- [ ] 6.3 In `full-stack-plugins` market repo, sync catalog `codeguard` to `0.6.1` and regenerate three marketplace manifests; commit and push. -- [ ] 6.4 `openspec archive add-detect-lang-splits` after all tasks above are checked. \ No newline at end of file +- [x] 6.1 `node scripts/bump-plugin.mjs codeguard patch` — bump 0.6.0 → 0.6.1. +- [x] 6.2 Commit plugin repo change, push `main` + tag `v0.6.1`. +- [x] 6.3 In `full-stack-plugins` market repo, sync catalog `codeguard` to `0.6.1` and regenerate three marketplace manifests; commit and push. +- [x] 6.4 `openspec archive add-detect-lang-splits` after all tasks above are checked. \ No newline at end of file diff --git a/openspec/changes/archive/2026-09-22-add-host-protocol-cheatsheet/tasks.md b/openspec/changes/archive/2026-09-22-add-host-protocol-cheatsheet/tasks.md index 9e62454..7f4df2f 100644 --- a/openspec/changes/archive/2026-09-22-add-host-protocol-cheatsheet/tasks.md +++ b/openspec/changes/archive/2026-09-22-add-host-protocol-cheatsheet/tasks.md @@ -1,25 +1,25 @@ ## 1. Document -- [ ] 1.1 Create `hooks/__protocol__.md` with the 6 sections (protocol table / three-host compatibility / fail-open / new-hook checklist / change policy / spec mapping). -- [ ] 1.2 Verify every documented exit code / JSON schema matches the actual implementation in `hooks/*.py` (post_tool_lint.py:226 etc.) — record the matching line numbers. +- [x] 1.1 Create `hooks/__protocol__.md` with the 6 sections (protocol table / three-host compatibility / fail-open / new-hook checklist / change policy / spec mapping). +- [x] 1.2 Verify every documented exit code / JSON schema matches the actual implementation in `hooks/*.py` (post_tool_lint.py:226 etc.) — record the matching line numbers. ## 2. tests/run_all.py annotation -- [ ] 2.1 Add a one-line reference to `hooks/__protocol__.md` in the top-of-file docstring of `tests/run_all.py`.. +- [x] 2.1 Add a one-line reference to `hooks/__protocol__.md` in the top-of-file docstring of `tests/run_all.py`.. ## 3. Validation -- [ ] 3.1 `python3 -m unittest discover -s tests -p 'test_*.py' -v` — both tests pass. -- [ ] 3.2 `python3 tests/run_all.py` — full 141 / 0 / 0 must hold (hooks/manifests/vendored skills). -- [ ] 3.3 `git diff --check` — clean. -- [ ] 3.4 `openspec validate --all --strict` — pass (3 pre-existing + new `hook-protocol`). -- [ ] 3.5 `grep -c 'exit code\|additionalContext' hooks/__protocol__.md` ≥ 5 (sanity that document has substance). +- [x] 3.1 `python3 -m unittest discover -s tests -p 'test_*.py' -v` — both tests pass. +- [x] 3.2 `python3 tests/run_all.py` — full 141 / 0 / 0 must hold (hooks/manifests/vendored skills). +- [x] 3.3 `git diff --check` — clean. +- [x] 3.4 `openspec validate --all --strict` — pass (3 pre-existing + new `hook-protocol`). +- [x] 3.5 `grep -c 'exit code\|additionalContext' hooks/__protocol__.md` ≥ 5 (sanity that document has substance). ## 4. Release -- [ ] 4.1 `node scripts/bump-plugin.mjs codeguard patch` — bump 0.6.2 → 0.6.3. -- [ ] 4.2 Fix in-repo `.agents/plugins/marketplace.json` ref/icon to `v0.6.3`. -- [ ] 4.3 Open PR, wait for vendor-check, merge. -- [ ] 4.4 Push tag `v0.6.3`. -- [ ] 4.5 Sync market repo catalog + README codeguard row to `0.6.3` and push. -- [ ] 4.6 `openspec archive add-host-protocol-cheatsheet` after all tasks above are checked. \ No newline at end of file +- [x] 4.1 `node scripts/bump-plugin.mjs codeguard patch` — bump 0.6.2 → 0.6.3. +- [x] 4.2 Fix in-repo `.agents/plugins/marketplace.json` ref/icon to `v0.6.3`. +- [x] 4.3 Open PR, wait for vendor-check, merge. +- [x] 4.4 Push tag `v0.6.3`. +- [x] 4.5 Sync market repo catalog + README codeguard row to `0.6.3` and push. +- [x] 4.6 `openspec archive add-host-protocol-cheatsheet` after all tasks above are checked. \ No newline at end of file diff --git a/openspec/changes/archive/2026-09-22-add-languages-schema-validator/tasks.md b/openspec/changes/archive/2026-09-22-add-languages-schema-validator/tasks.md index db4dccf..814ce8b 100644 --- a/openspec/changes/archive/2026-09-22-add-languages-schema-validator/tasks.md +++ b/openspec/changes/archive/2026-09-22-add-languages-schema-validator/tasks.md @@ -1,31 +1,31 @@ ## 1. Validator -- [ ] 1.1 Create `scripts/validate_languages_json.py` with the 11-rule set per design.md. -- [ ] 1.2 `python3 scripts/validate_languages_json.py` on current registry must exit 0 (baseline). -- [ ] 1.3 Document CLI flags + exit codes in the script's top docstring. +- [x] 1.1 Create `scripts/validate_languages_json.py` with the 11-rule set per design.md. +- [x] 1.2 `python3 scripts/validate_languages_json.py` on current registry must exit 0 (baseline). +- [x] 1.3 Document CLI flags + exit codes in the script's top docstring. ## 2. Unit tests -- [ ] 2.1 Create `tests/test_validate_languages_json.py` with the 10-test matrix per design.md. -- [ ] 2.2 All tests must pass with the current registry as the baseline fixture. +- [x] 2.1 Create `tests/test_validate_languages_json.py` with the 10-test matrix per design.md. +- [x] 2.2 All tests must pass with the current registry as the baseline fixture. ## 3. CI wiring -- [ ] 3.1 Edit `.github/workflows/skills-check.yml` to add two new steps (validator + unit tests) after the existing unittest discovery. +- [x] 3.1 Edit `.github/workflows/skills-check.yml` to add two new steps (validator + unit tests) after the existing unittest discovery. ## 4. Validation -- [ ] 4.1 `python3 -m unittest discover -s tests -p 'test_*.py' -v` — all pass (existing + new). -- [ ] 4.2 `python3 tests/run_all.py` — full 141 / 0 / 0 must hold. -- [ ] 4.3 `git diff --check` — clean. -- [ ] 4.4 `openspec validate --all --strict` — pass (5 pre-existing + new `languages-registry-contract`). -- [ ] 4.5 `ruff check scripts/validate_languages_json.py tests/test_validate_languages_json.py` — zero new errors. +- [x] 4.1 `python3 -m unittest discover -s tests -p 'test_*.py' -v` — all pass (existing + new). +- [x] 4.2 `python3 tests/run_all.py` — full 141 / 0 / 0 must hold. +- [x] 4.3 `git diff --check` — clean. +- [x] 4.4 `openspec validate --all --strict` — pass (5 pre-existing + new `languages-registry-contract`). +- [x] 4.5 `ruff check scripts/validate_languages_json.py tests/test_validate_languages_json.py` — zero new errors. ## 5. Release -- [ ] 5.1 `node scripts/bump-plugin.mjs codeguard patch` — bump 0.6.3 → 0.6.4. -- [ ] 5.2 Fix in-repo `.agents/plugins/marketplace.json` ref/icon to `v0.6.4`. -- [ ] 5.3 Open PR, wait for vendor-check, merge. -- [ ] 5.4 Push tag `v0.6.4`. -- [ ] 5.5 Sync market repo catalog + README codeguard row to `0.6.4` and push. -- [ ] 5.6 `openspec archive add-languages-schema-validator` after all tasks above are checked. \ No newline at end of file +- [x] 5.1 `node scripts/bump-plugin.mjs codeguard patch` — bump 0.6.3 → 0.6.4. +- [x] 5.2 Fix in-repo `.agents/plugins/marketplace.json` ref/icon to `v0.6.4`. +- [x] 5.3 Open PR, wait for vendor-check, merge. +- [x] 5.4 Push tag `v0.6.4`. +- [x] 5.5 Sync market repo catalog + README codeguard row to `0.6.4` and push. +- [x] 5.6 `openspec archive add-languages-schema-validator` after all tasks above are checked. \ No newline at end of file diff --git a/openspec/changes/archive/2026-09-22-add-linter-config-from-registry/tasks.md b/openspec/changes/archive/2026-09-22-add-linter-config-from-registry/tasks.md index 39c42e7..6a87d78 100644 --- a/openspec/changes/archive/2026-09-22-add-linter-config-from-registry/tasks.md +++ b/openspec/changes/archive/2026-09-22-add-linter-config-from-registry/tasks.md @@ -1,36 +1,36 @@ ## 1. Registry migration -- [ ] 1.1 In `scripts/languages.json`, add `"linter_config_files": [".pre-commit-config.yaml", "checkstyle.xml", "pmd.xml"]` to the `java` entry. -- [ ] 1.2 Same for `rust`, `typescript`, `python` (copy from current `hooks/env_check.py::LINTER_CONFIG_FILES`). -- [ ] 1.3 All other language entries already default to `[]` via validation; explicitly verify no regression. +- [x] 1.1 In `scripts/languages.json`, add `"linter_config_files": [".pre-commit-config.yaml", "checkstyle.xml", "pmd.xml"]` to the `java` entry. +- [x] 1.2 Same for `rust`, `typescript`, `python` (copy from current `hooks/env_check.py::LINTER_CONFIG_FILES`). +- [x] 1.3 All other language entries already default to `[]` via validation; explicitly verify no regression. ## 2. env_check refactor -- [ ] 2.1 In `hooks/env_check.py`, delete the `LINTER_CONFIG_FILES` constant (lines 23-30). -- [ ] 2.2 Add `REGISTRY` to the `from detect_lang import ...` block. -- [ ] 2.3 Rewrite `detect_linter_config` to iterate over `REGISTRY.items()` and read each entry's `linter_config_files`. -- [ ] 2.4 Verify `python3 tests/run_all.py` env_check subset passes (still 5/5 of the existing checks). +- [x] 2.1 In `hooks/env_check.py`, delete the `LINTER_CONFIG_FILES` constant (lines 23-30). +- [x] 2.2 Add `REGISTRY` to the `from detect_lang import ...` block. +- [x] 2.3 Rewrite `detect_linter_config` to iterate over `REGISTRY.items()` and read each entry's `linter_config_files`. +- [x] 2.4 Verify `python3 tests/run_all.py` env_check subset passes (still 5/5 of the existing checks). ## 3. Validator rule -- [ ] 3.1 Add `_check_linter_config_files` to `scripts/validate_languages_json.py` and wire it into `check()`. -- [ ] 3.2 Add 2 unittest cases to `tests/test_validate_languages_json.py`: +- [x] 3.1 Add `_check_linter_config_files` to `scripts/validate_languages_json.py` and wire it into `check()`. +- [x] 3.2 Add 2 unittest cases to `tests/test_validate_languages_json.py`: - `test_linter_config_files_must_be_list_of_str` - `test_linter_config_files_can_be_empty` ## 4. Validation -- [ ] 4.1 `python3 scripts/validate_languages_json.py` — exit 0. -- [ ] 4.2 `python3 -m unittest discover -s tests -p 'test_*.py' -v` — pass. -- [ ] 4.3 `python3 tests/run_all.py` — 141 / 0 / 0. -- [ ] 4.4 `git diff --check` — clean. -- [ ] 4.5 `openspec validate --all --strict` — pass. +- [x] 4.1 `python3 scripts/validate_languages_json.py` — exit 0. +- [x] 4.2 `python3 -m unittest discover -s tests -p 'test_*.py' -v` — pass. +- [x] 4.3 `python3 tests/run_all.py` — 141 / 0 / 0. +- [x] 4.4 `git diff --check` — clean. +- [x] 4.5 `openspec validate --all --strict` — pass. ## 5. Release -- [ ] 5.1 `node scripts/bump-plugin.mjs codeguard patch` — bump 0.6.4 → 0.6.5. -- [ ] 5.2 Fix in-repo `.agents/plugins/marketplace.json` ref/icon to `v0.6.5`. -- [ ] 5.3 Open PR, wait for vendor-check, merge. -- [ ] 5.4 Tag v0.6.5 (use the `--force-with-lease` workflow if origin tag v0.6.4 is stale). -- [ ] 5.5 Sync market repo catalog + README codeguard row to `0.6.5` and push. -- [ ] 5.6 `openspec archive add-linter-config-from-registry`. \ No newline at end of file +- [x] 5.1 `node scripts/bump-plugin.mjs codeguard patch` — bump 0.6.4 → 0.6.5. +- [x] 5.2 Fix in-repo `.agents/plugins/marketplace.json` ref/icon to `v0.6.5`. +- [x] 5.3 Open PR, wait for vendor-check, merge. +- [x] 5.4 Tag v0.6.5 (use the `--force-with-lease` workflow if origin tag v0.6.4 is stale). +- [x] 5.5 Sync market repo catalog + README codeguard row to `0.6.5` and push. +- [x] 5.6 `openspec archive add-linter-config-from-registry`. \ No newline at end of file diff --git a/openspec/changes/archive/2026-09-22-add-manifest-bundle-dynamic/tasks.md b/openspec/changes/archive/2026-09-22-add-manifest-bundle-dynamic/tasks.md index a154353..892de47 100644 --- a/openspec/changes/archive/2026-09-22-add-manifest-bundle-dynamic/tasks.md +++ b/openspec/changes/archive/2026-09-22-add-manifest-bundle-dynamic/tasks.md @@ -1,15 +1,15 @@ ## 1. Test refactor -- [ ] 1.1 In `tests/test_plugin_manifests.py`, rename `test_each_released_manifest_points_to_the_68_skill_bundle` to `test_each_released_manifest_points_to_the_lock_union_plus_local_skills`. -- [ ] 1.2 Replace `self.assertEqual(68, expected)` with the three-source union assertion: `on_disk == lock_union | local`. +- [x] 1.1 In `tests/test_plugin_manifests.py`, rename `test_each_released_manifest_points_to_the_68_skill_bundle` to `test_each_released_manifest_points_to_the_lock_union_plus_local_skills`. +- [x] 1.2 Replace `self.assertEqual(68, expected)` with the three-source union assertion: `on_disk == lock_union | local`. ## 2. Validation -- [ ] 2.1 Run `python3 -m unittest discover -s tests -p 'test_*.py' -v` — both `test_plugin_manifests.py` and `test_skill_vendor.py` pass. -- [ ] 2.2 Run `git diff --check` — must be clean. -- [ ] 2.3 Run `openspec validate --all --strict` — must pass (3 pre-existing + `language-gate-commands` + new `plugin-manifest-contracts`). +- [x] 2.1 Run `python3 -m unittest discover -s tests -p 'test_*.py' -v` — both `test_plugin_manifests.py` and `test_skill_vendor.py` pass. +- [x] 2.2 Run `git diff --check` — must be clean. +- [x] 2.3 Run `openspec validate --all --strict` — must pass (3 pre-existing + `language-gate-commands` + new `plugin-manifest-contracts`). ## 3. Release -- [ ] 3.1 Commit as part of the same release commit as HIGH 1 (single `release: v0.6.1` covers both changes). -- [ ] 3.2 After archive of `add-detect-lang-splits`, archive `add-manifest-bundle-dynamic` together with it (single release flow). \ No newline at end of file +- [x] 3.1 Commit as part of the same release commit as HIGH 1 (single `release: v0.6.1` covers both changes). +- [x] 3.2 After archive of `add-detect-lang-splits`, archive `add-manifest-bundle-dynamic` together with it (single release flow). \ No newline at end of file diff --git a/openspec/changes/archive/2026-09-22-add-run-per-language/tasks.md b/openspec/changes/archive/2026-09-22-add-run-per-language/tasks.md index 2fced74..59a4db3 100644 --- a/openspec/changes/archive/2026-09-22-add-run-per-language/tasks.md +++ b/openspec/changes/archive/2026-09-22-add-run-per-language/tasks.md @@ -1,33 +1,33 @@ ## 1. New file -- [ ] 1.1 Create `scripts/run_per_language.py` with `run_check` and `run_fix` per the design; export `__all__` listing them. +- [x] 1.1 Create `scripts/run_per_language.py` with `run_check` and `run_fix` per the design; export `__all__` listing them. ## 2. run_check.py slim down -- [ ] 2.1 Remove local `run` / `check_one` / `fix_one` from `scripts/run_check.py`. -- [ ] 2.2 Replace the per-language loop body in `cli_main()` with `results = run_per_language.run_check(languages, project_root, timeout=args.timeout, fix=args.fix)`. -- [ ] 2.3 Keep the argparse, the `mcp_main` placeholder, and the human-readable summary lines untouched. +- [x] 2.1 Remove local `run` / `check_one` / `fix_one` from `scripts/run_check.py`. +- [x] 2.2 Replace the per-language loop body in `cli_main()` with `results = run_per_language.run_check(languages, project_root, timeout=args.timeout, fix=args.fix)`. +- [x] 2.3 Keep the argparse, the `mcp_main` placeholder, and the human-readable summary lines untouched. ## 3. fix.py slim down -- [ ] 3.1 Remove the in-line subprocess loop from `scripts/fix.py`. -- [ ] 3.2 Replace it with `results = run_per_language.run_fix(languages, project_root, dry_run=args.dry_run)` and the existing summary lines. +- [x] 3.1 Remove the in-line subprocess loop from `scripts/fix.py`. +- [x] 3.2 Replace it with `results = run_per_language.run_fix(languages, project_root, dry_run=args.dry_run)` and the existing summary lines. ## 4. Validation -- [ ] 4.1 `python3 -m unittest discover -s tests -p 'test_*.py' -v` — both `test_plugin_manifests.py` and `test_skill_vendor.py` must pass. -- [ ] 4.2 `python3 tests/run_all.py` — full 141 / 0 / 0 must hold (hooks/manifests/vendored skills). -- [ ] 4.3 Smoke `python3 scripts/run_check.py --help` and `python3 scripts/fix.py --help` — exit 0, argparse output unchanged from `v0.6.1`. -- [ ] 4.4 Smoke `python3 scripts/fix.py --dry-run .` on this repo — each detected language prints `would run: ...` and no subprocess is launched. -- [ ] 4.5 `ruff check scripts/run_per_language.py scripts/run_check.py scripts/fix.py` — zero new errors attributable to this change. -- [ ] 4.6 `git diff --check` — clean. -- [ ] 4.7 `openspec validate --all --strict` — pass (3 pre-existing + new `idiomatic-runner`). +- [x] 4.1 `python3 -m unittest discover -s tests -p 'test_*.py' -v` — both `test_plugin_manifests.py` and `test_skill_vendor.py` must pass. +- [x] 4.2 `python3 tests/run_all.py` — full 141 / 0 / 0 must hold (hooks/manifests/vendored skills). +- [x] 4.3 Smoke `python3 scripts/run_check.py --help` and `python3 scripts/fix.py --help` — exit 0, argparse output unchanged from `v0.6.1`. +- [x] 4.4 Smoke `python3 scripts/fix.py --dry-run .` on this repo — each detected language prints `would run: ...` and no subprocess is launched. +- [x] 4.5 `ruff check scripts/run_per_language.py scripts/run_check.py scripts/fix.py` — zero new errors attributable to this change. +- [x] 4.6 `git diff --check` — clean. +- [x] 4.7 `openspec validate --all --strict` — pass (3 pre-existing + new `idiomatic-runner`). ## 5. Release -- [ ] 5.1 `node scripts/bump-plugin.mjs codeguard patch` — bump 0.6.1 → 0.6.2. -- [ ] 5.2 Fix in-repo `.agents/plugins/marketplace.json` ref/icon to `v0.6.2`. -- [ ] 5.3 Open PR, wait for vendor-check, merge. -- [ ] 5.4 Push tag `v0.6.2`. -- [ ] 5.5 Sync market repo catalog + README codeguard row to `0.6.2` and push. -- [ ] 5.6 `openspec archive add-run-per-language` after all tasks above are checked. \ No newline at end of file +- [x] 5.1 `node scripts/bump-plugin.mjs codeguard patch` — bump 0.6.1 → 0.6.2. +- [x] 5.2 Fix in-repo `.agents/plugins/marketplace.json` ref/icon to `v0.6.2`. +- [x] 5.3 Open PR, wait for vendor-check, merge. +- [x] 5.4 Push tag `v0.6.2`. +- [x] 5.5 Sync market repo catalog + README codeguard row to `0.6.2` and push. +- [x] 5.6 `openspec archive add-run-per-language` after all tasks above are checked. \ No newline at end of file diff --git a/openspec/changes/archive/2026-09-22-consolidate-marketing-assets/tasks.md b/openspec/changes/archive/2026-09-22-consolidate-marketing-assets/tasks.md index 128e193..76978f2 100644 --- a/openspec/changes/archive/2026-09-22-consolidate-marketing-assets/tasks.md +++ b/openspec/changes/archive/2026-09-22-consolidate-marketing-assets/tasks.md @@ -1,30 +1,30 @@ ## 1. Audit -- [ ] 1.1 Run `grep -rn 'logo\.png\b\|official-logo\.svg'` (excluding `.git`) — verify zero matches for both files. -- [ ] 1.2 Run `grep -rn 'official-logo\.\(png\|svg\)\|composer-icon\|banner' .agents/ .codex-plugin/ .zcode-plugin/ kimi.plugin.json README.md README.zh-CN.md` — record which consumer uses which file. +- [x] 1.1 Run `grep -rn 'logo\.png\b\|official-logo\.svg'` (excluding `.git`) — verify zero matches for both files. +- [x] 1.2 Run `grep -rn 'official-logo\.\(png\|svg\)\|composer-icon\|banner' .agents/ .codex-plugin/ .zcode-plugin/ kimi.plugin.json README.md README.zh-CN.md` — record which consumer uses which file. ## 2. Deletion -- [ ] 2.1 Delete `assets/logo.png`. -- [ ] 2.2 Delete `assets/official-logo.svg`. -- [ ] 2.3 Verify `git status` shows only these two deletions + new `assets/README.md` (and any spec archive files). +- [x] 2.1 Delete `assets/logo.png`. +- [x] 2.2 Delete `assets/official-logo.svg`. +- [x] 2.3 Verify `git status` shows only these two deletions + new `assets/README.md` (and any spec archive files). ## 3. Documentation -- [ ] 3.1 Create `assets/README.md` with a Markdown table listing the four remaining files (banner.svg, composer-icon.png, official-logo.png, 79a62959-…png — note the last as legacy/unknown provenance). +- [x] 3.1 Create `assets/README.md` with a Markdown table listing the four remaining files (banner.svg, composer-icon.png, official-logo.png, 79a62959-…png — note the last as legacy/unknown provenance). ## 4. Validation -- [ ] 4.1 `python3 -m unittest discover -s tests -p 'test_*.py' -v` — all pass. -- [ ] 4.2 `python3 tests/run_all.py` — full 141 / 0 / 0 must hold. -- [ ] 4.3 `git diff --check` — clean. -- [ ] 4.4 `openspec validate --all --strict` — pass. +- [x] 4.1 `python3 -m unittest discover -s tests -p 'test_*.py' -v` — all pass. +- [x] 4.2 `python3 tests/run_all.py` — full 141 / 0 / 0 must hold. +- [x] 4.3 `git diff --check` — clean. +- [x] 4.4 `openspec validate --all --strict` — pass. ## 5. Release -- [ ] 5.1 `node scripts/bump-plugin.mjs codeguard patch` — bump 0.6.5 → 0.6.6. -- [ ] 5.2 Fix in-repo `.agents/plugins/marketplace.json` ref/icon to `v0.6.6`. -- [ ] 5.3 Open PR, wait for vendor-check, merge. -- [ ] 5.4 Tag v0.6.6 (force-move if origin tag v0.6.5/0.6.4 stale). -- [ ] 5.5 Sync market repo catalog + README codeguard row to `0.6.6` and push. -- [ ] 5.6 `openspec archive consolidate-marketing-assets`. \ No newline at end of file +- [x] 5.1 `node scripts/bump-plugin.mjs codeguard patch` — bump 0.6.5 → 0.6.6. +- [x] 5.2 Fix in-repo `.agents/plugins/marketplace.json` ref/icon to `v0.6.6`. +- [x] 5.3 Open PR, wait for vendor-check, merge. +- [x] 5.4 Tag v0.6.6 (force-move if origin tag v0.6.5/0.6.4 stale). +- [x] 5.5 Sync market repo catalog + README codeguard row to `0.6.6` and push. +- [x] 5.6 `openspec archive consolidate-marketing-assets`. \ No newline at end of file