diff --git a/.agents/pm/history/ops-zq8c.jsonl b/.agents/pm/history/ops-zq8c.jsonl new file mode 100644 index 0000000..155eacd --- /dev/null +++ b/.agents/pm/history/ops-zq8c.jsonl @@ -0,0 +1,18 @@ +{"hash_algorithm":"sha256","ts":"2026-09-28T15:05:31.893Z","author":"codex","author_source":"asserted","agent_harness":"codex","agent_model":"gpt-6-sol","agent_model_source":"probe","agent_instance":"381a892fadca8b4d12a512f7","agent_provenance":{"model":{"value":"gpt-6-sol","source":"probe"},"effort":{"value":"high","source":"probe"},"role":{"value":"implementer","source":"argv"},"topic":null},"op":"create","patch":[{"op":"add","path":"/metadata/id","value":"ops-zq8c"},{"op":"add","path":"/metadata/title","value":"Include TSX in docstring and duplication gates with verified source counts"},{"op":"add","path":"/metadata/description","value":"GitHub #128: pm-ops docstring and duplication gates silently omit TSX sources. Make both engines scan TSX, prove source-count completeness, and certify the exact package head."},{"op":"add","path":"/metadata/type","value":"Issue"},{"op":"add","path":"/metadata/status","value":"in_progress"},{"op":"add","path":"/metadata/priority","value":1},{"op":"add","path":"/metadata/tags","value":["area:quality","docstrings","duplication","tsx"]},{"op":"add","path":"/metadata/created_at","value":"2026-09-28T15:05:31.893Z"},{"op":"add","path":"/metadata/updated_at","value":"2026-09-28T15:05:31.893Z"},{"op":"add","path":"/metadata/author","value":"codex"},{"op":"add","path":"/metadata/estimated_minutes","value":180},{"op":"add","path":"/metadata/acceptance_criteria","value":"Directory and single-file docstring analysis find undocumented TSX exports; jscpd 4 and 5 detect TSX clones with the real engines; mismatched scan counts fail closed; release gate passes; companion records exact limitations."},{"op":"add","path":"/metadata/notes","value":[{"created_at":"2026-09-28T15:05:31.893Z","author":"codex","text":"TDD: TSX docstring and real jscpd 4 tests failed before the source fix. The candidate passes 449/451 tests with two existing opt-in skips, c8 100/100/100/100, 221/221 documented declarations, zero duplication across 43 sources, zero production audit findings, and real packed npm/Node and Bun TSX acceptance. The local PM CLI SDK pin is 2026.9.28."}]},{"op":"add","path":"/metadata/files","value":[{"path":"docstrings.ts","scope":"project","note":"TSX source walker"},{"path":"duplication.ts","scope":"project","note":"Both jscpd engines and source-count verification"},{"path":"test/docstrings.test.ts","scope":"project","note":"TSX docstring regression"},{"path":"test/lint-and-duplication-gates.test.ts","scope":"project","note":"Real jscpd 4 and 5 TSX acceptance"},{"path":"README.md","scope":"project","note":"Updated consumer guidance"}]},{"op":"add","path":"/metadata/tests","value":[{"command":"npm run release:check","path":"package.json","scope":"project","timeout_seconds":900,"provenance":{"author":"codex","created_at":"2026-09-28T15:05:31.893Z","source_kind":"local_mutation","source_ref":"fix/pm-ops-tsx-quality-gates-2026-09-28"}}]},{"op":"add","path":"/metadata/docs","value":[{"path":"https://github.com/unbraind/pm-ops/issues/128","scope":"global","note":"Source issue and reproduction"}]}],"before_hash":"3cc22dff72be7b14824654a7a64ea62b04799939b2fee54c1b5f52ca60bf6df0","after_hash":"002a8fc48215b8475e29caa889121edc0a796db26f0b8eed34828e78ebd4e653","item_hash_version":3,"message":"","context":{"agent_provenance_outcomes":{"model":{"status":"resolved","resolver":"codex_session_file","rule_version":"v1"},"effort":{"status":"resolved","resolver":"codex_session_file","rule_version":"v1"},"version":{"status":"unavailable","reason":"harness_unavailable","resolver":"ai_agent_version","rule_version":"v1"}}},"event_class":"substantive","record_hash_version":1,"record_hash":"b4f0b71f8a06c7beab5d36dd2adec36ebffefe6ec9f2a06f904de7fe73d59df5"} +{"hash_algorithm":"sha256","ts":"2026-09-28T15:18:38.191Z","author":"codex","author_source":"asserted","agent_harness":"codex","agent_model":"gpt-6-sol","agent_model_source":"probe","agent_instance":"381a892fadca8b4d12a512f7","agent_provenance":{"model":{"value":"gpt-6-sol","source":"probe"},"effort":{"value":"high","source":"probe"},"role":null,"topic":null},"op":"docs_add","patch":[{"op":"add","path":"/metadata/docs/1","value":{"path":"https://github.com/unbraind/pm-ops/pull/132#discussion_r4123846054","scope":"global","note":"Greptile JSX closing-tag finding"}},{"op":"add","path":"/metadata/docs/2","value":{"path":"https://github.com/unbraind/pm-ops/pull/132#discussion_r4123865252","scope":"global","note":"CodeRabbit symlink scope finding"}},{"op":"replace","path":"/metadata/updated_at","value":"2026-09-28T15:18:38.191Z"}],"before_hash":"002a8fc48215b8475e29caa889121edc0a796db26f0b8eed34828e78ebd4e653","after_hash":"768176789e166a7338dd081ddf9a616056ae0350fc0232cfe29662f0d5be2710","item_hash_version":3,"message":"Link exact-head reviewer findings","context":{"agent_provenance_outcomes":{"model":{"status":"resolved","resolver":"codex_session_file","rule_version":"v1"},"effort":{"status":"resolved","resolver":"codex_session_file","rule_version":"v1"},"version":{"status":"unavailable","reason":"harness_unavailable","resolver":"ai_agent_version","rule_version":"v1"}}},"event_class":"maintenance","record_hash_version":1,"record_hash":"796c940fbb3271fc48fffec10c1070c599eb1a249dbfe9467f32337ee6f3a89f"} +{"hash_algorithm":"sha256","ts":"2026-09-28T15:18:38.784Z","author":"codex","author_source":"asserted","agent_harness":"codex","agent_model":"gpt-6-sol","agent_model_source":"probe","agent_instance":"381a892fadca8b4d12a512f7","agent_provenance":{"model":{"value":"gpt-6-sol","source":"probe"},"effort":{"value":"high","source":"probe"},"role":null,"topic":null},"op":"note_add","patch":[{"op":"add","path":"/metadata/notes/1","value":{"created_at":"2026-09-28T15:18:38.784Z","author":"codex","text":"PR #132 first-head review found two valid regressions. Greptile P1 reproduced: a JSX closing tag let the tokenizer hide a later export; the TSX scanner now uses LanguageVariant.JSX and focused tests cover both direct analysis and directory walking. CodeRabbit major reproduced: fast-glob followed symlinked paths while jscpd 5 did not; fast-glob and jscpd 4 now share the no-symlink policy with jscpd 5, with real 4/5 symlink fixtures. Focused tests, build, typecheck, lint, and docstrings pass; full exact-head gate and packed acceptance remain pending."}},{"op":"replace","path":"/metadata/updated_at","value":"2026-09-28T15:18:38.784Z"}],"before_hash":"768176789e166a7338dd081ddf9a616056ae0350fc0232cfe29662f0d5be2710","after_hash":"8938eead80f924c6e1bbb0f10b824f248ce0b72e80d489d79b76b696d2002f22","item_hash_version":3,"message":"Record bot findings and review fixes","context":{"agent_provenance_outcomes":{"model":{"status":"resolved","resolver":"codex_session_file","rule_version":"v1"},"effort":{"status":"resolved","resolver":"codex_session_file","rule_version":"v1"},"version":{"status":"unavailable","reason":"harness_unavailable","resolver":"ai_agent_version","rule_version":"v1"}}},"event_class":"substantive","record_hash_version":1,"record_hash":"eef9248f198521529b798dee119eb49b2af26da81cea487e96eb0e38510ef202"} +{"hash_algorithm":"sha256","ts":"2026-09-28T16:48:08.785Z","author":"harness:codex","author_source":"detected","agent_harness":"codex","agent_model":"gpt-6-sol","agent_model_source":"probe","agent_instance":"f52fb7ec165c75a203d40f61","agent_provenance":{"model":{"value":"gpt-6-sol","source":"probe"},"effort":{"value":"high","source":"probe"},"role":{"value":"implementer","source":"argv"},"topic":null},"op":"update","patch":[{"op":"add","path":"/metadata/notes/2","value":{"created_at":"2026-09-28T16:48:08.764Z","author":"harness:codex","text":"author=codex,text=CodeRabbit review comment 4124694533 reproduced a jscpd 5.2.1 ambient .jscpd.json threshold failure: primary 200-token scan passed, one-token source probe detected 81.2% duplication and exited 1 before reading its count. A real-binary regression failed first. The fix resolves the repo root before launching jscpd and runs both canonical scans from an isolated output directory, so package duplicationGate remains authoritative. Focused test now passes, full release:check exits 0 with 100% on all four measured coverage dimensions, zero prod audit findings, and fresh packed npm/Node and Bun imports both report two complete sources and zero primary clones."}},{"op":"replace","path":"/metadata/updated_at","value":"2026-09-28T16:48:08.785Z"}],"before_hash":"8938eead80f924c6e1bbb0f10b824f248ce0b72e80d489d79b76b696d2002f22","after_hash":"8dff3b2d5a12bae162270e10f4bc6f9a8ce59c7e9c6da88eae35bfc471ac853a","item_hash_version":3,"message":"Record red-green review fix and packed acceptance for jscpd config isolation","context":{"agent_provenance_outcomes":{"model":{"status":"resolved","resolver":"codex_session_file","rule_version":"v1"},"effort":{"status":"resolved","resolver":"codex_session_file","rule_version":"v1"},"version":{"status":"unavailable","reason":"harness_unavailable","resolver":"ai_agent_version","rule_version":"v1"}}},"event_class":"maintenance","record_hash_version":1,"record_hash":"9e5b43e4e41463f62953fdaa04acad67cca3ccc397fd140aded801ca1a841e74"} +{"hash_algorithm":"sha256","ts":"2026-10-02T18:27:05.767Z","author":"pi-glm","author_source":"asserted","agent_harness":"pi","agent_model":"glm-5.3:cloud","agent_model_source":"environment","agent_instance":"40ed70d22eaf6c89f6cbbe67","agent_provenance":{"model":{"value":"glm-5.3:cloud","source":"environment"},"effort":null,"role":null,"topic":null},"op":"comment_add","patch":[{"op":"replace","path":"/metadata/updated_at","value":"2026-10-02T18:27:05.767Z"},{"op":"add","path":"/metadata/comments","value":[{"created_at":"2026-10-02T18:27:05.767Z","author":"pi-glm","text":"Rebase to current main (pi-glm, orchestrator land pass): PR #132 rebased onto origin/main 5ea8406 (releases 2026.9.28-1 and 2026.9.29 merged in cleanly, no conflicts). New head f3e66c3; same three commits. Full gate re-verified on the rebased head: npm run release:check passes (typecheck, lint, duplication, docstrings, coverage 100/100/100/100 across 23 sources, prod audit 0 findings, pack dry run, changelog:check, release-changelog-date, publish-attestation, lifecycle-policy), and pm health --strict-exit --json exits 0 with only stale-in-progress advisories. Re-review requested from CodeRabbit/Greptile/Gemini."}]}],"before_hash":"8dff3b2d5a12bae162270e10f4bc6f9a8ce59c7e9c6da88eae35bfc471ac853a","after_hash":"70fe0f6f506a12cb2b1a933e8490747ee338481bc46a9cc97e3a713c0dbe64d3","item_hash_version":3,"event_class":"substantive","record_hash_version":1,"record_hash":"60d679c9d5e9eae6a8829d97e4e263d0c405ac8581b1f90c3f9cbbb261c6ecb7"} +{"hash_algorithm":"sha256","ts":"2026-10-02T21:00:54.518Z","author":"pi-grok","author_source":"asserted","agent_harness":"pi","agent_model":"grok-4.7","agent_model_source":"environment","agent_instance":"b2e29b56b4df792499683ec2","agent_provenance":{"model":{"value":"grok-4.7","source":"environment"},"effort":null,"role":{"value":"implementer","source":"argv"},"topic":null},"op":"claim","patch":[{"op":"replace","path":"/metadata/updated_at","value":"2026-10-02T21:00:54.518Z"},{"op":"add","path":"/metadata/assignee","value":"pi-grok"},{"op":"add","path":"/metadata/claim_principal","value":"pi-grok"}],"before_hash":"70fe0f6f506a12cb2b1a933e8490747ee338481bc46a9cc97e3a713c0dbe64d3","after_hash":"6bb70a050308be7459ed6ad333480d38f20e8864df5916f26297b1287ed86798","item_hash_version":3,"message":"Land-pass disposition of cubic review on PR 132","event_class":"substantive","record_hash_version":1,"record_hash":"ba1769f5ca20841cd72b834db772daf76d12cd8d0644355d7202ffc7d07ac7d7"} +{"hash_algorithm":"sha256","ts":"2026-10-02T21:01:02.968Z","author":"pi-grok","author_source":"asserted","agent_harness":"pi","agent_model":"grok-4.7","agent_model_source":"environment","agent_instance":"b2e29b56b4df792499683ec2","agent_provenance":{"model":{"value":"grok-4.7","source":"environment"},"effort":null,"role":null,"topic":null},"op":"note_edit","patch":[{"op":"replace","path":"/metadata/notes/2/text","value":"CodeRabbit review comment 4124694533 reproduced a jscpd 5.2.1 ambient .jscpd.json threshold failure: primary 200-token scan passed, one-token source probe detected 81.2% duplication and exited 1 before reading its count. A real-binary regression failed first. The fix resolves the repo root before launching jscpd and runs both canonical scans from an isolated output directory, so package duplicationGate remains authoritative. Focused test now passes, full release:check exits 0 with 100% on all four measured coverage dimensions, zero prod audit findings, and fresh packed npm/Node and Bun imports both report two complete sources and zero primary clones."},{"op":"add","path":"/metadata/notes/2/edited_at","value":"2026-10-02T21:01:02.968Z"},{"op":"replace","path":"/metadata/updated_at","value":"2026-10-02T21:01:02.968Z"}],"before_hash":"6bb70a050308be7459ed6ad333480d38f20e8864df5916f26297b1287ed86798","after_hash":"b4938ae343e064210103e5c62041ccb162dd0e5d8a0277e82eefd0684c71796d","item_hash_version":3,"message":"Strip spurious author=codex,text= prefix from the jscpd ambient-config note","event_class":"substantive","record_hash_version":1,"record_hash":"7bd1d588fe2ffd8928e851b236d107eb77a3a791a78044d5e5025a1a1da1bed0"} +{"hash_algorithm":"sha256","ts":"2026-10-02T21:01:14.692Z","author":"pi-grok","author_source":"asserted","agent_harness":"pi","agent_model":"grok-4.7","agent_model_source":"environment","agent_instance":"b2e29b56b4df792499683ec2","agent_provenance":{"model":{"value":"grok-4.7","source":"environment"},"effort":null,"role":null,"topic":null},"op":"comment_add","patch":[{"op":"add","path":"/metadata/comments/1","value":{"created_at":"2026-10-02T21:01:14.692Z","author":"pi-grok","text":"Cubic review 5395516638 on head b15bf93, land-pass disposition:\n\n4168776167 is valid. Note 3 began with a pasted author=codex,text= label. pm item notes --edit 3 stripped that prefix so the text starts at \"CodeRabbit review comment 4124694533\". The original note_add history line is kept; the edit is a new history event.\n\n4168776160 is refused. tokenize selects LanguageVariant.JSX only when the file identifier ends with .tsx, which is the same rule collectSourceFiles uses to admit sources. analyzeSource's file argument is that identifier, not a free-form module name. Inferring JSX from source text would treat TypeScript generics in .ts files as tags. A caller that passes TSX bytes under a non-.tsx name is outside the gate contract; the walker never does that.\n\n4168776178 is refused. A live jscpd 5.2.1 JSON report stores statistics.formats.typescript.sources and statistics.total.sources as counts, not file maps. Duplicate records name only files that participated in a clone. The one-token probe therefore cannot name a same-size substitution, and the function comment above analyzeWithBinary already states that the JSON report carries only aggregate source counts. jscpd 4 still fails closed with skippedSources file names."}},{"op":"replace","path":"/metadata/updated_at","value":"2026-10-02T21:01:14.692Z"}],"before_hash":"b4938ae343e064210103e5c62041ccb162dd0e5d8a0277e82eefd0684c71796d","after_hash":"943a24283c0fc4a9e027a2557fd4e4b978be2d8e868656266c1f1ad88968435a","item_hash_version":3,"event_class":"substantive","record_hash_version":1,"record_hash":"414625238d6676c88f354884ebd73b4175dbdcde2ee181bb62906835691f7614"} +{"hash_algorithm":"sha256","ts":"2026-10-02T21:09:30.355Z","author":"pi-grok","author_source":"asserted","agent_harness":"pi","agent_model":"grok-4.7","agent_model_source":"environment","agent_instance":"b2e29b56b4df792499683ec2","agent_provenance":{"model":{"value":"grok-4.7","source":"environment"},"effort":null,"role":null,"topic":null},"op":"comment_add","patch":[{"op":"add","path":"/metadata/comments/2","value":{"created_at":"2026-10-02T21:09:30.355Z","author":"pi-grok","text":"Land-pass gate: the note-only head was included in the rebased pm-ops#134 tree, where npm run release:check exited 0 (455 pass, 0 fail, 2 default-suite real-data skips, c8 100/100/100/100 across 23 sources, changelog:check current). Local changelog:check on this branch also exited 0. pm health --strict-exit --require-merge-drivers exited 0."}},{"op":"replace","path":"/metadata/updated_at","value":"2026-10-02T21:09:30.355Z"}],"before_hash":"943a24283c0fc4a9e027a2557fd4e4b978be2d8e868656266c1f1ad88968435a","after_hash":"bc0fba6546df33850385888a71734e73566dc6329edd23ac5dc73685c60f821c","item_hash_version":3,"event_class":"substantive","record_hash_version":1,"record_hash":"78058cab21d0bb6ea5f8e71acfc16a401e7728606f689efdca0831bbe658f110"} +{"hash_algorithm":"sha256","ts":"2026-10-02T21:09:31.237Z","author":"pi-grok","author_source":"asserted","agent_harness":"pi","agent_model":"grok-4.7","agent_model_source":"environment","agent_instance":"b2e29b56b4df792499683ec2","agent_provenance":{"model":{"value":"grok-4.7","source":"environment"},"effort":null,"role":{"value":"implementer","source":"argv"},"topic":null},"op":"release","patch":[{"op":"remove","path":"/metadata/claim_principal"},{"op":"remove","path":"/metadata/assignee"},{"op":"replace","path":"/metadata/updated_at","value":"2026-10-02T21:09:31.237Z"}],"before_hash":"bc0fba6546df33850385888a71734e73566dc6329edd23ac5dc73685c60f821c","after_hash":"edf362d739f648f1cbdc4927383d5526ec75cd71285b37e3944b4db7145e912d","item_hash_version":3,"message":"Release land-pass claim after cubic disposition and note correction","event_class":"maintenance","record_hash_version":1,"record_hash":"ab7a6cf11caf198621a243c0fd8ec55fd3893da24a39d27db0448accdb0c2668"} +{"hash_algorithm":"sha256","ts":"2026-10-02T23:41:33.313Z","author":"codex-sol-land","author_source":"asserted","agent_harness":"codex","agent_model":"gpt-6.1-sol","agent_model_source":"probe","agent_instance":"6edbeed2935f1e5c041f14f3","agent_provenance":{"model":{"value":"gpt-6.1-sol","source":"probe"},"effort":{"value":"high","source":"probe"},"role":{"value":"implementer","source":"argv"},"topic":null},"op":"claim","patch":[{"op":"replace","path":"/metadata/updated_at","value":"2026-10-02T23:41:33.313Z"},{"op":"add","path":"/metadata/assignee","value":"codex-sol-land"},{"op":"add","path":"/metadata/claim_principal","value":"codex-sol-land"}],"before_hash":"edf362d739f648f1cbdc4927383d5526ec75cd71285b37e3944b4db7145e912d","after_hash":"adc8d203e03387ed07f49ac276bbc67d1826319e8a340eb5743ab7be6e72af8f","item_hash_version":3,"message":"Authorized restart of fleet PR preparation; earlier stopped-agent history and dispositions are retained.","context":{"agent_provenance_outcomes":{"model":{"status":"resolved","resolver":"codex_session_file","rule_version":"v1"},"effort":{"status":"resolved","resolver":"codex_session_file","rule_version":"v1"},"version":{"status":"unavailable","reason":"harness_unavailable","resolver":"ai_agent_version","rule_version":"v1"}}},"event_class":"substantive","record_hash_version":1,"record_hash":"cbb17cadeefb3590f8c7357fe5f1473733374971a0de543126b52c3da85e0676"} +{"hash_algorithm":"sha256","ts":"2026-10-02T23:41:34.683Z","author":"codex-sol-land","author_source":"asserted","agent_harness":"codex","agent_model":"gpt-6.1-sol","agent_model_source":"probe","agent_instance":"6edbeed2935f1e5c041f14f3","agent_provenance":{"model":{"value":"gpt-6.1-sol","source":"probe"},"effort":{"value":"high","source":"probe"},"role":null,"topic":null},"op":"comment_add","patch":[{"op":"add","path":"/metadata/comments/3","value":{"created_at":"2026-10-02T23:41:34.683Z","author":"codex-sol-land","text":"Resumed PR #132 from 8ae094a066a542113f04dd4a9716205f106bd42c. Rebase onto current main yields 8ae094a066a542113f04dd4a9716205f106bd42c. All existing bot artifacts and restart-era owner replies inspected; no new actionable finding. Preserve earlier fixes and technical refusals. Verifying unchanged CI gates under the shared heavy lock; no merge, release or closure."}},{"op":"replace","path":"/metadata/updated_at","value":"2026-10-02T23:41:34.683Z"}],"before_hash":"adc8d203e03387ed07f49ac276bbc67d1826319e8a340eb5743ab7be6e72af8f","after_hash":"ede60037e4dc4db9db06350efe991fd699605893f5928a0f2a4eaab8cc187b04","item_hash_version":3,"context":{"agent_provenance_outcomes":{"model":{"status":"resolved","resolver":"codex_session_file","rule_version":"v1"},"effort":{"status":"resolved","resolver":"codex_session_file","rule_version":"v1"},"version":{"status":"unavailable","reason":"harness_unavailable","resolver":"ai_agent_version","rule_version":"v1"}}},"event_class":"substantive","record_hash_version":1,"record_hash":"803d59075e7aa66f81528cebe77d37667d235b540537cf756dc61c06d91249c3"} +{"hash_algorithm":"sha256","ts":"2026-10-02T23:41:35.324Z","author":"codex-sol-land","author_source":"asserted","agent_harness":"codex","agent_model":"gpt-6.1-sol","agent_model_source":"probe","agent_instance":"6edbeed2935f1e5c041f14f3","agent_provenance":{"model":{"value":"gpt-6.1-sol","source":"probe"},"effort":{"value":"high","source":"probe"},"role":null,"topic":null},"op":"files_add","patch":[{"op":"replace","path":"/metadata/files/4/note","value":"Real jscpd 4 and 5 TSX acceptance"},{"op":"replace","path":"/metadata/files/4/path","value":"test/lint-and-duplication-gates.test.ts"},{"op":"replace","path":"/metadata/files/3/note","value":"TSX docstring regression"},{"op":"replace","path":"/metadata/files/3/path","value":"test/docstrings.test.ts"},{"op":"replace","path":"/metadata/files/2/note","value":"Updated consumer guidance"},{"op":"replace","path":"/metadata/files/2/path","value":"README.md"},{"op":"replace","path":"/metadata/updated_at","value":"2026-10-02T23:41:35.324Z"}],"before_hash":"ede60037e4dc4db9db06350efe991fd699605893f5928a0f2a4eaab8cc187b04","after_hash":"db57ea4eab0b1d33d2e13b3d8a7e2a2b8ba96db76a0717f195b1cf093f34a48c","item_hash_version":3,"context":{"agent_provenance_outcomes":{"model":{"status":"resolved","resolver":"codex_session_file","rule_version":"v1"},"effort":{"status":"resolved","resolver":"codex_session_file","rule_version":"v1"},"version":{"status":"unavailable","reason":"harness_unavailable","resolver":"ai_agent_version","rule_version":"v1"}}},"event_class":"maintenance","record_hash_version":1,"record_hash":"86aa23318d2009a693428402e889b9e99494b8a45e752c470bb96445563f7c05"} +{"hash_algorithm":"sha256","ts":"2026-10-02T23:41:35.921Z","author":"codex-sol-land","author_source":"asserted","agent_harness":"codex","agent_model":"gpt-6.1-sol","agent_model_source":"probe","agent_instance":"6edbeed2935f1e5c041f14f3","agent_provenance":{"model":{"value":"gpt-6.1-sol","source":"probe"},"effort":{"value":"high","source":"probe"},"role":null,"topic":null},"op":"docs_add","patch":[{"op":"add","path":"/metadata/docs/3","value":{"path":"https://github.com/unbraind/pm-ops/pull/132","scope":"project"}},{"op":"replace","path":"/metadata/updated_at","value":"2026-10-02T23:41:35.921Z"}],"before_hash":"db57ea4eab0b1d33d2e13b3d8a7e2a2b8ba96db76a0717f195b1cf093f34a48c","after_hash":"04895f282a2f7c7932b9d9488c2b16ac4e486ab2c49fa5ec25c7f1226a41744c","item_hash_version":3,"context":{"agent_provenance_outcomes":{"model":{"status":"resolved","resolver":"codex_session_file","rule_version":"v1"},"effort":{"status":"resolved","resolver":"codex_session_file","rule_version":"v1"},"version":{"status":"unavailable","reason":"harness_unavailable","resolver":"ai_agent_version","rule_version":"v1"}}},"event_class":"maintenance","record_hash_version":1,"record_hash":"51e91bd9b26f8f6dd9c2722bd6c30024a015a5c2d0ae4d9b807b5643657dac49"} +{"hash_algorithm":"sha256","ts":"2026-10-02T23:41:36.980Z","author":"codex-sol-land","author_source":"asserted","agent_harness":"codex","agent_model":"gpt-6.1-sol","agent_model_source":"probe","agent_instance":"6edbeed2935f1e5c041f14f3","agent_provenance":{"model":{"value":"gpt-6.1-sol","source":"probe"},"effort":{"value":"high","source":"probe"},"role":null,"topic":null},"op":"tests_add","patch":[{"op":"add","path":"/metadata/tests/1","value":{"command":"node --test test/lint-and-duplication-gates.test.ts","scope":"project","timeout_seconds":120,"provenance":{"author":"codex-sol-land","created_at":"2026-10-02T23:41:36.955Z","source_kind":"local_mutation","source_ref":"fix/pm-ops-tsx-quality-gates-2026-09-28"}}},{"op":"replace","path":"/metadata/updated_at","value":"2026-10-02T23:41:36.980Z"}],"before_hash":"04895f282a2f7c7932b9d9488c2b16ac4e486ab2c49fa5ec25c7f1226a41744c","after_hash":"6ac1d4bdc419a042e00f1b4d12fc8e9c345b09a321e0265fbb3ec6a3eb2bbe51","item_hash_version":3,"context":{"agent_provenance_outcomes":{"model":{"status":"resolved","resolver":"codex_session_file","rule_version":"v1"},"effort":{"status":"resolved","resolver":"codex_session_file","rule_version":"v1"},"version":{"status":"unavailable","reason":"harness_unavailable","resolver":"ai_agent_version","rule_version":"v1"}}},"event_class":"maintenance","record_hash_version":1,"record_hash":"fbbdd96e2744a71faa67841bbcfde4f0fdef57480356d02f35c6df5da14fee10"} +{"hash_algorithm":"sha256","ts":"2026-10-02T23:43:43.564Z","author":"codex-sol-land","author_source":"asserted","agent_harness":"codex","agent_model":"gpt-6.1-sol","agent_model_source":"probe","agent_instance":"6edbeed2935f1e5c041f14f3","agent_provenance":{"model":{"value":"gpt-6.1-sol","source":"probe"},"effort":{"value":"high","source":"probe"},"role":null,"topic":null},"op":"comment_add","patch":[{"op":"add","path":"/metadata/comments/4","value":{"created_at":"2026-10-02T23:43:43.564Z","author":"codex-sol-land","text":"Resumed verification: npm ci, current-base rebase, fresh committed-dist comparison, strict local tracker health with required merge drivers, npm run release:check, and bun install --no-save all passed. Full gate: 454 tests, 452 pass, 2 skips; configured coverage thresholds unchanged. PM-linked test/lint-and-duplication-gates.test.ts passed. Earlier findings and technical refusals retained; no new source fix was needed in this restart. Exact pushed-head CI and substantive reviewer availability remain separate checks; no merge, release, publication or item closure."}},{"op":"replace","path":"/metadata/updated_at","value":"2026-10-02T23:43:43.564Z"}],"before_hash":"6ac1d4bdc419a042e00f1b4d12fc8e9c345b09a321e0265fbb3ec6a3eb2bbe51","after_hash":"214a528505a9b6a745c3b0a6903ce481c69e3b1bf4ba409a640859772b51077b","item_hash_version":3,"context":{"agent_provenance_outcomes":{"model":{"status":"resolved","resolver":"codex_session_file","rule_version":"v1"},"effort":{"status":"resolved","resolver":"codex_session_file","rule_version":"v1"},"version":{"status":"unavailable","reason":"harness_unavailable","resolver":"ai_agent_version","rule_version":"v1"}}},"event_class":"substantive","record_hash_version":1,"record_hash":"1b739575d76411204a9906c44cff2d620b3aceeb1555d2656fcdb5eac9ec7aff"} +{"hash_algorithm":"sha256","ts":"2026-10-02T23:43:44.146Z","author":"codex-sol-land","author_source":"asserted","agent_harness":"codex","agent_model":"gpt-6.1-sol","agent_model_source":"probe","agent_instance":"6edbeed2935f1e5c041f14f3","agent_provenance":{"model":{"value":"gpt-6.1-sol","source":"probe"},"effort":{"value":"high","source":"probe"},"role":{"value":"implementer","source":"argv"},"topic":null},"op":"update","patch":[{"op":"replace","path":"/metadata/updated_at","value":"2026-10-02T23:43:44.146Z"},{"op":"replace","path":"/metadata/status","value":"blocked"}],"before_hash":"214a528505a9b6a745c3b0a6903ce481c69e3b1bf4ba409a640859772b51077b","after_hash":"698bf16317f0d2bc627c8c728f6ab62bcce054de2d451a317fb809a678575cc2","item_hash_version":3,"context":{"agent_provenance_outcomes":{"model":{"status":"resolved","resolver":"codex_session_file","rule_version":"v1"},"effort":{"status":"resolved","resolver":"codex_session_file","rule_version":"v1"},"version":{"status":"unavailable","reason":"harness_unavailable","resolver":"ai_agent_version","rule_version":"v1"}}},"event_class":"substantive","record_hash_version":1,"record_hash":"839063708974060c9716a4a3416b3011ce9fe4412e9088c57ec1df6184fded8a"} +{"hash_algorithm":"sha256","ts":"2026-10-02T23:43:44.706Z","author":"codex-sol-land","author_source":"asserted","agent_harness":"codex","agent_model":"gpt-6.1-sol","agent_model_source":"probe","agent_instance":"6edbeed2935f1e5c041f14f3","agent_provenance":{"model":{"value":"gpt-6.1-sol","source":"probe"},"effort":{"value":"high","source":"probe"},"role":{"value":"implementer","source":"argv"},"topic":null},"op":"release","patch":[{"op":"remove","path":"/metadata/claim_principal"},{"op":"remove","path":"/metadata/assignee"},{"op":"replace","path":"/metadata/updated_at","value":"2026-10-02T23:43:44.706Z"}],"before_hash":"698bf16317f0d2bc627c8c728f6ab62bcce054de2d451a317fb809a678575cc2","after_hash":"aa8a30588c14ebc7b9b8043d5917583e80c8e4420e005587e700198a3f5f48b7","item_hash_version":3,"context":{"agent_provenance_outcomes":{"model":{"status":"resolved","resolver":"codex_session_file","rule_version":"v1"},"effort":{"status":"resolved","resolver":"codex_session_file","rule_version":"v1"},"version":{"status":"unavailable","reason":"harness_unavailable","resolver":"ai_agent_version","rule_version":"v1"}}},"event_class":"maintenance","record_hash_version":1,"record_hash":"cfa04ad60e9bf7cfd6bcb729ba90fb337ddf15d328c9f11ab9d40373c3b79e65"} diff --git a/.agents/pm/issues/ops-zq8c.toon b/.agents/pm/issues/ops-zq8c.toon new file mode 100644 index 0000000..11ac3cb --- /dev/null +++ b/.agents/pm/issues/ops-zq8c.toon @@ -0,0 +1,66 @@ +id: ops-zq8c +title: Include TSX in docstring and duplication gates with verified source counts +description: "GitHub #128: pm-ops docstring and duplication gates silently omit TSX sources. Make both engines scan TSX, prove source-count completeness, and certify the exact package head." +type: Issue +status: blocked +priority: 1 +tags[4]: "area:quality",docstrings,duplication,tsx +created_at: "2026-09-28T15:05:31.893Z" +updated_at: "2026-10-02T23:43:44.706Z" +author: codex +estimated_minutes: 180 +acceptance_criteria: Directory and single-file docstring analysis find undocumented TSX exports; jscpd 4 and 5 detect TSX clones with the real engines; mismatched scan counts fail closed; release gate passes; companion records exact limitations. +comments[5]{created_at,author,text}: + "2026-10-02T18:27:05.767Z",pi-glm,"Rebase to current main (pi-glm, orchestrator land pass): PR #132 rebased onto origin/main 5ea8406 (releases 2026.9.28-1 and 2026.9.29 merged in cleanly, no conflicts). New head f3e66c3; same three commits. Full gate re-verified on the rebased head: npm run release:check passes (typecheck, lint, duplication, docstrings, coverage 100/100/100/100 across 23 sources, prod audit 0 findings, pack dry run, changelog:check, release-changelog-date, publish-attestation, lifecycle-policy), and pm health --strict-exit --json exits 0 with only stale-in-progress advisories. Re-review requested from CodeRabbit/Greptile/Gemini." + "2026-10-02T21:01:14.692Z",pi-grok,"Cubic review 5395516638 on head b15bf93, land-pass disposition:\n\n4168776167 is valid. Note 3 began with a pasted author=codex,text= label. pm item notes --edit 3 stripped that prefix so the text starts at \"CodeRabbit review comment 4124694533\". The original note_add history line is kept; the edit is a new history event.\n\n4168776160 is refused. tokenize selects LanguageVariant.JSX only when the file identifier ends with .tsx, which is the same rule collectSourceFiles uses to admit sources. analyzeSource's file argument is that identifier, not a free-form module name. Inferring JSX from source text would treat TypeScript generics in .ts files as tags. A caller that passes TSX bytes under a non-.tsx name is outside the gate contract; the walker never does that.\n\n4168776178 is refused. A live jscpd 5.2.1 JSON report stores statistics.formats.typescript.sources and statistics.total.sources as counts, not file maps. Duplicate records name only files that participated in a clone. The one-token probe therefore cannot name a same-size substitution, and the function comment above analyzeWithBinary already states that the JSON report carries only aggregate source counts. jscpd 4 still fails closed with skippedSources file names." + "2026-10-02T21:09:30.355Z",pi-grok,"Land-pass gate: the note-only head was included in the rebased pm-ops#134 tree, where npm run release:check exited 0 (455 pass, 0 fail, 2 default-suite real-data skips, c8 100/100/100/100 across 23 sources, changelog:check current). Local changelog:check on this branch also exited 0. pm health --strict-exit --require-merge-drivers exited 0." + "2026-10-02T23:41:34.683Z",codex-sol-land,"Resumed PR #132 from 8ae094a066a542113f04dd4a9716205f106bd42c. Rebase onto current main yields 8ae094a066a542113f04dd4a9716205f106bd42c. All existing bot artifacts and restart-era owner replies inspected; no new actionable finding. Preserve earlier fixes and technical refusals. Verifying unchanged CI gates under the shared heavy lock; no merge, release or closure." + "2026-10-02T23:43:43.564Z",codex-sol-land,"Resumed verification: npm ci, current-base rebase, fresh committed-dist comparison, strict local tracker health with required merge drivers, npm run release:check, and bun install --no-save all passed. Full gate: 454 tests, 452 pass, 2 skips; configured coverage thresholds unchanged. PM-linked test/lint-and-duplication-gates.test.ts passed. Earlier findings and technical refusals retained; no new source fix was needed in this restart. Exact pushed-head CI and substantive reviewer availability remain separate checks; no merge, release, publication or item closure." +notes[3]: + - created_at: "2026-09-28T15:05:31.893Z" + author: codex + text: "TDD: TSX docstring and real jscpd 4 tests failed before the source fix. The candidate passes 449/451 tests with two existing opt-in skips, c8 100/100/100/100, 221/221 documented declarations, zero duplication across 43 sources, zero production audit findings, and real packed npm/Node and Bun TSX acceptance. The local PM CLI SDK pin is 2026.9.28." + - created_at: "2026-09-28T15:18:38.784Z" + author: codex + text: "PR #132 first-head review found two valid regressions. Greptile P1 reproduced: a JSX closing tag let the tokenizer hide a later export; the TSX scanner now uses LanguageVariant.JSX and focused tests cover both direct analysis and directory walking. CodeRabbit major reproduced: fast-glob followed symlinked paths while jscpd 5 did not; fast-glob and jscpd 4 now share the no-symlink policy with jscpd 5, with real 4/5 symlink fixtures. Focused tests, build, typecheck, lint, and docstrings pass; full exact-head gate and packed acceptance remain pending." + - created_at: "2026-09-28T16:48:08.764Z" + author: "harness:codex" + text: "CodeRabbit review comment 4124694533 reproduced a jscpd 5.2.1 ambient .jscpd.json threshold failure: primary 200-token scan passed, one-token source probe detected 81.2% duplication and exited 1 before reading its count. A real-binary regression failed first. The fix resolves the repo root before launching jscpd and runs both canonical scans from an isolated output directory, so package duplicationGate remains authoritative. Focused test now passes, full release:check exits 0 with 100% on all four measured coverage dimensions, zero prod audit findings, and fresh packed npm/Node and Bun imports both report two complete sources and zero primary clones." + edited_at: "2026-10-02T21:01:02.968Z" +files[5]{path,scope,note}: + docstrings.ts,project,TSX source walker + duplication.ts,project,Both jscpd engines and source-count verification + README.md,project,Updated consumer guidance + test/docstrings.test.ts,project,TSX docstring regression + test/lint-and-duplication-gates.test.ts,project,Real jscpd 4 and 5 TSX acceptance +tests[2]: + - command: "npm run release:check" + path: package.json + scope: project + timeout_seconds: 900 + provenance: + author: codex + created_at: "2026-09-28T15:05:31.893Z" + source_kind: local_mutation + source_ref: fix/pm-ops-tsx-quality-gates-2026-09-28 + - command: node --test test/lint-and-duplication-gates.test.ts + scope: project + timeout_seconds: 120 + provenance: + author: codex-sol-land + created_at: "2026-10-02T23:41:36.955Z" + source_kind: local_mutation + source_ref: fix/pm-ops-tsx-quality-gates-2026-09-28 +docs[4]: + - path: "https://github.com/unbraind/pm-ops/issues/128" + scope: global + note: Source issue and reproduction + - path: "https://github.com/unbraind/pm-ops/pull/132#discussion_r4123846054" + scope: global + note: Greptile JSX closing-tag finding + - path: "https://github.com/unbraind/pm-ops/pull/132#discussion_r4123865252" + scope: global + note: CodeRabbit symlink scope finding + - path: "https://github.com/unbraind/pm-ops/pull/132" + scope: project +body: "" diff --git a/README.md b/README.md index 03508d8..252bfbe 100644 --- a/README.md +++ b/README.md @@ -342,10 +342,12 @@ process.exitCode = await runLintGate(); `runLintGate` uses the canonical policy, prints stylish diagnostics to stderr, and returns `0` or `1` for use as the process exit code. -The duplication export reads `package.json`, scans `**/*.ts` by default (including -root sources, `scripts/`, and tests), reports every clone pair with both file -line ranges, and fails when the measured percentage is above the configured -threshold. `globs` and `minTokens` can be overridden for direct analysis; +The duplication export reads `package.json`, scans `**/*.{ts,tsx}` by default +(including root sources, `scripts/`, UI components, and tests), reports every +clone pair with both file line ranges, and fails when the measured percentage +is above the configured threshold. Both jscpd 4 and 5 scan TS and TSX; the +jscpd 5 gate checks its source count with a one-token pass and refuses an +incomplete scan. `globs` and `minTokens` can be overridden for direct analysis; the gate uses `minTokens: 50` when the field is omitted. ### Consumers @@ -362,7 +364,7 @@ exports adds all five packages, using the version ranges shown in ```ts import { analyzeDuplication, runDuplicationGate } from "pm-ops/duplication"; -const report = await analyzeDuplication({ globs: ["src/**/*.ts", "test/**/*.ts"] }); +const report = await analyzeDuplication({ globs: ["src/**/*.{ts,tsx}", "test/**/*.{ts,tsx}"] }); await runDuplicationGate(); ``` diff --git a/dist/docstrings.d.ts b/dist/docstrings.d.ts index 392b455..3cffb0d 100644 --- a/dist/docstrings.d.ts +++ b/dist/docstrings.d.ts @@ -114,7 +114,7 @@ export interface DocstringViolation { } /** Aggregate result of scanning one tree. */ export interface DocstringReport { - /** Number of `.ts` files analyzed. */ + /** Number of `.ts` and `.tsx` files analyzed. */ readonly files_scanned: number; /** Number of declarations evaluated against the rules. */ readonly declarations_checked: number; @@ -137,7 +137,7 @@ export interface SourceAnalysis { */ export declare function analyzeSource(text: string, file: string): SourceAnalysis; /** - * Walk a directory tree and analyze every authored `.ts` source beneath it, + * Walk a directory tree and analyze every authored `.ts` or `.tsx` source beneath it, * skipping `.d.ts` files and the structural non-source directories. Scanning * zero files fails by throwing rather than passing vacuously. */ diff --git a/dist/docstrings.d.ts.map b/dist/docstrings.d.ts.map index 60bfcbc..54c23b1 100644 --- a/dist/docstrings.d.ts.map +++ b/dist/docstrings.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"docstrings.d.ts","sourceRoot":"","sources":["../docstrings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqFG;AAOH;;;GAGG;AACH,eAAO,MAAM,aAAa,IAAI,CAAC;AAE/B;;;;GAIG;AACH,eAAO,MAAM,eAAe,IAAI,CAAC;AAEjC;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,IAAI,CAAC;AAErC,iEAAiE;AACjE,MAAM,WAAW,kBAAkB;IACjC,sDAAsD;IACtD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,mDAAmD;IACnD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,8DAA8D;IAC9D,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,qDAAqD;IACrD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,6CAA6C;AAC7C,MAAM,WAAW,eAAe;IAC9B,sCAAsC;IACtC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,0DAA0D;IAC1D,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,wCAAwC;IACxC,QAAQ,CAAC,UAAU,EAAE,SAAS,kBAAkB,EAAE,CAAC;CACpD;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,uCAAuC;IACvC,QAAQ,CAAC,UAAU,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACnD,gDAAgD;IAChD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAkkCD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,cAAc,CAKxE;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GAAG,eAAe,CAoBnH"} \ No newline at end of file +{"version":3,"file":"docstrings.d.ts","sourceRoot":"","sources":["../docstrings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqFG;AAOH;;;GAGG;AACH,eAAO,MAAM,aAAa,IAAI,CAAC;AAE/B;;;;GAIG;AACH,eAAO,MAAM,eAAe,IAAI,CAAC;AAEjC;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,IAAI,CAAC;AAErC,iEAAiE;AACjE,MAAM,WAAW,kBAAkB;IACjC,sDAAsD;IACtD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,mDAAmD;IACnD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,8DAA8D;IAC9D,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,qDAAqD;IACrD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,6CAA6C;AAC7C,MAAM,WAAW,eAAe;IAC9B,iDAAiD;IACjD,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,0DAA0D;IAC1D,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,wCAAwC;IACxC,QAAQ,CAAC,UAAU,EAAE,SAAS,kBAAkB,EAAE,CAAC;CACpD;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,uCAAuC;IACvC,QAAQ,CAAC,UAAU,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACnD,gDAAgD;IAChD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAokCD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,cAAc,CAKxE;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GAAG,eAAe,CAoBnH"} \ No newline at end of file diff --git a/dist/docstrings.js b/dist/docstrings.js index 98c1dc0..f0c6761 100644 --- a/dist/docstrings.js +++ b/dist/docstrings.js @@ -249,12 +249,14 @@ function isKeyword(kind) { * Convert a token stream into a clean array of braces. Runs the unstable * scanner with trivia skipped and applies the two corrections documented at the * top of this file: template-substitution `}` is rescanned into a template - * continuation, and `/` is rescanned as a regex only in regex context. The + * continuation, and `/` is rescanned as a regex only in regex context. TSX + * uses the scanner's JSX variant so `` is one closing-tag token rather + * than a slash that could consume later declarations as a regex. The * returned array never contains a brace that does not correspond to a real * `{` / `}` in the source. */ -function tokenize(text) { - const scanner = createScanner(true, LanguageVariant.Standard, text); +function tokenize(text, file) { + const scanner = createScanner(true, file.endsWith(".tsx") ? LanguageVariant.JSX : LanguageVariant.Standard, text); const tokens = []; const group = []; let prev; @@ -346,7 +348,7 @@ function cleanComment(raw) { return text.replace(/\s+/g, " ").trim(); } /** - * Recursively collect every authored `.ts` file (excluding `.d.ts`) beneath the + * Recursively collect every authored `.ts` or `.tsx` file (excluding `.d.ts`) beneath the * given roots, skipping the structural non-source directories in * {@link SKIP_DIRS}. A root may itself be a single file. */ @@ -371,7 +373,7 @@ function collectSourceFiles(roots) { if (!SKIP_DIRS.has(name)) walk(full); } - else if (info.isFile() && name.endsWith(".ts") && !name.endsWith(".d.ts")) { + else if (info.isFile() && (name.endsWith(".ts") || name.endsWith(".tsx")) && !name.endsWith(".d.ts")) { out.push(full); } } @@ -389,7 +391,7 @@ function collectSourceFiles(roots) { if (info.isDirectory()) { walk(root); } - else if (info.isFile() && root.endsWith(".ts") && !root.endsWith(".d.ts")) { + else if (info.isFile() && (root.endsWith(".ts") || root.endsWith(".tsx")) && !root.endsWith(".d.ts")) { out.push(root); } } @@ -1209,13 +1211,13 @@ class SourceAnalyzer { * violations it contains plus how many declarations were evaluated. */ export function analyzeSource(text, file) { - const tokens = tokenize(text); + const tokens = tokenize(text, file); const analyzer = new SourceAnalyzer(text, file, tokens, buildLineMap(text)); analyzer.run(); return { violations: analyzer.violations, declarations: analyzer.declarationsChecked }; } /** - * Walk a directory tree and analyze every authored `.ts` source beneath it, + * Walk a directory tree and analyze every authored `.ts` or `.tsx` source beneath it, * skipping `.d.ts` files and the structural non-source directories. Scanning * zero files fails by throwing rather than passing vacuously. */ diff --git a/dist/docstrings.js.map b/dist/docstrings.js.map index d8e6de2..9eedc3f 100644 --- a/dist/docstrings.js.map +++ b/dist/docstrings.js.map @@ -1 +1 @@ -{"version":3,"file":"docstrings.js","sourceRoot":"","sources":["../docstrings.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"docstrings.js","sourceRoot":"","sources":["../docstrings.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/duplication.d.ts b/dist/duplication.d.ts index e543604..e618097 100644 --- a/dist/duplication.d.ts +++ b/dist/duplication.d.ts @@ -79,6 +79,7 @@ interface ReportedAnalysis { readonly total: { readonly lines: number; readonly duplicatedLines: number; + readonly sources: number; }; }; } diff --git a/dist/duplication.d.ts.map b/dist/duplication.d.ts.map index a7f9ee7..8e6cdd3 100644 --- a/dist/duplication.d.ts.map +++ b/dist/duplication.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"duplication.d.ts","sourceRoot":"","sources":["../duplication.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"duplication.d.ts","sourceRoot":"","sources":["../duplication.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/duplication.js b/dist/duplication.js index 254a107..a693b49 100644 --- a/dist/duplication.js +++ b/dist/duplication.js @@ -16,7 +16,7 @@ import { tmpdir } from "node:os"; import { dirname, join, relative, resolve, sep } from "node:path"; import { spawnSync } from "node:child_process"; /** Default TypeScript glob scanned by the duplication gate. */ -export const DEFAULT_DUPLICATION_GLOBS = ["**/*.ts"]; +export const DEFAULT_DUPLICATION_GLOBS = ["**/*.{ts,tsx}"]; const defaultRepoRoot = process.cwd(); const MAX_DUPLICATION_LINES = Number.MAX_SAFE_INTEGER; const MAX_DUPLICATION_SIZE = `${Number.MAX_SAFE_INTEGER}b`; @@ -89,15 +89,17 @@ export function parseJscpdReport(report) { const total = expectRecord(statistics.total, "statistics.total"); const lines = expectNumber(total, "lines", "statistics.total.lines"); const duplicatedLines = expectNumber(total, "duplicatedLines", "statistics.total.duplicatedLines"); - // An impossible count (negative, fractional, or more duplicated than total lines) - // would compute a passing percentage, so it fails closed like a missing field. + const sources = expectNumber(total, "sources", "statistics.total.sources"); + // Impossible counts could compute a passing percentage or false completeness. if (!Number.isInteger(lines) || !Number.isInteger(duplicatedLines) || duplicatedLines < 0 || - duplicatedLines > lines) { - throw new Error("duplication: jscpd report statistics.total contains impossible line counts"); + duplicatedLines > lines || + !Number.isInteger(sources) || + sources < 0) { + throw new Error("duplication: jscpd report statistics.total contains impossible counts"); } - return { duplicates: clones, statistics: { total: { lines, duplicatedLines } } }; + return { duplicates: clones, statistics: { total: { lines, duplicatedLines, sources } } }; } /** Parse and validate the package-level duplication gate contract. */ function readDuplicationConfig(manifest) { @@ -150,11 +152,11 @@ function globMatchedSources(repoRoot, pattern) { absolute: true, cwd: repoRoot, dot: true, - followSymbolicLinks: true, + followSymbolicLinks: false, ignore: [...DUPLICATION_IGNORES], onlyFiles: true, }) - .filter((source) => source.endsWith(".ts") && !source.endsWith(".d.ts")) + .filter((source) => (source.endsWith(".ts") || source.endsWith(".tsx")) && !source.endsWith(".d.ts")) .map((source) => relativeSource(repoRoot, source)) .sort(); } @@ -167,10 +169,11 @@ function duplicationOptions(repoRoot, pattern, minTokens) { minLines: 1, maxLines: MAX_DUPLICATION_LINES, maxSize: MAX_DUPLICATION_SIZE, - format: ["typescript"], + format: ["typescript", "tsx"], ignore: [...DUPLICATION_IGNORES], absolute: true, gitignore: false, + noSymlinks: true, reporters: [], silent: true, }; @@ -223,7 +226,7 @@ function packageDirOf(entryPath) { async function analyzeWithProgrammatic(installation, repoRoot, pattern, minTokens, matchedSources) { const api = require(installation.entryPath); const result = await api.detectClonesAndStatistic(duplicationOptions(repoRoot, pattern, minTokens)); - const analyzedSources = Object.keys(result.statistic.formats.typescript?.sources ?? {}) + const analyzedSources = ["typescript", "tsx"].flatMap((format) => Object.keys(result.statistic.formats[format]?.sources ?? {})) .map((source) => relativeSource(repoRoot, source)) .sort(); const analyzed = new Set(analyzedSources); @@ -241,36 +244,43 @@ async function analyzeWithProgrammatic(installation, repoRoot, pattern, minToken * Analyze with jscpd 5's binary through its JSON reporter. * * jscpd 5 is a self-contained Rust binary driven by `run-jscpd.js`, and its - * JSON report carries no per-file analysis record. The only files it drops - * from `statistics.total.sources` are those below the token floor, which - * cannot hold a clone of `minTokens` tokens, so the in-scope file set is the - * analyzed set and nothing in scope can be silently skipped. + * JSON report carries only aggregate source counts. A second one-token scan + * proves that its format filter read every in-scope file, including short ones. */ function analyzeWithBinary(installation, repoRoot, pattern, minTokens, matchedSources) { const outputDir = mkdtempSync(join(tmpdir(), "pm-ops-jscpd-")); try { - const result = spawnSync(process.execPath, [ - join(installation.packageDir, "run-jscpd.js"), - repoRoot, - "--pattern", pattern, - "--format", "typescript", - "--min-tokens", String(minTokens), - "--min-lines", "1", - "--max-lines", String(MAX_DUPLICATION_LINES), - "--max-size", MAX_DUPLICATION_SIZE, - "--ignore", DUPLICATION_IGNORES.join(","), - "--reporters", "json", - "--output", outputDir, - "--silent", - "--no-colors", - "--absolute", - "--no-gitignore", - ], { encoding: "utf8" }); - if (result.status !== 0) { - throw new Error(`duplication: jscpd exited with status ${String(result.status)}: ${String(result.stderr)}`); + const run = (tokens) => { + // The package gate owns its threshold; an ambient .jscpd.json must not + // make either scan exit before its JSON source-count receipt is read. + const result = spawnSync(process.execPath, [ + join(installation.packageDir, "run-jscpd.js"), + repoRoot, + "--pattern", pattern, + "--format", "typescript,tsx", + "--min-tokens", String(tokens), + "--min-lines", "1", + "--max-lines", String(MAX_DUPLICATION_LINES), + "--max-size", MAX_DUPLICATION_SIZE, + "--ignore", DUPLICATION_IGNORES.join(","), + "--reporters", "json", + "--output", outputDir, + "--silent", + "--no-colors", + "--absolute", + "--no-gitignore", + ], { cwd: outputDir, encoding: "utf8" }); + if (result.status !== 0) { + throw new Error(`duplication: jscpd exited with status ${String(result.status)}: ${String(result.stderr)}`); + } + const rawReport = JSON.parse(readFileSync(join(outputDir, "jscpd-report.json"), "utf8")); + return parseJscpdReport(rawReport); + }; + const reported = run(minTokens); + const verifiedSources = minTokens === 1 ? reported.statistics.total.sources : run(1).statistics.total.sources; + if (verifiedSources !== matchedSources.length) { + throw new Error(`duplication: jscpd scanned ${verifiedSources} of ${matchedSources.length} in-scope TypeScript sources at the one-token floor`); } - const rawReport = JSON.parse(readFileSync(join(outputDir, "jscpd-report.json"), "utf8")); - const reported = parseJscpdReport(rawReport); return { percentage: percentageOf(reported.statistics.total.duplicatedLines, reported.statistics.total.lines), totalLines: reported.statistics.total.lines, @@ -306,7 +316,7 @@ export function duplicationGateDiagnostic(report) { * @returns Aggregate percentage and every clone pair found by jscpd. */ export async function analyzeDuplication(options = {}) { - const repoRoot = options.repoRoot ?? defaultRepoRoot; + const repoRoot = resolve(options.repoRoot ?? defaultRepoRoot); const pattern = combineGlobs(options.globs ?? DEFAULT_DUPLICATION_GLOBS); const minTokens = options.minTokens ?? 50; const matchedSources = globMatchedSources(repoRoot, pattern); diff --git a/dist/duplication.js.map b/dist/duplication.js.map index 1c6c81b..ba62b80 100644 --- a/dist/duplication.js.map +++ b/dist/duplication.js.map @@ -1 +1 @@ -{"version":3,"file":"duplication.js","sourceRoot":"","sources":["../duplication.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"duplication.js","sourceRoot":"","sources":["../duplication.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/docstrings.ts b/docstrings.ts index 301606e..f02c8b9 100644 --- a/docstrings.ts +++ b/docstrings.ts @@ -124,7 +124,7 @@ export interface DocstringViolation { /** Aggregate result of scanning one tree. */ export interface DocstringReport { - /** Number of `.ts` files analyzed. */ + /** Number of `.ts` and `.tsx` files analyzed. */ readonly files_scanned: number; /** Number of declarations evaluated against the rules. */ readonly declarations_checked: number; @@ -308,12 +308,14 @@ function isKeyword(kind: SyntaxKind): boolean { * Convert a token stream into a clean array of braces. Runs the unstable * scanner with trivia skipped and applies the two corrections documented at the * top of this file: template-substitution `}` is rescanned into a template - * continuation, and `/` is rescanned as a regex only in regex context. The + * continuation, and `/` is rescanned as a regex only in regex context. TSX + * uses the scanner's JSX variant so `` is one closing-tag token rather + * than a slash that could consume later declarations as a regex. The * returned array never contains a brace that does not correspond to a real * `{` / `}` in the source. */ -function tokenize(text: string): Token[] { - const scanner = createScanner(true, LanguageVariant.Standard, text); +function tokenize(text: string, file: string): Token[] { + const scanner = createScanner(true, file.endsWith(".tsx") ? LanguageVariant.JSX : LanguageVariant.Standard, text); const tokens: Token[] = []; const group: Array<"brace" | "paren" | "bracket" | "sub"> = []; let prev: SyntaxKind | undefined; @@ -397,7 +399,7 @@ function cleanComment(raw: string): string { } /** - * Recursively collect every authored `.ts` file (excluding `.d.ts`) beneath the + * Recursively collect every authored `.ts` or `.tsx` file (excluding `.d.ts`) beneath the * given roots, skipping the structural non-source directories in * {@link SKIP_DIRS}. A root may itself be a single file. */ @@ -418,7 +420,7 @@ function collectSourceFiles(roots: readonly string[]): string[] { } if (info.isDirectory()) { if (!SKIP_DIRS.has(name)) walk(full); - } else if (info.isFile() && name.endsWith(".ts") && !name.endsWith(".d.ts")) { + } else if (info.isFile() && (name.endsWith(".ts") || name.endsWith(".tsx")) && !name.endsWith(".d.ts")) { out.push(full); } } @@ -433,7 +435,7 @@ function collectSourceFiles(roots: readonly string[]): string[] { } if (info.isDirectory()) { walk(root); - } else if (info.isFile() && root.endsWith(".ts") && !root.endsWith(".d.ts")) { + } else if (info.isFile() && (root.endsWith(".ts") || root.endsWith(".tsx")) && !root.endsWith(".d.ts")) { out.push(root); } } @@ -1236,14 +1238,14 @@ class SourceAnalyzer { * violations it contains plus how many declarations were evaluated. */ export function analyzeSource(text: string, file: string): SourceAnalysis { - const tokens = tokenize(text); + const tokens = tokenize(text, file); const analyzer = new SourceAnalyzer(text, file, tokens, buildLineMap(text)); analyzer.run(); return { violations: analyzer.violations, declarations: analyzer.declarationsChecked }; } /** - * Walk a directory tree and analyze every authored `.ts` source beneath it, + * Walk a directory tree and analyze every authored `.ts` or `.tsx` source beneath it, * skipping `.d.ts` files and the structural non-source directories. Scanning * zero files fails by throwing rather than passing vacuously. */ diff --git a/duplication.ts b/duplication.ts index 7fb479e..f0149f8 100644 --- a/duplication.ts +++ b/duplication.ts @@ -18,7 +18,7 @@ import { dirname, join, relative, resolve, sep } from "node:path"; import { spawnSync } from "node:child_process"; /** Default TypeScript glob scanned by the duplication gate. */ -export const DEFAULT_DUPLICATION_GLOBS: readonly string[] = ["**/*.ts"]; +export const DEFAULT_DUPLICATION_GLOBS: readonly string[] = ["**/*.{ts,tsx}"]; /** A clone pair with repository-relative file names and inclusive line ranges. */ export interface DuplicationClone { @@ -87,7 +87,7 @@ interface ReportedClone { interface ReportedAnalysis { readonly duplicates: readonly ReportedClone[]; readonly statistics: { - readonly total: { readonly lines: number; readonly duplicatedLines: number }; + readonly total: { readonly lines: number; readonly duplicatedLines: number; readonly sources: number }; }; } @@ -104,7 +104,7 @@ interface ProgrammaticApi { clones: readonly { readonly duplicationA: ProgrammaticCloneEnd; readonly duplicationB: ProgrammaticCloneEnd }[]; statistic: { readonly total: { readonly lines: number; readonly duplicatedLines: number; readonly sources: number }; - readonly formats: { readonly typescript?: { readonly sources: Readonly> } }; + readonly formats: Readonly> } | undefined>>; }; }>; } @@ -121,6 +121,7 @@ interface ProgrammaticOptions { readonly ignore: readonly string[]; readonly absolute: boolean; readonly gitignore: boolean; + readonly noSymlinks: boolean; readonly reporters: readonly string[]; readonly silent: boolean; } @@ -213,17 +214,19 @@ export function parseJscpdReport(report: unknown): ReportedAnalysis { const total = expectRecord(statistics.total, "statistics.total"); const lines = expectNumber(total, "lines", "statistics.total.lines"); const duplicatedLines = expectNumber(total, "duplicatedLines", "statistics.total.duplicatedLines"); - // An impossible count (negative, fractional, or more duplicated than total lines) - // would compute a passing percentage, so it fails closed like a missing field. + const sources = expectNumber(total, "sources", "statistics.total.sources"); + // Impossible counts could compute a passing percentage or false completeness. if ( !Number.isInteger(lines) || !Number.isInteger(duplicatedLines) || duplicatedLines < 0 || - duplicatedLines > lines + duplicatedLines > lines || + !Number.isInteger(sources) || + sources < 0 ) { - throw new Error("duplication: jscpd report statistics.total contains impossible line counts"); + throw new Error("duplication: jscpd report statistics.total contains impossible counts"); } - return { duplicates: clones, statistics: { total: { lines, duplicatedLines } } }; + return { duplicates: clones, statistics: { total: { lines, duplicatedLines, sources } } }; } /** Parse and validate the package-level duplication gate contract. */ @@ -286,11 +289,11 @@ function globMatchedSources(repoRoot: string, pattern: string): string[] { absolute: true, cwd: repoRoot, dot: true, - followSymbolicLinks: true, + followSymbolicLinks: false, ignore: [...DUPLICATION_IGNORES], onlyFiles: true, }) - .filter((source) => source.endsWith(".ts") && !source.endsWith(".d.ts")) + .filter((source) => (source.endsWith(".ts") || source.endsWith(".tsx")) && !source.endsWith(".d.ts")) .map((source) => relativeSource(repoRoot, source)) .sort(); } @@ -304,10 +307,11 @@ function duplicationOptions(repoRoot: string, pattern: string, minTokens: number minLines: 1, maxLines: MAX_DUPLICATION_LINES, maxSize: MAX_DUPLICATION_SIZE, - format: ["typescript"], + format: ["typescript", "tsx"], ignore: [...DUPLICATION_IGNORES], absolute: true, gitignore: false, + noSymlinks: true, reporters: [], silent: true, }; @@ -369,9 +373,9 @@ async function analyzeWithProgrammatic( ): Promise { const api = require(installation.entryPath) as ProgrammaticApi; const result = await api.detectClonesAndStatistic(duplicationOptions(repoRoot, pattern, minTokens)); - const analyzedSources = Object.keys( - result.statistic.formats.typescript?.sources ?? {}, - ) + const analyzedSources = ["typescript", "tsx"].flatMap((format) => Object.keys( + result.statistic.formats[format]?.sources ?? {}, + )) .map((source) => relativeSource(repoRoot, source)) .sort(); const analyzed = new Set(analyzedSources); @@ -390,10 +394,8 @@ async function analyzeWithProgrammatic( * Analyze with jscpd 5's binary through its JSON reporter. * * jscpd 5 is a self-contained Rust binary driven by `run-jscpd.js`, and its - * JSON report carries no per-file analysis record. The only files it drops - * from `statistics.total.sources` are those below the token floor, which - * cannot hold a clone of `minTokens` tokens, so the in-scope file set is the - * analyzed set and nothing in scope can be silently skipped. + * JSON report carries only aggregate source counts. A second one-token scan + * proves that its format filter read every in-scope file, including short ones. */ function analyzeWithBinary( installation: JscpdInstallation, @@ -404,28 +406,37 @@ function analyzeWithBinary( ): DuplicationReport { const outputDir = mkdtempSync(join(tmpdir(), "pm-ops-jscpd-")); try { - const result = spawnSync(process.execPath, [ - join(installation.packageDir, "run-jscpd.js"), - repoRoot, - "--pattern", pattern, - "--format", "typescript", - "--min-tokens", String(minTokens), - "--min-lines", "1", - "--max-lines", String(MAX_DUPLICATION_LINES), - "--max-size", MAX_DUPLICATION_SIZE, - "--ignore", DUPLICATION_IGNORES.join(","), - "--reporters", "json", - "--output", outputDir, - "--silent", - "--no-colors", - "--absolute", - "--no-gitignore", - ], { encoding: "utf8" }); - if (result.status !== 0) { - throw new Error(`duplication: jscpd exited with status ${String(result.status)}: ${String(result.stderr)}`); + const run = (tokens: number): ReportedAnalysis => { + // The package gate owns its threshold; an ambient .jscpd.json must not + // make either scan exit before its JSON source-count receipt is read. + const result = spawnSync(process.execPath, [ + join(installation.packageDir, "run-jscpd.js"), + repoRoot, + "--pattern", pattern, + "--format", "typescript,tsx", + "--min-tokens", String(tokens), + "--min-lines", "1", + "--max-lines", String(MAX_DUPLICATION_LINES), + "--max-size", MAX_DUPLICATION_SIZE, + "--ignore", DUPLICATION_IGNORES.join(","), + "--reporters", "json", + "--output", outputDir, + "--silent", + "--no-colors", + "--absolute", + "--no-gitignore", + ], { cwd: outputDir, encoding: "utf8" }); + if (result.status !== 0) { + throw new Error(`duplication: jscpd exited with status ${String(result.status)}: ${String(result.stderr)}`); + } + const rawReport = JSON.parse(readFileSync(join(outputDir, "jscpd-report.json"), "utf8")) as unknown; + return parseJscpdReport(rawReport); + }; + const reported = run(minTokens); + const verifiedSources = minTokens === 1 ? reported.statistics.total.sources : run(1).statistics.total.sources; + if (verifiedSources !== matchedSources.length) { + throw new Error(`duplication: jscpd scanned ${verifiedSources} of ${matchedSources.length} in-scope TypeScript sources at the one-token floor`); } - const rawReport = JSON.parse(readFileSync(join(outputDir, "jscpd-report.json"), "utf8")) as unknown; - const reported = parseJscpdReport(rawReport); return { percentage: percentageOf(reported.statistics.total.duplicatedLines, reported.statistics.total.lines), totalLines: reported.statistics.total.lines, @@ -465,7 +476,7 @@ export function duplicationGateDiagnostic( export async function analyzeDuplication( options: Pick = {}, ): Promise { - const repoRoot = options.repoRoot ?? defaultRepoRoot; + const repoRoot = resolve(options.repoRoot ?? defaultRepoRoot); const pattern = combineGlobs(options.globs ?? DEFAULT_DUPLICATION_GLOBS); const minTokens = options.minTokens ?? 50; const matchedSources = globMatchedSources(repoRoot, pattern); diff --git a/package-lock.json b/package-lock.json index d0b88ea..91f3bfb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,7 +16,7 @@ "@babel/eslint-parser": "^8.0.5", "@babel/plugin-syntax-typescript": "^8.0.3", "@types/node": "^26.2.0", - "@unbrained/pm-cli": "2026.9.27", + "@unbrained/pm-cli": "2026.9.28", "c8": "^12.0.0", "eslint": "^10.10.0", "fast-glob": "^3.3.3", @@ -1357,9 +1357,9 @@ } }, "node_modules/@unbrained/pm-cli": { - "version": "2026.9.27", - "resolved": "https://registry.npmjs.org/@unbrained/pm-cli/-/pm-cli-2026.9.27.tgz", - "integrity": "sha512-l7m3GIm50oMecjXYnzA+RuzHgFD/uAOZko3eRJXfT+pYV9pceh4xvJ9dbD+35p2mY/zvUNiZjggCOOrWVuswSA==", + "version": "2026.9.28", + "resolved": "https://registry.npmjs.org/@unbrained/pm-cli/-/pm-cli-2026.9.28.tgz", + "integrity": "sha512-bbyq/FIKMUxnGKJTieG3AVL96tS4l9JUuTgzgAiZTqI7lYyLXytmQFVD1a+2neVQT9+6sVNF8ko2u7DcqztxjQ==", "dev": true, "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index 5f33052..56c4a4a 100644 --- a/package.json +++ b/package.json @@ -121,7 +121,7 @@ "@babel/eslint-parser": "^8.0.5", "@babel/plugin-syntax-typescript": "^8.0.3", "@types/node": "^26.2.0", - "@unbrained/pm-cli": "2026.9.27", + "@unbrained/pm-cli": "2026.9.28", "c8": "^12.0.0", "eslint": "^10.10.0", "fast-glob": "^3.3.3", diff --git a/test/compatibility-floor.test.ts b/test/compatibility-floor.test.ts index 5bd3ac2..7fd1bff 100644 --- a/test/compatibility-floor.test.ts +++ b/test/compatibility-floor.test.ts @@ -34,7 +34,7 @@ const releaseWorkflow = readFileSync(resolve(repoRoot, ".github", "workflows", " const CLI = "@unbrained/pm-cli"; const EXACT_VERSION = /^\d+\.\d+\.\d+$/; -const REQUIRED_DEVELOPMENT_VERSION = "2026.9.27"; +const REQUIRED_DEVELOPMENT_VERSION = "2026.9.28"; /** * Two independent systems enforce the pm CLI compatibility floor, and each reads diff --git a/test/docstrings.test.ts b/test/docstrings.test.ts index 37ed3cb..3d2d4dc 100644 --- a/test/docstrings.test.ts +++ b/test/docstrings.test.ts @@ -495,6 +495,30 @@ test("walks a tree, skipping test/, dist/, and .d.ts files", () => { } }); +test("directory and single-file scans include undocumented TSX exports", () => { + const root = mkdtempSync(join(tmpdir(), "docstrings-tsx-")); + try { + mkdirSync(join(root, "src")); + const component = join(root, "src", "Widget.tsx"); + writeFileSync(component, "export function Widget() { return
; }\nexport const Hidden = 1;\n"); + const directory = analyzeDocstringCoverage({ root }); + const singleFile = analyzeDocstringCoverage({ root, sourceDirs: ["src/Widget.tsx"] }); + assert.equal(directory.files_scanned, 1); + assert.equal(singleFile.files_scanned, 1); + assert.equal(directory.violations.length, 2); + assert.equal(singleFile.violations.length, 2); + assert.equal(directory.violations[0]?.symbol, "Widget"); + assert.equal(directory.violations[1]?.symbol, "Hidden"); + } finally { + rmSync(root, { recursive: true, force: true }); + } +}); + +test("JSX closing tags do not hide later undocumented TSX exports", () => { + const source = "export const A =
; export const B = 1;\n"; + assert.deepEqual(analyzeSource(source, "widget.tsx").violations.map(({ symbol }) => symbol), ["A", "B"]); +}); + test("sourceDirs scopes the walk to listed subdirectories", () => { const root = mkdtempSync(join(tmpdir(), "docstrings-dirs-")); try { diff --git a/test/lint-and-duplication-gates.test.ts b/test/lint-and-duplication-gates.test.ts index 0cab579..41ab866 100644 --- a/test/lint-and-duplication-gates.test.ts +++ b/test/lint-and-duplication-gates.test.ts @@ -2,7 +2,7 @@ import assert from "node:assert/strict"; import { spawnSync } from "node:child_process"; import { cpSync, mkdirSync, mkdtempSync, rmSync, symlinkSync, writeFileSync } from "node:fs"; import { tmpdir } from "node:os"; -import { join, resolve } from "node:path"; +import { join, relative, resolve } from "node:path"; import test, { after, before } from "node:test"; import { ESLint } from "eslint"; @@ -301,6 +301,79 @@ test("duplication analyzer reports the same clone pairs through the real jscpd 4 assert.match(gate.errors, /exceeds the configured 0% threshold/); }); +test("both real jscpd engines include TSX clones in mixed TypeScript globs", async () => { + const source = [ + "export function Widget() {", + " const firstValue = 1;", + " const secondValue = 2;", + " const thirdValue = 3;", + " const fourthValue = 4;", + " const fifthValue = 5;", + " const sixthValue = 6;", + " const seventhValue = 7;", + " const eighthValue = 8;", + " return
{firstValue + secondValue + thirdValue + fourthValue + fifthValue + sixthValue + seventhValue + eighthValue}
;", + "}", + ].join("\n") + "\n"; + for (const [version, fixture] of [ + ["jscpd4", jscpd4Fixture("tsx-clones-v4", { threshold: 0, minTokens: 20 })], + ["jscpd5", packageFixture("tsx-clones-v5", { threshold: 0, minTokens: 20 })], + ] as const) { + writeFileSync(join(fixture, "src", "First.tsx"), source); + writeFileSync(join(fixture, "src", "Second.tsx"), source); + const report = await analyzeDuplication({ repoRoot: fixture, globs: ["src/**/*.{ts,tsx}"], minTokens: 20 }); + assert.equal(report.sources, 2, version); + assert.equal(report.cloneCount, 1, version); + assert.deepEqual(report.skippedSources, [], version); + assert.match(report.clones[0]?.first.file ?? "", /\.tsx$/, version); + const defaultReport = await analyzeDuplication({ repoRoot: fixture, minTokens: 1 }); + assert.equal(defaultReport.sources, 2, `${version} default scope`); + assert.ok(defaultReport.cloneCount >= 1, `${version} default scope`); + const gate = await gateFailureOutput(fixture, { globs: ["src/**/*.{ts,tsx}"] }); + assert.match(gate.errors, /exceeds the configured 0% threshold/, version); + } +}); + +test("jscpd 5 refuses a TSX file omitted even by the one-token source probe", async () => { + const fixture = packageFixture("tsx-source-count-mismatch", { threshold: 0 }); + writeFileSync(join(fixture, "src", "Empty.tsx"), ""); + await assert.rejects( + analyzeDuplication({ repoRoot: fixture, globs: ["src/**/*.{ts,tsx}"] }), + /jscpd scanned 0 of 1 in-scope TypeScript sources/, + ); + const gate = await gateFailureOutput(fixture, { globs: ["src/**/*.{ts,tsx}"] }); + assert.match(gate.errors, /jscpd scanned 0 of 1 in-scope TypeScript sources/); +}); + +test("jscpd 5 completeness probe ignores a consumer threshold without losing source count", async () => { + const fixture = packageFixture("consumer-jscpd-threshold", { threshold: 0, minTokens: 200 }); + const source = Array.from({ length: 8 }, (_, index) => `export const repeated${index} = ${index};`).join("\n") + "\n"; + writeFileSync(join(fixture, "src", "first.ts"), source); + writeFileSync(join(fixture, "src", "second.ts"), source); + writeFileSync(join(fixture, ".jscpd.json"), `${JSON.stringify({ threshold: 0 })}\n`); + + const launcher = resolve(import.meta.dirname, "../scripts/duplication-gate.ts"); + const result = spawnSync(process.execPath, [launcher], { cwd: fixture, encoding: "utf8" }); + assert.equal(result.status, 0, result.stderr); + assert.match(result.stdout, /0% duplicated lines .*2 source\(s\)/); + const relativeReport = await analyzeDuplication({ repoRoot: relative(process.cwd(), fixture), minTokens: 200 }); + assert.equal(relativeReport.sources, 2); +}); + +test("both engines count canonical TSX sources once across symlinked paths", async () => { + for (const [version, fixture] of [ + ["jscpd4", jscpd4Fixture("tsx-symlink-v4", { threshold: 0 })], + ["jscpd5", packageFixture("tsx-symlink-v5", { threshold: 0 })], + ] as const) { + writeFileSync(join(fixture, "src", "Widget.tsx"), "export const Widget =
real source
;\n"); + symlinkSync(join(fixture, "src", "Widget.tsx"), join(fixture, "src", "Alias.tsx"), "file"); + symlinkSync(join(fixture, "src"), join(fixture, "alias"), "dir"); + const report = await analyzeDuplication({ repoRoot: fixture, minTokens: 1 }); + assert.equal(report.sources, 1, version); + assert.deepEqual(report.skippedSources, [], version); + } +}); + test("duplication gate fails closed when the real jscpd 5 binary package is missing", async () => { const broken = packageFixture("jscpd5-missing-platform", { threshold: 0 }); mkdirSync(join(broken, "node_modules"), { recursive: true }); @@ -320,11 +393,12 @@ test("jscpd 5 report parsing accepts a real report shape and fails closed for ma firstFile: { name: "/repo/src/first.ts", start: 1, end: 11 }, secondFile: { name: "/repo/test/second.ts", start: 1, end: 11 }, }; - const statistics = { total: { lines: 22, duplicatedLines: 11 } }; + const statistics = { total: { lines: 22, duplicatedLines: 11, sources: 2 } }; const parsed = parseJscpdReport({ duplicates: [clone], statistics }); assert.equal(parsed.duplicates.length, 1); assert.equal(parsed.duplicates[0]?.firstFile.name, "/repo/src/first.ts"); assert.equal(parsed.statistics.total.lines, 22); + assert.equal(parsed.statistics.total.sources, 2); const malformed: unknown[] = [ null, "report", @@ -342,6 +416,7 @@ test("jscpd 5 report parsing accepts a real report shape and fails closed for ma { duplicates: [clone], statistics: { total: { lines: 22, duplicatedLines: -1 } } }, { duplicates: [clone], statistics: { total: { lines: 22.5, duplicatedLines: 11 } } }, { duplicates: [clone], statistics: { total: { lines: 22, duplicatedLines: 1.5 } } }, + { duplicates: [clone], statistics: { total: { lines: 22, duplicatedLines: 11, sources: -1 } } }, ]; for (const report of malformed) assert.throws(() => parseJscpdReport(report), /jscpd report/); });