Milestone v1.2: Shared-Context Tracking & Curation#20
Merged
Conversation
…inst quote/backslash paths Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
… errors Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Patch bump marking the develop-preview integration set (4 bug fixes). Version is read from package.json by the CLI; release-tag/install-doc references are left at 1.2.0-beta until an actual release/1.2.1-beta tag is cut. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…e-ext set Applied from the peer-review panel (APPROVE) on develop...develop-preview: - hook-settings.ts: validateProjectRoot() rejects relative paths (defense vs the Q6 MODULE_NOT_FOUND root cause) + regression test - configuration.md: exclude_patterns rule-selection-by-structure (presence of / and * selects the rule) - post-write.ts: comment guarding CODE_FILE_EXTENSIONS against a future merge with src/utils/extensions.ts or the in-file codeExts Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Adds `anatomy.respect_gitignore` (default false). When enabled, buildAnatomy loads the project-root `.gitignore` via the `ignore` package and excludes matching files/dirs during the walk (union with `exclude_patterns`). Only the root `.gitignore` is consulted; nested `.gitignore` files and global / `core.excludesFile` patterns are out of scope. `ignore` is added as a CLI/daemon-only dependency. Verified `src/scanner` is never imported by a hook (src/hooks compiles standalone with no node_modules), and confirmed no ignore-package require landed in `dist/hooks/` — so this does not re-introduce a WOLF_ROOT-class MODULE_NOT_FOUND in the hooks. Docs + config template updated; integration tests cover on/off behavior. Full suite 150/150; tsc clean on both tsconfigs. Implements Q1 from the deep review. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Two coupled anatomy-hygiene fixes, both grounded in the acme_translators deployment (3 devs, ~3mo): R1 (untrack): add anatomy.md to the shipped .wolf/.gitignore. It is a derived/regenerated artifact, not authored knowledge — committing it churned every session (49 commits, +3495/-2760 lines in acme) and leaked per-machine paths to teammates. Also documents that a consumer repo's ROOT .gitignore must not re-list .wolf/ paths (acme had a root rule silently override this file). R3 (guard): the post-write hook now skips anatomy entries for out-of-project paths (scratchpad, /tmp, sibling repos). Observed leak in acme: a tmp.* dir committed into anatomy.md despite being listed in exclude_patterns, because the incremental hook applies no exclusion. Extracted recordAnatomyWrite() so the guard is unit-testable; +2 tests (out-of-project skip + in-project control). Note: in-project gitignored/excluded dirs still leak via the hook (it honors neither exclude_patterns nor .gitignore) — tracked separately as a follow-up. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…(R2) Closes the broken-on-clone gap opened by R1 (cac925a untracked anatomy.md): a fresh clone has no anatomy.md, and nothing regenerated it until the daemon's 6h rescan or a manual `openwolf scan`. New `src/hooks/wolf-selfheal.ts`: session-start detects a missing/stub anatomy.md and triggers a detached, fire-and-forget `openwolf scan` to rebuild it (ready for the next read/session; never blocks session start or trips the 5s hook timeout). Spawns the `openwolf` CLI rather than importing the scanner — the scanner is CLI-only (it pulls in `ignore`); importing it into a hook would break the standalone hook build (MODULE_NOT_FOUND, the WOLF_ROOT failure class). Best-effort: degrades silently if the CLI isn't on PATH. Verified: tsc clean on both tsconfigs; no ignore-package import in dist/hooks/; full suite 157/157; new tests cover missing/stub/healthy detection + the spawn. Implements PRD R2 (within the unreleased 1.3.0-beta line — no version bump). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…es the PRD via /gsd-new-milestone Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
getVersion() now uses ../../package.json so it resolves to the project root from both src/cli and dist/cli. Co-Authored-By: Claude <noreply@anthropic.com>
checkRootGitIgnore now trims trailing spaces and treats .wolf/** as a blanket rule, matching common gitignore idioms. Co-Authored-By: Claude <noreply@anthropic.com>
matchesPattern and parseGitignoreLine now treat ? as a glob sentinel, and parseGitignoreLine unescapes \#, \!, and escaped spaces before classifying a line as a comment or negation. Co-Authored-By: Claude <noreply@anthropic.com>
Consecutive ** tokens not followed by / now emit a single .* atom, preventing pathological patterns from producing adjacent .* quantifiers that could cause ReDoS-like backtracking. Co-Authored-By: Claude <noreply@anthropic.com>
initializeSessionLedger now seeds the ledger with the full schema used by stop.ts (created_at, sessions, daemon_usage, waste_flags, optimization_report) so partial writes no longer leave missing top-level fields. Co-Authored-By: Claude <noreply@anthropic.com>
Updated the designqc viewports default table to use the object format from src/templates/config.json. Co-Authored-By: Claude <noreply@anthropic.com>
Architecture now describes three independently compiled parts and explicitly notes that Templates are a copy step rather than a separate compilation target. Co-Authored-By: Claude <noreply@anthropic.com>
…e template Co-Authored-By: Claude <noreply@anthropic.com>
…before unescaping Co-Authored-By: Claude <noreply@anthropic.com>
…id same-minute collisions Co-Authored-By: Claude <noreply@anthropic.com>
…ATA_DIR scans the correct cwd Co-Authored-By: Claude <noreply@anthropic.com>
… values Co-Authored-By: Claude <noreply@anthropic.com>
…every markdown heading Co-Authored-By: Claude <noreply@anthropic.com>
…description Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Claude <noreply@anthropic.com>
… session-start Co-Authored-By: Claude <noreply@anthropic.com>
…eClaudeRules Co-Authored-By: Claude <noreply@anthropic.com>
… parser Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Claude <noreply@anthropic.com>
…ratch ext Co-Authored-By: Claude <noreply@anthropic.com>
…, stable stub timestamp Co-Authored-By: Claude <noreply@anthropic.com>
… semantics Co-Authored-By: Claude <noreply@anthropic.com>
…block identity Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Claude <noreply@anthropic.com>
…R-01 WR-02 WR-03 WR-04)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Milestone v1.2: Shared-Context Tracking & Curation
Goal: Confirm the already-shipped P0 hygiene behaves correctly before anything builds on it — no re-implementation, just a commit↔behavior verification record.
Status: Verified ✓
This milestone ships Phases 8–12 of the CHESA Fork Team Toolkit: P0 hygiene verification, one authoritative .wolf/ ignore list, a dependency-free hook-side exclusion matcher, the framework-blind resume protocol, and framework-blind curation machinery (proposed learnings capture, Git-boundary promotion gate, and cerebrum freshness integrity).
Changes
Phase 8: Verify Landed P0 Hygiene
Map each shipped P0 behavior to its develop-preview commit and confirm it holds on the acme replay.
Key files:
tests/hooks/integration/acme-grounded.test.ts.planning/phases/08-verify-landed-p0-hygiene/08-VERIFICATION.mdPhase 9: Tracking Hygiene — One Authoritative Ignore List
Rewrite the
.wolf/.gitignoretemplate to untrack derived build output (hooks/,buglog.json,suggestions.json) and document the consumer-root ignore rule.Key files:
src/templates/wolf-gitignoresrc/cli/init.tstests/cli/init.test.tsdocs/updating.mdPhase 10: Hook-Side In-Project Exclusion
Promote the scanner matcher into a dependency-free
src/hooks/wolf-ignore.tsmodule and applyexclude_patterns+ root.gitignorein the post-write hook.Key files:
src/hooks/wolf-ignore.tssrc/hooks/shared.tssrc/hooks/post-write.tssrc/scanner/anatomy-scanner.tsPhase 11: Framework-Blind Resume Protocol
Remove STATUS.md and replace it with a tool-agnostic resume seam in OPENWOLF.md; strip hardcoded execution-layer references.
Key files:
src/templates/OPENWOLF.mdsrc/templates/claude-rules-openwolf.mdsrc/cli/init.tssrc/hooks/stop.tsPhase 12: Framework-Blind Curation Machinery
Add continuous proposed-learnings capture,
openwolf learnings checkpromotion gate, and cerebrum freshness integrity via.wolf/cerebrum-freshness.json.Key files:
src/hooks/stop.tssrc/cli/index.tssrc/cli/learnings.tssrc/buglog/buglog.tssrc/cli/status.tsRequirements Addressed
.wolf/.gitignore(authored-vs-derived).openwolf learnings check).Verification
tsc --noEmit -p tsconfig.hooks.jsonclean (C2 gate, Phase 10)openwolf status/openwolf learnings checkexit-code contracts verified (Phase 12)Key Decisions
hooks/.ignoredep CLI/daemon-only; zero-dep matcher in the hook.openwolf learnings checksubcommand.statusis read-only; baseline updates only via sanctioned curation.TDD Audit
——4f1d304fix(hooks): bake absolute project root into hook commands; harden against quote/backslash paths——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————Aggregate: 0 skill, 0 fallback, 0 exempt — 190 missing.
gate_status: skill=0, fallback=0, exempt=0, missing=190