Commit Graph

18 Commits

Author SHA1 Message Date
jared 05437c8d41 Document Forgejo/tea issue workflow
Add docs/issue-workflow.md covering token setup, listing, implementing, and
closing issues via tea on the self-hosted Forgejo tracker, plus a pointer
from CLAUDE.md. Captures the tea token-scope and --user gotchas discovered
while implementing SB Content Plan Phase 1.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 16:25:29 -04:00
jared 553fc7d04a Implement SB Content Plan Phase 1: memory-template skill + note templates
Closes #1–#6 (Forgejo jared/cc-os).

- Reconcile vault-conventions.md to a single authoritative frontmatter schema (#1)
- Add memory-template plugin skill: template-design + new-type-creation (#2)
- Add howto/convention/reference note templates, each dogfooded (#3–#5)
- Patch 4 proof-of-concept notes to the settled schema (#6)

Note: vault note files (templates, patched notes, vault-conventions.md) live in the separate ~/Documents/SecondBrain repo and are committed by its own SessionEnd hook; this commit covers only the cc-os-tracked files (skill + docs).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 16:13:51 -04:00
jared 4a87acc97f Harden SB content + findability plans via round-table review
Key changes:
- Plan B Phase 3: replace on-demand-only framing with queue-and-defer
  pattern (SessionEnd writes candidate queue fast in Python; next
  SessionStart processes it with already-running LLM — no API call,
  no terminal block, one-session lag is acceptable)
- Plan B Phase 3: cut Part B (discrepancy detection) until vault has
  25+ active howto notes
- Plan B Phase 2: fix injection hook name (session_context.py, not
  session_start.py — the latter has no output channel)
- Plan B Phase 1: add generated_at timestamp to vault-index.json
  structure so /memory-find can surface staleness
- Plan B: add silent hook failure risk row to Risks table
- Plan B: update Open Questions to reflect queue-and-defer decisions
- Plan A Layer 1: clarify opt-out framing for inline classification
- Plan A Layer 2: add cross-ref to Plan B Phase 3 invocation decision
- CLAUDE.md: clarify Graphify vault graph vs vault-index.json roles

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-28 16:51:43 -04:00
jared 98f8290631 Refine memory-project onboarding: type-based exclude taxonomy + 16k-context model
Assessment now reasons about ignorable content by category (fetched
deps, build output, caches, tooling/AI-assistant dirs, lockfiles, bulk
data, binaries) so it generalizes across stacks. Onboarding switches to
the config.yaml model qwen25-coder-7b-16k: inference is GPU-bound at
~65 tok/s, so the speed lever is fewer chunks per doc via a larger
context window (GRAPHIFY_OLLAMA_NUM_CTX does not propagate through the
OpenAI-compatible path; context must come from the modelfile). Extends
ADR-017.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 10:57:06 -04:00
jared 72397a00b8 Add assessment-first onboarding to memory-project skill (ADR-017)
Onboarding ran a bare `graphify extract`, but graphify does not honor
.gitignore — it needs its own .graphifyignore. Without one, onboarding
viking-warrior-training-log walked node_modules/ (5,858 files) and
routed its non-code files through the Ollama doc pass; the run was
killed after ~1 hour with no graph.json.

Onboarding is now assessment-first: survey the repo, generate a
per-project .graphifyignore (the ignore set varies by stack), confirm
with the user, then extract. Records the gotcha and decision in ADR-017.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 09:17:33 -04:00
jared 7ede69ec85 Add vault_sync.py hook; complete Step 5b and 2e pilot
Step 5b (Obsidian vault -> VPS git sync) is now fully done: the vault is a
private Forgejo repo (SecondBrain) and vault_sync.py auto-commits+pushes it on
SessionEnd, mirroring memsearch_sync.py. Step 2e pilot done (llf-schema project
graph onboarded). Step 2d closed (live vault graph is the baseline). Docs and
implementation status updated.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-15 15:23:32 -04:00
jared 48e4d77795 Source memory plugin in git; port hooks to Python; archive change
- Move memory plugin source from ~/.claude/plugins/memory (untracked) into cc-os/plugins/memory under git
- Port four bash hooks to Python deep-module architecture (config.py, hook_io.py, session_state.py + thin entry points)
- Split memsearch auto-commit+push into dedicated memsearch_sync.py SessionEnd hook (relocation of ADR-015, behavior preserved)
- Cutover via symlink + settings.json rewrite; fresh-session test verified all hooks fire
- Add ADR-016; update CLAUDE.md, build plan, and fix stale bash-hook/source-path references
- Sync three new-capability delta specs into openspec/specs; archive change as 2026-06-12-memory-plugin-source-and-port

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-12 12:42:05 -04:00
jared 53a3c4c2c2 Document ADR-015: memsearch episodic sync and resolved commingling design
memsearch episodic memory (Step 4) is now live and synced via git. Record
the final sync design: dedicated private Forgejo repo at
forgejo.swansoncloud.com/jared/memsearch, auto-commit+push via cc-os
session-end hook, and the resolved decision to use a single global
cross-client store (not per-client repos). Commingling is an explicit
design choice, not a tolerated risk. Update build plan to split Step 5 into
5a (episodic sync, done) and 5b (vault sync, remaining). Update CLAUDE.md
implementation status, USER-GUIDE to reflect memsearch now operational, and
add full ADR-015 decision record with rationale and alternatives.
2026-06-09 15:11:12 -04:00
jared accae31fba Archive memsearch-episodic-layer change
- Sync memsearch-episodic delta spec to openspec/specs/memsearch-episodic/spec.md
- Update README.md: memsearch now active alongside Graphify
- Move change to openspec/changes/archive/2026-06-09-memsearch-episodic-layer/

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-09 14:35:50 -04:00
jared 61a33f137b Document vault conventions completion and migration scaffolding seeding
Step 1 (vault conventions initialization) is now complete: vault-
conventions.md exists at ~/Documents/SecondBrain/ (canonical naming
resolved), all 6 fixture notes are seeded for Graphify extraction
testing, and 14 handbook + design notes have been migrated to the
vault as first-class migration scaffolding per the empirical finding
locked 2026-06-05. Update CLAUDE.md and build-plan.md to reflect
completion and implementation status.
2026-06-09 09:41:27 -04:00
jared 5834036370 Document memory-project skill completion and vault/project query refactor
Complete the memory-project skill implementation. Rename memory-query to
memory-vault, split project graph queries into memory-project skill, mark
memory-project DONE in build plan, and clarify session-context.sh scope
(now project graph path only — vault injection removed). Update user guide
with examples of both vault and project graph query workflows.
2026-06-08 13:24:53 -04:00
jared 2317a087ce Update build plan status and CLAUDE.md with implementation progress
- Mark Steps 2a, 2b, 3, 6 complete; add implementation status notes
- Add "Implemented Components" section with progressive disclosure to CLAUDE.md
- Document installed plugin, Graphify, and vault setup as working baseline
- Update last-updated date to 2026-06-08
- Add standing instruction to keep CLAUDE.md current as implementation progresses

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-08 09:42:04 -04:00
jared f914ab4878 Complete memory plugin implementation — hooks, skills, and graph-connectivity findings
- Memory plugin installed globally at ~/.claude/plugins/memory/ with three hooks:
  session-start.sh (background graphify rebuild), session-context.sh (UserPromptSubmit
  vault injection), and post-tool-use-write.sh (session log + dirty-file tracking)
- Root cause fixed: SessionStart has last-write-wins semantics (undocumented); moved
  vault context injection to UserPromptSubmit which concatenates multiple hooks
- Verified working: vault graph map (366 nodes, 346 edges) injected into every session
- ADR-014: Graphify is a structure extractor, not a topic clusterer — hub notes +
  wikilinks must be author-provided; migration scaffolding is now a first-class deliverable
- Graph connectivity findings documented in 07-graph-connectivity-findings.md
- Archive 2026-06-05-add-memory-plugin change; sync memory-plugin-hooks and
  memory-plugin-skills to stable specs
- Add graphify-out/ to .gitignore (build artifact)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-05 16:39:49 -04:00
jared 77febc8aca Add incremental-migration + reference-benchmark change (ADR-013)
Invert the build order to build-first / migrate-incrementally and
redesign Step 2c as a Claude reference-set benchmark.

- ADR-013 records the build-order inversion; CLAUDE.md locked-decisions
  pointer updated
- New benchmark deliverable under docs/memory-system/benchmark/:
  shared extraction spec + copy/paste dispatch prompt + reference-outputs
- Runbook (05): Step 1 = fixture selection with bulk migration deferred;
  Step 2c = Claude-tiers-only reference set, quality-only metrics, Opus
  as gold-standard rubric (produces references, not a model choice)
- 04-build-plan reconciled to the new build order and benchmark design
- Sync incremental-migration + reference-extraction-benchmark specs into
  openspec/specs/; archive the completed change

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-04 11:17:32 -04:00
jared 235fd45ff7 Update design docs and add implementation runbook per ADR-011/012
Update CLAUDE.md: clarify the knowledge layer now specifies the
~/Documents/SecondBrain vault, six-facet taxonomy, and reference the
locked decisions (ADR-011, ADR-012).

Update 02-system-design.md: align with faceted taxonomy (type/
client/project/domain/tool/convention/ plus scope/), express hierarchy
via hubs + wikilinks + Graphify edges rather than nested paths, name
the vault explicitly, update build-plan timestamp.

Add 05-implementation-process.md: concrete build runbook integrating the
locked decisions — seven steps bottom-up from vault migration through
plugin packaging, with the Graphify + Ollama model benchmark (Step 2c)
marked as the critical gate. Open questions deferred or defaulted; most
are non-blocking.

Design milestone: tag taxonomy and vault location locked.
2026-06-04 09:35:43 -04:00
jared aa1ffe30fe Remove git commands from permitted direct tool uses
Under the new orchestrator-subagent pattern, version control is
delegated — the orchestrator (Claude) dispatches git operations
to subagents rather than calling them directly. Update the allowed
operations list to reflect this constraint.
2026-06-04 08:27:00 -04:00
jared 75a8a94192 Add Session Orchestration section to CLAUDE.md
Establishes a tool-based delegation rule: all file I/O and shell
commands go via subagents; only git commands, Skill invocations, and
conversational responses are permitted at orchestrator level. Explicit
stop-and-ask rule removes wiggle room for self-authorized exceptions.
Includes model routing table covering the actual work types in this repo.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-04 08:24:44 -04:00
jared 342de3cfa0 Add OpenSpec workflow and Claude Code guidance
Initialize the repository with configuration for spec-driven change
management via OpenSpec. Add CLAUDE.md to document the project's
purpose (documentation-only design phase for a personal memory system),
directory layout, current architecture, and repository conventions
including provenance discipline and ADR practices. Add .gitignore to
exclude local AI-assistant skill mirror directories (.claude/,
.codex/, .pi/) which are kept in sync locally but not versioned.
2026-06-04 07:59:22 -04:00