Skip to content

feat: complete verified action plan hardening - #48

Merged
cemililik merged 36 commits into
mainfrom
codex/verified-action-waves
Aug 11, 2026
Merged

cemililik merged 36 commits into
mainfrom
codex/verified-action-waves

Conversation

@cemililik

Copy link
Copy Markdown
Collaborator

Summary

Implements the complete verified action plan in 11 sequential waves. Every wave was delivered as an implementation commit followed by two independent, aggressive review-and-fix commits.

Key outcomes:

  • adds syntax- and context-aware structured configuration secret detection, including quoted JSON/appsettings fields, with exact match locations and fail-closed parsing bounds
  • hardens Grafana, New Relic, Twilio, Shopify, GitHub, GitLab, Datadog, Snyk, Supabase, Mailgun, and other verification contracts against wrong issuers, regions, statuses, retries, and rate-limit behavior
  • enforces per-request admission, cancellation, timeout, panic containment, redaction, and source cleanup guarantees
  • publishes a machine-checked verification capability manifest and synchronizes EN/TR documentation, site metadata, release counts, and CLI contracts
  • closes correlated-detector and browser-playground drift, including byte-accurate proximity and strict AST extraction
  • strengthens release and documentation publication with fail-closed tag checks, transactional site generation, link/release-pin validation, and deterministic output
  • adds Slack text-attachment scanning with method-scoped limits, byte-bounded backpressure, trusted download origins, and token-safe errors
  • adds GitHub/GitLab verified metadata enrichment, a minimal reviewable VSIX pipeline, Marketplace environment-secret provenance checks, and provider-contract freshness audits
  • makes terminal output Unicode-aware, bidi-safe, and byte-faithful for explicitly requested raw values

The canonical implementation plan is review/04-VERIFIED-FINAL-ACTION-PLAN.md.

Verification

  • go test ./...
  • go test -race ./...
  • go vet ./...
  • golangci-lint run ./... — 0 issues
  • govulncheck ./... — 0 called vulnerabilities
  • native and Windows cross-builds
  • actionlint
  • strict and deterministic site generation, including race/repetition tests
  • detector package coverage gate (>=95%)
  • VS Code lint and 16 tests
  • VSIX package-content audit: exactly 8 intended product files
  • npm audit --audit-level=high — 0 vulnerabilities
  • live allowlisted provider documentation/fragment audit

Review structure

Each of the 11 waves contains:

  1. implementation
  2. aggressive review round 1 and fixes
  3. aggressive review round 2 and fixes

This produces 33 scoped implementation/review commits plus the verified action-plan document commit.

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Sorry, we are unable to review this pull request

The GitHub API does not allow us to fetch diffs exceeding 20000 lines

@coderabbitai

coderabbitai Bot commented Aug 11, 2026 •

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 254 files, which is 104 over the limit of 150.

To get a review, reduce the PR to 150 files or fewer by splitting it into smaller PRs or changing its base branch.

Upgrade to Pro+ to raise the limit.

This review couldn't start because sufficient usage credits or metered capacity aren't available. Add credits or update usage-based reviews in the billing tab, then retry.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: a1cff743-ef8c-43aa-ad53-28af7affb8c8

📥 Commits

Reviewing files that changed from the base of the PR and between 2284316 and 5755635.

⛔ Files ignored due to path filters (7)
  • docs/assets/banner.png is excluded by !**/*.png
  • docs/assets/banner.svg is excluded by !**/*.svg
  • go.sum is excluded by !**/*.sum
  • site/assets/og.svg is excluded by !**/*.svg
  • vscode/images/icon.png is excluded by !**/*.png
  • vscode/images/icon.svg is excluded by !**/*.svg
  • vscode/package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (254)
  • .claude/projects/-Users-dev-Documents-Projects-Leakwatch/memory/feedback_commit_docs.md
  • .github/secret_scanning.yml
  • .github/workflows/ci.yml
  • .github/workflows/provider-contract-audit.yml
  • .github/workflows/release.yml
  • .github/workflows/site-deploy.yml
  • .github/workflows/vscode-ci.yml
  • .github/workflows/vscode-release.yml
  • .gitignore
  • .leakwatchignore
  • CHANGELOG.md
  • CLAUDE.md
  • README.md
  • cmd/imports.go
  • cmd/init.go
  • cmd/root.go
  • cmd/scan_common.go
  • cmd/scan_common_test.go
  • cmd/scan_config_test.go
  • cmd/scan_fs_multiarg_test.go
  • cmd/scan_gcs.go
  • cmd/scan_rune_test.go
  • cmd/scan_slack.go
  • cmd/stats_test.go
  • cmd/testdata/output-formats.golden
  • cmd/testdata/root-help.golden
  • cmd/testdata/version.golden
  • cmd/version.go
  • docs/05-ROADMAP.md
  • docs/architecture/01-COMPETITIVE-ANALYSIS.md
  • docs/architecture/03-ARCHITECTURE.md
  • docs/architecture/04-MIDTERM-FEATURES-ANALYSIS.md
  • docs/architecture/05-VERIFIER-ANALYSIS.md
  • docs/assets/banner.html
  • docs/decisions/ADR-0005-pattern-matching.md
  • docs/decisions/ADR-0010-entropy-gating-policy.md
  • docs/decisions/ADR-0011-product-trust-boundaries.md
  • docs/decisions/README.md
  • docs/guides/README.md
  • docs/guides/ci-cd-integration.md
  • docs/guides/cloud-scanning.md
  • docs/guides/configuration.md
  • docs/guides/container-scanning.md
  • docs/guides/custom-rules.md
  • docs/guides/docker-usage.md
  • docs/guides/getting-started.md
  • docs/guides/git-scanning.md
  • docs/guides/secret-verification.md
  • docs/guides/slack-scanning.md
  • docs/guides/vscode-extension.md
  • docs/standards/00-DOCUMENTATION-STANDARDS.md
  • docs/standards/05-PROVIDER-CONTRACT-AUDITS.md
  • docs/user-manuals/_meta.yaml
  • docs/user-manuals/en/ci-cd/docker-usage.md
  • docs/user-manuals/en/ci-cd/github-action.md
  • docs/user-manuals/en/ci-cd/other-ci.md
  • docs/user-manuals/en/ci-cd/pre-commit.md
  • docs/user-manuals/en/configuration/config-file.md
  • docs/user-manuals/en/detectors/custom-rules.md
  • docs/user-manuals/en/detectors/detector-catalog.md
  • docs/user-manuals/en/getting-started/how-it-works.md
  • docs/user-manuals/en/getting-started/installation.md
  • docs/user-manuals/en/getting-started/introduction.md
  • docs/user-manuals/en/getting-started/quick-start.md
  • docs/user-manuals/en/output/output-formats.md
  • docs/user-manuals/en/reference/cli-reference.md
  • docs/user-manuals/en/reference/exit-codes.md
  • docs/user-manuals/en/scanning/slack.md
  • docs/user-manuals/en/verification/how-verification-works.md
  • docs/user-manuals/en/verification/verification-coverage.md
  • docs/user-manuals/tr/ci-cd/docker-usage.md
  • docs/user-manuals/tr/ci-cd/github-action.md
  • docs/user-manuals/tr/ci-cd/other-ci.md
  • docs/user-manuals/tr/ci-cd/pre-commit.md
  • docs/user-manuals/tr/configuration/config-file.md
  • docs/user-manuals/tr/detectors/custom-rules.md
  • docs/user-manuals/tr/detectors/detector-catalog.md
  • docs/user-manuals/tr/getting-started/how-it-works.md
  • docs/user-manuals/tr/getting-started/installation.md
  • docs/user-manuals/tr/getting-started/introduction.md
  • docs/user-manuals/tr/getting-started/quick-start.md
  • docs/user-manuals/tr/output/output-formats.md
  • docs/user-manuals/tr/reference/cli-reference.md
  • docs/user-manuals/tr/reference/exit-codes.md
  • docs/user-manuals/tr/scanning/slack.md
  • docs/user-manuals/tr/verification/how-verification-works.md
  • docs/user-manuals/tr/verification/verification-coverage.md
  • go.mod
  • internal/config/config.go
  • internal/detector/auth0/auth0_token.go
  • internal/detector/auth0/auth0_token_test.go
  • internal/detector/custom/custom_rule.go
  • internal/detector/custom/custom_rule_test.go
  • internal/detector/detector.go
  • internal/detector/generic/generic_api_key.go
  • internal/detector/generic/generic_api_key_test.go
  • internal/detector/generic/structured_config.go
  • internal/detector/generic/structured_config_formats.go
  • internal/detector/generic/structured_config_test.go
  • internal/detector/generic/testdata/README.md
  • internal/detector/generic/testdata/appsettings.synthetic.json
  • internal/detector/github/github_oauth.go
  • internal/detector/github/github_oauth_test.go
  • internal/detector/gitlab/gitlab_token.go
  • internal/detector/gitlab/gitlab_token_test.go
  • internal/detector/registry.go
  • internal/detector/registry_count_test.go
  • internal/detector/registry_test.go
  • internal/detector/shopify/shopify_token.go
  • internal/detector/shopify/shopify_token_test.go
  • internal/detector/supabase/supabase_key.go
  • internal/detector/supabase/supabase_key_test.go
  • internal/detector/testutil/fixtures.go
  • internal/detector/twilio/twilio_key.go
  • internal/detector/twilio/twilio_key_test.go
  • internal/engine/engine.go
  • internal/engine/engine_test.go
  • internal/matcher/matcher.go
  • internal/matcher/matcher_test.go
  • internal/meta/capabilities.go
  • internal/meta/capabilities_docs_test.go
  • internal/meta/capabilities_test.go
  • internal/meta/counts.go
  • internal/meta/counts_test.go
  • internal/meta/documentation_contract_test.go
  • internal/meta/provider_contract_links_test.go
  • internal/meta/release.go
  • internal/meta/releasecheck/main.go
  • internal/meta/releasecheck/main_test.go
  • internal/meta/statsgen/main.go
  • internal/meta/statsgen/main_test.go
  • internal/meta/vscode_release_contract_test.go
  • internal/output/formatter.go
  • internal/output/formatter_test.go
  • internal/output/json/json_formatter.go
  • internal/output/json/json_formatter_test.go
  • internal/output/table/table_formatter.go
  • internal/output/table/table_formatter_test.go
  • internal/remediation/guidance.go
  • internal/remediation/registry_coverage_test.go
  • internal/scanner/scanner.go
  • internal/scanner/scanner_test.go
  • internal/source/container/container.go
  • internal/source/container/container_test.go
  • internal/source/filesystem/filesystem.go
  • internal/source/filesystem/filesystem_test.go
  • internal/source/gcs/gcs.go
  • internal/source/gcs/gcs_test.go
  • internal/source/git/git.go
  • internal/source/git/git_test.go
  • internal/source/s3/s3.go
  • internal/source/s3/s3_test.go
  • internal/source/slack/client.go
  • internal/source/slack/options.go
  • internal/source/slack/slack.go
  • internal/source/slack/slack_test.go
  • internal/source/source.go
  • internal/verifier/airtable/airtable_shared_test.go
  • internal/verifier/auth0/auth0_shared_test.go
  • internal/verifier/auth0/auth0_verifier.go
  • internal/verifier/auth0/auth0_verifier_test.go
  • internal/verifier/aws/aws_verifier.go
  • internal/verifier/aws/aws_verifier_test.go
  • internal/verifier/bitbucket/bitbucket_shared_test.go
  • internal/verifier/bitbucket/bitbucket_verifier_test.go
  • internal/verifier/cloudflare/cloudflare_shared_test.go
  • internal/verifier/configuration.go
  • internal/verifier/configuration_test.go
  • internal/verifier/databricks/databricks_shared_test.go
  • internal/verifier/databricks/databricks_verifier_test.go
  • internal/verifier/datadog/datadog_verifier.go
  • internal/verifier/datadog/datadog_verifier_test.go
  • internal/verifier/deepseek/deepseek_shared_test.go
  • internal/verifier/digitalocean/digitalocean_shared_test.go
  • internal/verifier/discord/discord_shared_test.go
  • internal/verifier/doppler/doppler_shared_test.go
  • internal/verifier/engine.go
  • internal/verifier/engine_test.go
  • internal/verifier/figma/figma_shared_test.go
  • internal/verifier/github/github_oauth_verifier.go
  • internal/verifier/github/github_oauth_verifier_test.go
  • internal/verifier/github/github_verifier.go
  • internal/verifier/github/github_verifier_test.go
  • internal/verifier/gitlab/gitlab_verifier.go
  • internal/verifier/gitlab/gitlab_verifier_test.go
  • internal/verifier/grafana/grafana_shared_test.go
  • internal/verifier/grafana/grafana_verifier.go
  • internal/verifier/grafana/grafana_verifier_test.go
  • internal/verifier/heroku/heroku_shared_test.go
  • internal/verifier/http_contract_coverage_test.go
  • internal/verifier/huggingface/huggingface_shared_test.go
  • internal/verifier/infura/infura_shared_test.go
  • internal/verifier/internal/httpx/httpx.go
  • internal/verifier/internal/httpx/verify.go
  • internal/verifier/internal/httpx/verify_test.go
  • internal/verifier/internal/vtest/vtest.go
  • internal/verifier/launchdarkly/launchdarkly_shared_test.go
  • internal/verifier/mailgun/mailgun_verifier.go
  • internal/verifier/mailgun/mailgun_verifier_test.go
  • internal/verifier/newrelic/newrelic_shared_test.go
  • internal/verifier/newrelic/newrelic_verifier.go
  • internal/verifier/newrelic/newrelic_verifier_test.go
  • internal/verifier/notion/notion_shared_test.go
  • internal/verifier/okta/okta_shared_test.go
  • internal/verifier/okta/okta_verifier_test.go
  • internal/verifier/postmark/postmark_shared_test.go
  • internal/verifier/pypi/pypi_shared_test.go
  • internal/verifier/registry.go
  • internal/verifier/registry_test.go
  • internal/verifier/rubygems/rubygems_shared_test.go
  • internal/verifier/shopify/shopify_shared_test.go
  • internal/verifier/shopify/shopify_verifier.go
  • internal/verifier/shopify/shopify_verifier_test.go
  • internal/verifier/snowflake/snowflake_verifier_test.go
  • internal/verifier/snyk/snyk_verifier.go
  • internal/verifier/snyk/snyk_verifier_test.go
  • internal/verifier/sonarcloud/sonarcloud_shared_test.go
  • internal/verifier/supabase/supabase_shared_test.go
  • internal/verifier/supabase/supabase_verifier.go
  • internal/verifier/supabase/supabase_verifier_test.go
  • internal/verifier/teams/teams_shared_test.go
  • internal/verifier/teams/teams_verifier.go
  • internal/verifier/teams/teams_verifier_test.go
  • internal/verifier/terraform/terraform_shared_test.go
  • internal/verifier/trusted_origin.go
  • internal/verifier/trusted_origin_test.go
  • internal/verifier/twilio/twilio_shared_test.go
  • internal/verifier/twilio/twilio_verifier.go
  • internal/verifier/twilio/twilio_verifier_test.go
  • internal/verifier/vercel/vercel_shared_test.go
  • internal/verifier/verifier.go
  • pkg/finding/finding.go
  • pkg/finding/finding_test.go
  • site/README.md
  • site/contact.html
  • site/css/style.css
  • site/docs.html
  • site/index.html
  • site/js/detectors.js
  • site/js/manuals/en.js
  • site/js/manuals/tr.js
  • site/js/scanner.js
  • site/js/translations.js
  • site/playground.html
  • tools/site-build/detectors.go
  • tools/site-build/detectors_test.go
  • tools/site-build/documentation_links_test.go
  • tools/site-build/main.go
  • tools/site-build/main_test.go
  • tools/site-build/release.go
  • vscode/.vscodeignore
  • vscode/CHANGELOG.md
  • vscode/README.md
  • vscode/package.json

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.


Comment @coderabbitai help to get the list of available commands.

@cemililik
cemililik force-pushed the codex/verified-action-waves branch from 86da27b to 22d7f2c Compare August 11, 2026 08:43
@cemililik
cemililik merged commit eaaabc4 into main Aug 11, 2026
9 checks passed
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