From d10a05b0db067eee59f706b99779d828f990d96e Mon Sep 17 00:00:00 2001 From: graphlemon Date: Thu, 13 Aug 2026 15:48:46 +0800 Subject: [PATCH] graphlemon: auto-commit uncommitted changes for 7687a053-f60f-48a4-8c44-a7e518430cd7-main-checkout-drift --- .claude/agent-memory/planner/MEMORY.md | 1 + .claude/agent-memory/planner/project_skills_detail_content_bug_already_fixed.md | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 0 deletions(-) create mode 100644 .claude/agent-memory/planner/project_skills_detail_content_bug_already_fixed.md diff --git a/.claude/agent-memory/planner/MEMORY.md b/.claude/agent-memory/planner/MEMORY.md index e0b8b19..cbac6ad 100644 --- a/.claude/agent-memory/planner/MEMORY.md +++ b/.claude/agent-memory/planner/MEMORY.md @@ -7,3 +7,4 @@ - [run-history click → missing run detail page](project_run_history_click_missing_detail_page.md) — gc_runs_list click only switches task selector, no #/runs/:run_id route exists (documented trade-off, not a bug regression); DAG-panel+log-viewer funcs are run-object-generic and reusable verbatim; backend needs one new by-run_id query since _work_nodes_for_run already exists keyed by run_id - [nav current-project-context PRD: consistent](project_nav_current_project_context_prd.md) — reviewed 2026-08-06, no contradictions; FR-5's "query-string parsing fix" is actually an add (render() has no query-string parsing today, only hash-path regex) — flag as accuracy issue at SDD stage, not a PRD contradiction - [deploy_stage.py ConcurrentDeploymentError PRD: consistent](project_deploy_stage_concurrent_conflict_prd.md) — reviewed 2026-08-07, no contradictions; all facts (staged→candidate_starting transition, ux_deployment_active terminal set) verified against code +- [skills detail-content bug: already fixed](project_skills_detail_content_bug_already_fixed.md) — get_skill_content/route/panel/tests all present 2026-08-13; only unverified is git commit/Validator status, not missing code diff --git a/.claude/agent-memory/planner/project_skills_detail_content_bug_already_fixed.md b/.claude/agent-memory/planner/project_skills_detail_content_bug_already_fixed.md new file mode 100644 index 0000000..49314f4 --- /dev/null +++ b/.claude/agent-memory/planner/project_skills_detail_content_bug_already_fixed.md @@ -0,0 +1,34 @@ +--- +name: skills-detail-content-bug-already-fixed +description: The #/skills/:id/audit page "no real SKILL.md content shown" bug is already fully implemented end-to-end as of 2026-08-13 — verify before replanning as open +metadata: + type: project +--- + +As of 2026-08-13, the goal "修复 #/skills 页面点击某个 skill 后不显示该 skill 真实内容的 bug" is +already fully implemented on disk, not open: + +- `src/skill_query.py::get_skill_content()` + `SkillContentMissingError` — reads + `skills//SKILL.md` via `skill_update._skill_file_path()`, with two-layer path-traversal + protection (realpath + `os.path.commonpath` containment check against `skills/`), and lists + sibling `references/`/`templates/`/`scripts` files as `support_files`. +- `src/backend_server.py::_handle_skill_content()` — `GET /api/skills/:skill_id/content` route, + wired into the dispatcher via `_SKILLS_PREFIX` + `.endswith("/content")`. +- `frontend/app.js::mountSkillAuditLog()` — new "Skill 内容" `
` panel, + rendered *alongside* (not replacing) the existing "迭代记录" iteration-history panel, fetched + independently. Uses plain `
` + `escapeHtml`, same convention as
+  `v_artifact_browser` — no markdown/highlight lib.
+- Tests: `src/test_skill_query.py` (7 cases incl. two path-traversal-rejection cases) and
+  `src/test_backend_server.py` (3 cases at ~line 1710-1722).
+
+Origin: a prior self-hosted graphlemon run, `.graphlemon/runs/7fc3a7a3-ebe3-48ae-97de-a98f7f3c9d35/`
+(task `wa4wewx1g`), whose `test_report.md` describes this exact fix and says it was **"left
+uncommitted for Validator review"**. The files on disk already contain the full change when read
+directly — but git commit/Validator-approval status was not independently re-verified in this
+session (no Bash tool available to this agent). Before treating this as fully closed, check
+`git log`/`git status` on `src/skill_query.py`, `src/backend_server.py`, `frontend/app.js` to
+confirm the change actually landed on the tracked branch rather than sitting as an uncommitted
+worktree diff.
+
+**How to apply:** if this goal resurfaces, re-read the three files above first — do not replan a
+fresh implementation. If still open, the only gap is likely commit/merge status, not missing code.
--
libgit2 0.21.4