Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
200 commits
Select commit Hold shift + click to select a range
4f1d304
fix(hooks): bake absolute project root into hook commands; harden aga…
briansumma Jun 25, 2026
2f3e1f6
fix(scanner): honor nested-path and glob exclude_patterns
briansumma Jun 25, 2026
5d76b0f
fix(status): report per-developer files as runtime state, not missing…
briansumma Jun 25, 2026
9f63395
fix(hooks): skip auto bug-detection on non-code files
briansumma Jun 25, 2026
1c89e26
chore: set version 1.2.0-beta → 1.2.1-beta
briansumma Jun 25, 2026
e48c502
harden: require absolute projectRoot; clarify exclude docs; guard cod…
briansumma Jun 25, 2026
3ef255c
feat(scanner): opt-in respect_gitignore for the anatomy scanner
briansumma Jun 25, 2026
239f2c9
chore: bump 1.2.1-beta → 1.3.0-beta (respect_gitignore feature → minor)
briansumma Jun 25, 2026
cac925a
fix(anatomy): stop leaking machine-local paths into committed anatomy.md
briansumma Jun 25, 2026
13ac0d6
wip: pause — shared-context PRD + P0 anatomy hygiene (R1/R3 landed; R…
briansumma Jun 25, 2026
c430a9b
feat(hooks): self-heal anatomy.md on session start when missing/stub …
briansumma Jun 25, 2026
be9867e
wip: pause handoff refresh — R2 self-heal done; next session formaliz…
briansumma Jun 25, 2026
5bb613f
docs: start milestone v1.2 Shared-Context Tracking & Curation
briansumma Jun 25, 2026
8afc7f2
docs: complete project research (R6/R7b/R9 targeted)
briansumma Jun 25, 2026
371f66a
docs: define milestone v1.2 requirements + lock D-17..D-20
briansumma Jun 25, 2026
ae8fb80
docs: create milestone v1.2 roadmap (5 phases)
briansumma Jun 25, 2026
ad7ec71
chore: clear consumed pause checkpoint (milestone v1.2 formalized)
briansumma Jun 25, 2026
40214cf
chore: remove consumed HANDOFF.json (resumed into v1.2)
briansumma Jun 25, 2026
cbcb2db
docs(08): capture phase context
briansumma Jun 25, 2026
0decb21
docs(state): record phase 8 context session
briansumma Jun 25, 2026
596064e
docs(09): capture phase context
briansumma Jun 25, 2026
9117da9
docs(state): record phase 9 context session
briansumma Jun 25, 2026
baa59d8
docs(10): capture phase context from assumptions discussion
briansumma Jun 25, 2026
e9bdfdc
docs(10): research phase hook-side in-project exclusion
briansumma Jun 25, 2026
050f3af
docs(10): add research + validation strategy
briansumma Jun 25, 2026
9622fc8
docs(10): capture phase context
briansumma Jun 25, 2026
a820402
docs(state): record phase 10 context session
briansumma Jun 25, 2026
e3916ff
docs(11): capture phase context
briansumma Jun 25, 2026
38c0a1e
docs(state): record phase 11 context session
briansumma Jun 25, 2026
80205c5
docs(12): capture phase context
briansumma Jun 25, 2026
3f3800c
docs(state): record phase 12 context session
briansumma Jun 25, 2026
1c3a4d9
docs(08): add validation strategy
briansumma Jun 25, 2026
2f8a420
docs(08): create phase plan
briansumma Jun 25, 2026
dde46c9
docs(08): create phase plan
briansumma Jun 25, 2026
3f1ea96
feat(08-01): add lean acme-snapshot fixture for R3/R5/Q2 regression r…
briansumma Jun 25, 2026
eedf9be
test(08-01): add acme-grounded R3 and R5 regression assertions to pos…
briansumma Jun 25, 2026
af75c39
docs(08-01): complete verify-landed-p0-hygiene plan 01
briansumma Jun 25, 2026
c861d70
docs(08-02): author 08-VERIFICATION.md commit↔behavior record (VER-01)
briansumma Jun 25, 2026
4b2e1c4
docs(08-02): complete verify-landed-p0-hygiene plan
briansumma Jun 26, 2026
b1cec2e
docs(state): record phase 8 complete — all 6 P0 behaviors verified
briansumma Jun 26, 2026
70ed68e
docs(09): create phase plan (one authoritative ignore list, R4)
briansumma Jun 26, 2026
9a1b811
docs(09): record phase plan in STATE.md
briansumma Jun 26, 2026
51748d6
test(09-01): add failing template-content assertions for authored-vs-…
briansumma Jun 26, 2026
1d8b97d
feat(09-01): rewrite wolf-gitignore on authored-vs-derived axis and f…
briansumma Jun 26, 2026
5eb0059
feat(09-01): export checkRootGitIgnore and add .wolf/-prefixed path a…
briansumma Jun 26, 2026
c37abd6
docs(09-01): complete one-authoritative-ignore-list plan 01
briansumma Jun 26, 2026
8a509cc
docs(09-02): add R4 tracking-hygiene migration section to docs/updati…
briansumma Jun 26, 2026
456f36d
docs(09-02): complete tracking-hygiene-migration documentation plan
briansumma Jun 26, 2026
5da77b5
docs(09): record phase 9 complete — one authoritative ignore list ver…
briansumma Jun 26, 2026
9288f63
docs(planning): commit pre-research artifacts for phases 10-12 and fi…
briansumma Jun 26, 2026
cee7f26
docs(10): create phase plan
briansumma Jun 26, 2026
2e153bf
docs(10): mark open questions resolved in RESEARCH.md
briansumma Jun 26, 2026
317ffa7
docs(10): record planning complete in STATE.md
briansumma Jun 26, 2026
d5c82aa
test(10-01): add failing wolf-ignore matcher + gitignore parser tests
briansumma Jun 26, 2026
1749e18
feat(10-01): promote matcher to shared wolf-ignore.ts + add gitignore…
briansumma Jun 26, 2026
d6614d6
refactor(10-01): verify C2 hook boundary + main build clean after mat…
briansumma Jun 26, 2026
4b05e48
docs(10-01): complete wolf-ignore.ts shared matcher module plan
briansumma Jun 26, 2026
465de61
feat(10-02): gate recordAnatomyWrite on exclude_patterns + root .giti…
briansumma Jun 26, 2026
fe7d0c9
test(10-02): add E6 exclude + gitignore-gate + default-false integrat…
briansumma Jun 26, 2026
7abf525
build(10-02): compile hooks and copy to .wolf/hooks/ — exclusion gate…
briansumma Jun 26, 2026
bb31b65
docs(10-02): complete in-project exclusion gate plan
briansumma Jun 26, 2026
04d8a25
docs(10): phase complete — verification passed, roadmap advanced to p…
briansumma Jun 26, 2026
f6efbe2
docs(11): research phase domain
briansumma Jun 26, 2026
1238048
docs(11): add validation strategy
briansumma Jun 26, 2026
ac3cd34
docs(11): create phase plan — framework-blind resume protocol (3 plans)
briansumma Jun 26, 2026
65b50ad
docs(11): create phase plan
briansumma Jun 26, 2026
ece37ad
feat(11-01): delete STATUS.md template and remove seedStatus from init
briansumma Jun 26, 2026
adfc2e1
feat(11-01): rewrite OPENWOLF.md and claude-rules to framework-blind …
briansumma Jun 26, 2026
308a791
feat(11-01): add execution_layer slot to config.json; remove STATUS.m…
briansumma Jun 26, 2026
ced7fb1
docs(11-01): complete framework-blind resume protocol plan 1 of 3
briansumma Jun 26, 2026
223a6f5
feat(11-02): delete checkStatusFreshness from stop.ts — D11-05
briansumma Jun 26, 2026
ce2126f
fix(11-02): replace execution-layer tool name in wolf-ignore.ts JSDoc…
briansumma Jun 26, 2026
58c37c8
docs(11-02): complete STATUS hook teardown plan
briansumma Jun 26, 2026
5b0ef58
feat(11-03): surface execution_layer in openwolf status
briansumma Jun 26, 2026
c077acc
feat(11-03): emit execution_layer hint at session start
briansumma Jun 26, 2026
52a1113
docs(11-03): rewrite guides, banner historical artifacts, add changelog
briansumma Jun 26, 2026
9c0a76e
docs(11-03): complete framework-blind-resume-protocol plan
briansumma Jun 26, 2026
d24049e
docs(11): phase complete — verification passed, roadmap advanced to p…
briansumma Jun 26, 2026
347c8dc
docs(12): research phase domain
briansumma Jun 26, 2026
806113e
docs(12): create phase plan — framework-blind curation machinery (4 p…
briansumma Jun 26, 2026
40d691f
docs(12): create phase plan
briansumma Jun 26, 2026
815e52b
test(12-01): add failing tests for wolf-pantry dep-free aggregator
briansumma Jun 26, 2026
0940d89
feat(12-01): create dep-free wolf-pantry hook module and relocate agg…
briansumma Jun 26, 2026
708c457
refactor(12-01): verify no circular imports and both type-checks pass
briansumma Jun 26, 2026
5ed1521
docs(12-01): complete framework-blind curation machinery plan summary
briansumma Jun 26, 2026
552fb81
chore: merge executor worktree (worktree-agent-ad49ae10229f27bab)
briansumma Jun 26, 2026
5759ffb
docs(phase-12): update tracking after wave 1
briansumma Jun 26, 2026
e874da4
test(12-03): add R7a stub-capture guard cases to stop hook
briansumma Jun 26, 2026
ea8bb80
feat(12-03): wire R7a capture stub into stop hook
briansumma Jun 26, 2026
9d2c700
test(12-02): add failing tests for learnings check and accept commands
briansumma Jun 26, 2026
98f6fa2
docs(12-03): complete R7a stop-hook capture stub plan
briansumma Jun 26, 2026
4d80ff9
feat(12-02): implement learnings check, accept, and merge baseline wr…
briansumma Jun 26, 2026
c8394ce
docs(12-02): complete R7b/R9 curation machinery plan
briansumma Jun 26, 2026
9467b79
docs(12-02): append self-check to plan summary
briansumma Jun 26, 2026
f0ce0b7
chore: merge executor worktree (worktree-agent-a2f58f339f1079ed6)
briansumma Jun 26, 2026
ca876dd
chore: merge executor worktree (worktree-agent-a290a752ac91cb893)
briansumma Jun 26, 2026
f97806f
docs(phase-12): update tracking after wave 2
briansumma Jun 26, 2026
31a1982
test(12-04): extend status tests with pending count and R9 freshness …
briansumma Jun 26, 2026
884899f
feat(12-04): add Curation block and R9 freshness check to status
briansumma Jun 26, 2026
7fdeb29
docs(12-04): add Phase 12 curation API to CHANGELOG
briansumma Jun 26, 2026
43a2b62
docs(12-04): complete status Curation + R9 freshness plan
briansumma Jun 26, 2026
41b20c0
chore: merge executor worktree (worktree-agent-aa1217787074fec5e)
briansumma Jun 26, 2026
2271ac1
docs(phase-12): update tracking after wave 3
briansumma Jun 26, 2026
091058e
docs(phase-12): verification report
briansumma Jun 26, 2026
2b97936
docs(phase-12): complete phase execution
briansumma Jun 26, 2026
df1cf28
fix(12): R7a stub must not be mergeable
briansumma Jun 26, 2026
0577784
docs(v1.2): milestone audit passed
briansumma Jun 26, 2026
7b29279
docs: complete v1.2 milestone closeout
briansumma Jun 26, 2026
2cfef95
docs: remove relocated v1.2 milestone audit stub
briansumma Jun 26, 2026
2393ff5
fix(08): WR-01 normalize cross-platform path assertion in R3 replay
briansumma Jun 26, 2026
e541c80
fix(08): WR-02 rename concurrent-ish append test to sequential
briansumma Jun 26, 2026
63a4de3
fix(08): IN-01 strict length assertions in positive-control bug tests
briansumma Jun 26, 2026
9cf8743
fix(08): IN-02 document normalized ../ heading in anatomy-leak fixture
briansumma Jun 26, 2026
d2c7975
fix(08): CR-01 guard post-write.ts main() so module is safe to import
briansumma Jun 26, 2026
a8d59a6
fix(08): WR-01 validate .wolf/config.json anatomy field types before use
briansumma Jun 26, 2026
16d418f
fix(08): WR-02 skip out-of-project paths in autoDetectBugFix
briansumma Jun 26, 2026
258966c
fix(08): WR-03 reject cross-drive absolute relative paths in R3 guard
briansumma Jun 26, 2026
2b0cb20
fix(08): WR-04 protect anatomy.md read-modify-write with file lock
briansumma Jun 26, 2026
83be539
fix(08): WR-03 make withFileLock fail hard on lock acquisition failure
briansumma Jun 26, 2026
4fd0c1c
fix(08): WR-04 distinguish async modifier from function name in bug-f…
briansumma Jun 26, 2026
45c097e
fix(08): WR-05 skip code heuristics for prose extensions in summarize…
briansumma Jun 26, 2026
a8f8960
fix(08): WR-01 add end-to-end and concurrent autoDetectBugFix tests
briansumma Jun 26, 2026
bd8064f
fix(08): WR-02 add test asserting acme fixture config excludes leak p…
briansumma Jun 26, 2026
b7c67e3
fix(08): WR-03 update wolf-lock tests to expect hard failure
briansumma Jun 26, 2026
10797f1
fix(09): WR-01 add --ignore-unmatch to .wolf untrack migration commands
briansumma Jun 26, 2026
2d87ac3
fix(09): WR-02 expand migration untrack step to cover all derived .wo…
briansumma Jun 26, 2026
93db017
fix(09): WR-04 report real user-data preserved count on upgrade
briansumma Jun 26, 2026
f48ac25
fix(09): WR-03 avoid reporting zero anatomy files as unchanged on upg…
briansumma Jun 26, 2026
b912207
fix(09): WR-05 guard CLAUDE.md read/write in init against permission …
briansumma Jun 26, 2026
5fed999
fix(09): WR-06 detect negated root .wolf/ rules in checkRootGitIgnore
briansumma Jun 26, 2026
772a388
fix(09): WR-07 require claude-rules-openwolf.md template and warn if …
briansumma Jun 26, 2026
25a840f
fix(09): IN-01 return boolean from writeTemplateFile and count only s…
briansumma Jun 26, 2026
593ae0b
fix(09): IN-02 move imports to top of init.ts and group re-export
briansumma Jun 26, 2026
e1adc25
fix(09): IN-03 remove deprecated writeGitIgnore from init.ts
briansumma Jun 26, 2026
1735357
fix(09): IN-04 document why cerebrum-freshness.json is absent from tr…
briansumma Jun 26, 2026
68347fd
fix(09): WR-01 extend root .wolf override detector for bare and ancho…
briansumma Jun 26, 2026
a43dd71
fix(09): WR-02 remove unused skippedCount and newlyCreated bookkeeping
briansumma Jun 26, 2026
f4350ed
fix(09): WR-03 default existsSync mock to real implementation
briansumma Jun 26, 2026
b9b5f46
fix(09): IN-01 emit checkRootGitIgnore advisories via console.warn
briansumma Jun 26, 2026
b87f549
fix(09): IN-02 include cerebrum-freshness.json in v1.2 untrack command
briansumma Jun 26, 2026
8c0aa91
fix(09): IN-03 add anchored root /.wolf/hooks/ advisory test
briansumma Jun 26, 2026
edd8f3e
fix(09): WR-01 parse blanket .wolf/ rule line-by-line
briansumma Jun 26, 2026
521c14e
fix(09): WR-02 move config.json from overwrite to preserve list
briansumma Jun 26, 2026
fed3c20
fix(09): WR-03 refresh .wolf/.gitignore during openwolf update
briansumma Jun 26, 2026
1ec3e2d
fix(09): WR-04 preserve YAML frontmatter when injecting CLAUDE.md marker
briansumma Jun 26, 2026
8d32282
fix(09): IN-01 expand untrack commit message to full set
briansumma Jun 26, 2026
9e4a84c
fix(09): IN-02 warn on generic dot-directory root gitignore rules
briansumma Jun 26, 2026
909d2e7
fix(09): update test expectations for blanket .wolf/ rule classification
briansumma Jun 26, 2026
70bd8d6
fix(10): CR-01 synchronize concurrent buglog appends with file lock
briansumma Jun 26, 2026
c06a64f
fix(10): WR-01 protect updateAnatomyEntry with file lock
briansumma Jun 26, 2026
8d00cce
fix(10): WR-02 validate scanner exclude_patterns before use
briansumma Jun 26, 2026
4fe6833
fix(10): WR-03 normalize leading and trailing slashes in exclude patt…
briansumma Jun 26, 2026
e75d3c6
fix(10): WR-04 allow ** glob to match zero intermediate directories
briansumma Jun 26, 2026
d0eaca4
fix(10): WR-05 rebuild hooks before worker test if sources are newer
briansumma Jun 26, 2026
40850a5
fix(10): IN-01 skip binary files in recordAnatomyWrite
briansumma Jun 26, 2026
533734d
fix(10): IN-02 deduplicate token classification extension sets
briansumma Jun 26, 2026
fabe7cf
fix(10): IN-03 import scanner exclude helpers from public hook barrel
briansumma Jun 26, 2026
7db1f49
fix(10): CR-01 add out-of-project guard to updateAnatomyEntry
briansumma Jun 26, 2026
318a488
fix(10): WR-01 centralize out-of-project guard for memory and session…
briansumma Jun 26, 2026
e80a818
fix(10): WR-02 tokenize operators to detect ==→=== and !=→!== changes
briansumma Jun 26, 2026
23ee1b4
fix(10): IN-01 strip strings and comments before fix heuristics
briansumma Jun 26, 2026
1c9f2ce
fix(10): IN-02 summarize CSS edits by property-value changes
briansumma Jun 26, 2026
1bcaf17
fix(10): CR-01 add prototype-pollution guard to hook-side deepMergeDe…
briansumma Jun 26, 2026
a5a266f
fix(10): WR-01 run guard-clause and logic-fix heuristics on cleaned diff
briansumma Jun 26, 2026
09774c4
fix(10): WR-02 detect ES module named imports in missing-import heuri…
briansumma Jun 26, 2026
2ab5fac
fix(10): WR-03 detect single-character comparison operator transitions
briansumma Jun 26, 2026
8db639a
fix(10): WR-04 reuse hook-side serializeAnatomy in scanner
briansumma Jun 26, 2026
8bc1997
fix(10): IN-01 tokenize ?? and async/await instead of substring checks
briansumma Jun 26, 2026
cc988d8
fix(10): IN-02 inspect all conditions and return values with matchAll
briansumma Jun 26, 2026
5297cdb
fix(11): WR-01 align Session End with staged-learning protocol
briansumma Jun 26, 2026
0267359
fix(11): WR-02 stage user corrections instead of direct cerebrum.md u…
briansumma Jun 26, 2026
d656cba
fix(11): IN-01 reference buglog.ndjson in README table
briansumma Jun 26, 2026
0b3f9b2
fix(11): IN-02 remove dead idempotency guard in stop hook
briansumma Jun 26, 2026
13bd738
fix(11): WR-01 honor OPENWOLF_METADATA_DIR in status command
briansumma Jun 26, 2026
3c4ce77
fix(11): WR-02 resolve package.json from correct directory
briansumma Jun 26, 2026
8436a61
fix(11): WR-03 detect .wolf/** and trailing-space blanket rules
briansumma Jun 26, 2026
46df612
fix(11): WR-04 support ? wildcards and escaped gitignore tokens
briansumma Jun 26, 2026
0cff95e
fix(11): WR-05 collapse adjacent ** runs in globToRegExp
briansumma Jun 26, 2026
74035ac
fix(11): WR-06 write complete default ledger object on session start
briansumma Jun 26, 2026
19fad49
fix(11): IN-01 align configuration docs with template defaults
briansumma Jun 26, 2026
3eaa573
fix(11): IN-02 align ARCHITECTURE.md with CLAUDE.md on compiled parts
briansumma Jun 26, 2026
a5f27a5
fix(11): WR-01 align .wolf/.gitignore docs example with wolf-gitignor…
briansumma Jun 26, 2026
d343ccb
fix(11): WR-03 classify escaped # and ! gitignore tokens as patterns …
briansumma Jun 26, 2026
9e673ab
fix(11): WR-04 include seconds and milliseconds in session IDs to avo…
briansumma Jun 26, 2026
7276e56
fix(11): WR-05 pass project root to selfHealAnatomy so OPENWOLF_METAD…
briansumma Jun 26, 2026
03d1358
fix(11): WR-06 guard status cron heartbeat against NaN last_heartbeat…
briansumma Jun 26, 2026
a51ca23
fix(11): WR-07 parse proposed-learnings entries without splitting on …
briansumma Jun 26, 2026
b964408
fix(11): IN-01 count wolf-ignore in shared.ts re-export architecture …
briansumma Jun 26, 2026
378ae7d
fix(11): IN-02 match buglog.ndjson by basename instead of substring
briansumma Jun 26, 2026
478d387
fix(11): IN-03 trim execution_layer before surfacing it in status and…
briansumma Jun 26, 2026
fc3ae9a
fix(11): IN-04 detect YAML frontmatter with CRLF line endings in writ…
briansumma Jun 26, 2026
9a2ed73
fix(11): WR-07 preserve malformed-entry stderr warning in regex-based…
briansumma Jun 26, 2026
0dacc70
fix(12): WR-005 restore console.log spy afterEach in status.test.ts
briansumma Jun 26, 2026
59103a7
fix(12): IN-004 robust package.json version lookup from project root
briansumma Jun 26, 2026
93ecfc7
fix(12): WR-004 normalize stop-hook stub gate by .wolf segment and sc…
briansumma Jun 26, 2026
013c1bb
fix(12): WR-002 IN-001 IN-006 permissive proposal parser, single read…
briansumma Jun 26, 2026
0c1c985
docs(12): IN-002 document normalizeCerebrumBody whitespace-collapsing…
briansumma Jun 26, 2026
268b4ea
fix(12): WR-001 WR-003 IN-003 learnings command exit codes and exact …
briansumma Jun 26, 2026
ed82008
fix(12): IN-005 skip status sidecar bootstrap when cerebrum.md is absent
briansumma Jun 26, 2026
1f206e7
fix(09-01): add WR-04 regression test for double-advisory scenario (W…
briansumma Jun 26, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 26 additions & 10 deletions .planning/MILESTONES.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,29 @@
# Milestones

## v1.2 Shared-Context Tracking & Curation (Shipped: 2026-06-26)

**Phases completed:** 5 phases, 13 plans, 17 tasks

**Key accomplishments:**

- Verified all six P0 behaviors map to `develop-preview` commits and are regression-tested (`08-VERIFICATION.md`)
- Grounded permanent R3 (`../` guard) and R5 (code-file gate) regression tests in the test suite
- Documented the v1.2 tracking-hygiene migration in `docs/updating.md` (untrack step, root `.gitignore` override, clone-time `hooks/` rebuild)
- Deleted `STATUS.md` template and `seedStatus`, rewrote `OPENWOLF.md`/claude-rules to a tool-agnostic 3-step resume order with an `execution_layer` config slot
- Shipped `openwolf learnings check` (exit-code primitive), `openwolf learnings accept` (sanctioned baseline writer), and merge-time `cerebrum-freshness.json` re-baseline — all host/layer-neutral and TDD-covered
- Wired a fixed-literal structural learning breadcrumb into the universal stop hook so code-mutating sessions without model-authored proposals always trip the Plan 02 promotion gate
- Added read-only curation surfaces to `openwolf status`: pending learnings aggregation and an R9 freshness check that bootstraps a missing sidecar once, flags date-only `> Last updated:` bumps as freshness theater, and stays read-only when the sidecar exists

---

## v1.1 Shared-Checkout Concurrency — Pillar C (Shipped: 2026-06-24)

**Phases completed:** 3 phases, 3 plans, 7 tasks

**Key accomplishments:**

- 5 — Propose-Mode Infrastructure
- 6 — Learnings Review CLI
- Propose-mode infrastructure: `appendProposal` helper, hook redirect, `OPENWOLF.md` protocol update
- Learnings review CLI: `openwolf learnings list` and merge commands with consumed-tracking
- Accumulation merge and integration enumeration tests for the propose-and-merge workflow

---
Expand All @@ -19,13 +35,13 @@
**Key accomplishments:**

- HOOK_FILES cleanup — removed vestigial constant, migrated tests to dynamic discovery verification
- Automated local dev setup script (scripts/install-dev.sh) with prerequisite checks, pnpm install/build/link, idempotent upstream remote config
- Read-only divergence reporting script (scripts/sync-upstream.sh) with upstream remote auto-configuration and team documentation
- Dynamic hook discovery replacing static HOOK_FILES — all .js files in dist/hooks/ auto-deployed
- Advisory per-file locking (withFileLock) for concurrent .wolf/ write safety using Node.js O_EXCL
- OPENWOLF_METADATA_DIR env var support for flexible metadata storage location
- .wolf/.gitignore template with `*` ignore-all + opt-in exceptions for mixed commit strategy
- Updated reference (docs/configuration.md) and onboarding (docs/getting-started.md) documentation
- pnpm clean dev script with explicit path guards and .DS_Store cleanup
- Automated local dev setup script (`scripts/install-dev.sh`) with prerequisite checks, pnpm install/build/link, idempotent upstream remote config
- Read-only divergence reporting script (`scripts/sync-upstream.sh`) with upstream remote auto-configuration and team documentation
- Dynamic hook discovery replacing static `HOOK_FILES` — all `.js` files in `dist/hooks/` auto-deployed
- Advisory per-file locking (`withFileLock`) for concurrent `.wolf/` write safety using Node.js `O_EXCL`
- `OPENWOLF_METADATA_DIR` env var support for flexible metadata storage location
- `.wolf/.gitignore` template with `*` ignore-all + opt-in exceptions for mixed commit strategy
- Updated reference (`docs/configuration.md`) and onboarding (`docs/getting-started.md`) documentation
- `pnpm clean` dev script with explicit path guards and `.DS_Store` cleanup

---
54 changes: 39 additions & 15 deletions .planning/PROJECT.md
Original file line number Diff line number Diff line change
@@ -1,21 +1,23 @@
# Project: CHESA Fork Team Toolkit

## What This Is
The CHESA Fork Team Toolkit is a set of enhancements for the OpenWolf project (forked from `cytostack/openwolf`) designed to support team adoption, streamline fork management, and ensure concurrent-write safety.
The CHESA Fork Team Toolkit is a set of enhancements for the OpenWolf project (forked from `cytostack/openwolf`) designed to support team adoption, streamline fork management, ensure concurrent-write safety, and keep shared context curated instead of rotting.

## Core Value
Make the CHESA fork of OpenWolf easy to install, safe to collaborate on, and manageable to keep synced with upstream.
Make the CHESA fork of OpenWolf easy to install, safe to collaborate on, manageable to keep synced with upstream, and honest about the context it shares.

## Goals
1. **Simplify installation and team onboarding** for 4-5 developers.
2. **Enable fork divergence management** to easily stay synced with upstream.
3. **Improve team workflow** with concurrent write protection and flexible metadata storage.
4. **Curate shared context** so committed `.wolf/` artifacts are authored, owned, and current.

## Scope
- Pillar 1: Fork Installation & Team Onboarding
- Pillar 2: Fork Divergence Management
- Pillar 3: .wolf/ Team Workflow Improvements
- P2 Cleanup — hygiene items (clean script, .DS_Store removal)
- Pillar 3: `.wolf/` Team Workflow Improvements
- Pillar 4: Shared-Context Tracking & Curation
- P2 Cleanup — hygiene items (clean script, `.DS_Store` removal)

## Requirements

Expand All @@ -26,43 +28,53 @@ Make the CHESA fork of OpenWolf easy to install, safe to collaborate on, and man
- ✓ Fork divergence reporting (`scripts/sync-upstream.sh`) — v1.0
- ✓ Fork management documentation in README.md — v1.0
- ✓ Dynamic hook discovery replacing static HOOK_FILES — v1.0
- ✓ Advisory per-file locking (`withFileLock`) for concurrent .wolf/ write safety — v1.0
- ✓ OPENWOLF_METADATA_DIR env var support — v1.0
- ✓ .wolf/.gitignore template with mixed commit strategy — v1.0
- ✓ Advisory per-file locking (`withFileLock`) for concurrent `.wolf/` write safety — v1.0
- ✓ `OPENWOLF_METADATA_DIR` env var support — v1.0
- ✓ `.wolf/.gitignore` template with mixed commit strategy — v1.0
- ✓ Documentation update (configuration.md, getting-started.md) — v1.0
- ✓ `pnpm clean` script with explicit path guards — v1.0
- ✓ `appendProposal()` per-session staging helper — v1.1
- ✓ Hooks redirect cerebrum/anatomy writes to propose-mode — v1.1
- ✓ OPENWOLF.md protocol updated for propose-mode — v1.1
- ✓ `OPENWOLF.md` protocol updated for propose-mode — v1.1
- ✓ `openwolf learnings` list + interactive merge CLI — v1.1
- ✓ `openwolf learnings merge` with withFileLock-protected writes — v1.1
- ✓ `openwolf learnings merge` with `withFileLock`-protected writes — v1.1
- ✓ Post-merge archive to `merged-learnings.md` — v1.1
- ✓ Concurrency accumulation test (multi-session merge, lock asserted) — v1.1
- ✓ Integration enumeration test (edge cases: empty, missing staging files) — v1.1
- ✓ P0 hygiene verification (R1/R2/R3/R5/Q1/Q2) grounded against acme replay — v1.2
- ✓ `.wolf/.gitignore` template correction + untrack derived `buglog.json`/`suggestions.json`/`hooks/` (R4, Q4) — v1.2
- ✓ Hook-side in-project exclusion matcher honoring `exclude_patterns` + root `.gitignore` with zero npm deps (R6) — v1.2
- ✓ Framework-blind resume protocol: remove `STATUS.md`, rewrite `OPENWOLF.md` to tool-agnostic 3-step order with `execution_layer` config slot (R11) — v1.2
- ✓ Framework-blind curation machinery: stop-hook capture, `openwolf learnings check`/`accept` primitives, `openwolf status` read-only curation + R9 freshness integrity (R7a, R7b, R9) — v1.2

### Active

(None — start next milestone with `/gsd-new-milestone`)
No active requirements. All planned milestones have shipped.

### Out of Scope

| Feature | Reason |
|---------|--------|
| `memory.md` propose-mode | Per-dev append-only log; interleaving acceptable; file is gitignored |
| Scanner-initiated `anatomy.md` rewrites | Authoritative single-process operation; no concurrency concern |
| Dashboard learning panel | Deferred to v1.2 — ship CLI first (DASH-01, DASH-02) |
| Dashboard learning panel | Deferred to a later rollout milestone (DASH-01, DASH-02) |
| Real-time CRDT semantics | Human-merge (propose-mode) is the chosen model |
| R10 provenance on cerebrum entries | Behavioral/org-design; defer to a later rollout milestone |
| R12 named pantry-owner role + curation runbook | Behavioral/org-design; defer to a later rollout milestone |

## Status
**v1.0 shipped** (2026-06-07) — 5 phases, 8 plans. Team toolkit ready.
**v1.1 shipped** (2026-06-24) — 3 phases, 3 plans. Propose-mode + learnings CLI + concurrency tests.
**v1.2 shipped** (2026-06-26) — 5 phases, 13 plans. Shared-context tracking & curation complete.

All planned milestones shipped. The CHESA fork team toolkit is complete through v1.2.

## Context

**Tech stack:** TypeScript (Node.js), pnpm, Bash (scripts), OpenWolf (forked from cytostack/openwolf)
**Codebase:** ~19,300 LOC across .ts, .js, .json, .md files (excluding node_modules, dist, .wolf, .planning)
**Git:** 330+ total commits; v1.1 added 18 commits, 21 files changed, +1,421 / −99 lines
**Version:** 1.2.0-beta (release tag: `release/1.2.0-beta`)
**Codebase:** ~19,300 LOC across `.ts`, `.js`, `.json`, `.md` files (excluding node_modules, dist, .wolf, .planning)
**Git:** 330+ total commits; v1.2 added 21 commits, 25 files changed
**Version:** 1.2.0 (release tag: `release/1.2.0`, milestone tag: `v1.2`)

## Key Decisions

Expand All @@ -80,6 +92,14 @@ Make the CHESA fork of OpenWolf easy to install, safe to collaborate on, and man
| D-10: Accumulation test, not cross-process concurrency test | In-process JS cannot prove cross-process safety; withFileLock assertion guards the contract | ✓ Good |
| D-11: Semver bump 1.0.5 → 1.1.0 for format-breaking change | NDJSON buglog + new CLI/API = minor, not patch | ✓ Good |
| D-12: release/ tag prefix for npm installs | Distinguishes package releases from GSD milestone tags (v1.0, v1.1) | ✓ Good |
| D-13: Commit model = authored-vs-derived (not shared-vs-per-dev) | Untrack anatomy.md + derived/noise; commit only what a named human can own, date, and validate | ✓ Good |
| D-14: Remove STATUS.md; OpenWolf stays framework-blind | Status belongs to the execution layer (abandoned after 225 acme sessions); negative boundary + optional config.json execution_layer slot, no tool names hardcoded | ✓ Good |
| D-15: R7 split — capture via stop hook, promotion at the Git boundary | Capture is continuous via the universal Claude Code `stop` primitive; promotion gated by a pull-based status count + opt-in exit-code check wired to pre-push/PR/CI — blind to both execution layer and VCS/CI host. Avoids the session-end lifecycle-modeling trap | ✓ Good |
| D-16: Defer R10/R12 to a later rollout milestone | Provenance + pantry-owner role are behavioral/org-design; don't block core engine code on team rituals | ✓ Good |
| D-17: Untrack compiled `hooks/` (Q4) | Derived build output; committing JS artifacts causes merge conflicts + path noise — rebuild on clone via self-heal / `openwolf update` | ✓ Good |
| D-18: R6 — keep `ignore` dep CLI/daemon-only; zero-dep matcher in the hook | Honors C2 (no deps in hook build); full scan stays the authoritative backstop; accept the hook/scanner `.gitignore` engine split | ✓ Good |
| D-19: R7b — `openwolf learnings check` subcommand (not a `--check` flag) | Keeps the top-level CLI namespace clean; scales with future `learnings list/prune` | ✓ Good |
| D-20: R9 — `status` is read-only; baseline updates only via sanctioned curation | A read command must not mutate state; baseline = "last *sanctioned* content" (merge + explicit `learnings accept` + bootstrap-on-missing), not "last content a status run observed" | ✓ Good |

## Evolution

Expand All @@ -101,10 +121,14 @@ This document evolves at phase transitions and milestone boundaries.
## Reference
- Specification (v1.0): `docs/superpowers/specs/2026-06-06-chesa-fork-team-toolkit-design.md`
- Specification (v1.1): `docs/superpowers/specs/2026-06-23-shared-checkout-concurrency-design.md`
- Specification (v1.2): `PRD-OpenWolf-Shared-Context-and-Curation.md` (repo root, untracked)
- Archive: `.planning/milestones/v1.0-ROADMAP.md`
- Archive: `.planning/milestones/v1.0-REQUIREMENTS.md`
- Archive: `.planning/milestones/v1.1-ROADMAP.md`
- Archive: `.planning/milestones/v1.1-REQUIREMENTS.md`
- Archive: `.planning/milestones/v1.2-ROADMAP.md`
- Archive: `.planning/milestones/v1.2-REQUIREMENTS.md`
- Milestone audit: `.planning/milestones/v1.2-MILESTONE-AUDIT.md`

---
*Last updated: 2026-06-24 after v1.1 milestone*
*Last updated: 2026-06-26 — v1.2 milestone completed*
Loading