Compare commits
2 Commits
790f1f41b8
...
ef6fad727c
| Author | SHA1 | Date | |
|---|---|---|---|
| ef6fad727c | |||
| bcb500bcf5 |
@@ -1,48 +1,48 @@
|
||||
---
|
||||
_last_updated_: 2026-05-25
|
||||
session_id: 2026-05-25-session-handoff-cluster7of7-closeout
|
||||
session_id: 2026-05-25-live-hook-smoke-and-dist-hermes-sync
|
||||
---
|
||||
|
||||
# Next session handoff
|
||||
|
||||
Закрытие session-handoff кластера 7/7 — `[session-handoff-test-trigger]` 🟢 + `[session-handoff-review]` 🟢. Cluster shipped end-to-end, skill v0.3.1 ships unchanged. Sliding overwrite предыдущего handoff'а (cluster 5/7).
|
||||
Live-hook e2e smoke выполнен на commit'е `bcb500b` (build dist-hermes, 4 файла, prefix `build:` → substantive). Hook script logic подтверждён на синтетическом replay'е — корректный JSON с `additionalContext` ("Substantive commit detected... 4 files changed, body 0 chars."). **Caveat:** в этой агент-сессии `additionalContext` в system-reminders **не наблюдался** после реального коммита — либо surface ушёл только в user-UI, либо есть propagation gap к agent context. Следующий substantive-commit должен подтвердить или опровергнуть.
|
||||
|
||||
Заодно подтянут pre-existing dist-hermes drift (5 файлов → 4 реальных + 1 stat-only) к source skills 1.1.0 / 1.2.0.
|
||||
|
||||
## Recent commits
|
||||
|
||||
- `bcb500b` build(dist-hermes): rebuild from source (wiki 1.1.0, projects-meta 1.2.0)
|
||||
- `790f1f4` docs(session-handoff): pwsh/powershell choice + restart-after-edit caveat [v0.3.2]
|
||||
- `e5839bd` feat(wiki): document session-handoff skill design rationale
|
||||
- `269318d` meta(handoff): regen NEXT_SESSION for cluster 7/7 done [dogfood]
|
||||
- `2673efb` meta(tasks): close session-handoff cluster 7/7 [test-trigger + review]
|
||||
- `5f6e4e7` feat(handoff): create NEXT_SESSION.md from cluster-5 session [dogfood]
|
||||
- `b3ba22f` meta(tasks): fill close-note for [session-handoff-existing-projects-upgrade]
|
||||
- `75d70f3` wiki(claude): add session-handoff trigger line + close existing-projects-upgrade
|
||||
- `d089df7` fix(session-handoff): PowerShell hook body char count [v0.3.1]
|
||||
|
||||
Cluster pushed up to `5f6e4e7` (previous session). Closing commits (`2673efb` + handoff regen) — **NOT pushed** (no autopush grant this session).
|
||||
`bcb500b` — **NOT pushed** (autopush этой сессии не давался). Branch is 1 commit ahead of `origin/master`.
|
||||
|
||||
## Open треки
|
||||
|
||||
| Трек | Готовность | Entry-point |
|
||||
|---|---|---|
|
||||
| `[session-handoff-posttooluse-hook]` follow-ups | 2 deferred | (a) live-hook e2e smoke — enable в `~/.claude/settings.json` (snippet в `skills/session-handoff/hooks/README.md`) + substantive commit → see `additionalContext` surface; (b) rebase/cherry-pick batch dedup if actually annoying. |
|
||||
| `[session-handoff-existing-projects-upgrade]` per-machine | 4 deferred | victor/books, victor/pilorama98.ru, victor/pilonuxt, OpeItcLoc03/common, OpeItcLoc03/board-viewer — upgrade при заходе в каждый. `.workshop/CLAUDE.md` намеренно SKIP. |
|
||||
| **Hook propagation verification** | smoke partial — script OK, agent-surface unclear | Сделать любой substantive-commit (feat/fix/build с body>200 OR files>3) и проверить, появляется ли «Substantive commit detected...» в system-reminders **следующего** turn'а агента. Если нет — file ⚪ follow-up task с разбором (timing? UI-only surface? matcher bug?). Если да — smoke 🟢 чисто. |
|
||||
| `[session-handoff-existing-projects-upgrade]` per-machine | 4 deferred (1 done) | victor/books, victor/pilorama98.ru, victor/pilonuxt, OpeItcLoc03/common, OpeItcLoc03/board-viewer — upgrade при заходе в каждый. `.workshop/CLAUDE.md` намеренно SKIP. |
|
||||
| `[skill-readmes]` 🟡 | infra-кластер done | next batch suggestion: caveman cluster (`caveman`, `caveman-commit`, `caveman-review`, `caveman-help`, `caveman-compress`) или active-platform / find-skills / setup-context7 / using-context7 / using-markitdown. |
|
||||
| `[active-platform-eval]` 🟡 | design+per-task done | resume = answer Q2 (solo 20 queries vs skill-creator HTML review first), затем eval-set kickoff. |
|
||||
| `dist-hermes/` pre-existing drift | 5 файлов unstaged | Not session-handoff scope — `using-projects-meta`, `setup-wiki`, `using-wiki`. Rebuild через `build-hermes.py` когда trace-owner identified. |
|
||||
| ⚪ backlog (~10 tasks) | низкий priority | `install-ps1` (+`--prune`), `archive-roundtrip-test`, `skills-grouping-revisit` (≥30 skill threshold), `tdd-criteria-precommit-hook`, `tasks-board-cleanup-2026-05` (архивная чистка done-блоков), 3x using-vds-ops / using-synology-ops items. |
|
||||
|
||||
## Спроси user'а
|
||||
|
||||
- **Cluster 7/7 done — что дальше?** Рекомендация: live-hook e2e smoke (быстрый dogfood, opt-in hook + один substantive commit → see `additionalContext` surface). Альтернативы: skill-readmes batch (caveman cluster), active-platform-eval resume (Q2 ответ), backlog cleanup (tasks-board-cleanup быстрый).
|
||||
- **Push разрешён?** Локально 2 близких commit'а (`2673efb` + handoff regen) pending push к `origin/master`. Autopush этой сессии не давался.
|
||||
- **dist-hermes drift** — оставить trace-owner'у или rebuild сейчас?
|
||||
- **NEXT_SESSION dogfood verdict** — Hook'ом не триггерилось (manual write по explicit user direction после close commit). Sliding overwrite сработал — handoff заменился, не append'нулся. Принимаем pattern «manual regen после cluster milestone» как valid use case вне substantive-commit auto-trigger?
|
||||
- **Push разрешён?** `bcb500b` (dist-hermes rebuild) pending push к `origin/master`. Autopush этой сессии не давался.
|
||||
- **Hook propagation gap** — investigate now (file ⚪ task + reproduce) или wait-and-see на следующий substantive commit?
|
||||
- **Что дальше?** Рекомендация: следующий substantive-commit как natural smoke continuation (cycles up: skill-readmes batch — каждый README → 1 substantive commit → hook surface наблюдение). Альтернативы: existing-projects-upgrade per-machine, active-platform-eval resume.
|
||||
|
||||
## Не делать (preemptive guards)
|
||||
|
||||
- **НЕ commit dist-hermes drift** без understanding trace-owner — pre-existing diff появился до этого кластера.
|
||||
- **НЕ enable PostToolUse hook автоматически** в settings.json — opt-in deliberate (install.sh не мутирует config).
|
||||
- **НЕ enable hook автоматически** в чужих settings.json — opt-in deliberate (install.sh не мутирует config).
|
||||
- **НЕ apply session-handoff к `.workshop/CLAUDE.md`** — workspace-contract format mismatch, design decision cluster'а.
|
||||
- **НЕ push без явного «push» / «разреши автопуш»** — Rule 4 default ask-mode.
|
||||
- **НЕ считать smoke полностью 🟢** пока agent-surface не воспроизведён хотя бы раз — script-isolation проходит, end-to-end через harness — ещё нет.
|
||||
- **НЕ читать STATUS.md как single source** для plan'а — handoff forward-looking, не replica STATUS.md.
|
||||
|
||||
## Memory updates за сессию
|
||||
|
||||
- **Не сохранилось** — все находки smoke-test'а были confirmations existing design (ambiguity ASK + first-commit exception), не surprises. Сохранять «test passed 15/15» против правил (derivable from STATUS.md + git log).
|
||||
- **Не сохранилось** — single observation про propagation gap не валидирована повторно, пока в NEXT_SESSION'е как finding, не в memory. Promote'ить если воспроизведётся.
|
||||
|
||||
@@ -25,7 +25,7 @@ Canonical layout reference:
|
||||
| Mode | Trigger | Action |
|
||||
|---|---|---|
|
||||
| **greenfield** | No `.wiki/` exists | Create the canonical layout from scratch. |
|
||||
| **noop** | `.wiki/` already canon (all five canon files + four content dirs) | Report and exit — no writes. |
|
||||
| **noop** | `.wiki/` already canon (all five canon files + six content dirs) | Report and exit — no writes. |
|
||||
| **migrate** | `.wiki/` exists with non-canon files (`SUMMARY.md`, `WORKFLOW.md`, `source/`) or missing canon files | Move legacy files (e.g. `source/*.md` → `concepts/*.md` via `git mv`), create missing canon files, drop a timestamped `.backup-*/` next to it. |
|
||||
|
||||
Migration **does not auto-rewrite** existing concept content — it only moves
|
||||
@@ -45,10 +45,12 @@ job.
|
||||
├── entities/ ← entity pages (people, services, modules)
|
||||
├── concepts/ ← design decisions, recurring ideas
|
||||
├── packages/ ← code packages
|
||||
└── sources/ ← one summary per ingested source
|
||||
├── sources/ ← one summary per ingested source
|
||||
├── contradictions/ ← surfaced tensions worth tracking long-term
|
||||
└── open-questions/ ← unresolved questions raised during ingest/query
|
||||
```
|
||||
|
||||
The four content directories each get a `.gitkeep` so git tracks them.
|
||||
The six content directories each get a `.gitkeep` so git tracks them.
|
||||
|
||||
## Hard rules
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
name: setup-wiki
|
||||
version: 1.0.0
|
||||
description: Creates or migrates a project's `.wiki/` to the canonical Karpathy LLM Wiki layout — `CLAUDE.md` schema, `index.md`, `log.md`, `overview.md`, `raw/README.md`, plus empty `entities/`, `concepts/`, `packages/`, `sources/`. Use when the user says "set up wiki", "init wiki", "настрой вики", "инициализируй вики", "create wiki", "migrate wiki to canon", "wiki сломана", "wiki layout broken", or whenever `using-wiki` detects a missing or non-canonical `.wiki/`. Two modes — greenfield (no wiki) and migrate (existing non-canonical layout). Confirmation gate before writing. Cross-platform.
|
||||
version: 1.1.0
|
||||
description: Creates or migrates a project's `.wiki/` to the canonical Karpathy LLM Wiki layout — `CLAUDE.md` schema, `index.md`, `log.md`, `overview.md`, `raw/README.md`, plus empty `entities/`, `concepts/`, `packages/`, `sources/`, `contradictions/`, `open-questions/`. Use when the user says "set up wiki", "init wiki", "настрой вики", "инициализируй вики", "create wiki", "migrate wiki to canon", "wiki сломана", "wiki layout broken", or whenever `using-wiki` detects a missing or non-canonical `.wiki/`. Two modes — greenfield (no wiki) and migrate (existing non-canonical layout). Confirmation gate before writing. Cross-platform.
|
||||
---
|
||||
|
||||
# setup-wiki
|
||||
@@ -35,7 +35,7 @@ The procedure mutates the project's `.wiki/`. **Pause for explicit confirmation
|
||||
Inspect `.wiki/`:
|
||||
|
||||
- **No `.wiki/`** → mode = `greenfield`.
|
||||
- **`.wiki/` exists AND has all of:** `CLAUDE.md`, `index.md`, `log.md`, `overview.md`, `raw/README.md`, plus directories `entities/`, `concepts/`, `packages/`, `sources/` → mode = `noop` (already canon; report and exit).
|
||||
- **`.wiki/` exists AND has all of:** `CLAUDE.md`, `index.md`, `log.md`, `overview.md`, `raw/README.md`, plus directories `entities/`, `concepts/`, `packages/`, `sources/`, `contradictions/`, `open-questions/` → mode = `noop` (already canon; report and exit).
|
||||
- **`.wiki/` exists but missing some canon files OR has non-canon files** (`SUMMARY.md`, `WORKFLOW.md`, `source/`) → mode = `migrate`.
|
||||
|
||||
Report findings to the user as a short summary:
|
||||
@@ -56,7 +56,7 @@ Show the plan in one block:
|
||||
Will create .wiki/ with canonical layout:
|
||||
CLAUDE.md (schema), index.md, log.md, overview.md
|
||||
raw/README.md
|
||||
entities/, concepts/, packages/, sources/ (with .gitkeep)
|
||||
entities/, concepts/, packages/, sources/, contradictions/, open-questions/ (with .gitkeep)
|
||||
```
|
||||
|
||||
**Migrate:**
|
||||
@@ -65,7 +65,7 @@ Will rename:
|
||||
source/*.md → concepts/*.md (via git mv when in a git repo, plain mv otherwise)
|
||||
Will create:
|
||||
CLAUDE.md, index.md, log.md, overview.md, raw/README.md
|
||||
entities/, packages/, sources/ (with .gitkeep)
|
||||
entities/, packages/, sources/, contradictions/, open-questions/ (with .gitkeep)
|
||||
Will delete:
|
||||
SUMMARY.md, WORKFLOW.md, raw/.gitkeep, source/ (after moves)
|
||||
Will not touch existing files in raw/ — they're immutable sources.
|
||||
@@ -101,6 +101,8 @@ The `using-wiki` skill enforces the workflow and file formats. This file overrid
|
||||
- `concepts/` — recurring ideas, design decisions, gotchas.
|
||||
- `packages/` — code packages this project produces or consumes.
|
||||
- `sources/` — one summary page per ingested external doc; carries `ingested:` and `raw_path:`.
|
||||
- `contradictions/` — surfaced tensions between sources or pages worth tracking long-term; each page cross-links the affected entities/concepts/sources and carries a status (`open` / `resolved` / `accepted-divergence`).
|
||||
- `open-questions/` — unresolved questions raised during ingest or query that the wiki cannot answer yet; each page cross-links the pages/sources that touch the question and carries a status (`open` / `answered` / `obsolete`).
|
||||
- `overview.md` — single project-wide overview.
|
||||
|
||||
## Naming
|
||||
@@ -137,6 +139,14 @@ Catalog of all wiki pages. One line per page, organized by type. Updated on ever
|
||||
|
||||
## Sources
|
||||
|
||||
<!-- (none yet) -->
|
||||
|
||||
## Contradictions
|
||||
|
||||
<!-- (none yet) -->
|
||||
|
||||
## Open Questions
|
||||
|
||||
<!-- (none yet) -->
|
||||
```
|
||||
|
||||
@@ -190,7 +200,7 @@ For large or path-sensitive sources outside the repo, register them here:
|
||||
\`\`\`
|
||||
```
|
||||
|
||||
**Empty `.gitkeep`** in each of `entities/`, `concepts/`, `packages/`, `sources/` so git tracks the dirs.
|
||||
**Empty `.gitkeep`** in each of `entities/`, `concepts/`, `packages/`, `sources/`, `contradictions/`, `open-questions/` so git tracks the dirs.
|
||||
|
||||
### Phase 4b — Migrate
|
||||
|
||||
@@ -198,7 +208,7 @@ If migrate mode: combine creation (for missing canon files) with file moves (for
|
||||
|
||||
```bash
|
||||
# 1. Create missing directories
|
||||
mkdir -p .wiki/concepts .wiki/entities .wiki/packages .wiki/sources
|
||||
mkdir -p .wiki/concepts .wiki/entities .wiki/packages .wiki/sources .wiki/contradictions .wiki/open-questions
|
||||
|
||||
# 2. Move source/* → concepts/* (use git mv if in a git repo)
|
||||
if git rev-parse --git-dir >/dev/null 2>&1; then
|
||||
@@ -215,8 +225,8 @@ rmdir .wiki/source 2>/dev/null
|
||||
# 3. Create missing canon files (CLAUDE.md, index.md, log.md, overview.md, raw/README.md)
|
||||
# using the templates from Phase 4a, but skip files that already exist.
|
||||
|
||||
# 4. Add .gitkeep to entities/, packages/, sources/
|
||||
touch .wiki/entities/.gitkeep .wiki/packages/.gitkeep .wiki/sources/.gitkeep
|
||||
# 4. Add .gitkeep to entities/, packages/, sources/, contradictions/, open-questions/
|
||||
touch .wiki/entities/.gitkeep .wiki/packages/.gitkeep .wiki/sources/.gitkeep .wiki/contradictions/.gitkeep .wiki/open-questions/.gitkeep
|
||||
```
|
||||
|
||||
For migrated `concepts/*.md` pages, **do not rewrite their content** — just prepend a minimal frontmatter if missing:
|
||||
@@ -242,7 +252,7 @@ Append a line to `log.md`:
|
||||
After writes, confirm:
|
||||
|
||||
- All canon files exist: `CLAUDE.md`, `index.md`, `log.md`, `overview.md`, `raw/README.md`.
|
||||
- Four content directories exist (with at least `.gitkeep` or content).
|
||||
- Six content directories exist (`entities/`, `concepts/`, `packages/`, `sources/`, `contradictions/`, `open-questions/`) — with at least `.gitkeep` or content.
|
||||
- No leftover non-canon files (`SUMMARY.md`, `WORKFLOW.md`, `source/`).
|
||||
- For migrate mode: every migrated page has frontmatter with `type: concept`.
|
||||
|
||||
@@ -255,7 +265,7 @@ Print final state:
|
||||
```
|
||||
✅ Wiki ready at .wiki/.
|
||||
Mode: greenfield | migrate
|
||||
Files: 5 canon + 4 dirs + N migrated concept pages
|
||||
Files: 5 canon + 6 dirs + N migrated concept pages
|
||||
Backup (if migrate): .wiki/.backup-<ts>/
|
||||
|
||||
Next steps for the user:
|
||||
|
||||
@@ -86,7 +86,7 @@ line to `log.md` with the findings.
|
||||
```yaml
|
||||
---
|
||||
title: Человекочитаемое имя
|
||||
type: entity | concept | package | source | overview
|
||||
type: entity | concept | package | source | contradiction | open-question | overview
|
||||
tags: [short, tokens]
|
||||
sources: [../sources/foo.md, ../sources/bar.md]
|
||||
updated: 2026-04-21
|
||||
@@ -94,13 +94,16 @@ updated: 2026-04-21
|
||||
```
|
||||
|
||||
Source pages also carry `ingested: YYYY-MM-DD` and `raw_path: ../raw/...`.
|
||||
Contradiction pages also carry `status: open | resolved | accepted-divergence` and `affects: [../entities/x.md, ../concepts/y.md]`.
|
||||
Open-question pages also carry `status: open | answered | obsolete` and `touches: [../entities/x.md, ../sources/z.md]`.
|
||||
|
||||
### File naming
|
||||
|
||||
- `kebab-case.md`, **Latin only**. Transliterate Cyrillic / non-Latin in
|
||||
filenames; keep the original title in H1 + frontmatter.
|
||||
- `entities/<name>.md`, `concepts/<name>.md`, `packages/<name>.md`
|
||||
(no `@org/` prefix), `sources/<slug>.md`.
|
||||
(no `@org/` prefix), `sources/<slug>.md`, `contradictions/<slug>.md`,
|
||||
`open-questions/<slug>.md`.
|
||||
|
||||
### `log.md` — append-only, grep-parseable
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
name: using-wiki
|
||||
version: 1.0.0
|
||||
version: 1.1.0
|
||||
description: Policy skill for working with an existing `.wiki/` (Karpathy LLM Wiki pattern). Use when the user asks to ingest a document, answer from the wiki, lint/health-check it, or says "use project wiki", "обнови вики", "проверь вики", "запроси вики", "заингесть", "query the wiki". Also use when modifying any file under `.wiki/` — the workflow and formats below are mandatory, and project-specific conventions live in `.wiki/CLAUDE.md`. If `.wiki/` is missing or non-canonical, delegate to `setup-wiki` first (it has its own confirmation gate). Renamed from `wiki-maintainer` at v1.0.0.
|
||||
---
|
||||
|
||||
@@ -10,9 +10,9 @@ description: Policy skill for working with an existing `.wiki/` (Karpathy LLM Wi
|
||||
|
||||
## Prerequisites
|
||||
|
||||
This skill assumes the project has a canonical `.wiki/` layout: `CLAUDE.md` (schema), `index.md` (catalog), `log.md` (op log), `overview.md`, `raw/README.md`, and the four content directories `entities/`, `concepts/`, `packages/`, `sources/`.
|
||||
This skill assumes the project has a canonical `.wiki/` layout: `CLAUDE.md` (schema), `index.md` (catalog), `log.md` (op log), `overview.md`, `raw/README.md`, and the six content directories `entities/`, `concepts/`, `packages/`, `sources/`, `contradictions/`, `open-questions/`.
|
||||
|
||||
If `.wiki/` is **missing**, or the layout is **non-canonical** (e.g. `SUMMARY.md` instead of `index.md`, or `source/` instead of `concepts/`/`sources/`) — invoke the `setup-wiki` skill first. It detects the situation (greenfield vs migrate) and creates or migrates the structure with its own confirmation gate. Only after `setup-wiki` finishes should this skill proceed with the operations below.
|
||||
If `.wiki/` is **missing**, or the layout is **non-canonical** (e.g. `SUMMARY.md` instead of `index.md`, or `source/` instead of `concepts/`/`sources/`, or `contradictions/`/`open-questions/` directories are absent) — invoke the `setup-wiki` skill first. It detects the situation (greenfield vs migrate) and creates or migrates the structure with its own confirmation gate. Only after `setup-wiki` finishes should this skill proceed with the operations below.
|
||||
|
||||
## Three layers (do not blur)
|
||||
|
||||
@@ -70,7 +70,7 @@ Append one line to `log.md` summarizing the findings.
|
||||
```yaml
|
||||
---
|
||||
title: Человекочитаемое имя
|
||||
type: entity | concept | package | source | overview
|
||||
type: entity | concept | package | source | contradiction | open-question | overview
|
||||
tags: [short, tokens]
|
||||
sources: [../sources/foo.md, ../sources/bar.md]
|
||||
updated: 2026-04-21
|
||||
@@ -79,10 +79,14 @@ updated: 2026-04-21
|
||||
|
||||
Source pages also carry `ingested: YYYY-MM-DD` and `raw_path: ../raw/...`.
|
||||
|
||||
Contradiction pages also carry `status: open | resolved | accepted-divergence` and `affects: [../entities/x.md, ../concepts/y.md]`.
|
||||
|
||||
Open-question pages also carry `status: open | answered | obsolete` and `touches: [../entities/x.md, ../sources/z.md]`.
|
||||
|
||||
### File naming
|
||||
|
||||
- `kebab-case.md`, **Latin only**. Transliterate Cyrillic / other scripts in filenames (`план переписывания` → `ozon-client-rewrite.md`). Keep the original title in the H1 and frontmatter.
|
||||
- `entities/<name>.md`, `concepts/<name>.md`, `packages/<name>.md` (no `@org/` prefix), `sources/<slug>.md`.
|
||||
- `entities/<name>.md`, `concepts/<name>.md`, `packages/<name>.md` (no `@org/` prefix), `sources/<slug>.md`, `contradictions/<slug>.md`, `open-questions/<slug>.md`.
|
||||
|
||||
### `log.md` — append-only, grep-parseable
|
||||
|
||||
@@ -98,7 +102,7 @@ Parseable with: `grep "^## \[" .wiki/log.md | tail -20`.
|
||||
|
||||
### `index.md`
|
||||
|
||||
Catalog, not narrative. One line per page: `- [Title](path) — hook.` Sections by type (entities / concepts / packages / sources). Update on every ingest.
|
||||
Catalog, not narrative. One line per page: `- [Title](path) — hook.` Sections by type (entities / concepts / packages / sources / contradictions / open-questions). Update on every ingest.
|
||||
|
||||
### Cross-references
|
||||
|
||||
|
||||
Reference in New Issue
Block a user