Skip to content

Docs review — 2026-05-25 (cac8515) #230

@Luis85

Description

@Luis85
  • [BLOCKER] CLAUDE.md:67demo:dev comment claims the command builds the library first, but it does not

    details

    Drift: CLAUDE.md:67 annotates npm run demo:dev with # build library then run examples/product-demo via Vite. The actual script is cd examples/product-demo && npm run dev — it only starts the Vite dev server; no library build. A developer following only this table runs the demo against a stale or empty dist/ and gets import errors.

    Evidence: grep -n 'demo:dev' CLAUDE.md → line 67: npm run demo:dev # build library then run examples/product-demo via Vite. jq '.scripts["demo:dev"]' package.json"cd examples/product-demo && npm run dev". (Carried from Docs review — 2026-05-18 (af3914f) #215; still open.)

    Fix:

    -npm run demo:dev      # build library then run examples/product-demo via Vite
    +npm run demo:dev      # start examples/product-demo Vite dev server (run `npm run build` first)

Counter-argument to my own [BLOCKER]: The annotation could describe the workflow context ("having built the library, then run the demo") rather than the command's own action. CLAUDE.md:100 already says "Build the library first (npm run build) before running the demo," so an attentive reader knows the prerequisite. Counter doesn't hold: # description in a command-table entry universally means "what this command does." The phrase "build library then run" is an unambiguous false claim. Finding kept.


  • [MAJOR] CLAUDE.md:79-80 — architecture map places needs policies in src/cognition/; they live in src/needs/

    details

    Drift: CLAUDE.md:79-80 reads "src/cognition/UrgencyReasoner, DirectBehaviorRunner, needs policies (Expressive, Active, Composed)." The three policy files — ActiveNeedsPolicy.ts, ComposedNeedsPolicy.ts, ExpressiveNeedsPolicy.ts — live in src/needs/, not src/cognition/. src/cognition/ has no policy files.

    Evidence: ls src/cognition/Intention.ts, IntentionCandidate.ts, adapters/, behavior/, learning/, personaBias.ts, reasoning/, tuning.ts — no policy files. ls src/needs/ | grep -i policyActiveNeedsPolicy.ts, ComposedNeedsPolicy.ts, ExpressiveNeedsPolicy.ts, NeedsPolicy.ts. (Carried from Docs review — 2026-05-11 (9b16676) #202; still open.)

    Fix:

    -- `src/cognition/` — `UrgencyReasoner`, `DirectBehaviorRunner`, needs
    -  policies (`Expressive`, `Active`, `Composed`). Tuning constants in
    -  `src/cognition/tuning.ts`.
    +- `src/cognition/` — `UrgencyReasoner`, `DirectBehaviorRunner`. Tuning constants in
    +  `src/cognition/tuning.ts`.

    And extend the existing src/needs/ bullet:

    -- `src/needs/`, `src/mood/`, `src/lifecycle/`, `src/animation/` —
    -  homeostatic needs, categorical mood, birth→death, animation state
    -  machine.
    +- `src/needs/` — homeostatic needs + needs policies (`ExpressiveNeedsPolicy`,
    +  `ActiveNeedsPolicy`, `ComposedNeedsPolicy`).
    +- `src/mood/`, `src/lifecycle/`, `src/animation/` — categorical mood,
    +  birth→death, animation state machine.
  • [MAJOR] .claude/skills/verify/SKILL.md:9,43 — skill body says "five stages" / "All 5 stages green"; the verify script has seven

    details

    Drift: SKILL.md line 9 says "The underlying npm script runs all five stages sequentially" and line 43 says "All 5 stages green — ready to PR." npm run verify runs seven stages: format:check && lint && lint:demo && typecheck && test && build && docs. CLAUDE.md:66 correctly lists all seven; the skill omits lint:demo (stage 3) and docs (stage 7) throughout.

    Evidence: jq '.scripts.verify' package.json"npm run format:check && npm run lint && npm run lint:demo && npm run typecheck && npm run test && npm run build && npm run docs". grep -n 'five\|5 stage' .claude/skills/verify/SKILL.md → lines 9, 43. (Carried from Docs review — 2026-05-18 (af3914f) #215; still open.)

    Fix: Replace every "five"/"5" count with "seven"/"7"; add npm run lint:demo as stage 3 and npm run docs as stage 7 to the stage list and isolation-commands block; update the pass-line to "All 7 stages green."

  • [MAJOR] examples/product-demo/README.md:150-157 — localStorage key table documents pre-refactor keys; demo now uses demo.v2.* and __agentonomous/* namespaces

    details

    Drift: The README table shows four keys: agentonomous/whiskers, agentonomous/__agentonomous/index__, agentonomous/whiskers/tfjs-network, agentonomous/speed. After the keyspace split: (1) snapshot data key is agentonomous/__agentonomous/data/whiskers (DATA_PREFIX = '__agentonomous/data/' in LocalStorageSnapshotStore.ts:16); (2) index key is agentonomous/__agentonomous/meta/index (META_INDEX_KEY at line 8); (3) speed key is demo.v2.session.speed (SpeedPicker.vue); old agentonomous/speed is explicitly purged by purgeLegacyDemoKeys() in app/main.ts.

    Evidence: grep -n 'META_INDEX_KEY\|DATA_PREFIX' src/persistence/LocalStorageSnapshotStore.ts → lines 8, 16. grep -n 'SPEED_STORAGE_KEY' examples/product-demo/src/components/shell/SpeedPicker.vue'demo.v2.session.speed'. grep -n 'agentonomous/speed' examples/product-demo/src/app/main.ts → listed as legacy key to purge. (Carried from Docs review — 2026-05-18 (af3914f) #215; still open.)

    Fix:

    -| `agentonomous/whiskers`               | Agent snapshot (auto-save, every 5 s)          |
    -| `agentonomous/__agentonomous/index__` | Snapshot store index                           |
    -| `agentonomous/whiskers/tfjs-network`  | Trained Learning-mode snapshot (Train button)  |
    -| `agentonomous/speed`                  | Speed-picker preference (not part of snapshot) |
    +| `agentonomous/__agentonomous/data/whiskers` | Agent snapshot (auto-save)              |
    +| `agentonomous/__agentonomous/meta/index`    | Snapshot store index                    |
    +| `agentonomous/whiskers/tfjs-network`        | Trained Learning-mode snapshot          |
    +| `demo.v2.session.speed`                     | Speed-picker preference                 |
  • [MAJOR] PUBLISHING.md:86-87npm run size described as checking 2 dist entries; package.json#size-limit has 5

    details

    Drift: Lines 86-87 say "npm run size runs the size-limit budget against the built dist/index.js and dist/integrations/excalibur/index.js (gzip)." package.json#size-limit has 5 entries: core, excalibur, and the three cognition adapters (mistreevous, js-son, tfjs).

    Evidence: grep -c '"path"' package.json → 5. (Carried from Docs review — 2026-05-04 (0f72ad7) #191; still open.)

    Fix:

    -`npm run size` runs the `size-limit` budget against the built
    -`dist/index.js` and `dist/integrations/excalibur/index.js` (gzip). Budgets
    -live in the `size-limit` field of `package.json`.
    +`npm run size` runs the `size-limit` budget against all five entries in
    +`package.json#size-limit` (core, excalibur, and the three cognition adapters:
    +mistreevous, js-son, tfjs). Authoritative limits live in that field.
  • [MAJOR] README.md:316 and examples/llm-mock/README.md:4 — both reference LlmReasoner but no such class exists in src/

    details

    Drift: README.md:316 says "LlmReasonercreateAgent under SeededRng + ManualClock." examples/llm-mock/README.md:4 says "Wires a MockLlmProvider (deterministic, no network) into a tiny LlmReasoner." Neither the library nor the example defines a class named LlmReasoner. The example (examples/llm-mock/index.ts) implements an inline Reasoner directly.

    Evidence: grep -rn 'LlmReasoner' src/ → no results. grep -rn 'class.*Reasoner\|LlmReasoner' examples/llm-mock/ → no class named LlmReasoner. (Carried from Docs review — 2026-05-11 (9b16676) #202; still open.)

    Fix (README.md:316):

    -A full end-to-end runnable example — `MockLlmProvider` →
    -`LlmReasoner` → `createAgent` under `SeededRng` + `ManualClock`,
    +A full end-to-end runnable example — `MockLlmProvider` →
    +inline `Reasoner` → `createAgent` under `SeededRng` + `ManualClock`,

    Fix (examples/llm-mock/README.md:4):

    -Wires a `MockLlmProvider` (deterministic, no
    -network) into a tiny `LlmReasoner` and runs a `createAgent`-built agent
    +Wires a `MockLlmProvider` (deterministic, no
    +network) into a tiny inline `Reasoner` and runs a `createAgent`-built agent
  • [MAJOR] docs/plans/2026-04-26-quality-codeql.md — all implementation steps [ ] but umbrella tracker marks this chunk shipped

    details

    Drift: docs/plans/2026-04-26-quality-automation-routines.md row 1 is [x] shipped for the CodeQL chunk. The chunk plan itself has every implementation step still [ ]. A reader of the chunk plan sees multiple open tasks for already-shipped work. Work product confirmed: .github/workflows/codeql.yml exists.

    Evidence: grep -c '\- \[ \]' docs/plans/2026-04-26-quality-codeql.md → 9. grep 'codeql' docs/plans/2026-04-26-quality-automation-routines.md → row 1 [x] shipped. git ls-files .github/workflows/codeql.yml → exists. (Carried from Docs review — 2026-05-18 (af3914f) #215; still open.)

    Fix: Flip all step checkboxes to [x], then git mv docs/plans/2026-04-26-quality-codeql.md docs/archive/plans/ per archive convention (add banner > **Archived YYYY-MM-DD.** Completed., no body edits).

  • [MAJOR] docs/plans/2026-04-26-quality-dep-triage-bot.md — all implementation steps [ ] but umbrella tracker marks this chunk shipped

    details

    Drift: Umbrella tracker row 2 is [x] shipped for dep-triage-bot. The chunk plan has 8 open [ ] steps. Work product confirmed: docs/dep-triage-bot/PROMPT.md and .github/dependabot.yml exist.

    Evidence: grep -c '\- \[ \]' docs/plans/2026-04-26-quality-dep-triage-bot.md → 8. grep 'dep-triage' docs/plans/2026-04-26-quality-automation-routines.md → row 2 [x] shipped. (Carried from Docs review — 2026-05-18 (af3914f) #215; still open.)

    Fix: Same as cac8515.7 — flip checkboxes, archive with banner.

  • [MAJOR] docs/plans/2026-04-26-quality-actions-bump-bot.md — all implementation steps [ ] but umbrella tracker marks this chunk shipped via docs(routine): add weekly action-SHA bump prompt #142

    details

    Drift: Umbrella tracker row 3 is [x] shipped via #142. The chunk plan has 6 open [ ] steps. Work product confirmed: docs/actions-bump-bot/PROMPT.md and scripts/bump-actions.mjs exist.

    Evidence: grep -c '\- \[ \]' docs/plans/2026-04-26-quality-actions-bump-bot.md → 6. grep 'bump-bot' docs/plans/2026-04-26-quality-automation-routines.md → row 3 [x] shipped via #142. (Carried from Docs review — 2026-05-18 (af3914f) #215; still open.)

    Fix: Flip checkboxes, note PR docs(routine): add weekly action-SHA bump prompt #142, archive to docs/archive/plans/.

  • [MAJOR] docs/plans/2026-04-26-quality-plan-recon-bot.md — all implementation steps [ ] but umbrella tracker marks this chunk shipped via docs(routine): add monthly plan reconciliation prompt #143

    details

    Drift: Umbrella tracker row 4 is [x] shipped via #143. The chunk plan has 7 open [ ] steps. Work product confirmed: docs/plan-recon-bot/PROMPT.md exists.

    Evidence: grep -c '\- \[ \]' docs/plans/2026-04-26-quality-plan-recon-bot.md → 7. grep 'recon' docs/plans/2026-04-26-quality-automation-routines.md → row 4 [x] shipped via #143. (Carried from Docs review — 2026-05-18 (af3914f) #215; still open.)

    Fix: Flip checkboxes, note PR docs(routine): add monthly plan reconciliation prompt #143, archive to docs/archive/plans/.

  • [MAJOR] docs/plans/2026-04-26-quality-bundle-trend.md — all implementation steps [ ] but umbrella tracker marks this chunk shipped via ci(metrics): weekly bundle-size trend snapshot #144

    details

    Drift: Umbrella tracker row 5 is [x] shipped via #144. The chunk plan has 11 open [ ] steps. Work product confirmed: .github/workflows/bundle-size-trend.yml and scripts/append-size-snapshot.mjs exist.

    Evidence: grep -c '\- \[ \]' docs/plans/2026-04-26-quality-bundle-trend.md → 11. grep 'bundle-trend' docs/plans/2026-04-26-quality-automation-routines.md → row 5 [x] shipped via #144. (Carried from Docs review — 2026-05-18 (af3914f) #215; still open.)

    Fix: Flip checkboxes, note PR ci(metrics): weekly bundle-size trend snapshot #144, archive to docs/archive/plans/.

  • [MINOR] docs/plans/2026-04-26-pre-v1-demo-guided-walkthrough.md — all five slices marked ✅ shipped but plan has not been archived

    details

    Drift: The plan's roadmap table shows all 5 slices ✅ shipped via PRs feat(demo): walkthrough domain module + headless tests (Pillar-1 slice 1.1) #140, feat(demo): Vue/Pinia/Router shell bootstrap + petCare salvage (Pillar-1 slice 1.2a) #146, feat(demo): chapter-1 vertical + bridge swap (Pillar-1 slice 1.2b) #150, feat(demo): chapters 2-5 + typed selector registry (Pillar-1 slice 1.3) #153, feat(demo): tour-happy-path Playwright spec + CI gate (Pillar-1 slice… #158. The evolution-plan tracker (docs/product/2026-04-26-pre-v1-demo-evolution-plan.md) also marks Pillar 1 as ✅ shipped. No archive banner; plan still in docs/plans/.

    Evidence: grep -c '✅' docs/plans/2026-04-26-pre-v1-demo-guided-walkthrough.md → 5. grep '\- \[ \]' docs/plans/2026-04-26-pre-v1-demo-guided-walkthrough.md → 0 open items. (Carried from Docs review — 2026-05-18 (af3914f) #215; still open.)

    Fix:

    git mv docs/plans/2026-04-26-pre-v1-demo-guided-walkthrough.md docs/archive/plans/

    Add banner > **Archived YYYY-MM-DD.** All slices shipped via #140 / #146 / #150 / #153 / #158. per docs/archive/README.md convention. Update the link in docs/product/2026-04-26-pre-v1-demo-evolution-plan.md accordingly.

  • [MINOR] Four docs/plans/2026-04-27-review-bot-*.md plans still in docs/plans/ despite all underlying code fixes shipping

    details

    Drift: The four plan files for findings d9b4b85.1d9b4b85.4 remain in docs/plans/ without archive banners. All four code fixes are confirmed merged on develop: d9b4b85.1PlayView.vue now calls readPersistedSeed(DEFAULT_SCENARIO_ID) (import confirmed at line 5); d9b4b85.2cognitionSwitcher.ts refactored to build learner before wiring (commit comment at line 443 explains the fix); d9b4b85.3attachResetHandler moved after import in tests/examples/learningMode.train.test.ts (PR fix(test): move attachResetHandler below static imports #163); d9b4b85.4scripts/review-fix-parse.mjs:105 now uses explicit .getTime().

    Evidence: grep -n 'readPersistedSeed' examples/product-demo/src/views/PlayView.vue → line 5 import. grep -n 'import.*TEST_BACKEND' tests/examples/learningMode.train.test.ts → line 21 (before function at line 29). grep -n 'getTime' scripts/review-fix-parse.mjs → line 105. (Carried from Docs review — 2026-05-18 (af3914f) #215; still open.)

    Fix:

    git mv docs/plans/2026-04-27-review-bot-minor-hardcoded-seed-storage-key-d9b4b85-1.md docs/archive/plans/
    git mv docs/plans/2026-04-27-review-bot-minor-new-reasoner-active-but-d9b4b85-2.md docs/archive/plans/
    git mv docs/plans/2026-04-27-review-bot-minor-attachresethandler-decl-before-d9b4b85-3.md docs/archive/plans/
    git mv docs/plans/2026-04-27-review-bot-nit-date-implicit-valueof-coercion-d9b4b85-4.md docs/archive/plans/

    Add archive banner to each per docs/archive/README.md convention.

  • [MINOR] docs/plans/2026-04-25-comprehensive-polish-and-harden.md:790 — "Open questions" section presents OQs 1–3 as unresolved; all three are resolved inline earlier in the same file

    details

    Drift: The "Open questions" section at line 790 lists three numbered items as if open. OQ1 (reward source) is resolved at line 518: "Open question 1 (reward source) resolved: consumer-supplied…". OQ2 (softmax target shape) is resolved at line 592: "Open question 2 (softmax target shape) resolved: stick to the 7…". OQ3 (backend picker UX) is fully resolved — row 20 shipped as PR feat(tfjs): detectBestBackend + probeBackend statics; demo backend picker #104 per the plan's own tracker table at line 86.

    Evidence: grep -n 'Open question.*resolved\|## Open questions' docs/plans/2026-04-25-comprehensive-polish-and-harden.md → resolutions at lines 518, 592; unresolved summary section at line 790. grep 'feat/tfjs-detect-backend-and-picker.*#104' docs/plans/2026-04-25-comprehensive-polish-and-harden.md → line 86 confirms row 20 shipped. (Expanded from Docs review — 2026-05-18 (af3914f) #215, which caught OQs 1–2; OQ3 also resolved as of feat(tfjs): detectBestBackend + probeBackend statics; demo backend picker #104.)

    Fix: In the "Open questions" section, mark all three items as resolved with a note referencing the inline decision or the PR:

    -1. **Row 16 reward source.** ...
    +1. **Row 16 reward source.** ~~**Resolved** — see line 518: consumer-supplied reward.~~
    -2. **Row 17 softmax target shape.** ...
    +2. **Row 17 softmax target shape.** ~~**Resolved** — see line 592: 7-way softmax, expression skills excluded.~~
    -3. **Row 20 backend picker UX.** ...
    +3. **Row 20 backend picker UX.** ~~**Resolved** — shipped in PR #104 with "show + disable + tooltip" pattern.~~
  • [MINOR] docs/plans/2026-04-25-comprehensive-polish-and-harden.md:825 and docs/plans/2026-04-26-quality-automation-routines.md:160 — dead reference to .claude/memory/feedback_one_pr_per_session.md (file does not exist)

    details

    Drift: Both files reference MEMORY.md → feedback_one_pr_per_session.md. No such file exists in .claude/memory/. The "one PR per session" rule lives in feedback_pr_hygiene.md.

    Evidence: ls .claude/memory/feedback_one_pr_per_session.md → NOT FOUND. ls .claude/memory/feedback_*.md → 10 files; no feedback_one_pr_per_session.md. (Carried from Docs review — 2026-05-18 (af3914f) #215; still open.)

    Fix:

    # comprehensive-polish-and-harden.md:825
    -See `MEMORY.md → feedback_one_pr_per_session.md` for the headline rule
    +See `MEMORY.md → feedback_pr_hygiene.md` for the headline rule
    
    # quality-automation-routines.md:160
    -(one PR per session — see `MEMORY.md → feedback_one_pr_per_session.md`),
    +(one PR per session — see `MEMORY.md → feedback_pr_hygiene.md`),
  • [MINOR] docs/specs/mvp-demo.md — spec filename is missing the required YYYY-MM-DD- date prefix

    details

    Drift: CLAUDE.md specifies "Specs live in docs/specs/YYYY-MM-DD-<slug>.md. Date prefix = first-commit date. Never drop the date." docs/specs/mvp-demo.md has no date prefix. Every other spec in the directory has one.

    Evidence: ls docs/specs/2026-04-24-post-tfjs-improvements.md, 2026-04-26-pre-v1-demo-evolution-design.md, 2026-04-26-pre-v1-demo-evolution-spec.md, 2026-05-06-strategy-ai-modding-review.md, mvp-demo.md. First-commit date: git log --follow --diff-filter=A -- docs/specs/mvp-demo.md2026-04-26. (Carried from Docs review — 2026-05-11 (9b16676) #202; still open.)

    Fix:

    git mv docs/specs/mvp-demo.md docs/specs/2026-04-26-mvp-demo.md

    Update the one internal link in docs/archive/plans/2026-04-19-mvp-demo-roadmap.md that points to this file.

  • [MINOR] PUBLISHING.md:38 — leaf-job list labelled "as of d9b4b85" is missing the e2e job added in PR feat(demo): tour-happy-path Playwright spec + CI gate (Pillar-1 slice… #158

    details

    Drift: The parenthetical leaf-job list (lines 38–44) does not include the e2e Playwright job. e2e was added to ci-gate.needs in PR feat(demo): tour-happy-path Playwright spec + CI gate (Pillar-1 slice… #158 and runs on every push. Anyone copying this list to configure branch protection would omit e2e.

    Evidence: grep -n 'e2e' .github/workflows/ci.yml → job defined at line 470, listed in ci-gate.needs at line 527. grep 'e2e' PUBLISHING.md → no results. (Carried from Docs review — 2026-05-18 (af3914f) #215; still open.)

    Fix: Either remove the parenthetical entirely (the preceding sentence already directs readers to add only CI gate (required check) as the single aggregator check — the safe long-term guidance) or update to include e2e:

    -`Build & size budget`, `Demo build (examples/product-demo)`.)
    +`Build & size budget`, `Demo build (examples/product-demo)`, `e2e`.)
  • [MINOR] .claude/skills/review-fix/SKILL.md:343 — hardcoded machine-specific Windows path D:\Projects\agent-library in agent instructions

    details

    Drift: Line 343 says "the main repo (D:\Projects\agent-library), NOT from the worktree." This is a developer-specific Windows filesystem path with no meaning in CI, Linux, macOS, or any other developer's machine.

    Evidence: grep -n 'D:\\Projects\|agent-library' .claude/skills/review-fix/SKILL.md → lines 343, 349. (Carried from Docs review — 2026-05-18 (af3914f) #215; still open.)

    Fix:

    -the **main repo** (`D:\Projects\agent-library`), NOT from the
    +the **main repo** (the repo root, e.g. `~/agentonomous`), NOT from the
  • [MINOR] STYLE_GUIDE.md:130 — "all ten default skills" but 11 skill files exist in src/skills/defaults/

    details

    Drift: Line 130 says "src/skills/defaults/*.ts (all ten default skills)." Actual count: CleanSkill, ExpressMeowSkill, ExpressSadSkill, ExpressSleepySkill, ExpressionSkill, FeedSkill, MedicateSkill, PetSkill, PlaySkill, RestSkill, ScoldSkill = 11 (excluding effectiveness.ts and index.ts).

    Evidence: ls src/skills/defaults/*.ts | grep -Ev 'effectiveness|index' | wc -l → 11. (Carried from Docs review — 2026-05-11 (9b16676) #202; still open.)

    Fix:

    -- `src/skills/defaults/*.ts` (all ten default skills)
    ++ `src/skills/defaults/*.ts` (all eleven default skills)

    Or drop the count — (all default skills) — to avoid drifting again on the next skill addition.

  • [MINOR] .claude/memory/feedback_pr_hygiene.md:10-12 — verify gate listed as "format + lint + typecheck + test + build"; omits lint:demo and docs

    details

    Drift: Lines 11-12 enumerate the verify gate as "format + lint + typecheck + test + build" (5 stages). The actual npm run verify script runs 7: format:check && lint && lint:demo && typecheck && test && build && docs.

    Evidence: sed -n '10,13p' .claude/memory/feedback_pr_hygiene.md → "format + lint + typecheck + test + build". jq '.scripts.verify' package.json → confirms 7-stage chain. (Carried from Docs review — 2026-05-11 (9b16676) #202; still open.)

    Fix:

    -  non-negotiable gate codified in `CLAUDE.md`: format + lint +
    -  typecheck + test + build.
    +  non-negotiable gate codified in `CLAUDE.md`: format + lint +
    +  lint:demo + typecheck + test + build + docs.
  • [MINOR] .claude/memory/project_graphify_usage.md:44-46 — claims graphify-out/wiki/ is checked in; git ls-files shows only 3 files under graphify-out/, no wiki directory

    details

    Drift: Lines 44-46 say "What's checked in: graph.html, graph.json, GRAPH_REPORT.md, and the wiki under graphify-out/wiki/." git ls-files graphify-out/ returns only the three named files; the wiki/ directory is gitignored and not tracked.

    Evidence: git ls-files graphify-out/graphify-out/GRAPH_REPORT.md, graphify-out/graph.html, graphify-out/graph.json. git ls-files graphify-out/wiki/ → empty. (Carried from Docs review — 2026-05-04 (0f72ad7) #191; still open.)

    Fix:

    -**What's checked in:** `graph.html`, `graph.json`, `GRAPH_REPORT.md`,
    -and the wiki under `graphify-out/wiki/`.
    +**What's checked in:** `graph.html`, `graph.json`, `GRAPH_REPORT.md`.
    +The wiki (`graphify-out/wiki/`) is gitignored and not tracked.
  • [NIT] docs/plans/2026-04-25-comprehensive-polish-and-harden.md:691 — section marked "shipped" in its header but body still contains "(PR pending)"

    details

    Drift: The section header at line 689 reads "### 20 — Backend probe + picker — shipped" and the plan's tracker table (line 86) shows PR feat(tfjs): detectBestBackend + probeBackend statics; demo backend picker #104. But the body at line 691 still says "**Branch:** feat/tfjs-detect-backend-and-picker (PR pending)" — stale template text from before the PR was opened.

    Evidence: sed -n '689,692p' docs/plans/2026-04-25-comprehensive-polish-and-harden.md → "Branch: feat/tfjs-detect-backend-and-picker (PR pending)". grep '#104' docs/plans/2026-04-25-comprehensive-polish-and-harden.md → line 86 in tracker table.

    Fix:

    -**Branch:** `feat/tfjs-detect-backend-and-picker` (PR pending)
    +**Branch:** `feat/tfjs-detect-backend-and-picker` — **shipped as [#104](https://github.com/Luis85/agentonomous/pull/104)**

  • Reviewed at: cac8515d882127995bfa71fbaf60a540b1f18aa5 (63 Markdown files audited)
  • Blockers: 1
  • Majors: 10
  • Minors: 10
  • Nits: 1
  • Counter-argument check: cac8515.1 (CLAUDE.md:67 demo:dev) — counter tested (annotation-as-workflow-context interpretation + correct info at CLAUDE.md:100), not held, finding kept as BLOCKER
  • Truncated: no (22 findings)
  • Not reviewed: docs/archive/** (frozen by design); docs/api/** (TypeDoc-generated); docs/daily-reviews/** (immutable snapshots); docs/docs-review-bot/PROMPT.md + README.md (meta-review excluded by prompt); CHANGELOG.md + .changeset/*.md (changeset machinery); node_modules/, dist/, coverage/, .worktrees/, graphify-out/wiki/ (generated/gitignored)

Metadata

Metadata

Assignees

No one assigned

    Labels

    docs-reviewFindings from the scheduled docs-review routine

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions