Skip to content

chore(ci): enforce honest coverage thresholds; refresh stale contribu… - #28

Merged
csupenn merged 1 commit into
devfrom
docs/refresh-and-coverage
Sep 26, 2026
Merged

csupenn merged 1 commit into
devfrom
docs/refresh-and-coverage

Conversation

@csupenn

@csupenn csupenn commented Sep 26, 2026

Copy link
Copy Markdown
Owner

Description

H5 + H6: make coverage thresholds honest and blocking; refresh stale contributor docs.

Type of Change

  • Documentation update
  • Security improvement (CI now enforces coverage on security-critical modules)

Testing

pnpm test:ci passes (538 tests). Dropping ssrf tests fails the ssrf threshold (enforcement verified).
Lint 0 errors, type-check clean, build OK.

Security Impact

Regressions in SSRF / rate-limit / cycle-detection / URW / execute-route test coverage now fail CI.

Details

Coverage (H6): the old 75/70/75/75 global threshold was never met (actual ~17%) and CI hid it with continue-on-error.

  • jest: per-file thresholds hold the security core (ssrf, rate-limit, workflow-graph, urw) and the execute-workflow route near their current 90-100%; global is a ratchet floor at today's measured level
  • ci: single blocking pnpm test:ci step replaces test + non-blocking coverage
  • verified: dropping ssrf tests fails the ssrf threshold

Docs (H5): CONTRIBUTING project structure / node-type steps / Node 22 now match the code (builder in app/builder, validation + codegen in @charliesu/workflow-core, security controls in lib/security); remove link to a private docs path; TESTING.md, testing-guide.md and ci.md show real coverage numbers and the enforced policy.

eslint: ignore generated coverage/ and Playwright report dirs.

…tor docs

Coverage (H6): the old 75/70/75/75 global threshold was never met (actual
~17%) and CI hid it with continue-on-error.
- jest: per-file thresholds hold the security core (ssrf, rate-limit,
  workflow-graph, urw) and the execute-workflow route near their current
  90-100%; global is a ratchet floor at today's measured level
- ci: single blocking `pnpm test:ci` step replaces test + non-blocking coverage
- verified: dropping ssrf tests fails the ssrf threshold

Docs (H5): CONTRIBUTING project structure / node-type steps / Node 22 now
match the code (builder in app/builder, validation + codegen in
@charliesu/workflow-core, security controls in lib/security); remove link
to a private docs path; TESTING.md, testing-guide.md and ci.md show real
coverage numbers and the enforced policy.

eslint: ignore generated coverage/ and Playwright report dirs.
@vercel

vercel Bot commented Sep 26, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
top-flow Ready Ready Preview Sep 26, 2026 11:29pm UTC

@csupenn
csupenn merged commit 805af6f into dev Sep 26, 2026
5 checks passed
@csupenn
csupenn deleted the docs/refresh-and-coverage branch September 26, 2026 23:32
@csupenn csupenn mentioned this pull request Sep 26, 2026
Merged
csupenn added a commit that referenced this pull request Sep 26, 2026
 ## Description
  Promote dev → main.

- fix(security): SSRF guard now blocks IPv4-mapped IPv6 targets in the
URL
    parser's hex form, e.g. [::ffff:a9fe:a9fe] = cloud metadata (#29)
  - test(security): validation-engine covered 0% → 100% lines; builder
Validation panel now uses the same SSRF/cycle rules the server enforces
(#30)
- chore(ci): coverage thresholds made honest and blocking; contributor
docs
    refreshed (#28)

  ## Testing
Combined dev verified locally: type-check clean, lint 0 errors, test:ci
603 tests +
  coverage thresholds, build OK.

  ## Security Impact
Closes an SSRF bypass on the HTTP Request node. Residual: DNS rebinding
(documented).

This branch was successfully deployed

1 active deployment
Preview — 9d8058cf Deployed Sep 26, 2026 by vercel[bot]
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