Conversation
…k-mint) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Merged Dependabot PRs #477, #478, #481 (actions/checkout, lint-staged, prettier) - Synced dev with main (6 files) - Cleaned all worktrees (3 stale entries removed) - Removed stale "CI smoke tests only" pending item (full suite live since PRs #465+#466) - Updated status footer to v7.13.0 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Ecosystem proposal + flow-cli SPEC for daily-planning coordination across flow-cli, atlas, and obsidian-cli-ops. atlas owns the planning brain (Task entity + agenda aggregator); flow-cli refactors planning-command duplication (incl. $path->project_path bug fix) and consumes atlas agenda via a new schedule-engine source. First-class testing (§5) and documentation (§6) plans. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BvJR434JKwmpq8LD458Aum
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BvJR434JKwmpq8LD458Aum
…genda source + .STATUS enforcer (#483) * docs(orchestrate): planning-coordination phase plan 3-phase plan (Track A refactor + $path fix / Track C atlas agenda source + contract / docs), TDD red-first, graceful-degradation gate. Tracks B (atlas) and D (obs) are contract-only, out of scope for this worktree. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BvJR434JKwmpq8LD458Aum * docs(spec+orchestrate): apply grill decisions D1-D16 Adversarial grill of the planning-coordination SPEC + ORCHESTRATE surfaced 16 load-bearing decisions: - $path bug fix isolated as its own pre-step (Phase 0), red-test-first - Consolidation of 4x .STATUS readers / 2x path resolvers / 5x project suggesters guarded by characterization/parity tests landed BEFORE the refactor (silent-behavior-loss guard) - Track C (atlas agenda source) ships dark-ready/capability-probed, mirrors the existing 'schedule push' no-op pattern; zero payoff until atlas Track B ships, zero rework when it does - .STATUS-ingestion mechanism left as atlas's own open design question, not prescribed here (respects the Track B contract-only boundary) - New flow-cli-scoped .STATUS template + warn-only enforcer (check-status.zsh) - Execution re-modeled as phase-gated (stop+report each phase, reviewer runs the FULL suite independently) instead of one-shot, with a 2-attempt fix-forward cap and explicit escalation on repeated failure - Atlas-absent/present test simulation via capability-flag override + a PATH stub shim, with a fixture whose shape is asserted against the documented contract to prevent silent stub/contract drift Full ledger + board summary + dispatch-suitability debate: see the grilled plan (paths differ by session). Hard-scoped to flow-cli only this cycle per the grill's reversibility/scope-creep finding — atlas Track B and obs Track D remain contract-only, deferred to their own specs+grills. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BvJR434JKwmpq8LD458Aum * fix(planning): read $project_path not $path in morning/next _flow_get_project_fallback deliberately emits `project_path=` (never `path=`) to avoid colliding with ZSH's PATH-tied `$path` array. But morning.zsh and adhd.zsh read `$path` after `eval "$info"`, so the .STATUS lookup silently fails and focus/progress render blank while project-type detection falls back to generic even for typed projects. Red test (tests/test-path-bug-fix.zsh) proves the current broken output, then the two-file fix restores it. Isolated pre-step ahead of the Phase 1 shared-accessor refactor per SPEC §3.0 / ORCHESTRATE Phase 0. * docs(orchestrate): check off Phase 0 Phase 0 (the isolated $path -> $project_path fix) is implemented, tested, and approved at the review gate. Check off 0.1-0.5 to keep the tracking checklist current before Phase 1. * test(planning): characterize .STATUS field readers before refactor Snapshots the current byte-exact output of _dash_get_status_field (+ its Status/Focus/Progress wrappers), the inline greps in morning/next/ capture, and _flow_where_fallback across dialect, colon-in-value, %- in-non-progress-field, missing-field, and status-synonym cases. Green on today's code (17/17) — the parity guard required before any _flow_status_field accessor exists, per SPEC §3.1 / ORCHESTRATE 1.0. Also documents a pre-existing bug found while characterizing: _flow_- where_fallback's `local status=...` crashes (status is a zsh read-only special variable, even function-local), so it never actually prints Status:/Focus: today. Captured explicitly as the one assertion that is expected to flip after the Phase 1 migration fixes it as an unavoidable side effect of touching that line. * refactor(planning): shared .STATUS/project accessors Adds three shared accessors to lib/core.zsh (SPEC-planning-coordination -2026-07-01 §3.1), each pinned by new unit tests: - _flow_status_field <root> <field>: replaces the 4 divergent .STATUS field readers (_dash_get_status_field, and the inline greps in morning/next/capture). Handles both "## Field:" and "field:" dialects; does NOT strip '%' (kept at call sites — a universal strip would corrupt any other field containing '%', e.g. "## Focus: hit 80% coverage"; also dash's own _dash_get_project_progress '%'-strip is a pre-existing zsh pattern-matching no-op, confirmed via characterization and left untouched, out of migration scope). - _flow_resolve_project_path <name>: merges _dash_find_project_path's taxonomy (dev-tools/apps/r-packages/research/teaching/quarto- manuscripts/quarto-presentations) with _flow_get_project_fallback's exact-root-match + generic quarto/ fallback. Always emits `project_path=`, never `path=`. - _flow_suggest_project <strategy>: replaces the 5 project-suggestion reimplementations (dash "right now"/footer, morning priority scan, adhd next/js) with one active/priority/random scan. NOT byte-parity guarded like the field reader (the 5 sites genuinely differ in selection logic) — each strategy is pinned by its own test instead. _dash_get_status_field, _dash_find_project_path, and _flow_get_project_fallback now delegate to the shared accessors as thin wrappers, so their ~25 combined internal call sites needed no changes. Also routes `agenda` (agenda.zsh) through the shared _schedule_window_records pipeline (schedule.zsh), which gained two additive, backward-compatible parameters (category, keep_holidays) so agenda's --all/category-filter behavior is preserved while the collect->filter->sort->holiday-drop logic now lives in one place. _schedule_classify stays for OVERDUE/TODAY/WEEK/LATER bucketing. Bug fixes discovered via characterization (tests/test-status-field- parity.zsh, task 1.0) and fixed as an unavoidable side effect of the mandated atlas-bridge.zsh:836 migration: _flow_where_fallback declared `local status=...`, but `status` is a zsh read-only special variable even as a function-local, so it crashed before ever printing Status:/ Focus: — the characterization test that captured this crash was updated (not silently adjusted) to assert the now-fixed behavior, with the reasoning documented inline. Also fixed in this pass: a genuine zsh gotcha found while developing _flow_suggest_project — redeclaring `local var` on an already-local variable on every iteration of a `while read ... done <<< ...` loop causes zsh to echo the previous iteration's value to stdout. Fixed by declaring loop-scoped locals once, outside the loop. Scope calls made along the way (flagged per the phase-gate review process): - capture.zsh's daily_goal read drops its `grep -i` case-insensitivity; every real .STATUS uses lowercase "## daily_goal:" (templates/docs), so this is a narrowing with no real-world effect. - _flow_resolve_project_path checks the project-root exact match LAST (matching _dash_find_project_path's original, better-tested order) rather than FIRST (_flow_get_project_fallback's original order) — the two disagreed; dash's order wins as the fuller, more-tested taxonomy for this now-shared function. - _flow_suggest_project's wiring into all 5 original call sites was done (not left as unwired dead code), backstopped by existing dash/adhd/morning test coverage plus the new strategy-level tests and a manual dogfood pass (dash/morning/next/js/agenda all producing correct, unchanged-looking output against a live fixture). tests/test-status-field-parity.zsh (task 1.0, characterization) stays green post-refactor except the one flagged, deliberate exception above. Full ./tests/run-all.sh: 71 passed, 0 failed, 0 timeout, 1 skipped (pre-existing, tool-absence skip — up from 67/0/0/1 pre-Phase-1 by the 4 new suites registered here). * docs(contract): pin proposed atlas agenda read contract (dark-ready) Adds the atlas agenda <window-days> --format=json section (Track C, SPEC-planning-coordination-2026-07-01 §3.4) alongside the existing atlas schedule push section, bumps contract to v1.2.0. Pins only the read INTERFACE flow-cli calls (_flow_atlas_json agenda "$window"); how atlas populates Task.dueDate — including whether it ever reads .STATUS itself — is explicitly left as atlas's own open design question (D4), not prescribed here. No atlas release implements `agenda` yet; this is the proposed contract ahead of the implementing code landing in the same commit range. * feat(agenda): merge atlas agenda source into schedule engine (dark-ready) Adds a third, capability-probed source to _schedule_collect alongside .STATUS Schedule blocks and teach-config: atlas-tracked deadlines (Task.dueDate). Ships as tested, INERT code — no atlas release implements `agenda` yet (Track B, tracked separately) — same posture `schedule push` shipped with before atlas B existed. - _schedule_atlas_items <window> (lib/schedule.zsh): probes `atlas agenda --help` once per session (cached in _FLOW_ATLAS_HAS_AGENDA, mirroring _FLOW_ATLAS_HAS_SCHEDULE), calls _flow_atlas_json agenda "$window", maps the JSON array to the engine's date|label|type|project|recurrence|source shape with source hardcoded to `atlas`. Requires jq to parse the array response — jq absence is just another silent-no-op path, same as atlas absence; the engine adds no hard dependency. - Wired into _schedule_collect as a third source after the per-project loop (one call per collect, not per-project — atlas returns cross-project results in one shot). Category filtering resolves each atlas record's project to a local path the same way the other two sources do. - Added a dedupe pass on (date, label, project) — the first duplicate- possible scenario in this engine, since .STATUS + teach-config could never structurally collide before. First occurrence wins, so a local .STATUS record always takes priority over an atlas duplicate of it. - `at` dispatcher (2.5): verified, not implemented — the existing generic `atlas "$@"` passthrough already forwards `at agenda ... --format=json` correctly when atlas is present; confirmed via a stub-atlas dogfood check, no code change needed. Tests (all new, registered in tests/run-all.sh): - tests/test-schedule-atlas-source.zsh (6 unit tests): function exists; absent-via-capability-flag is empty (D15 — not FLOW_ATLAS_ENABLED=no alone); present-but-incapable (older atlas) is empty; capable atlas maps the fixture correctly; capability probe is cached; jq-absent is a graceful no-op. - tests/e2e-agenda-atlas.zsh (5 e2e tests, stub atlas shim on PATH per D16 — real atlas can't be used, it lacks the command): atlas-absent output unaffected; atlas-present merges fixture items; atlas items pass the category filter via _schedule_collect directly (agenda's CLI hardcodes window=7 for category filters, which would make a date-window assertion here flaky against the fixture's fixed dates as real time passes — verified `_schedule_filter_window` always retains "overdue" regardless of window, then used a wide window directly against _schedule_collect to make the category-match assertion itself window-independent); dedupe — an atlas record identical to a local one on (date,label,project) does not double-count. - tests/test-atlas-contract.zsh: 2 new assertions pinning atlas-agenda-stub.json's shape to the contract doc's documented example — verified with a planted-defect check (removed a field from the fixture, confirmed the test fails; restored, confirmed it passes again) that this guard actually catches contract/fixture drift, not just a tautology. - tests/fixtures/atlas-agenda-stub.json (new): the canned `atlas agenda --format=json` response used by the above. Dogfood (manual, against a live multi-project fixture): - No atlas: dash "right now"/footer suggestion, morning priority suggestion, and agenda output are byte-identical to the Phase 1 dogfood pass — confirmed degradation is truly a no-op. - Atlas stub present: both fixture deadlines merge into `agenda -m` alongside the local project's own item, no duplication, correct THIS WEEK / LATER bucketing. Full ./tests/run-all.sh: 73 passed, 0 failed, 0 timeout, 1 skipped (pre-existing tool-absence skip; up from 71 by the 3 new suites registered here — test-schedule-atlas-source, e2e-agenda-atlas, plus test-atlas-contract's 2 new assertions inside the existing suite). Scope note: ORCHESTRATE's Key Files list referenced tests/integration/agenda-merged-sources.zsh as a file to "extend" for 3-source dedup coverage; it did not exist in this repo. Dedup coverage was added as e2e-agenda-atlas.zsh Section 3 instead (flagged for review, same as the Phase 0/1 scope calls). * feat(status): add .STATUS template + warn-only schema enforcer flow-cli-scoped only (SPEC-planning-coordination-2026-07-01 §3.6, D9) — not an ecosystem-wide standard. Reuses the scripts/check-math.zsh pattern (standalone, lint-staged-wired, callable directly). - templates/.STATUS.template: canonical structure with inline comments — header fields (Project/Type/Status/Focus/Phase/Priority/Progress), the ## Schedule: grammar, ## daily_goal:, ## Active Worktrees, session-log convention. Documents the dual dialect ("## Field:" / "field:") _flow_status_field supports. Priority/Progress/Status use concrete starter values (2/0/active), not bracketed placeholders, so the template itself validates clean — a placeholder like "<integer 0-100>" would otherwise fail the Progress format check. - scripts/check-status.zsh: validates required fields present, Progress is an integer 0-100, Status is in the allowed set (active|paused|archived|blocked, or a recognized _flow_status_field synonym), and ## Schedule: lines match the grammar _schedule_parse_status (lib/schedule.zsh) actually expects — a line the real parser can't match is silently dropped there (invisible, not fatal), which is exactly the mistake worth surfacing here. D11 HARD CONSTRAINT: exits 0 always, no matter how malformed the input — prints violations, never blocks. Verified directly against the maximally-broken-input case, not just asserted. - Wired into lint-staged as a literal ".STATUS" key (not a glob), alongside the existing "*.qmd" -> check-math.zsh entry. Two zsh footguns found and fixed while writing check-status.zsh (both first discovered in Phase 1, recurring here in new code — same lib/core.zsh `_flow_status_field` root+filename convention doesn't apply to templates/.STATUS.template, whose filename isn't literally ".STATUS": staged a throwaway copy under that exact name per validation call so the accessor's contract is met without duplicating its parsing logic): - `local status=...` crashes (status is a zsh read-only special variable, even function-local) -> renamed to `proj_status`. - redeclaring `local var` inside a loop echoes the previous iteration's value to stdout -> all loop-scoped locals declared once, outside the loops. tests/test-status-schema.zsh (14 tests, registered in tests/run-all.sh): checker/template exist; a fully valid fixture produces zero warnings and exit 0; the template and flow-cli's own .STATUS both pass clean; missing-field / bad-Progress (out-of-range and non-numeric) / bad-Status / malformed-Schedule-line all warn but still exit 0; a Status synonym is NOT flagged; a maximally-broken fixture (not even STATUS-shaped) still exits 0; no-args exits 0; lint-staged wiring is present. Full ./tests/run-all.sh: 74 passed, 0 failed, 0 timeout, 1 skipped (pre-existing tool-absence skip; up from 73 by this one new suite). * docs(planning): agenda/dispatcher/API guides + CHANGELOG Phase 4 (Documentation & Discoverability) — SPEC-planning-coordination -2026-07-01 §6, ORCHESTRATE final phase. - docs/reference/MASTER-API-REFERENCE.md: documents the 4 new/changed functions (_flow_status_field, _flow_resolve_project_path, _flow_suggest_project in a new "Project Utilities" subsection; _schedule_atlas_items in a new "Schedule Engine" top-level section — lib/schedule.zsh had no section here before). Coverage count bumped 178 -> 182. - docs/guides/AGENDA-SCHEDULE-GUIDE.md: adds a mermaid data-source diagram (.STATUS + teach-config + atlas -> collect -> dedupe -> surfaces), a new "3. Atlas-tracked deadlines" source entry, and rewrites "Atlas integration" into push (shipped) + read (dark-ready) halves. The read half includes a REAL captured `agenda -m` run (memory capture-real-agenda-output-for-docs — built a live 3-source fixture with a stub atlas, ran it, transcribed the actual output; not fabricated) showing a .STATUS item, a teach-config item, and an atlas-sourced item merged, correctly typed and bucketed. - docs/reference/MASTER-DISPATCHER-GUIDE.md: notes the engine now merges three sources and that the atlas one degrades to a silent no-op without atlas. - docs/help/QUICK-REFERENCE.md: tip clarifying `agenda` spans every project category (dev/r/quarto/apps), not just research/teach. - docs/ATLAS-CONTRACT.md: verified already current from Phase 2 (v1.2.0, `atlas agenda` documented) — no further change needed. - CONTRIBUTING.md: new ".STATUS Files" subsection pointing at templates/.STATUS.template and scripts/check-status.zsh (warn-only). Inserted narrowly — this file is otherwise significantly stale (describes a structure/toolchain that doesn't match flow-cli's actual pure-ZSH layout); that pre-existing staleness is out of scope here and is flagged in the phase report, not fixed. - CHANGELOG.md + docs/CHANGELOG.md: mirrored [Unreleased] entries for all of Phases 0-3 (shared accessors, atlas agenda source + dedupe, .STATUS template/enforcer, the $path and _flow_where_fallback bug fixes). The two files were already drifted before this commit (an extra "tok mint" entry only in docs/CHANGELOG.md, a missing blank line before the 7.13.0 heading) — not reconciled here, flagged in the phase report as a separate pre-existing issue. - CLAUDE.md: test-file count 219 -> 245 (already stale beyond just this phase's +8 new files — pre-existing drift); suite-run wording corrected from "67/67 passing, 1 expected interactive/tmux timeout" to "74/74 passing, 1 skipped — required external tool absent" to match what run-all.sh actually reports today (a skip, not a timeout); added scripts/check-status.zsh and templates/ to the structure tree. - docs/specs/SPEC-agenda-schedule-2026-06-13.md: Status draft -> Implemented, with a pointer to this SPEC's §3.4 for the atlas-source addition. Verification: - `mkdocs build --strict`: 0 warnings (clean). - markdownlint (craft's config — flow-cli has no markdownlint config or CI step of its own; runs prettier instead): 0 findings in every region this commit touched. 20 pre-existing findings remain in CHANGELOG.md (historical entries, lines 128-1065) and the SPEC file (lines 66-114, pre-existing body) — untouched by this commit, flagged rather than fixed (out of scope). - Full ./tests/run-all.sh: 74 passed, 0 failed, 0 timeout, 1 skipped (unchanged from Phase 3 — this phase touches docs only). * docs(orchestrate): check off final acceptance criteria (reviewer-verified) Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BvJR434JKwmpq8LD458Aum * fix(test): hide jq via controlled PATH, not /bin assumption (Linux CI) test_no_jq_is_graceful_noop used PATH="$STUB_BIN:/bin", assuming /bin is jq-free. True on macOS (a real, separate /bin). False on Ubuntu's ubuntu-latest CI runner: Ubuntu has been usr-merged since 19.10, so /bin is a symlink to /usr/bin, which ships jq preinstalled. /bin/jq resolved on CI, the no-op branch never triggered, and the test failed with a non-empty assert_empty. Same bug class as the documented macos-only-shell-isms-break-linux-ci gotcha, new instance: a PATH- based "hide this tool" assumption that only holds on macOS's non-merged /bin. Fix: PATH="$STUB_BIN" alone, no /bin. $STUB_BIN is a fresh mktemp dir under the test's exclusive control containing only the atlas stub, so it's guaranteed jq-free on every platform — no reliance on any real system directory's contents. Verified nothing else was needed from /bin: _schedule_atlas_items only consults `atlas` (found — the stub) and `jq` (not found, by construction) on PATH before its early return; confirmed `command -v jq` fails under PATH="$STUB_BIN" alone. Local verification: tests/test-schedule-atlas-source.zsh 6/6 passing; full ./tests/run-all.sh 74 passed, 0 failed, 0 timeout, 1 skipped (unchanged pre-existing tool-absence skip). --------- Co-authored-by: Test User <test@example.com> Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Remove ORCHESTRATE-planning-coordination.md (implementation complete, merged) and update .STATUS: clear the worktree entry, record the session summary (5 phase-gated increments, 2 real zsh bugs found+fixed, 1 Linux-CI-only bug caught before merge). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BvJR434JKwmpq8LD458Aum
…int entry tok mint (2ed8504, merged 2026-06-30, PR #480) was documented in docs/CHANGELOG.md's [Unreleased] but missing from root CHANGELOG.md. Add it to root, matching wording, ahead of the v7.14.0 release cut. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BvJR434JKwmpq8LD458Aum
Version bump (flow.plugin.zsh, package.json, CLAUDE.md, 23 man pages .TH lines) + CHANGELOG [Unreleased] -> [7.14.0] (mirrored, both files) + docs/index.md What's New refresh (was stale at v7.10.2, 3 releases behind). Ships: shared .STATUS/project accessors, dark-ready atlas agenda source, .STATUS template + warn-only enforcer, $path bug fix, atlas-bridge crash fix. See CHANGELOG.md [7.14.0] for full detail. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BvJR434JKwmpq8LD458Aum
…ak audit Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BvJR434JKwmpq8LD458Aum
Investigation only, no fixes applied. Confirms mkdocs/tests/CHANGELOG clean; finds real staleness in docs/guides/TESTING.md (219/67 vs actual 74/74), a test-count methodology inconsistency (230 raw files / 75 registered suites / 245 claimed), and >=5 stale-marked-draft specs whose features have shipped per CHANGELOG evidence. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BvJR434JKwmpq8LD458Aum
- Fixed test-count staleness: docs/guides/TESTING.md (219/67 -> 230/74, 2 locations) and CLAUDE.md (245 -> 230 test files, 2 locations). Canonical methodology: 'test files' = raw .zsh count under tests/ (230, via find); 'registered suites' = run_test entries in run-all.sh (75 total, 74 pass + 1 skip). - Marked 8 specs Implemented, each with a real evidence pointer (not just 'looks old'): teach-doctor-v2, teach-deploy-v2, teach-plan-v2 (test suites passing), em-v2 (README What's New v7.5.0), dot-rename-split (README What's New v7.1.0), teach-map (CHANGELOG v6.6.0 + dispatcher guide), latex-macros (lib/macro-parser.zsh + test file exist), testing-framework (test-framework.zsh + dogfood-test-quality.zsh + CI gate all exist as specced). SPEC-himalaya-editor-plugin-2026-02-11.md checked and left as-is — its 'partially-implemented' annotation is already accurate. Verified: mkdocs build --strict 0 warnings; full suite 74/0/0/1 (reproduced 4x across this session, stable). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BvJR434JKwmpq8LD458Aum
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BvJR434JKwmpq8LD458Aum
…th (#485) * feat(doctor): add INSTALLATION section for Homebrew distribution health Catches the class of bug fixed in homebrew-tap PR #135: a Homebrew formula install that "succeeds" (brew reports installed, brew upgrade says "already installed") but silently fails to link — man-page name collisions on case-insensitive filesystems, and shell/Cellar version drift after an upgrade the user forgot to restart their shell for. New `_doctor_check_installation` checks, scoped to flow-cli's own Homebrew install (skips silently for git-clone/plugin-manager installs): - opt/Cellar symlink integrity (installed-but-unlinked detection) - shell-loaded FLOW_VERSION vs. installed Cellar keg version drift - flow-cli's own man pages actually resolving into the shared man1 dir (vs. losing a case-insensitive name collision to another formula, scoped to formulae that actually link — Homebrew's own keg-only convention, e.g. lua vs lua@5.4, produces same-name kegs constantly and is not a bug) New tests/e2e-doctor-install.zsh (7 scenarios, all via mocked `brew`). * docs(doctor): document INSTALLATION check category Adds the new section to REFCARD-DOCTOR.md's check-category list (renumbering the categories after it) and to both CHANGELOGs. --------- Co-authored-by: Test User <test@example.com>
231 test files (was 230), 76 registered suites (was 75), 75/75 passing (was 74/74) — reflects tests/e2e-doctor-install.zsh added in PR #485. Also fixed a pre-existing 32→33 command-file drift.
Adds docs/commands/{ref,setup,tutorial}.md and a "sec tutorial"
subsection in SECRET-MANAGEMENT.md, wired into mkdocs nav — the last
4 user-facing commands flagged undocumented by DOC-DASHBOARD.md.
Also syncs MASTER-DISPATCHER-GUIDE.md's claude section, stale at C1-C6
since v7.13.0 added C7-C11 + the watch daemon (found via a 2-week
commit-vs-docs audit).
Includes the BRAINSTORM writeup for closing stale issue #423 (already
fully shipped, closed with commit evidence).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
SPEC-code-workspace-2026-02-13.md (code ws dispatcher) sat in draft for 4.5mo with zero implementation and no references anywhere in commands/ or lib/ — no demand signal beyond the original brainstorm. Overloading the code binary carries real risk (flow-cli already needs a binary-precedence guard for r/mcp/cc) without a validated need. Archived rather than deleted — fully recoverable via git history if the need resurfaces. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
13 recipes across the two cadences flow-cli is built around (morning -> work -> dash -> finish daily; agenda -w -> dash -> wt prune -> g sync -> yay --week -> doctor weekly), each sourced from real command docs. Wired into mkdocs nav under Workflows & Guides. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Points to the Claude Artifact companion (Daily/Weekly toggle, step cards, right-side big-picture panel with ring diagrams for both loops) without hardcoding the session-scoped URL. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Closes an ADHD-organization gap: setup (interactive wizard) and tutorial (12 lessons) are the commands built specifically to reduce onboarding friction, but weren't linked anywhere on the page whose job is reducing onboarding friction. Also adds the new Workflow Cookbook to the Next Steps grid and ref to the core command list. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Splits the flat 8-card grid into "New here?" / "Solve a specific problem" / "Already using it? Look something up" — turns one 8-way decision into three easier 2-4-way ones, matching the page's own decision-fatigue-reduction philosophy. Adds the missing Setup Wizard card. Trims the What's New admonition from 5 dense bullets to 2 headline items + a changelog pointer for the rest. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Cookbook, ref/setup/tutorial/sec-tutorial docs, claude section C7-C11 sync, and homepage reorganization — none were reflected in the Unreleased section yet, only the doctor INSTALLATION feature was. Root and docs/ mirrors verified identical. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Version bump: package.json, package-lock.json (version-only, drifted since 7.13.0), CLAUDE.md, flow.plugin.zsh, 23 man pages. CHANGELOG: [Unreleased] -> [7.15.0] in both root and docs/ mirrors (verified identical). docs/index.md What's New + footer version refreshed to headline this release's actual content (doctor INSTALLATION checks, doc gap fills) instead of the stale v7.14.0 planning-coordination summary. Verified: 74/74 effective tests pass (1 timeout + 1 skip, both documented baseline), mkdocs build --strict clean, 12/12 man-page version-sync guard checks pass. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
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.
Release v7.15.0
Homebrew distribution health checks + documentation gap fills.
Added
doctorINSTALLATION section — catches Homebrew distribution failures (opt/Cellar symlink drift, stale kegs, man-page name collisions) that silently breakbrew upgrade. Newtests/e2e-doctor-install.zsh(7 scenarios).docs/guides/WORKFLOW-COOKBOOK.md— daily/weekly routine cookbook with a Mermaid diagram, 13 recipes.ref,setup,tutorial— the last 3 undocumented user-facing commands (confirmed viadocs/DOC-DASHBOARD.md), wired into MkDocs nav.sec tutorialsubsection indocs/SECRET-MANAGEMENT.md.Fixed
MASTER-DISPATCHER-GUIDE.mdclaudesection — was stale at C1-C6 since v7.13.0 shipped C7-C11 + the watch daemon; now synced.Changed
setup/tutorial/ref/Cookbook, none previously linked from the homepage.Test plan
./tests/run-all.sh→ 74 passed / 0 failed / 1 timeout / 1 skipped (matches documented baseline: timeout = interactive/tmux test, skip = himalaya absent — both expected locally)mkdocs build --strict→ 0 warningsmarkdownlint-cli2on all touched docs → 0 new errors (pre-existing MD049 hits in CHANGELOG.md history untouched by this release)tests/test-manpage-version-sync.zsh→ 12/12 guard checks pass🤖 Generated with Claude Code