jfox-cli 1.16.1__tar.gz → 1.16.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/CHANGELOG.md +22 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/PKG-INFO +1 -1
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/json-schemas.md +1 -1
- jfox_cli-1.16.3/docs/superpowers/plans/2026-09-24-issue-549-twin-files.md +305 -0
- jfox_cli-1.16.3/docs/superpowers/plans/2026-09-29-issue-561-backlinks-snapshot-overwrite.md +674 -0
- jfox_cli-1.16.3/docs/superpowers/plans/2026-10-09-index-status-persist.md +598 -0
- jfox_cli-1.16.3/docs/superpowers/plans/2026-10-09-nightly-embed-env.md +539 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-07-28-nightly-fulltest-design.md +2 -2
- jfox_cli-1.16.3/docs/superpowers/specs/2026-09-24-issue-549-twin-files-design.md +121 -0
- jfox_cli-1.16.3/docs/superpowers/specs/2026-09-29-issue-561-backlinks-snapshot-overwrite-design.md +141 -0
- jfox_cli-1.16.3/docs/superpowers/specs/2026-10-09-index-status-persist-design.md +127 -0
- jfox_cli-1.16.3/docs/superpowers/specs/2026-10-09-nightly-embed-env-design.md +284 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jfox/__init__.py +1 -1
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jfox/cli.py +66 -35
- jfox_cli-1.16.3/jfox/index_state.py +60 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jfox/moc/cli.py +3 -3
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jfox/models.py +32 -4
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jfox/note.py +113 -8
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jfox/redirect.py +3 -2
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/pyproject.toml +1 -1
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/scripts/nightly_test.sh +25 -6
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/scripts/nightly_test_helpers.py +29 -1
- jfox_cli-1.16.3/tests/integration/test_index_status_persist.py +100 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/integration/test_moc_member_commands.py +3 -2
- jfox_cli-1.16.3/tests/integration/test_stale_name_single_file.py +306 -0
- jfox_cli-1.16.3/tests/unit/test_apply_backlinks.py +240 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_index_kb_param.py +2 -1
- jfox_cli-1.16.3/tests/unit/test_index_state.py +54 -0
- jfox_cli-1.16.3/tests/unit/test_index_status_payload.py +25 -0
- jfox_cli-1.16.3/tests/unit/test_json_schema_contract_doc.py +16 -0
- jfox_cli-1.16.3/tests/unit/test_nightly_script_env.py +82 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_nightly_test_helpers.py +58 -0
- jfox_cli-1.16.3/tests/unit/test_note_path_rules.py +111 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_rebuild_backlinks_impl.py +103 -29
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/uv.lock +1 -1
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/.claude/skills/ci/SKILL.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/.claude/skills/release/SKILL.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/.claude/skills/release/release_helper.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/.claude/skills/release-all/SKILL.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/.claude/skills/release-all/release_all_helper.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/.claude/skills/release-cc-plugin/SKILL.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/.claude/skills/release-cc-plugin/release_cc_plugin_helper.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/.claude/skills/release-kimi-plugin/SKILL.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/.claude/skills/release-kimi-plugin/release_kimi_plugin_helper.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/.claude-plugin/marketplace.json +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/.githooks/pre-push +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/.github/ISSUE_TEMPLATE/docs_improvement.yml +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/.github/workflows/integration-test.yml +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/.github/workflows/publish.yml +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/.gitignore +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/.markdownlint-cli2.jsonc +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/.pi-lens.json +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/.python-version +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/AGENTS.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/CLAUDE.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/DEVELOPMENT_PLAN.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/README.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/SESSION.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/SESSION_SUMMARY.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/claude-code-plugin-guide.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/cli-descriptions.yaml +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/cli-reference.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/installation.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/nightly-test.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/plugin-inventory.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-04-11-bulk-import-bm25-fix.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-04-11-edit-command.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-04-11-unify-format-option.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-04-12-ci-coverage-optimization.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-04-12-edit-content-file.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-04-12-fix-index-rebuild-clear.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-04-12-fix-index-verify-id-mismatch.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-04-12-fix-jfox-health-skill-kb-param.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-04-12-index-kb-param.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-04-12-lazy-import-perf.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-04-12-skill-redesign.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-04-13-add-content-file.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-04-13-bulk-import-vectorstore-init.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-04-13-ingest-log-command.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-04-13-ingest-skill-sync.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-04-13-suppress-third-party-logging.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-04-13-sync-skills-with-cli.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-04-14-sync-docs-daemon-show.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-04-15-gpu-embedding.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-04-15-make-daemon-deps-required.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-04-15-session-summary-confirmation.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-04-16-fix-windows-daemon-console-window.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-04-18-daemon-timeout-and-index-rebuild.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-04-22-release-skill.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-04-26-fix-daemon-deprecation-warnings.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-04-27-intranet-model-download.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-04-28-tag-filtering.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-04-29-daemon-stop-fix.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-05-03-jfox-check.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-05-03-list-notes-skip-summary.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-05-03-log-level-fix.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-05-04-list-notes-index.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-05-06-atomic-write.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-05-09-session-note-type.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-05-10-jfox-plugin.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-05-19-fix-last-used-never.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-05-20-modelscope-migration.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-06-02-todo-note-type.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-06-16-kimi-code-auto-summary.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-06-17-index-rebuild-backlinks.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-06-17-using-jfox-skill.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-06-18-self-update-command.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-06-21-fragment-capture.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-06-21-gem-synthesis.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-06-25-gem-synth-throttle-ledger.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-07-08-auto-summary-schedule-window.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-07-08-candidate-promote.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-07-12-gem-synth-dedup.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-07-12-release-cc-plugin-skill.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-07-12-session-summary-streamline.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-07-12-show-json.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-07-17-fix-candidate-dual-h1.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-07-18-dedup-lifecycle-decouple.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-07-19-promote-skill-three-modes.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-07-25-bookshelf.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-07-25-gem-synth-dedup-incremental-merge.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-07-26-kb-backup-restore.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-07-26-promote-skill-clear-reports-rewrite.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-07-27-release-all.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-07-28-bookshelf-flat-bundle.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-07-28-nightly-fulltest.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-08-07-session-to-permanent-cc-kimi.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-08-11-permanent-note-template.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-08-12-noteindex-frontmatter-limit-drop.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-08-15-delete-backlinks-cleanup.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-08-16-bm25-concurrent-write-race.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-08-21-index-verify-legacy-filenames.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-08-21-moc-density-diagnose.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-08-22-bm25-type-debt-cleanup.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-08-22-issue-392-cr-leftovers.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-08-22-jfox-moc-skill.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-08-22-markdownlint-adoption.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-08-22-moc-create-update.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-08-25-moc-create-update-json-shorthand.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-08-27-issue-436-organize-archive.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-08-28-cpu-default-model-bge-small-zh.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-08-29-english-readme-baseline.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-08-29-issue-383-add-permanent-dedup.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-08-29-louvain-moc-clustering.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-08-30-gem-synth-prompt-judgment.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-08-30-test-config-isolation.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-08-31-deterministic-cli-reference.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-09-01-ci-docs-drift-gate.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-09-02-plugin-inventory-enum-checks.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-09-03-jfox-moc-batch-quality-chapter.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-09-03-moc-member-management.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-09-04-chromadb-dim-migration-ndarray.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-09-05-moc-diagnose-archived-orphan.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-09-07-bm25-fresh-kb-logging.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-09-07-pi-prompt-capture.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-09-09-from-dict-non-dict-guard.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-09-09-nightly-test-failures.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-09-10-skill-sync-399-overview-jfox-judge.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-09-14-json-schema-unify.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-09-14-lightweight-install.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-09-14-wiki-link-self-link.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-09-23-h1-strip-normalization.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/plans/2026-09-24-adjacent-backticks-swallow-wiki-links.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-04-03-bugfixes-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-04-12-skill-redesign-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-04-13-pr-auto-code-review-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-04-14-show-command-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-04-15-gpu-embedding-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-04-15-session-summary-confirmation-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-04-21-release-skill-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-04-26-fix-daemon-deprecation-warnings-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-04-27-intranet-model-download-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-04-28-tag-filtering-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-04-29-daemon-stop-fix-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-04-30-jfox-kb-env-var-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-05-03-jfox-check-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-05-03-list-notes-skip-summary-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-05-03-log-level-fix-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-05-04-list-notes-index-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-05-06-atomic-write-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-05-09-jfox-plugin-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-05-09-session-note-type-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-05-20-modelscope-migration-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-06-02-todo-note-type-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-06-16-kimi-code-auto-summary-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-06-17-index-rebuild-backlinks-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-06-17-using-jfox-skill-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-06-18-archive-soft-delete-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-06-18-self-update-command-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-06-21-fragment-capture-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-06-21-gem-synthesis-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-06-25-gem-synth-throttle-ledger-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-07-08-candidate-promote-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-07-12-gem-synth-dedup-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-07-12-release-cc-plugin-skill-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-07-12-session-summary-streamline-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-07-12-show-json-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-07-18-dedup-lifecycle-decouple-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-07-19-promote-skill-three-modes-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-07-25-bookshelf-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-07-25-gem-synth-dedup-incremental-merge-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-07-26-kb-backup-restore-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-07-26-promote-skill-clear-reports-rewrite-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-07-27-release-all-orchestration-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-07-28-bookshelf-flat-bundle-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-08-07-session-to-permanent-cc-kimi-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-08-11-permanent-note-template-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-08-12-noteindex-frontmatter-limit-drop-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-08-15-delete-backlinks-cleanup-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-08-16-bm25-concurrent-write-race-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-08-20-bm25-clear-orphan-followup-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-08-21-index-verify-legacy-filenames-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-08-21-moc-density-diagnose-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-08-22-bm25-type-debt-cleanup-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-08-22-issue-392-cr-leftovers-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-08-22-jfox-moc-skill-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-08-22-markdownlint-adoption-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-08-22-moc-create-update-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-08-25-moc-create-update-json-shorthand-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-08-27-issue-436-organize-archive-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-08-27-redirect-and-delete-guard.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-08-28-cpu-default-model-bge-small-zh-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-08-29-english-readme-baseline-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-08-29-issue-383-add-permanent-dedup-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-08-29-louvain-moc-clustering-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-08-30-gem-synth-prompt-judgment-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-08-30-test-config-isolation-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-08-31-deterministic-cli-reference-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-09-01-ci-docs-drift-gate-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-09-02-plugin-inventory-enum-checks-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-09-03-jfox-moc-batch-quality-chapter-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-09-03-moc-member-management-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-09-04-chromadb-dim-migration-ndarray-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-09-05-moc-diagnose-archived-orphan-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-09-07-bm25-fresh-kb-logging-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-09-07-pi-prompt-capture-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-09-09-from-dict-non-dict-guard-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-09-09-nightly-test-failures-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-09-10-lightweight-install-embed-extra-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-09-10-skill-sync-399-overview-jfox-judge-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-09-14-json-schema-unify-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-09-14-wiki-link-self-link-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-09-23-h1-strip-normalization-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/superpowers/specs/2026-09-24-adjacent-backticks-swallow-wiki-links-design.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/docs/troubleshooting.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jessica-jones-static-cable.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jfox/__main__.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jfox/add_dedup.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jfox/auto_summary/__init__.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jfox/auto_summary/cli.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jfox/auto_summary/extractor.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jfox/auto_summary/kimi_source.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jfox/auto_summary/ledger.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jfox/auto_summary/loop.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jfox/auto_summary/runner.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jfox/auto_summary/scanner.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jfox/auto_summary/schedule.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jfox/auto_summary/sources.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jfox/backup/__init__.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jfox/backup/cli.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jfox/backup/loop.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jfox/backup/manager.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jfox/backup/schedule.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jfox/bm25_index.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jfox/bookshelf/__init__.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jfox/bookshelf/cli.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jfox/bookshelf/meta.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jfox/bookshelf/store.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jfox/candidates/__init__.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jfox/candidates/cli.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jfox/candidates/service.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jfox/config.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jfox/daemon/__init__.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jfox/daemon/__main__.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jfox/daemon/client.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jfox/daemon/process.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jfox/daemon/server.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jfox/dedup.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jfox/dedup_lifecycle.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jfox/embedding_backend.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jfox/embedding_migration.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jfox/formatters.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jfox/fragment/__init__.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jfox/fragment/cli.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jfox/fragment/internal_sources.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jfox/fragment/service.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jfox/fragment/store.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jfox/git_extractor.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jfox/global_config.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jfox/graph.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jfox/indexer.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jfox/kb_manager.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jfox/moc/__init__.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jfox/moc/cluster.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jfox/moc/draft.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jfox/moc/generate.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jfox/model_downloader.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jfox/note_index.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jfox/performance.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jfox/prompts/__init__.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jfox/prompts/actions.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jfox/prompts/cli.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jfox/prompts/grounding.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jfox/prompts/judge.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jfox/prompts/lifecycle.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jfox/prompts/runner.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jfox/prompts/service.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jfox/prompts/store.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jfox/prompts/transcript.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jfox/search_engine.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jfox/template.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jfox/template_cli.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jfox/utils.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/jfox/vector_store.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/package.json +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/packages/cc-plugin/.claude-plugin/plugin.json +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/packages/cc-plugin/hooks/fragment-capture.sh +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/packages/cc-plugin/hooks/hooks.json +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/packages/cc-plugin/skills/bookshelf/SKILL.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/packages/cc-plugin/skills/ingest/SKILL.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/packages/cc-plugin/skills/manage/SKILL.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/packages/cc-plugin/skills/organize/SKILL.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/packages/cc-plugin/skills/promote/SKILL.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/packages/cc-plugin/skills/search/SKILL.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/packages/cc-plugin/skills/session-summary/SKILL.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/packages/cc-plugin/skills/session-to-permanent/SKILL.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/packages/cc-plugin/skills/using-jfox/SKILL.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/packages/kimi-plugin/README.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/packages/kimi-plugin/kimi.plugin.json +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/packages/kimi-plugin/skills/jfox-admin/SKILL.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/packages/kimi-plugin/skills/jfox-auto-summary/SKILL.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/packages/kimi-plugin/skills/jfox-ingest/SKILL.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/packages/kimi-plugin/skills/jfox-manage/SKILL.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/packages/kimi-plugin/skills/jfox-organize/SKILL.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/packages/kimi-plugin/skills/jfox-promote/SKILL.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/packages/kimi-plugin/skills/jfox-search/SKILL.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/packages/kimi-plugin/skills/jfox-session-summary/SKILL.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/packages/kimi-plugin/skills/jfox-session-to-permanent/SKILL.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/packages/kimi-plugin/skills/jfox-template/SKILL.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/packages/kimi-plugin/skills/using-jfox/SKILL.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/packages/pi-plugin/README.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/packages/pi-plugin/extensions/jfox-prompt-capture.ts +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/packages/pi-plugin/test/run-tests.ts +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/pytest.ini +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/run_full_test.ps1 +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/scripts/LOUVAIN_VERIFY.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/scripts/download-model-intranet.sh +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/scripts/enum_coverage.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/scripts/generate_docs.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/scripts/louvain_verify.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/scripts/plugin_inventory.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/scripts/verify_lightweight_install.sh +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/skills-recommend/README.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/skills-recommend/kimi-cli/jfox-common/SKILL.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/skills-recommend/kimi-cli/jfox-ingest/SKILL.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/skills-recommend/kimi-cli/jfox-organize/SKILL.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/skills-recommend/kimi-cli/jfox-search/SKILL.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/skills-recommend/kimi-cli/jfox-session-summary/SKILL.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/skills-recommend/pi/jfox-bookshelf/SKILL.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/skills-recommend/pi/jfox-ci/SKILL.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/skills-recommend/pi/jfox-common/SKILL.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/skills-recommend/pi/jfox-ingest/SKILL.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/skills-recommend/pi/jfox-judge/SKILL.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/skills-recommend/pi/jfox-moc/SKILL.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/skills-recommend/pi/jfox-organize/SKILL.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/skills-recommend/pi/jfox-overview/SKILL.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/skills-recommend/pi/jfox-promote/SKILL.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/skills-recommend/pi/jfox-release/SKILL.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/skills-recommend/pi/jfox-release-all/SKILL.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/skills-recommend/pi/jfox-release-cc-plugin/SKILL.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/skills-recommend/pi/jfox-release-kimi-plugin/SKILL.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/skills-recommend/pi/jfox-search/SKILL.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/skills-recommend/pi/jfox-session-summary/SKILL.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/skills-recommend/pi/jfox-session-to-permanent/SKILL.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/COVERAGE_PLAN.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/MIGRATION.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/TESTS.md +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/conftest.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/fixtures/bulk_import_notes.json +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/integration/__init__.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/integration/test_auto_summary_kimi.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/integration/test_backlinks.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/integration/test_candidate_promote_flow.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/integration/test_cli_reference_generation.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/integration/test_edit_roundtrip.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/integration/test_fragment_capture_flow.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/integration/test_index_rebuild_backlinks.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/integration/test_links_edit_add.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/integration/test_model_download.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/integration/test_no_embed_degradation.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/integration/test_plugin_inventory.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/integration/test_tag_filter_cli.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/performance/__init__.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/performance/test_performance.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/test_add_dedup_cli.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/test_advanced_features.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/test_cli_format.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/test_config_set_unit.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/test_config_unit.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/test_core_workflow.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/test_embedding_device.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/test_hybrid_search.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/test_integration.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/test_json_schema_contract.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/test_kb_current.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/test_suggest_links.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/__init__.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/bookshelf/__init__.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/bookshelf/conftest.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/bookshelf/test_cli.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/bookshelf/test_meta.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/bookshelf/test_store.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/conftest.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_add_backfill_links.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_add_dedup.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_archive.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_atomic_write.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_auto_summary_cli.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_auto_summary_config_sources.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_auto_summary_defaults.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_auto_summary_extractor.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_auto_summary_ledger.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_auto_summary_loop.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_auto_summary_runner.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_auto_summary_scanner.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_auto_summary_schedule.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_auto_summary_status.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_backup.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_bm25_batch.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_bm25_concurrency.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_bm25_fresh_kb_logging.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_candidates_migrated_cli.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_check.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_conftest_mock.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_content_file.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_daemon_cli.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_daemon_process.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_dedup_lifecycle.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_default_model_switch.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_delete_backlink_cleanup.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_delete_guard.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_edit.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_embed_availability.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_embedding_backend_daemon_only.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_embedding_local_load.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_embedding_migration.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_enum_coverage.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_format_unify.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_formatters.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_fragment_cli.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_fragment_config.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_fragment_hook.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_fragment_internal_sources.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_fragment_service.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_fragment_store.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_generate_docs.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_git_extractor.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_global_config.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_indexer_clear_before_rebuild.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_indexer_verify.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_json_mode.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_kb_manager.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_kimi_extractor.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_kimi_plugin_skills.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_kimi_scanner.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_lazy_import.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_ledger_migration.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_list_notes_skip.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_logging_config.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_moc_cli.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_moc_cluster.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_moc_create_cli.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_moc_draft.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_moc_generate.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_moc_integration.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_moc_member_cli.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_moc_skill_docs.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_moc_update_cli.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_model_downloader.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_note_add_config.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_note_candidate_fields.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_note_candidate_filename.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_note_generator.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_note_index.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_note_lifecycle_hooks.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_note_promote.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_note_type_candidate.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_note_type_structure.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_plugin_inventory.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_prompt_actions.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_prompt_backfill.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_prompt_candidate.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_prompt_capture.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_prompt_cli.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_prompt_grounding.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_prompt_judge.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_prompt_retirement.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_prompt_runner.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_prompt_store.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_prompt_transcript.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_pyproject_embed_extra.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_redirect.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_release_all_helper.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_release_cc_plugin_helper.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_release_helper.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_release_helper_verify.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_release_kimi_plugin_helper.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_runner_multi_source.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_scanner_list.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_search_engine_embed_warning.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_session_file_source.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_session_note.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_session_source.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_show.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_system_prompt_sections.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_tag_filter.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_template.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_template_cli.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_update.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_use_kb_env_var.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_using_jfox_skill.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_vector_store_clear.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_vector_store_dimension_warning.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_vector_store_embed_guard.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_vector_store_embeddings.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/unit/test_wiki_link_resolution.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/utils/__init__.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/utils/assertions.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/utils/jfox_cli.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/utils/note_generator.py +0 -0
- {jfox_cli-1.16.1 → jfox_cli-1.16.3}/tests/utils/temp_kb.py +0 -0
|
@@ -2,6 +2,24 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to jfox-cli will be documented in this file.
|
|
4
4
|
|
|
5
|
+
## [1.16.3] - 2026-10-10
|
|
6
|
+
|
|
7
|
+
### Fixes
|
|
8
|
+
|
|
9
|
+
- **index**: status shows only persistent real state — drop watcher counters, add bm25_indexed/last_rebuild (#539) (#567)
|
|
10
|
+
- **nightly**: install [embed] extra, fail-fast env guard, --ref debug mode (#559) (#565)
|
|
11
|
+
- **index**: rebuild --backlinks 写回改重读+分歧检测窄写,修复并发 edit 正文被静默覆盖 (#561) (#562)
|
|
12
|
+
|
|
13
|
+
[1.16.3]: https://github.com/zhuxixi/jfox/compare/v1.16.2...v1.16.3
|
|
14
|
+
|
|
15
|
+
## [1.16.2] - 2026-09-25
|
|
16
|
+
|
|
17
|
+
### Fixes
|
|
18
|
+
|
|
19
|
+
- **note**: 加载笔记钉住真实磁盘路径,update_note 规范化写——消除同 ID 双文件 (#549) (#553)
|
|
20
|
+
|
|
21
|
+
[1.16.2]: https://github.com/zhuxixi/jfox/compare/v1.16.1...v1.16.2
|
|
22
|
+
|
|
5
23
|
## [1.16.1] - 2026-09-24
|
|
6
24
|
|
|
7
25
|
### Fixes
|
|
@@ -18,8 +36,12 @@ All notable changes to jfox-cli will be documented in this file.
|
|
|
18
36
|
|
|
19
37
|
### Fixes
|
|
20
38
|
|
|
39
|
+
- **note**: 加载的笔记钉住真实磁盘路径——文件名与当前字段分家时,补 backlink / rebuild --backlinks / MOC 成员回填不再写出同 ID 双文件,`show`/`delete` 也能正确读写该笔记;`update_note` 改为显式规范化写并在成功后重钉路径 (#549)
|
|
40
|
+
|
|
21
41
|
- **note_index**: 剥离改单遍合并正则——反引号包 HTML 注释不再吞后续 wiki link (#548) (#550)
|
|
22
42
|
|
|
43
|
+
- **index**: `index rebuild --backlinks` 写回改为「重读→分歧检测→原子写」:检测到并发修改或文件缺失的笔记本轮跳过(计入新 JSON 字段 `backlinks_skipped`,下轮重建自愈),并发 `edit` 的正文不再被旧快照静默覆盖 (#561)
|
|
44
|
+
|
|
23
45
|
## [1.16.0] - 2026-09-23
|
|
24
46
|
|
|
25
47
|
### Features
|
|
@@ -54,7 +54,7 @@ else:
|
|
|
54
54
|
| `daily` | `success, date, total, notes[]` | 列表 `notes` | `{success, error}` |
|
|
55
55
|
| `inbox` | `success, total, notes[]` | 列表 `notes` | `{success, error}` |
|
|
56
56
|
| `suggest-links` | `success, content, total_suggestions, threshold, suggestions[]` + 可选 `warnings[]`(#519 降级为关键词匹配时) | 列表 `suggestions` | `{success, error}` |
|
|
57
|
-
| `index <action>` | `rebuild`:`success, indexed, semantic_skipped, bm25_rebuilt, bm25_indexed[, backlinks_*]` + 可选 `warnings[]`(#519 无语义服务时 `semantic_skipped:true`、仅重建 BM25);`rebuild-bm25`:`success, indexed`;`status`:`success,
|
|
57
|
+
| `index <action>` | `rebuild`:`success, indexed, semantic_skipped, bm25_rebuilt, bm25_indexed[, backlinks_*]` + 可选 `warnings[]`(#519 无语义服务时 `semantic_skipped:true`、仅重建 BM25);`rebuild-bm25`:`success, indexed`;`status`:`success, vector_store, bm25_indexed, last_rebuild`;`bm25-status`:`success, bm25_index{...}`;`verify`:`success`(语义见特殊语义说明)+ 透传字段 | 平铺 | `{success, error}`(错误分支需显式 `--json` 开启,见特殊语义说明) |
|
|
58
58
|
| `kb <action>` | `list`:`success, current, knowledge_bases[]`;`create/switch/use/remove/delete/rename`:`success, message`;`current/info`:`success, name, path, total_notes, by_type, created, last_used, description, is_current` | 平铺实体 | `{success, error}`(错误分支需显式 `--json` 开启,见特殊语义说明) |
|
|
59
59
|
| `ingest-log` | `success, repo_path, commits_extracted, imported, failed, total`(空仓库带 `message`) | 平铺计数 | `{success, error}`;缺语义组件拒绝:`{success, code:"embed_dependency_missing", error}`(#519) |
|
|
60
60
|
| `bulk-import` | `success, imported, failed, total`(`--json` 默认开启) | 平铺计数 | `{success, error}`;缺语义组件拒绝:`{success, code:"embed_dependency_missing", error}`(#519) |
|
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
# #549 同 ID 双文件修复 实现计划
|
|
2
|
+
|
|
3
|
+
> **For agentic workers:** Steps use checkbox (`- [ ]`) syntax to track progress. Follow instructions exactly.
|
|
4
|
+
|
|
5
|
+
**Spec:** `docs/superpowers/specs/2026-09-24-issue-549-twin-files-design.md`(commit 47b236c)
|
|
6
|
+
|
|
7
|
+
**Work from:** `/home/elling/git-repo/github/jfox/.pi/worktrees/issue-549-stale-name-twin-files`(所有路径以此为根;禁止碰主 checkout)
|
|
8
|
+
|
|
9
|
+
**技术摘要:** 路径语义两分法——`from_markdown` 钉住真实路径(`save_note` 就地写)+ `update_note` 写盘目标改用 `expected_filepath`(规范化写 + 成功后重钉 pin)。
|
|
10
|
+
|
|
11
|
+
## 验收归属(spec 矩阵 → 任务)
|
|
12
|
+
|
|
13
|
+
| 验收 ID | 归属 |
|
|
14
|
+
|---------|------|
|
|
15
|
+
| A1/A2(路径纯函数 + 钉路径) | Task 1 |
|
|
16
|
+
| A3(update_note 自愈 + 重钉 pin) | Task 1 |
|
|
17
|
+
| A9(护栏:改名/移目录保持绿) | Task 1 |
|
|
18
|
+
| A4–A8(CLI 症状层) | Task 2 |
|
|
19
|
+
| CHANGELOG/注释交付物 | Task 3 |
|
|
20
|
+
| U1(真实库受控演练) | 合并后单独人工项,非代码任务 |
|
|
21
|
+
|
|
22
|
+
## 前置事实(实现者必读,违反即返工)
|
|
23
|
+
|
|
24
|
+
1. **原子性约束**:`models.py` 的钉路径与 `note.py` 的 `update_note` 调整**必须同任务同 commit 落地**。中间态(只钉路径)会让 `tests/unit/test_edit.py:72-82`(改标题→改名)与 `:373-390`(改 type→跨目录)挂掉(E2b 已实证)。
|
|
25
|
+
2. **契约边界**:改 title/topic/type 的意图只走 `update_note`;`save_note` 是就地写。不要给 `save_note` 加任何「找旧文件/改名」逻辑——本修复不靠它。
|
|
26
|
+
3. **改动面**:只允许碰 `jfox/models.py`、`jfox/note.py`、两个测试文件、`CHANGELOG.md`。不碰 `moc/`、`redirect.py`、其余 save_note 站点(钉路径后它们自动受益)。
|
|
27
|
+
4. **测试命名**:文件/用例名避开子串 `search|semantic|embedding|vector|query|suggest`;用例标题全局唯一(#483 闸门)。本计划的文件名已满足:`test_note_path_rules.py`、`test_stale_name_single_file.py`。
|
|
28
|
+
5. **夹具手法**:发散名 = 只 rename 文件(保留 id 前缀),不改 frontmatter——`cli_fast` 每条命令独立子进程,索引按盘重建,发散笔记可被正常发现/解析。
|
|
29
|
+
6. **#483 之后 add permanent 有 dedup 闸门**:测试标题彼此差异要大,别用近似标题。
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## Task 1: 路径语义核心(models.py + note.py + A1/A2/A3/A9)
|
|
34
|
+
|
|
35
|
+
**Files:**
|
|
36
|
+
|
|
37
|
+
- Create: `tests/unit/test_note_path_rules.py`
|
|
38
|
+
- Create: `tests/integration/test_stale_name_single_file.py`(先只放 A3 两个用例)
|
|
39
|
+
- Modify: `jfox/models.py`
|
|
40
|
+
- Modify: `jfox/note.py`
|
|
41
|
+
|
|
42
|
+
- [ ] **Step 1: 写失败测试**
|
|
43
|
+
|
|
44
|
+
`tests/unit/test_note_path_rules.py`(A1/A2,纯函数层,无需 KB 写入):
|
|
45
|
+
|
|
46
|
+
```python
|
|
47
|
+
class TestExpectedFilepath:
|
|
48
|
+
def test_permanent_uses_title_slug(self) # A1:expected == config.notes_dir/"permanent"/filename
|
|
49
|
+
def test_session_uses_topic(self) # A1
|
|
50
|
+
def test_session_without_topic_falls_back_to_title(self) # A1
|
|
51
|
+
def test_fleeting_uses_dash_form(self) # A1:{id[:8]}-{id[8:]}.md
|
|
52
|
+
def test_expected_filepath_ignores_pin(self) # A1:set_filepath 后 expected 不变、filepath 变
|
|
53
|
+
|
|
54
|
+
class TestFromMarkdownPin:
|
|
55
|
+
def test_with_filepath_pins_it(self) # A2:note.filepath == 传入路径
|
|
56
|
+
def test_without_filepath_stays_unpinned(self) # A2:note.filepath == expected_filepath
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
`tests/integration/test_stale_name_single_file.py`(A3,先行两个用例;发散名 helper 共用):
|
|
60
|
+
|
|
61
|
+
```python
|
|
62
|
+
def _diverge(filepath: str) -> Path:
|
|
63
|
+
"""只 rename 文件制造发散名(保留 id 前缀),模拟外部改标题未同步改名"""
|
|
64
|
+
p = Path(filepath)
|
|
65
|
+
d = p.with_name(f"{p.stem}-diverged.md")
|
|
66
|
+
p.rename(d)
|
|
67
|
+
return d
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
def _files_for(dir_path: Path, nid: str) -> list:
|
|
71
|
+
return sorted(dir_path.glob(f"{nid}*.md"))
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
class TestUpdateSelfHeal:
|
|
75
|
+
def test_edit_title_on_diverged_name_canonicalizes(self, cli_fast):
|
|
76
|
+
"""A3:发散名笔记经 edit --title 后规范化为规则名,全程单文件"""
|
|
77
|
+
# add permanent → 从 add 的 JSON 取 note.filepath → _diverge →
|
|
78
|
+
# cli_fast.edit(id, title="全新标题X") →
|
|
79
|
+
# 断言 _files_for 单文件、文件名含新标题 slug、旧发散名不存在
|
|
80
|
+
|
|
81
|
+
def test_second_save_after_update_no_resurrect(self, temp_kb_registered):
|
|
82
|
+
"""A3:同对象 update_note 后再 save_note,不复活旧路径(重钉 pin 契约)"""
|
|
83
|
+
# 复用 test_delete_backlink_cleanup.py 的 temp_kb_registered + use_kb 模式:
|
|
84
|
+
# load → note.update_note(改标题)→ 对同对象 note.save_note →
|
|
85
|
+
# 断言旧路径文件未被重新创建,且规则名文件唯一
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
(`temp_kb_registered` 参照 `tests/unit/test_delete_backlink_cleanup.py` 的用法;若该 fixture 名不匹配,用 conftest 中已有的等价临时 KB 上下文。)
|
|
89
|
+
|
|
90
|
+
- [ ] **Step 2: 运行确认失败**
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
uv run pytest tests/unit/test_note_path_rules.py tests/integration/test_stale_name_single_file.py -x -q
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
预期:`expected_filepath` 不存在(AttributeError)/ 钉路径未生效 → FAIL。只确认 RED,不修。
|
|
97
|
+
|
|
98
|
+
- [ ] **Step 3: 实现 `jfox/models.py`**
|
|
99
|
+
|
|
100
|
+
① 新增 property(放 `filepath` 旁,注释为交付物):
|
|
101
|
+
|
|
102
|
+
```python
|
|
103
|
+
@property
|
|
104
|
+
def expected_filepath(self) -> Path:
|
|
105
|
+
"""按当前字段现算的规则路径(type 目录 + filename),不看 _filepath pin。
|
|
106
|
+
|
|
107
|
+
#549 两分法的另一半:update_note(规范化写)以本属性为写盘目标;
|
|
108
|
+
filepath 在笔记从磁盘加载时被钉住为真实路径(就地写)。
|
|
109
|
+
用 note_obj.filepath 代替本属性的已知后果:钉路径后改名判据
|
|
110
|
+
`old != note.filepath` 恒假,edit --title / 改 type 不再改名移动
|
|
111
|
+
(tests/unit/test_edit.py:72-82、:373-390 必挂)。
|
|
112
|
+
"""
|
|
113
|
+
from .config import config
|
|
114
|
+
|
|
115
|
+
return config.notes_dir / self.type.value / self.filename
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
② `from_markdown`:把 `return cls(...)` 改为先存变量再钉路径(注释为交付物):
|
|
119
|
+
|
|
120
|
+
```python
|
|
121
|
+
note = cls(
|
|
122
|
+
... # 现有参数不动
|
|
123
|
+
)
|
|
124
|
+
# #549:钉住加载来源的真实磁盘路径。此后 note.filepath 返回真实路径,
|
|
125
|
+
# save_note(就地写)写回原文件——文件名与当前字段分家时也不会在规则名上
|
|
126
|
+
# 另写同 id 双文件。需要「按当前字段重新定址」的操作(改标题/改 type)
|
|
127
|
+
# 请走 note.update_note,其写盘目标用 expected_filepath。
|
|
128
|
+
if filepath is not None:
|
|
129
|
+
note._filepath = Path(filepath)
|
|
130
|
+
return note
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
③ `filepath` property 的 docstring 补一句「加载的笔记此处返回真实磁盘路径;规则路径请用 expected_filepath」。
|
|
134
|
+
|
|
135
|
+
- [ ] **Step 4: 实现 `jfox/note.py`**
|
|
136
|
+
|
|
137
|
+
① `update_note` 写盘段(原 `_atomic_write(note_obj.filepath, ...)` 处):
|
|
138
|
+
|
|
139
|
+
```python
|
|
140
|
+
# 规范化写(#549):目标路径按当前字段现算,不看加载 pin。
|
|
141
|
+
target = note_obj.expected_filepath
|
|
142
|
+
_atomic_write(target, note_obj.to_markdown())
|
|
143
|
+
|
|
144
|
+
if old_filepath != target and old_filepath.exists():
|
|
145
|
+
old_filepath.unlink()
|
|
146
|
+
logger.info(f"Renamed note file: {old_filepath} -> {target}")
|
|
147
|
+
|
|
148
|
+
# #549:写盘成功后把 pin 重钉到刚写入的路径——否则同一对象随后的
|
|
149
|
+
# save_note(就地写)会按陈旧 pin 写回旧路径、复活同 id 双文件。
|
|
150
|
+
note_obj.set_filepath(target)
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
② `save_note` docstring 补契约边界(交付物):
|
|
154
|
+
|
|
155
|
+
```
|
|
156
|
+
注意(#549):写盘目标是 note.filepath——对从磁盘加载的笔记即「就地写回
|
|
157
|
+
加载路径」;就地写不保证文件名随字段变化。改 title/topic/type 的意图请用
|
|
158
|
+
update_note(规范化写:按当前字段现算目标并删除旧文件)。
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
- [ ] **Step 5: 运行确认通过**
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
uv run pytest tests/unit/test_note_path_rules.py tests/integration/test_stale_name_single_file.py -q
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
预期全绿。
|
|
168
|
+
|
|
169
|
+
- [ ] **Step 6: 护栏回归(A9)**
|
|
170
|
+
|
|
171
|
+
```bash
|
|
172
|
+
uv run pytest tests/unit/test_edit.py -q
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
预期全绿(改标题改名、改 type 跨目录不受影响)。
|
|
176
|
+
|
|
177
|
+
- [ ] **Step 7: 快速回归**
|
|
178
|
+
|
|
179
|
+
```bash
|
|
180
|
+
uv run pytest tests/unit -m "not embedding and not slow" -q
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
- [ ] **Step 8: commit**
|
|
184
|
+
|
|
185
|
+
```bash
|
|
186
|
+
git add jfox/models.py jfox/note.py tests/unit/test_note_path_rules.py tests/integration/test_stale_name_single_file.py
|
|
187
|
+
git commit -m "fix(note): 加载笔记钉住真实路径,update_note 规范化写+重钉 pin——消除同 ID 双文件(#549 A1-A3/A9)"
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
---
|
|
191
|
+
|
|
192
|
+
## Task 2: CLI 症状层集成测试(A4–A8)
|
|
193
|
+
|
|
194
|
+
**Files:**
|
|
195
|
+
|
|
196
|
+
- Modify: `tests/integration/test_stale_name_single_file.py`
|
|
197
|
+
|
|
198
|
+
- [ ] **Step 1: 补五个测试类(TDD:先写先跑,应在 Task 1 的实现上直接转绿——若红说明 Task 1 有漏)**
|
|
199
|
+
|
|
200
|
+
```python
|
|
201
|
+
class TestAddBackfill:
|
|
202
|
+
def test_add_link_to_diverged_target_keeps_single_file(self, cli_fast):
|
|
203
|
+
"""A4:add 链接发散名目标 → 单文件 + backlinks 落真实文件"""
|
|
204
|
+
# A = add permanent(标题「回填目标甲」)→ _diverge →
|
|
205
|
+
# B = add「链向 [[回填目标甲]]」→
|
|
206
|
+
# 断言 _files_for(A) 单文件(发散名那份)、A 文件 backlinks 含 B.id
|
|
207
|
+
|
|
208
|
+
class TestEditBackfill:
|
|
209
|
+
def test_edit_add_link_diverged_target_keeps_single_file(self, cli_fast):
|
|
210
|
+
"""A5:edit 新增链接 → 单文件 + backlinks 落位"""
|
|
211
|
+
def test_edit_remove_link_diverged_target_keeps_single_file(self, cli_fast):
|
|
212
|
+
"""A5:edit 移除链接 → backlinks 移除 + 仍单文件"""
|
|
213
|
+
|
|
214
|
+
class TestRebuildBacklinks:
|
|
215
|
+
def test_rebuild_touches_diverged_note_in_place(self, cli_fast):
|
|
216
|
+
"""A6:rebuild --backlinks 触及发散名笔记时单文件"""
|
|
217
|
+
# 造 links/backlinks 必变化:直接改发散文件 frontmatter,给 backlinks 加一个假 id
|
|
218
|
+
# cli_fast.index_rebuild(backlinks=True) →
|
|
219
|
+
# 断言单文件、backlinks 被重算(假 id 消失)
|
|
220
|
+
|
|
221
|
+
class TestShowDelete:
|
|
222
|
+
def test_show_reads_diverged_note(self, cli_fast):
|
|
223
|
+
"""A7:show 发散名笔记 success=true(此前报 Errno 2)"""
|
|
224
|
+
def test_delete_removes_real_file(self, cli_fast):
|
|
225
|
+
"""A7:delete --force 删真实文件(无入链前置)→ glob 为空"""
|
|
226
|
+
|
|
227
|
+
class TestMocMemberBackfill:
|
|
228
|
+
def test_moc_backfill_diverged_member_keeps_single_file(self, temp_kb_registered):
|
|
229
|
+
"""A8:moc 成员回填(python 级 backfill_moc_backlinks)→ 单文件"""
|
|
230
|
+
# 构造 structure Note(或 CLI add --type structure)+ 发散名成员
|
|
231
|
+
# 调 jfox.moc.generate.backfill_moc_backlinks(moc_note, [member_id], cfg)
|
|
232
|
+
# 断言单文件 + backlinks 含 moc.id
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
- [ ] **Step 2: 运行该文件全量**
|
|
236
|
+
|
|
237
|
+
```bash
|
|
238
|
+
uv run pytest tests/integration/test_stale_name_single_file.py -q
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
- [ ] **Step 3: 相关既有集成测试回归**
|
|
242
|
+
|
|
243
|
+
```bash
|
|
244
|
+
uv run pytest tests/integration/test_links_edit_add.py tests/integration/test_index_rebuild_backlinks.py tests/integration/test_edit_roundtrip.py tests/unit/test_delete_backlink_cleanup.py tests/unit/test_note_promote.py -q
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
预期全绿(同族回填/晋升链路未受影响)。
|
|
248
|
+
|
|
249
|
+
- [ ] **Step 4: commit**
|
|
250
|
+
|
|
251
|
+
```bash
|
|
252
|
+
git add tests/integration/test_stale_name_single_file.py
|
|
253
|
+
git commit -m "test(links): 发散名笔记 CLI 症状层集成测试——add/edit/rebuild/show+delete/moc 均单文件(#549 A4-A8)"
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
---
|
|
257
|
+
|
|
258
|
+
## Task 3: CHANGELOG + 注释交付物复核 + 全量回归
|
|
259
|
+
|
|
260
|
+
**Files:**
|
|
261
|
+
|
|
262
|
+
- Modify: `CHANGELOG.md`
|
|
263
|
+
|
|
264
|
+
- [ ] **Step 1: `## [Unreleased]` 的 `### Fixed` 下加条目**
|
|
265
|
+
|
|
266
|
+
```markdown
|
|
267
|
+
- links: 加载的笔记钉住真实磁盘路径——文件名与当前字段分家时,补 backlink / rebuild --backlinks / MOC 成员回填不再写出同 ID 双文件,`show`/`delete` 也能正确读写该笔记;`update_note` 改为显式规范化写并在成功后重钉路径(#549)
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
- [ ] **Step 2: 注释交付物复核(对照 spec §7)**:`filepath` property、`from_markdown`、`update_note` 三处注释齐(两分法、E2b 后果、重钉原因);不齐则补。
|
|
271
|
+
|
|
272
|
+
- [ ] **Step 3: markdownlint**
|
|
273
|
+
|
|
274
|
+
```bash
|
|
275
|
+
npx --yes markdownlint-cli2@0.23.2 "CHANGELOG.md"
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
- [ ] **Step 4: 全量快速回归(本地 CR 前置)**
|
|
279
|
+
|
|
280
|
+
```bash
|
|
281
|
+
uv run pytest tests/ -m "not embedding and not slow" -q
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
- [ ] **Step 5: commit**
|
|
285
|
+
|
|
286
|
+
```bash
|
|
287
|
+
git add CHANGELOG.md
|
|
288
|
+
git commit -m "docs(changelog): #549 同 ID 双文件修复条目"
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
---
|
|
292
|
+
|
|
293
|
+
## 完成标准
|
|
294
|
+
|
|
295
|
+
- A1–A9 全部有对应测试且全绿;U1 留待合并后用户点头执行(spec §5)。
|
|
296
|
+
- 快速套件 `tests/ -m "not embedding and not slow"` 全绿。
|
|
297
|
+
- 分支只含 4 个 commit(spec / 核心修复 / 症状层测试 / changelog),主 checkout 零改动。
|
|
298
|
+
|
|
299
|
+
---
|
|
300
|
+
|
|
301
|
+
## 执行偏差记录(终审补记)
|
|
302
|
+
|
|
303
|
+
1. **测试文件名更名**:spec 中的 `tests/unit/test_note_path_semantics.py` 实际落地为 `test_note_path_rules.py`——#483 命名约束要求避开子串 `semantic`(spec 已同步修订)。
|
|
304
|
+
2. **分支为 6 个 commit 而非 4 个**:Task 1 的 lint fix wave(ruff/black)amend 进核心 commit;第 5 个 commit `a5ed229` 为终审挂账的注释债清理(`redirect.py`、`moc/cli.py`、`test_moc_member_commands.py` 纯注释/docstring——reviewer 指出「from_markdown 不回填 `_filepath`」在修复后已成假命题),第 6 个为本修订。前置事实 3 的「不碰 moc/、redirect.py」原指行为代码,注释债清理经 reviewer 建议纳入。
|
|
305
|
+
3. **plan 的用例骨架微调**:`temp_kb_registered` 实为 `tests/utils/temp_kb.py` 的 context manager(非 fixture),A3-2/A8 按计划备注改用 `use_kb(kb_name)` + python 级 note API 模式。
|