Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
13 changes: 13 additions & 0 deletions .agents/pm/chores/pm-7rlp.toon
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
id: pm-7rlp
title: "CI/CD + test-suite performance: in-process CLI runner and dedupe redundant matrix legs"
description: "CI/test audit. Biggest win: ~1,500+ real 'node dist/cli.js' subprocess spawns dominate the 1414-test suite (742 runCli sites + 757 withTempPmPath inits; cold spawn ~35-44ms each). Add an in-process runner that calls main(argv) directly (capture stdout/stderr, reset module state), keep a small set of true-subprocess E2E tests; convert help-runtime + release-readiness + the bulk of unit specs. CI: the full suite runs 2-4x per run because build-test matrix legs run 'pnpm test' while gates(coverage) runs the same suite + coverage; on PR/push run ubuntu-20 coverage as authoritative and move the OS x Node compat matrix to nightly only; dedupe 'npm pack --dry-run' between static and smokes. Keep the 100% coverage gate. Free GitHub features only. Auto-release change-detection was audited and is CORRECT (no bug)."
type: Chore
status: open
priority: 1
tags[3]: ci,performance,tests
created_at: "2026-05-21T21:57:10.762Z"
updated_at: "2026-05-21T21:57:10.762Z"
author: claude-code-agent
acceptance_criteria: Suite wall-time cut substantially via in-process runner; CI removes redundant full-suite legs; 100% coverage gate intact; nightly retains full OS/Node matrix.
parent: pm-rnpb
body: ""
14 changes: 14 additions & 0 deletions .agents/pm/chores/pm-b7do.toon
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
id: pm-b7do
title: "Remove dead code: command-aware.ts module, 5 orphaned exported functions, unused undici dependency"
description: "Code-quality audit (grep-verified zero call sites). Deleted src/core/output/command-aware.ts (389 LOC, orphaned by commit 5211414a; was explicitly allowlisted in static-quality-gate as zero-incoming-import). Removed dead exports getActiveCommandContext, applyDynamicExtensionOptions, normalizeCalendarOptions, listDocumentedHelpPaths, uniqueTokens. Removed unused direct dependency undici (^8.1.0; zero imports, only transitive undici@6 via @sentry/node remains). Updated the coverage-include allowlist and static-gate allowlist accordingly."
type: Chore
status: closed
priority: 2
tags[3]: code-quality,dead-code,refactor
created_at: "2026-05-21T21:56:52.288Z"
updated_at: "2026-05-21T22:09:30.435Z"
author: claude-code-agent
acceptance_criteria: All dead symbols removed with zero remaining references; build/typecheck/static-gate green; 100% coverage maintained.
parent: pm-rnpb
close_reason: "Removed src/core/output/command-aware.ts (389 LOC) + 5 orphaned exports + unused undici dep; updated coverage-include and static-gate allowlists. Build/typecheck/static-gate green, 100% coverage maintained."
body: ""
Comment on lines +1 to +14
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical | ⚡ Quick win

Do not create .agents/pm files directly.

This file should be managed by the pm tool, not manually created or edited in the repository. As per coding guidelines, .agents/pm/** files are the system of record and should not be edited directly.

As per coding guidelines: ".agents/pm/**: pm is the system of record. Do not edit .agents/pm files directly."

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.agents/pm/chores/pm-b7do.toon around lines 1 - 14, This .agents/pm file
(id: pm-b7do, title: "Remove dead code: command-aware.ts...") was added manually
but .agents/pm/** is managed by the pm tool and must not be edited directly;
remove this file from the PR (or revert the commit that added it) and instead
apply the change through the pm tool so it generates the canonical entry, or if
this change must be represented in source control, put it in the tool-managed
configuration source the pm tool uses; ensure the manual addition of pm-b7do is
undone before merging.

13 changes: 13 additions & 0 deletions .agents/pm/chores/pm-fu5d.toon
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
id: pm-fu5d
title: "Dogfood 2026-05-21 follow-ups: test --add key validation, semantic-fallback labeling, close active-children info, stale blocker on close"
description: "Manual dogfood findings not yet fixed (separate from pm-5k2w which holds the 2026-05-20 polish backlog). B2 [med]: pm test --add 'cmd=...,name=...' silently stores the whole pair as the command - reject/warn unknown keys, accept cmd as alias for command. S1 [med]: when no embedding provider is configured but ollama auto-defaults engage, search reports mode:semantic with no warning even though embedded_items=0 - clarify degraded/lexical state. C3 [med]: closing a parent/epic with active children under minimal governance is silent - emit an informational closed_with_active_children warning even when not blocking. C4 [low]: closed items retain blocked_by metadata - clear/annotate on terminal transition. U2 [low]: did-you-mean missing for unknown options (--statuss). U3 [low]: accept --list as alias for --explore on package/extension. CAL1 [med]: support compound relative event times (start=+1d,end=+1d+2h) or a duration= field."
type: Chore
status: open
priority: 3
tags[3]: agent-ux,dogfood,polish
created_at: "2026-05-21T21:57:44.257Z"
updated_at: "2026-05-21T21:57:44.257Z"
author: claude-code-agent
acceptance_criteria: Each listed finding is fixed or explicitly deferred with rationale; no agent-blocking introduced.
parent: pm-rnpb
body: ""
6 changes: 4 additions & 2 deletions .agents/pm/chores/pm-mbdu.toon
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,10 @@ status: open
priority: 2
tags[2]: code-quality,refactor
created_at: "2026-05-16T15:07:29.175Z"
updated_at: "2026-05-16T16:48:23.315Z"
updated_at: "2026-05-21T22:28:13.204Z"
author: claude-code-agent
comments[1]{created_at,author,text}:
comments[3]{created_at,author,text}:
"2026-05-16T16:48:23.315Z",codex-agent,"Audit update 2026-05-16: release static gate and full coverage pass, but large command files remain a maintainability concern visible in npm pack output and source review (extension/create/update/test families). No duplicate item created; keep this chore as the canonical LOC/complexity refactor."
"2026-05-21T21:57:40.078Z",claude-code-agent,"Code-quality audit produced concrete low-risk split plans (re-export via existing barrels, no consumer changes): (1) sdk/cli-contracts.ts 3059 LOC -> cli-contracts/tool-option-contracts.ts (TOOL_*_OPTION_CONTRACTS data tables) + cli-contracts/enum-contracts.ts (PM_* consts + guards), root keeps flag-alias helpers + GLOBAL/SUBCOMMAND contracts. (2) core/extensions/loader.ts 3272 -> extension-capability-aliases.ts (825-990), extension-registries.ts (createEmpty* factories 1180-1221), extension-hook-runtime.ts (run*Override/Hooks 2847-3225); loader keeps discovery/activation. (3) cli/commands/extension.ts 3192 -> extension/install-sources.ts (github/npm/local 1069-1408), extension/managed-state.ts (600-752), extension/bundled-catalog.ts. Highest-value duplication: runUpdate (update.ts ~972 LOC) has 53 near-identical field blocks + ~30 non-null assertions; drive from a declarative field table [{option, metadataKey, transform}] to collapse ~500 lines. Also: shared toItemRecord() helper to remove ~15 'item as unknown as Record' + 10 'as unknown as ItemMetadata' casts."
"2026-05-21T22:28:13.198Z",claude-code-agent,"PR #40 review (Gemini HIGH, echoed by Sourcery): the pm update --status closed auto-route applies pre-close field updates via a recursive runUpdate then runClose = two atomic writes (non-atomic across the pair) for the rare combined case (close-only path is already a single atomic close). Fold the fix into this refactor: once runUpdate's field-application becomes a reusable mutate function (field-table), make runClose accept those field deltas so close-with-fields is a single mutateItem transaction."
body: ""
13 changes: 13 additions & 0 deletions .agents/pm/chores/pm-rjgh.toon
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
id: pm-rjgh
title: "Docs hygiene: stop shipping PRD.md in npm package, dedupe PRD<->docs, slim CHANGELOG, reconcile marketplace.json"
description: Docs audit. PRD.md (118KB) is in package.json files and ships to every install while duplicating docs/ (commands/architecture/search/extensions/testing) and drifting from them; remove from published files and trim/relink it. CHANGELOG.md (71KB) is bloated by the 2026.5.3-1..8 same-day cluster; collapse to one entry. Root marketplace.json and .claude-plugin/marketplace.json have drifted (root lacks metadata/category) - reconcile from a single source (both have contract/smoke coupling). Tighten AGENTS.md to defer workflow detail to docs/AGENT_GUIDE.md. No private-infra leaks found in tracked docs (verified).
type: Chore
status: open
priority: 2
tags[3]: cleanup,docs,packaging
created_at: "2026-05-21T21:57:15.117Z"
updated_at: "2026-05-21T21:57:15.117Z"
author: claude-code-agent
acceptance_criteria: PRD.md not in published package; CHANGELOG slimmed; marketplace.json files reconciled with contract+smoke green; no doc drift.
parent: pm-rnpb
body: ""
5 changes: 3 additions & 2 deletions .agents/pm/features/pm-rnpb.toon
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ status: in_progress
priority: 0
tags[10]: agent-ux,audit,calendar,ci,dogfood,pm-cli,sdk,search,security,telemetry
created_at: "2026-05-03T13:20:01.343Z"
updated_at: "2026-05-21T21:13:19.585Z"
updated_at: "2026-05-21T22:10:31.549Z"
deadline: "2026-06-01T00:00:00.000Z"
assignee: codex-extensive-audit
author: codex-audit
Expand All @@ -15,7 +15,7 @@ acceptance_criteria: Audit findings are actionable and deduplicated; changed fil
parent: pm-jrjt
dependencies[1]{id,kind,created_at,author,source_kind}:
pm-jrjt,parent,"2026-05-03T13:20:01.343Z",codex-audit,null
comments[178]{created_at,author,text}:
comments[179]{created_at,author,text}:
"2026-05-03T13:20:01.343Z",codex-audit,Parent lineage established under pm-jrjt after duplicate checks found only closed prior audit items.
"2026-05-09T11:12:26.232Z",codex-agent,"Duplicate check before this pass: pm context --limit 10 --depth standard, pm search dogfood audit extensible sdk calendar semantic search telemetry sentry --limit 10, pm list-open --limit 20, and pm list-in-progress --limit 20. Reusing open feature pm-rnpb; prior same-day task pm-m35h is closed, so no duplicate item created."
"2026-05-09T11:46:59.430Z",codex-agent,"Evidence 2026-05-09: temp dogfood project exercised init/create/claim/update/files/docs/tests/calendar/context/aggregate/dedupe/search/reindex/extension scaffold/install/doctor/contracts/manage. Fixed search gap discovered there: reminder/event metadata is now in keyword and semantic corpus, and short phrase scoring ranks exact calendar event titles first. Verification passed: focused search/reindex/cache tests, release-readiness/search focused tests, linked pm test, full 100% coverage, static quality gate, CI workflow contract tests, pm health, pm validate, npm pack dry-run, secret scan, live telemetry/Sentry checks, and real hybrid reindex of 679 items."
Expand Down Expand Up @@ -194,6 +194,7 @@ comments[178]{created_at,author,text}:
"2026-05-21T20:48:56.790Z",codex-extensive-audit,"Final local verification evidence before PR: npm install -g . refreshed pm 2026.5.18 and pm contracts --command get --flags-only --json now exposes --depth, --full, --fields. Manual temp smoke verified pm get --full returns full comments/body/links, --depth brief remains compact, and --full with --fields exits 2. pm history pm-rnpb --json --diff --limit 2 now returns compact_history without duplicate diff (585 bytes). Checks passed: node scripts/check-secrets.mjs; pnpm quality:static; pm health --check-only --summary --json with 0 warnings; pm validate --check-resolution --json; node scripts/dogfood-package-first.mjs (84 workflows); full release gate node scripts/release/run-gates.mjs --telemetry-mode required --max-sentry-critical 10 --max-sentry-high 20 --max-telemetry-error-rate 10 --json (97 files / 1409 tests, 100 percent coverage, package-first dogfood, npx smoke, compatibility, Sentry critical=0 high=0 total=0, telemetry finish_error_rate_pct=3.26)."
"2026-05-21T20:49:50.233Z",codex-extensive-audit,"PR evidence: pushed branch audit/get-full-history-token-2026-05-21 commit a7b00f67 and opened PR #39 https://github.com/unbraind/pm-cli/pull/39 for pm get --full, compact history diff dedupe, health summary docs, and recorded audit evidence. Local release gate passed before push; now watching CI and waiting at least 15 minutes for AI review feedback before merge."
"2026-05-21T21:13:19.585Z",codex-extensive-audit,"PR #39 review feedback addressed: Sourcery/Gemini feedback was valid for get --full precedence, so --full is now mutually exclusive with --depth and --fields, and help text says so. Gemini history schema concern was handled by keeping a root diff array for compact --diff while making it empty to avoid duplicate payloads. CodeRabbit SDK metadata concern was handled by broadening the shared full parameter description beyond search. CodeRabbit .agents/pm concerns were reviewed as false positives because all pm-rnpb file/history changes in this PR were produced through pm CLI mutations, not manual edits. Verification after fixes passed: focused 6-file suite / 172 tests; manual error-output check for --full + --depth shows no bogus suggested retry; release gate with required telemetry passed again (97 files / 1409 tests, 100 percent coverage, Sentry critical=0 high=0 total=0, telemetry finish_error_rate_pct=3.27)."
"2026-05-21T22:10:31.519Z",claude-code-agent,"PR #40 opened (agent-ux-telemetry-search-audit-2026-05-21): never-block fixes for close-via-update/semantic-hybrid-search/create-positional, calendar --date crash fix, and dead-code removal. 1414 tests at 100% coverage; all local gates green. Required 15-minute AI review window started 2026-05-21T22:10:11Z (CodeRabbit + Sourcery in progress). Children closed: pm-j1v7, pm-l292, pm-b7do. Open follow-ups: pm-7rlp, pm-rjgh, pm-fu5d, pm-mbdu."
notes[2]{created_at,author,text}:
"2026-05-17T07:36:59.474Z",codex-agent,"Design note 2026-05-17: unfiltered pm contracts default now intentionally omits three heavy sections (schema oneOf union, command_flags, commander_aliases) and emits explicit omitted_reason markers; --full restores complete schema and alias/flag surfaces for tooling that needs maximal detail."
"2026-05-17T08:33:25.981Z",codex-agent,"Design note 2026-05-17: default brief projection was intentionally scoped to bare 'pm list' instead of all list-* commands to preserve existing automation contracts while still cutting agent token usage on the highest-frequency exploratory list call."
Expand Down
1 change: 1 addition & 0 deletions .agents/pm/history/pm-7rlp.jsonl
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"ts":"2026-05-21T21:57:10.762Z","author":"claude-code-agent","op":"create","patch":[{"op":"add","path":"/metadata/id","value":"pm-7rlp"},{"op":"add","path":"/metadata/title","value":"CI/CD + test-suite performance: in-process CLI runner and dedupe redundant matrix legs"},{"op":"add","path":"/metadata/description","value":"CI/test audit. Biggest win: ~1,500+ real 'node dist/cli.js' subprocess spawns dominate the 1414-test suite (742 runCli sites + 757 withTempPmPath inits; cold spawn ~35-44ms each). Add an in-process runner that calls main(argv) directly (capture stdout/stderr, reset module state), keep a small set of true-subprocess E2E tests; convert help-runtime + release-readiness + the bulk of unit specs. CI: the full suite runs 2-4x per run because build-test matrix legs run 'pnpm test' while gates(coverage) runs the same suite + coverage; on PR/push run ubuntu-20 coverage as authoritative and move the OS x Node compat matrix to nightly only; dedupe 'npm pack --dry-run' between static and smokes. Keep the 100% coverage gate. Free GitHub features only. Auto-release change-detection was audited and is CORRECT (no bug)."},{"op":"add","path":"/metadata/type","value":"Chore"},{"op":"add","path":"/metadata/status","value":"open"},{"op":"add","path":"/metadata/priority","value":1},{"op":"add","path":"/metadata/tags","value":["ci","performance","tests"]},{"op":"add","path":"/metadata/created_at","value":"2026-05-21T21:57:10.762Z"},{"op":"add","path":"/metadata/updated_at","value":"2026-05-21T21:57:10.762Z"},{"op":"add","path":"/metadata/author","value":"claude-code-agent"},{"op":"add","path":"/metadata/acceptance_criteria","value":"Suite wall-time cut substantially via in-process runner; CI removes redundant full-suite legs; 100% coverage gate intact; nightly retains full OS/Node matrix."},{"op":"add","path":"/metadata/parent","value":"pm-rnpb"}],"before_hash":"3cc22dff72be7b14824654a7a64ea62b04799939b2fee54c1b5f52ca60bf6df0","after_hash":"c936a2b2f2c7e8fd09962b4f6965c8b9b7409a02a547a11e5830728e36467be9","message":""}
2 changes: 2 additions & 0 deletions .agents/pm/history/pm-b7do.jsonl
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
{"ts":"2026-05-21T21:56:52.288Z","author":"claude-code-agent","op":"create","patch":[{"op":"add","path":"/metadata/id","value":"pm-b7do"},{"op":"add","path":"/metadata/title","value":"Remove dead code: command-aware.ts module, 5 orphaned exported functions, unused undici dependency"},{"op":"add","path":"/metadata/description","value":"Code-quality audit (grep-verified zero call sites). Deleted src/core/output/command-aware.ts (389 LOC, orphaned by commit 5211414a; was explicitly allowlisted in static-quality-gate as zero-incoming-import). Removed dead exports getActiveCommandContext, applyDynamicExtensionOptions, normalizeCalendarOptions, listDocumentedHelpPaths, uniqueTokens. Removed unused direct dependency undici (^8.1.0; zero imports, only transitive undici@6 via @sentry/node remains). Updated the coverage-include allowlist and static-gate allowlist accordingly."},{"op":"add","path":"/metadata/type","value":"Chore"},{"op":"add","path":"/metadata/status","value":"open"},{"op":"add","path":"/metadata/priority","value":2},{"op":"add","path":"/metadata/tags","value":["code-quality","dead-code","refactor"]},{"op":"add","path":"/metadata/created_at","value":"2026-05-21T21:56:52.288Z"},{"op":"add","path":"/metadata/updated_at","value":"2026-05-21T21:56:52.288Z"},{"op":"add","path":"/metadata/author","value":"claude-code-agent"},{"op":"add","path":"/metadata/acceptance_criteria","value":"All dead symbols removed with zero remaining references; build/typecheck/static-gate green; 100% coverage maintained."},{"op":"add","path":"/metadata/parent","value":"pm-rnpb"}],"before_hash":"3cc22dff72be7b14824654a7a64ea62b04799939b2fee54c1b5f52ca60bf6df0","after_hash":"114abd429fbb6a720519fa04c0bc0fa58f132091ade15557b20eefe4c30c2a16","message":""}
{"ts":"2026-05-21T22:09:30.435Z","author":"claude-code-agent","op":"close","patch":[{"op":"replace","path":"/metadata/updated_at","value":"2026-05-21T22:09:30.435Z"},{"op":"replace","path":"/metadata/status","value":"closed"},{"op":"add","path":"/metadata/close_reason","value":"Removed src/core/output/command-aware.ts (389 LOC) + 5 orphaned exports + unused undici dep; updated coverage-include and static-gate allowlists. Build/typecheck/static-gate green, 100% coverage maintained."}],"before_hash":"114abd429fbb6a720519fa04c0bc0fa58f132091ade15557b20eefe4c30c2a16","after_hash":"64d5feb49a9d69fdf3e4023b3fb1dc6be239240589c9edc36822dcd5c8a6b923"}
Comment on lines +1 to +2
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical | ⚡ Quick win

Do not create .agents/pm files directly.

This history file should be managed by the pm tool, not manually created or edited in the repository. As per coding guidelines, .agents/pm/** files are the system of record and should not be edited directly.

As per coding guidelines: ".agents/pm/**: pm is the system of record. Do not edit .agents/pm files directly."

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.agents/pm/history/pm-b7do.jsonl around lines 1 - 2, This change adds a
manual .agents/pm history file (pm-b7do.jsonl) which must not be created/edited
directly; remove the added file from the PR and instead re-create the same
metadata using the official pm tool (do not hand-edit .agents/pm/**).
Specifically, drop the new .agents/pm/history/pm-b7do.jsonl entry from the
commit/branch and run the pm workflow to record the metadata/title ("Remove dead
code: command-aware.ts module...") and status updates so the system-of-record is
updated correctly; ensure the resulting pm-managed entry contains the same
metadata fields (id, title, description, status, timestamps, close_reason) so
the repo no longer contains manual .agents/pm edits.

1 change: 1 addition & 0 deletions .agents/pm/history/pm-fu5d.jsonl
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"ts":"2026-05-21T21:57:44.257Z","author":"claude-code-agent","op":"create","patch":[{"op":"add","path":"/metadata/id","value":"pm-fu5d"},{"op":"add","path":"/metadata/title","value":"Dogfood 2026-05-21 follow-ups: test --add key validation, semantic-fallback labeling, close active-children info, stale blocker on close"},{"op":"add","path":"/metadata/description","value":"Manual dogfood findings not yet fixed (separate from pm-5k2w which holds the 2026-05-20 polish backlog). B2 [med]: pm test --add 'cmd=...,name=...' silently stores the whole pair as the command - reject/warn unknown keys, accept cmd as alias for command. S1 [med]: when no embedding provider is configured but ollama auto-defaults engage, search reports mode:semantic with no warning even though embedded_items=0 - clarify degraded/lexical state. C3 [med]: closing a parent/epic with active children under minimal governance is silent - emit an informational closed_with_active_children warning even when not blocking. C4 [low]: closed items retain blocked_by metadata - clear/annotate on terminal transition. U2 [low]: did-you-mean missing for unknown options (--statuss). U3 [low]: accept --list as alias for --explore on package/extension. CAL1 [med]: support compound relative event times (start=+1d,end=+1d+2h) or a duration= field."},{"op":"add","path":"/metadata/type","value":"Chore"},{"op":"add","path":"/metadata/status","value":"open"},{"op":"add","path":"/metadata/priority","value":3},{"op":"add","path":"/metadata/tags","value":["agent-ux","dogfood","polish"]},{"op":"add","path":"/metadata/created_at","value":"2026-05-21T21:57:44.257Z"},{"op":"add","path":"/metadata/updated_at","value":"2026-05-21T21:57:44.257Z"},{"op":"add","path":"/metadata/author","value":"claude-code-agent"},{"op":"add","path":"/metadata/acceptance_criteria","value":"Each listed finding is fixed or explicitly deferred with rationale; no agent-blocking introduced."},{"op":"add","path":"/metadata/parent","value":"pm-rnpb"}],"before_hash":"3cc22dff72be7b14824654a7a64ea62b04799939b2fee54c1b5f52ca60bf6df0","after_hash":"b355a4216c6b90499d1a2368e1974b39ce71e1c2f3356e09ae665e133c28c280","message":""}
Loading