Skip to content

Harden parsing, coverage, and plugin lifecycle#10

Draft
krotname wants to merge 4 commits into
masterfrom
agent/harden-core-ci-lifecycle
Draft

Harden parsing, coverage, and plugin lifecycle#10
krotname wants to merge 4 commits into
masterfrom
agent/harden-core-ci-lifecycle

Conversation

@krotname

Copy link
Copy Markdown
Owner

What changed

  • Tightened CSV/TSV parsing: tab-priority detection, strict quoted-field termination, explicit empty records, stable pipe escaping, and whitespace normalization.
  • Tightened Markdown table detection so Setext headings and mismatched separator columns are not rewritten.
  • Preserved Unicode grapheme clusters while wrapping and replaced per-character width balancing with an equivalent batched algorithm.
  • Replaced raw GWLP_WNDPROC hooks with SetWindowSubclass and moved cleanup out of DllMain.
  • Bounded compatibility-smoke deletion to real child directories without reparse points, with regression tests.
  • Fixed native coverage collection with /PROFILE and static instrumentation; empty 0/0 reports now fail instead of reporting 100%.
  • Hardened workflows with fixed runners, timeouts, concurrency, artifact checks, validation-before-commit, and a non-release tag namespace for interface syncs.

Root causes and impact

Several parsers accepted malformed or ambiguous input, the old width allocator was proportional to cell width, and the raw window-proc chain could retain a callback into an unloaded DLL. The coverage command filtered by a source path even though the tool's file filter targets instrumented modules, so an empty report passed the threshold. The sync workflow also committed before validation and generated v* tags that could trigger an unrelated failing production release.

Validation

  • Win32, x64, and ARM64 Release DLL builds.
  • x64 package and Plugin Admin ZIP validation for version 11.0.2.
  • Scenario tests: 63 checks; shared Java/C++ golden tests: 74 checks.
  • Native line coverage: 1497/1632 lines (91.73%; minimum 70%).
  • ASan CoreSmoke run.
  • Performance gates, including a 1,000,000-character header at 60 ms (limit 1500 ms).
  • 100,000 randomized old/new width-allocation parity cases.
  • Plugin shortcut tests and compatibility-script path-safety tests.
  • Workflow policy, YAML/XML/JSON, embedded Bash, PowerShell syntax, secret scan, and git diff --check.

Static native coverage follows the Microsoft C++ coverage guidance.

@codecov

codecov Bot commented Jul 11, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 97.52066% with 3 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
src/MarkdownTableCore.cpp 97.52% 3 Missing ⚠️

📢 Thoughts on this report? Let us know!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant