Skip to content

Add open-source readiness infrastructure and documentation - #143

Merged
bomly-guy merged 14 commits into
mainfrom
claude/funny-buck-48b64f
Jun 11, 2026
Merged

Add open-source readiness infrastructure and documentation#143
bomly-guy merged 14 commits into
mainfrom
claude/funny-buck-48b64f

Conversation

@bomly-guy

@bomly-guy bomly-guy commented Jun 11, 2026

Copy link
Copy Markdown
Collaborator

This pull request introduces a comprehensive set of repository hygiene and community standards files, along with several documentation improvements and workflow enhancements. The changes establish clear contribution guidelines, issue and pull request templates, code ownership, security policy, and automated review/security workflows. These updates are foundational for open source best practices and help streamline contributions, improve security posture, and clarify project processes.

Repository standards and community guidelines:

  • Added issue templates for bug reports and feature requests, a pull request template, and a contact/config file to standardize contributions and guide users in reporting bugs, requesting features, and submitting PRs (.github/ISSUE_TEMPLATE/bug_report.yml, .github/ISSUE_TEMPLATE/feature_request.yml, .github/PULL_REQUEST_TEMPLATE.md, .github/ISSUE_TEMPLATE/config.yml). [1] [2] [3] [4]
  • Created a CODEOWNERS file to define repository ownership and streamline code review assignment (.github/CODEOWNERS).
  • Added a SECURITY.md policy detailing how to report vulnerabilities, expected response timelines, and scope of security issues (SECURITY.md).

Automation and CI/CD enhancements:

  • Introduced GitHub Actions workflows for CodeQL analysis, dependency review, and OpenSSF Scorecard analysis to automate security scanning and dependency checks (.github/workflows/codeql.yml, .github/workflows/dependency-review.yml, .github/workflows/scorecard.yml). [1] [2] [3]
  • Added a .coderabbit.yaml configuration for automated code reviews and chat responses (.coderabbit.yaml).

Documentation and onboarding improvements:

  • Major README.md update: added a wordmark, badges, and a new "Extensible by design" section with a plugin extension diagram and table. Also included a reference to the Bomly review action for PR gating and clarified CI/CD practices (README.md). [1] [2] [3]
  • Updated architecture and pipeline documentation in AGENTS.md and CLAUDE.md to clarify component boundaries and remove outdated references to hooks (AGENTS.md, CLAUDE.md). [1] [2] [3] [4] [5]

Minor improvements:

  • Clarified artifact attestation plans in the release workflow (.github/workflows/release.yml).

These changes lay the groundwork for a more maintainable, secure, and contributor-friendly project.

Summary by CodeRabbit

  • New Features

    • Added comprehensive use cases documentation with Bomly command recipes.
    • Added auditor reference guides for built-in auditors (vulnerability, license, package).
    • Added extensibility documentation explaining the plugin system and typed extension points.
  • Documentation

    • Added Code of Conduct and security vulnerability reporting guidelines.
    • Enhanced CI integration guidance with new Bomly review action.
    • Updated architecture documentation reflecting design changes.
  • Chores

    • Added GitHub workflows for security scanning (CodeQL, OSSF Scorecard, dependency review).
    • Updated CI workflow structure to parallel jobs.
    • Added GitHub issue and pull request templates.
    • Updated license and repository configuration.

bomly-guy and others added 7 commits June 10, 2026 19:22
The pre-resolve and post-resolve hook subsystem had no production
implementations, was never registered in the builder, exposed no plugin
kind, and was not surfaced in the CLI, MCP, config, or docs. Only test
doubles exercised it, so it executed as a no-op on every run.

Remove the internal/engine/hooks package, the registry registration and
accessor methods, the pipeline runPre/runPost stages and context
helpers, the diff and explain call sites, and the hook tests. Update the
pipeline-order descriptions and package trees in CLAUDE.md, AGENTS.md,
and docs/ARCHITECTURE.md accordingly.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Scrub "currently private" caveats from docs/CI.md and the release
workflow now that the repository is public. Add community health files
(issue templates, pull request template, CODEOWNERS), a Bomly CLI SVG
wordmark, and a README badge row (CI, release, license, Go Reference,
Go Report Card).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Now that the repository is public, enable the security and quality
automation that was previously unavailable:

- CodeQL static analysis for Go (PR, push to main, weekly).
- OpenSSF Scorecard supply-chain checks with published results, plus a
  Scorecard badge in the README.
- GitHub dependency-review on PRs, failing on high-severity additions.
- CodeRabbit configuration that skips generated docs, schemas, and
  golden fixtures.

Document the new workflows in docs/CI.md alongside the existing Bomly
Review workflow.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Generate per-auditor reference pages (vulnerability, license, package)
by extending the component-docs generator with an auditors writer and
hand-written prose, mirroring the existing matcher pages. Link them from
the auditors overview and the docs index.

Add docs/USE_CASES.md with task-oriented recipes (PR gate, SBOM,
reachability triage, license policy, typosquats, offline scan, release
diff). Foreground Bomly's extensibility in the README and
docs/ARCHITECTURE.md with a plug-in pipeline diagram and the four typed
extension points, and reference the Bomly review action from the README
and docs/CI_INTEGRATION.md.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Replace the off-brand cyan cube wordmark with a lockup built from the
Bomly favicon: the amber (#E89B5C) terminal-prompt tile plus "Bomly CLI"
set in JetBrains Mono, the landing page's mono typeface. The wordmark ink
adapts to light/dark via prefers-color-scheme so it reads on both GitHub
themes. Adjust the README logo width for the new aspect ratio.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Jun 11, 2026

Copy link
Copy Markdown
Contributor

Bomly Diff Summary

Compared ac5e5b454799c4d6a5e23ede9d4bdcda68fd5d04 to 1004110085e4291d6d10849efbbbb95b3dbbd21f.

Overview

Status Manifests Dependencies Findings Duration
⚠️ Warnings introduced +3 / ~0 / -0 +13 / ~0 / -0 9 introduced / 0 persisted / 0 resolved 64661ms

Dependency Changes

Summary: 11 added, 0 changed, 0 removed.

Added Dependencies

Change Package Version Scope Licenses PURL
added .github/workflows/codeql.yml@local local runtime - pkg:githubactions/.github%2Fworkflows%2Fcodeql.yml@local
added .github/workflows/dependency-review.yml@local local runtime - pkg:githubactions/.github%2Fworkflows%2Fdependency-review.yml@local
added .github/workflows/scorecard.yml@local local runtime - pkg:githubactions/.github%2Fworkflows%2Fscorecard.yml@local
added actions:checkout@v5 v5 runtime - pkg:githubactions/actions/checkout@v5
added actions:dependency-review-action@v4 v4 runtime - pkg:githubactions/actions/dependency-review-action@v4
added actions:setup-go@v6 v6 runtime - pkg:githubactions/actions/setup-go@v6
added actions:upload-artifact@v4 v4 runtime - pkg:githubactions/actions/upload-artifact@v4
added github:codeql-action/analyze@v3 v3 runtime - pkg:githubactions/github/codeql-action%2Fanalyze@v3
added github:codeql-action/init@v3 v3 runtime - pkg:githubactions/github/codeql-action%2Finit@v3
added github:codeql-action/upload-sarif@v3 v3 runtime - pkg:githubactions/github/codeql-action%2Fupload-sarif@v3
added ossf:scorecard-action@v2 v2 runtime - pkg:githubactions/ossf/scorecard-action@v2

Vulnerabilities

✅ No vulnerability changes.

License Changes

✅ No license changes.

Project Posture

✅ No project posture changes (or --matchers +scorecard was not selected).

Policy Findings

Summary: 9 introduced, 0 persisted, 0 resolved.

Introduced Findings

Status Category Severity Disposition ID Package Fixed In Exploitability Title
⚠️ introduced license UNKNOWN warn license:unknown-license:pkg:githubactions/.github%2Fworkflows%2Fcodeql.yml@local .github/workflows/codeql.yml@local - - Package license is unknown
⚠️ introduced license UNKNOWN warn license:unknown-license:pkg:githubactions/.github%2Fworkflows%2Fdependency-review.yml@local .github/workflows/dependency-review.yml@local - - Package license is unknown
⚠️ introduced license UNKNOWN warn license:unknown-license:pkg:githubactions/.github%2Fworkflows%2Fscorecard.yml@local .github/workflows/scorecard.yml@local - - Package license is unknown
⚠️ introduced license UNKNOWN warn license:unknown-license:pkg:githubactions/actions/dependency-review-action@v4 actions:dependency-review-action@v4 - - Package license is unknown
⚠️ introduced license UNKNOWN warn license:unknown-license:pkg:githubactions/actions/upload-artifact@v4 actions:upload-artifact@v4 - - Package license is unknown
⚠️ introduced license UNKNOWN warn license:unknown-license:pkg:githubactions/github/codeql-action%2Fanalyze@v3 github:codeql-action/analyze@v3 - - Package license is unknown
⚠️ introduced license UNKNOWN warn license:unknown-license:pkg:githubactions/github/codeql-action%2Finit@v3 github:codeql-action/init@v3 - - Package license is unknown
⚠️ introduced license UNKNOWN warn license:unknown-license:pkg:githubactions/github/codeql-action%2Fupload-sarif@v3 github:codeql-action/upload-sarif@v3 - - Package license is unknown
⚠️ introduced license UNKNOWN warn license:unknown-license:pkg:githubactions/ossf/scorecard-action@v2 ossf:scorecard-action@v2 - - Package license is unknown

@github-advanced-security

Copy link
Copy Markdown

You are seeing this message because GitHub Code Scanning has recently been set up for this repository, or this pull request contains the workflow file for the Code Scanning tool.

What Enabling Code Scanning Means:

  • The 'Security' tab will display more code scanning analysis results (e.g., for the default branch).
  • Depending on your configuration and choice of analysis tool, future pull requests will be annotated with code scanning analysis results.
  • You will be able to see the analysis results for the pull request's branch on this overview once the scans have completed and the checks have passed.

For more information about GitHub Code Scanning, check out the documentation.

@coderabbitai

coderabbitai Bot commented Jun 11, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

This PR consolidates engine infrastructure cleanup, auditor documentation generation, and repository governance into a single delivery. The resolve-stage hook lifecycle is removed from the pipeline and registry; auditor reference pages are generated from prose sources and integrated into docs; and governance policies, CI workflows, and community documentation are established across the repository.

Changes

Engine hook lifecycle removal

Layer / File(s) Summary
Hook type aliases and registry API removal
internal/engine/types.go, internal/engine/registry.go
Hook-related type aliases and exported registry hook-management methods are removed from the engine public API.
Pipeline execution path updates
internal/engine/pipeline.go, internal/engine/diff/diff.go, internal/engine/pipeline_explain.go
Pipeline Run, RunExplain, and diff flows remove hook stage invocations, consolidate graph consolidation into the detect stage, and delete hook helper functions.
Hook references removed from docs and tests
internal/engine/pipeline_test.go, AGENTS.md, CLAUDE.md, docs/ARCHITECTURE.md
Hook-related test cases are deleted; architecture documentation and package-boundary guidance remove hook stage and hook-execution terminology.

Auditor documentation generation and publication

Layer / File(s) Summary
Auditor docs generation code and test updates
internal/support/component_docs.go, internal/support/generate_test.go
Auditor component documentation rendering and generation wiring add auditor overview content, per-auditor page rendering, and prose-source integration; test expectations extended for generated auditor files.
Built-in auditor prose documentation
internal/support/prose/auditors/vulnerability.md, internal/support/prose/auditors/package.md, internal/support/prose/auditors/license.md
Prose markdown sources define vulnerability, license, and package auditor purpose, behavior, CLI options, examples, and limitations.
Auditor reference pages and guide navigation
docs/auditors/README.md, docs/auditors/vulnerability.md, docs/auditors/package.md, docs/auditors/license.md, docs/AUDITORS.md, docs/README.md
Generated auditor overview sections, per-auditor reference pages, and auditors guide index and navigation links published to user documentation.

Repository governance, CI workflows, and documentation

Layer / File(s) Summary
Repository config files and GitHub templates
.coderabbit.yaml, .github/CODEOWNERS, .gitignore, .github/ISSUE_TEMPLATE/bug_report.yml, .github/ISSUE_TEMPLATE/config.yml, .github/ISSUE_TEMPLATE/feature_request.yml, .github/PULL_REQUEST_TEMPLATE.md
Code review config, CODEOWNERS defaults, local ignore rules, issue templates and contact routing, and PR contributor checklist configured.
Security and community governance documents
SECURITY.md, CODE_OF_CONDUCT.md, CONTRIBUTING.md
Security vulnerability reporting policy, contributor code of conduct, and updated contributor guidelines referencing conduct/security policies added.
Security analysis and CI workflows
.github/workflows/codeql.yml, .github/workflows/dependency-review.yml, .github/workflows/scorecard.yml, .github/workflows/ci.yml, .github/workflows/release.yml
CodeQL, dependency review, and Scorecard security workflows introduced; CI workflow restructured into parallel lint/test/build/format/drift jobs; release attestation messaging updated.
License text and product README updates
LICENSE, README.md
Apache 2.0 license text reworded for definitions and legal clauses; README adds extensibility/plugin architecture section with diagram, badges, and plugin guidance.
Product guides and CI integration documentation
docs/ARCHITECTURE.md, docs/MATCHERS.md, docs/CI_INTEGRATION.md, docs/USE_CASES.md, docs/development/CI.md
Architecture and matcher docs update for extensibility/plugins; CI integration guide adds Bomly review action section; use-case recipes catalog added; CI development docs reflect workflow restructure and cost controls.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 20.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the main objective: adding infrastructure and documentation for open-source readiness, which aligns with the substantial changes across community files, CI/security workflows, and documentation.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch claude/funny-buck-48b64f

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

@bomly-dev bomly-dev deleted a comment from uaxbs Jun 11, 2026
@bomly-guy

Copy link
Copy Markdown
Collaborator Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Jun 11, 2026

Copy link
Copy Markdown
Contributor
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Add CODE_OF_CONDUCT.md (Contributor Covenant 3.0, verbatim) with the
reporting channel set to contact@bomly.dev, and link the Code of Conduct
and Security Policy from CONTRIBUTING.md.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🧹 Nitpick comments (3)
.github/workflows/dependency-review.yml (1)

20-21: ⚡ Quick win

Consider disabling credential persistence for defense-in-depth.

The checkout action does not set persist-credentials: false. Explicitly disabling credential persistence prevents the GITHUB_TOKEN from being available to subsequent steps, reducing the attack surface.

🔒 Proposed fix
       - name: Check out repository
         uses: actions/checkout@v5
+        with:
+          persist-credentials: false
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/dependency-review.yml around lines 20 - 21, The checkout
step currently uses actions/checkout@v5 without disabling credential
persistence; update the "Check out repository" step (uses: actions/checkout@v5)
to include persist-credentials: false so the GITHUB_TOKEN is not carried to
later steps — add the persist-credentials: false property under that step to
explicitly disable credential persistence.
.github/workflows/codeql.yml (1)

29-30: ⚡ Quick win

Consider disabling credential persistence for defense-in-depth.

The checkout action does not set persist-credentials: false. While not critical for this read-only analysis workflow, explicitly disabling credential persistence prevents the GITHUB_TOKEN from being available to subsequent steps, reducing the attack surface if a compromised action or script runs later in the job.

🔒 Proposed fix
       - name: Check out repository
         uses: actions/checkout@v5
+        with:
+          persist-credentials: false
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/codeql.yml around lines 29 - 30, Update the GitHub Actions
checkout step (the step that uses actions/checkout@v5) to explicitly disable
credential persistence by adding persist-credentials: false to that step; locate
the checkout step in .github/workflows/codeql.yml and add the
persist-credentials: false key under the step that has "name: Check out
repository" / "uses: actions/checkout@v5" so the GITHUB_TOKEN is not persisted
to later steps.
internal/support/generate_test.go (1)

105-106: ⚡ Quick win

Consider checking all built-in auditor docs for completeness.

The test currently verifies auditors/README.md and auditors/vulnerability.md, but the component docs generator defines three built-in auditors: vulnerability, license, and package. Since there are only three auditors total, consider adding auditors/license.md and auditors/package.md to the test expectations to ensure all generated documentation is present and the prose files are correctly embedded.

📋 Suggested test expectations
 		filepath.Join(tmp, "auditors", "README.md"),
 		filepath.Join(tmp, "auditors", "vulnerability.md"),
+		filepath.Join(tmp, "auditors", "license.md"),
+		filepath.Join(tmp, "auditors", "package.md"),
 	} {
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@internal/support/generate_test.go` around lines 105 - 106, The test in
generate_test.go currently expects auditors/README.md and
auditors/vulnerability.md only; update the expected files slice (the
filepath.Join(tmp, "auditors", "...") entries) to also include
"auditors/license.md" and "auditors/package.md" so all three built-in auditors
(vulnerability, license, package) are asserted; ensure any length or existence
checks (e.g., len(expected) assertions) are updated to match the new entries.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@AGENTS.md`:
- Line 56: Update the documented scan pipeline string so it includes the
optional analyze stage between match and audit: change the sequence
"runtimePreparation → subprojectDiscovery → detect (per-package-manager chains)
→ scopeFilter → consolidate → match (license enrichment on the consolidated
graph) → audit → format" to insert "analyze (optional, when enabled)" after
"match" to match the actual engine pipeline in internal/engine/pipeline.go and
the behavior described in CLAUDE.md; ensure the exact pipeline text containing
"match (license enrichment on the consolidated graph)" is edited to include the
"analyze" stage so contributors see the correct ordering.

---

Nitpick comments:
In @.github/workflows/codeql.yml:
- Around line 29-30: Update the GitHub Actions checkout step (the step that uses
actions/checkout@v5) to explicitly disable credential persistence by adding
persist-credentials: false to that step; locate the checkout step in
.github/workflows/codeql.yml and add the persist-credentials: false key under
the step that has "name: Check out repository" / "uses: actions/checkout@v5" so
the GITHUB_TOKEN is not persisted to later steps.

In @.github/workflows/dependency-review.yml:
- Around line 20-21: The checkout step currently uses actions/checkout@v5
without disabling credential persistence; update the "Check out repository" step
(uses: actions/checkout@v5) to include persist-credentials: false so the
GITHUB_TOKEN is not carried to later steps — add the persist-credentials: false
property under that step to explicitly disable credential persistence.

In `@internal/support/generate_test.go`:
- Around line 105-106: The test in generate_test.go currently expects
auditors/README.md and auditors/vulnerability.md only; update the expected files
slice (the filepath.Join(tmp, "auditors", "...") entries) to also include
"auditors/license.md" and "auditors/package.md" so all three built-in auditors
(vulnerability, license, package) are asserted; ensure any length or existence
checks (e.g., len(expected) assertions) are updated to match the new entries.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 21928cab-ff95-411e-be5e-c660f75f297e

📥 Commits

Reviewing files that changed from the base of the PR and between ac5e5b4 and 15e8a52.

⛔ Files ignored due to path filters (1)
  • assets/bomly-cli-wordmark.svg is excluded by !**/*.svg
📒 Files selected for processing (39)
  • .coderabbit.yaml
  • .github/CODEOWNERS
  • .github/ISSUE_TEMPLATE/bug_report.yml
  • .github/ISSUE_TEMPLATE/config.yml
  • .github/ISSUE_TEMPLATE/feature_request.yml
  • .github/PULL_REQUEST_TEMPLATE.md
  • .github/workflows/codeql.yml
  • .github/workflows/dependency-review.yml
  • .github/workflows/release.yml
  • .github/workflows/scorecard.yml
  • .gitignore
  • AGENTS.md
  • CLAUDE.md
  • CODE_OF_CONDUCT.md
  • CONTRIBUTING.md
  • README.md
  • SECURITY.md
  • docs/ARCHITECTURE.md
  • docs/AUDITORS.md
  • docs/CI.md
  • docs/CI_INTEGRATION.md
  • docs/README.md
  • docs/USE_CASES.md
  • docs/auditors/README.md
  • docs/auditors/license.md
  • docs/auditors/package.md
  • docs/auditors/vulnerability.md
  • internal/engine/diff/diff.go
  • internal/engine/hooks/hooks.go
  • internal/engine/pipeline.go
  • internal/engine/pipeline_explain.go
  • internal/engine/pipeline_test.go
  • internal/engine/registry.go
  • internal/engine/types.go
  • internal/support/component_docs.go
  • internal/support/generate_test.go
  • internal/support/prose/auditors/license.md
  • internal/support/prose/auditors/package.md
  • internal/support/prose/auditors/vulnerability.md
💤 Files with no reviewable changes (5)
  • internal/engine/hooks/hooks.go
  • internal/engine/diff/diff.go
  • internal/engine/pipeline_explain.go
  • internal/engine/types.go
  • internal/engine/pipeline_test.go

Comment thread AGENTS.md Outdated
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
@bomly-guy bomly-guy changed the title Opensource Readiness Add open-source readiness infrastructure and documentation' Jun 11, 2026
@bomly-guy bomly-guy changed the title Add open-source readiness infrastructure and documentation' Add open-source readiness infrastructure and documentation Jun 11, 2026
bomly-guy and others added 5 commits June 11, 2026 01:11
The LICENSE was a reworded paraphrase of Apache-2.0 (the definitions of
"Work", "Contribution", and "Contributor" and the patent-termination
clause were all altered). GitHub's licensee therefore classified it as
NOASSERTION ("Other") and pkg.go.dev withheld documentation under
"license restrictions".

Replace it with the verbatim Apache License 2.0 text, with only the
appendix copyright filled in (Copyright 2026 bomly.dev), so the license
is correctly detected as Apache-2.0.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Consolidation is the tail of detection, not a separate pipeline stage:
it merges the per-subproject graphs the detectors produced into the
single graph and package registry the rest of the pipeline consumes, and
it has no progress stage of its own.

Introduce runDetect (= runResolve + runConsolidate) and call it from the
scan and explain pipelines instead of invoking the two steps separately.
Update the pipeline-order descriptions in CLAUDE.md and AGENTS.md and the
Scan Pipeline diagram/stage list in docs/ARCHITECTURE.md to present
detection as resolve + consolidate.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Document --typosquat-mode values (warn default, fail) and the 0.90
  threshold default in the package auditor, correcting the earlier
  "comparison mode" description, and add a Diff & baselines section
  explaining how the base graph seeds the protected-name set.
- Add a "Configure with a YAML file" section to the auditors overview
  showing the policy.* block, file locations, and load-order precedence,
  and add the YAML key beside each flag in every per-auditor page.
- Link the public plugin example repos from the matcher and auditor
  overviews (eol, clearlydefined, meme).

Regenerated docs/AUDITORS.md, docs/MATCHERS.md, and docs/auditors/*.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Use the single slogan "Analyze Your Software DNA." in the README,
  matching the CLI startup logo.
- Correct the extensibility story: detector, matcher, and auditor are
  pluggable today; analyzers are built-in only and external analyzer
  plugins are planned. Update the README "Extensible by design" section
  and docs/ARCHITECTURE.md, reusing one extensibility diagram (now
  including configure-runtime and index-subprojects nodes, with
  consolidation folded into detect).
- Expand docs/USE_CASES.md container coverage: scan/audit an image,
  generate an SBOM from an image, a CI base-image gate, and diffing two
  image tags.
- Move docs/CI.md to docs/development/CI.md (contributor docs) and update
  all inbound links.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Split the single validate job into independent, parallel jobs (lint,
test, build, format, modules, generated-docs) so checks run concurrently
and report separately, and rename the workflow from "CI" to
"Build & Test". Update docs/development/CI.md to match.

Note: the required status-check names change from a single "CI" to the
per-job names, so branch protection on main must be updated accordingly.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🧹 Nitpick comments (5)
internal/support/prose/auditors/package.md (1)

45-46: 💤 Low value

Optional: Consider rephrasing "Outside of" to "Outside".

The static analysis tool suggests "Outside of diff" could be simplified to "Outside diff", though "Outside of" is grammatically correct and commonly used. This is purely stylistic.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@internal/support/prose/auditors/package.md` around lines 45 - 46, Change the
phrasing "Outside of `diff`" to "Outside `diff`" in the package documentation to
follow the suggested stylistic simplification; update the sentence in the
auditors package markdown where the bullet reads "**Protected lists are
explicit.** Outside of `diff`, Bomly only checks..." so it instead reads
"**Protected lists are explicit.** Outside `diff`, Bomly only checks..." leaving
the rest of the sentence and the `--protected-package` reference unchanged.
.github/workflows/ci.yml (2)

21-22: ⚡ Quick win

Consider setting persist-credentials: false for security hardening.

The actions/checkout action defaults to persisting credentials, which could enable credential exposure through artifacts or subsequent steps. Setting persist-credentials: false prevents the GITHUB_TOKEN from being accessible to later workflow steps.

🔒 Proposed fix

Apply to all six checkout steps:

       - name: Check out repository
         uses: actions/checkout@v5
+        with:
+          persist-credentials: false

Also applies to: 38-39, 53-54, 70-71, 85-86, 104-105

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/ci.yml around lines 21 - 22, Update each checkout step
that uses "actions/checkout@v5" (the steps named "Check out repository") to add
the persist-credentials: false input so the GITHUB_TOKEN is not persisted to
subsequent steps; locate every occurrence of the step (the ones around the uses:
actions/checkout@v5 lines noted in the comment) and add the single-line input
persist-credentials: false under that step for all listed occurrences.

Source: Linters/SAST tools


28-28: 💤 Low value

Remove redundant cache-dependency-path parameter.

When go-version-file: go.mod is specified, the actions/setup-go action already infers go.sum as the cache dependency path. Explicitly setting cache-dependency-path: go.sum is redundant.

♻️ Simplify setup-go configuration

Apply to all six jobs:

       - name: Set up Go
         uses: actions/setup-go@v6
         with:
           go-version-file: go.mod
           cache: true
-          cache-dependency-path: go.sum

Also applies to: 45-45, 60-60, 77-77, 92-92, 111-111

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/ci.yml at line 28, Remove the redundant
cache-dependency-path: go.sum entries from the actions/setup-go steps: when
go-version-file: go.mod is already set, actions/setup-go infers go.sum
automatically, so delete the cache-dependency-path: go.sum parameter (remove
that key/value from each setup-go step where go-version-file: go.mod is present)
to simplify the workflow without changing behavior.
docs/ARCHITECTURE.md (2)

76-102: ⚡ Quick win

Consider adding a decision-log entry for the extensibility model.

The new "Extensibility" section introduces significant architectural choices about plugin contracts, runtime integration, and the typed extension point model. As per coding guidelines, "add a decision-log entry for non-obvious design choices" in docs/ARCHITECTURE.md.

Consider adding a decision-log entry documenting:

  • Why every built-in implements the same contract as external plugins
  • Why plugins are disabled until explicitly enabled
  • Why analyzers are planned rather than available as plugins today
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/ARCHITECTURE.md` around lines 76 - 102, Add a new decision-log entry
describing the extensibility model referenced in the Extensibility section:
explain the rationale for treating every built-in as implementing the same
contract as external plugins (referencing sdk.Detector, sdk.Matcher, sdk.Auditor
and planned sdk.Analyzer), document the security/operational choice to disable
plugins until explicitly enabled, and capture why analyzers are currently
"planned" rather than pluggable (runtime/plugin-kind limitation and migration
plan). Link or reference the existing PLUGINS.md trust/authoring details and
include intended future work and decision timestamp/owner metadata.

Source: Coding guidelines


197-197: Docs: CI link is valid; plugin status wording matches Extensibility; consider adding a decision-log entry for the plugin model

  • docs/ARCHITECTURE.md line 197 correctly links to docs/development/CI.md, and that file contains the expected “CI and Release Pipeline” workflow documentation.
  • “Extensibility” plugin statuses are consistent with the table (Detector/Matcher/Auditor: Available; Analyzer: Planned) and the stated analyzer load limitation.
  • Add a ### Decision: / decision-log entry for the extensibility/plugin model (none appears tied specifically to that new section), if it’s intended as a non-obvious architectural choice.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/ARCHITECTURE.md` at line 197, Add a decision-log entry to the
ARCHITECTURE.md "Extensibility"/plugin model section by inserting a "###
Decision:" subsection that documents the architectural choice for the plugin
model, the supported plugin types (Detector, Matcher, Auditor marked as
Available; Analyzer marked as Planned), and the analyzer load limitation (single
analyzer per run) along with a brief rationale and intended future work; update
the section that mentions CI/linking only by referencing this new decision entry
so readers can find the rationale and status of the plugin model.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In @.github/workflows/ci.yml:
- Around line 21-22: Update each checkout step that uses "actions/checkout@v5"
(the steps named "Check out repository") to add the persist-credentials: false
input so the GITHUB_TOKEN is not persisted to subsequent steps; locate every
occurrence of the step (the ones around the uses: actions/checkout@v5 lines
noted in the comment) and add the single-line input persist-credentials: false
under that step for all listed occurrences.
- Line 28: Remove the redundant cache-dependency-path: go.sum entries from the
actions/setup-go steps: when go-version-file: go.mod is already set,
actions/setup-go infers go.sum automatically, so delete the
cache-dependency-path: go.sum parameter (remove that key/value from each
setup-go step where go-version-file: go.mod is present) to simplify the workflow
without changing behavior.

In `@docs/ARCHITECTURE.md`:
- Around line 76-102: Add a new decision-log entry describing the extensibility
model referenced in the Extensibility section: explain the rationale for
treating every built-in as implementing the same contract as external plugins
(referencing sdk.Detector, sdk.Matcher, sdk.Auditor and planned sdk.Analyzer),
document the security/operational choice to disable plugins until explicitly
enabled, and capture why analyzers are currently "planned" rather than pluggable
(runtime/plugin-kind limitation and migration plan). Link or reference the
existing PLUGINS.md trust/authoring details and include intended future work and
decision timestamp/owner metadata.
- Line 197: Add a decision-log entry to the ARCHITECTURE.md
"Extensibility"/plugin model section by inserting a "### Decision:" subsection
that documents the architectural choice for the plugin model, the supported
plugin types (Detector, Matcher, Auditor marked as Available; Analyzer marked as
Planned), and the analyzer load limitation (single analyzer per run) along with
a brief rationale and intended future work; update the section that mentions
CI/linking only by referencing this new decision entry so readers can find the
rationale and status of the plugin model.

In `@internal/support/prose/auditors/package.md`:
- Around line 45-46: Change the phrasing "Outside of `diff`" to "Outside `diff`"
in the package documentation to follow the suggested stylistic simplification;
update the sentence in the auditors package markdown where the bullet reads
"**Protected lists are explicit.** Outside of `diff`, Bomly only checks..." so
it instead reads "**Protected lists are explicit.** Outside `diff`, Bomly only
checks..." leaving the rest of the sentence and the `--protected-package`
reference unchanged.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 984a6e3b-df5b-4103-a476-3fd1f32fdc3d

📥 Commits

Reviewing files that changed from the base of the PR and between 8c15e8f and 1004110.

📒 Files selected for processing (22)
  • .github/workflows/ci.yml
  • AGENTS.md
  • CLAUDE.md
  • CONTRIBUTING.md
  • LICENSE
  • README.md
  • docs/ARCHITECTURE.md
  • docs/AUDITORS.md
  • docs/CI_INTEGRATION.md
  • docs/MATCHERS.md
  • docs/README.md
  • docs/USE_CASES.md
  • docs/auditors/license.md
  • docs/auditors/package.md
  • docs/auditors/vulnerability.md
  • docs/development/CI.md
  • internal/engine/pipeline.go
  • internal/engine/pipeline_explain.go
  • internal/support/component_docs.go
  • internal/support/prose/auditors/license.md
  • internal/support/prose/auditors/package.md
  • internal/support/prose/auditors/vulnerability.md
✅ Files skipped from review due to trivial changes (11)
  • internal/support/prose/auditors/license.md
  • AGENTS.md
  • internal/support/prose/auditors/vulnerability.md
  • docs/MATCHERS.md
  • docs/auditors/vulnerability.md
  • docs/development/CI.md
  • docs/CI_INTEGRATION.md
  • docs/auditors/license.md
  • CLAUDE.md
  • README.md
  • docs/USE_CASES.md
🚧 Files skipped from review as they are similar to previous changes (3)
  • docs/README.md
  • internal/engine/pipeline_explain.go
  • internal/engine/pipeline.go

@bomly-guy
bomly-guy enabled auto-merge (squash) June 11, 2026 08:30
@bomly-guy
bomly-guy disabled auto-merge June 11, 2026 08:30
@bomly-guy
bomly-guy merged commit 3e44d6b into main Jun 11, 2026
12 checks passed
@bomly-guy
bomly-guy deleted the claude/funny-buck-48b64f branch June 11, 2026 08:31
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.

2 participants