Repository navigation
Fix TSX omissions in pm-ops quality gates #132
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
9e785fc
cba3d24
f3e66c3
b15bf93
78155d1
8ae094a
000f648
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Large diffs are not rendered by default.
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -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 | ||
|
unbraind marked this conversation as resolved.
|
||
| body: "" | ||
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Large diffs are not rendered by default.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Uh oh!
There was an error while loading. Please reload this page.