Skip to content

[draft] Solutions page - #4760

Draft
Chef-Pradyumn wants to merge 34 commits into
chef:mainfrom
Chef-Pradyumn:solutions-compliance-pages
Draft

Chef-Pradyumn wants to merge 34 commits into
chef:mainfrom
Chef-Pradyumn:solutions-compliance-pages

Conversation

@Chef-Pradyumn

Copy link
Copy Markdown
Contributor

Summary

Introduces a new Solutions section to chef-web-docs, organized around customer outcomes rather than individual products, starting with a Chef Compliance solution.

Structure

  • Overview -> Solutions -> Overview (/solutions/) - landing page for all solutions (card grid), with Chef Compliance live and 7 other solution areas marked "Coming soon".
  • Overview -> Solutions -> Compliance -> Overview (/solutions/compliance/) - Chef Compliance overview: workflow, common scenarios, and a benchmark coverage catalog.
  • Overview -> Solutions -> Compliance -> {9 categories} - benchmark coverage tables (Operating Systems, Desktop/Client, Databases, Cloud, Containers/Kubernetes, Web Servers, Applications/Middleware, Virtualization, Network/Infrastructure), sourced from the internal "Chef Compliance - Current Support Coverage" catalog.

This mirrors the existing Download / Packages & Platforms pattern: Solutions and Compliance are non-clickable folder headings, each with a real Overview child page holding the content.

Validation

  • markdownlint-cli2, vale, and cspell all pass locally and in CI.
  • Verified locally with hugo server (pinned to v0.152.2 per this repo's CI).
  • All commits are DCO signed off (git commit --signoff), authored by Pradyumn Prabhu pradyumn.prabhu@progress.com.

This is a draft to gather early feedback on IA/copy before final review.

Pradyumn Prabhu and others added 7 commits September 28, 2026 15:55
- New content/solutions/_index.md: task/outcome-oriented Solutions
  homepage (card grid), with Compliance as the first fully-built
  solution and the remaining 7 areas from the Chef Docs Strategy &
  Information Architecture proposal marked 'Coming soon'.
- New content/solutions/compliance/_index.md: Compliance solution
  overview page linking Chef InSpec, Chef Automate, Chef Infra Client,
  and Chef 360 into a single author -> scan -> visualize -> remediate ->
  orchestrate workflow, plus a benchmark coverage summary.
- New content/solutions/compliance/<category>/_index.md (9 pages):
  category landing pages styled after /inspec/resource_packs/, each
  listing current audit/remediation coverage for that category, sourced
  from the Chef Compliance - Current Support Coverage catalog
  (Operating Systems, Desktop / Client, Databases, Cloud,
  Containers / Kubernetes, Web Servers, Applications / Middleware,
  Virtualization, Network / Infrastructure).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Pradyumn Prabhu <pradyumn.prabhu@progress.com>
…-span benchmark names

Signed-off-by: Pradyumn Prabhu <pradyumn.prabhu@progress.com>
Signed-off-by: Pradyumn Prabhu <pradyumn.prabhu@progress.com>
Signed-off-by: Pradyumn Prabhu <pradyumn.prabhu@progress.com>
…r Chef Compliance

Signed-off-by: Pradyumn Prabhu <pradyumn.prabhu@progress.com>
Signed-off-by: Pradyumn Prabhu <pradyumn.prabhu@progress.com>
…view pages; enable sidebar on Solutions

Signed-off-by: Pradyumn Prabhu <pradyumn.prabhu@progress.com>
@netlify

netlify Bot commented Sep 28, 2026 •

Copy link
Copy Markdown

✅ Deploy Preview for chef-web-docs ready!

Name Link
🔨 Latest commit 6b57d10
🔍 Latest deploy log https://app.netlify.com/projects/chef-web-docs/deploys/6ae850a3cc17eaddb8e2d958
😎 Deploy Preview https://deploy-preview-4760--chef-web-docs.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
🤖 Make changes Run an agent on this branch

To edit notification comments on pull requests, go to your Netlify project configuration.

Chef-Pradyumn and others added 7 commits September 28, 2026 18:13
…idebar

Signed-off-by: Pradyumn Prabhu <pradyumn.prabhu@progress.com>
Signed-off-by: Chef-Pradyumn <prabhu@progress.com>
Signed-off-by: Chef-Pradyumn <prabhu@progress.com>
Restructures the Compliance solution docs from a benchmark support matrix
into a customer-outcome narrative, addressing review feedback that the
content listed benchmarks without explaining what audit and remediation
actually do or which real problems they solve.

Overview page (content/solutions/compliance/_index.md):

- Leads with the compliance problems Chef helps solve, not the catalog.
- New reader journey: challenges -> how it works -> audit -> remediation
  -> scenarios -> coverage -> get started.
- Adds a full "Compliance audit" section covering what is assessed, how a
  benchmark becomes runnable InSpec controls, the three ways to run an
  assessment, what results contain, how findings become a gap list, and
  how reports and waivers support evidence.
- Adds a "Compliance remediation" section of equal depth covering what
  remediation content is, how it relates to benchmarks and controls, how
  it standardizes corrective action, how it pairs with audit, and what to
  check before using it.
- Keeps audit and remediation distinct, and states explicitly that an
  audit version does not imply a matching remediation version.
- Adds six real-world scenarios in problem -> approach -> outcome form.
- Moves the coverage summary after the solution story and links out to
  the category pages.

Category pages:

- Regenerated from the validated internal catalog so the tables are
  derived from evidence rather than hand-maintained.
- Each page now links back to the audit, remediation, and coverage-table
  explanations on the overview.
- Drops the internal "OTHER" canonicalization prefix from five benchmark
  names. "OTHER" records the absence of a framework token in the source
  filename; it is a pipeline artifact, not a product fact. Affected pages
  note that no framework is shown rather than inferring one.
- Excludes two internal/preview rows that are not customer-facing. Those
  records are unchanged in the internal catalog.

Published coverage is now stated as 132 benchmarks (60 audit and
remediation, 59 audit only, 13 remediation only) across 191 audit
versions and 101 remediation versions. The previous 134 figure counted
the two excluded internal rows, and contradicted the category index on
the same page, which already summed to 132. All benchmark versions
remain visible; no version set is reduced to a latest version.

Every capability statement is grounded in existing Chef documentation.
No new product capabilities, metrics, customer claims, or workflows are
introduced. In particular, the Compliance Phase is described as
audit-only, which is what its documentation supports.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Kuxhul <kushalj@progress.com>
- Replace RHEL mention in marketing copy with Ubuntu Linux
- Add missing hyperlinks across the Compliance overview
- Link to Chef InSpec install docs from "Write your own controls"
- Simplify tautological/double-negative sentences; deduplicate
  repeated audit/remediation explanation
- Add Chef Automate mention to "Evidence and reporting"
- Replace all "estate" references with "fleet" for consistency
- Reword all "rather than" phrasing for plainer language
- Remove Inferred Current (dagger-marked) benchmark entries and
  their explanatory paragraph; recompute coverage totals and
  per-category counts across all affected pages
- Remove the "no framework prefix" explanatory note (no longer
  broadly applicable)
- Fix sidebar menu order to match the "Browse by category" table
- Remove duplicate Chef Premium Content entitlement sentence
- Introduce "The Chef Way" branding across headings and body copy

Signed-off-by: Chef-Pradyumn <264104377+Chef-Pradyumn@users.noreply.github.com>
@clintoncwolfe
clintoncwolfe self-requested a review October 8, 2026 13:16
clintoncwolfe
clintoncwolfe previously approved these changes Oct 8, 2026

@clintoncwolfe clintoncwolfe 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.

I like this - as a partial take, need more product line obviously. I;d like the Docs teams input as well; it's a product-oriented direction, obviously with some marketing content.

Adds a shared capability page explaining how to build custom compliance
checks with Chef InSpec, plus contextual resource-pack sections on the four
domain pages where a pack is genuinely relevant: Cloud, Containers /
Kubernetes, Databases, and Applications / Middleware.

The change is strictly additive over the approved baseline (da44770):
228 insertions and no deletions. The nine domain pages keep their URLs,
front matter, benchmark tables, published figures, and sidebar order
unchanged, including the removal of Inferred Current entries and the
recomputed coverage totals. The domain page changes are made through the
local catalog generator, which was reconciled to reproduce the approved
pages byte-for-byte so regeneration can't restore the superseded tables.

The new page states explicitly that a resource pack is not a benchmark and
that pack availability does not indicate benchmark coverage. No sentence on
a domain page contradicts the benchmark table above it.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Kushal J <kushalj@progress.com>
Pradyumn Prabhu and others added 11 commits October 19, 2026 15:04
…nd installation

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Pradyumn Prabhu <pradyumn.prabhu@progress.com>
Leadership feedback on PR chef#4760 was that the Compliance solution pages read
as marketing rather than as solutions, and don't explain how to do anything.
This addresses that without changing the approved benchmark catalog.

Add a task-oriented walkthrough, "Audit SSH configuration across a Linux
fleet", covering profile creation, control authoring, validation, execution,
reading results and exit codes, fix-and-reassess, and waiving an accepted
exception. Commands and CLI output were captured from real runs rather than
written from memory. Remote SSH, cloud and Kubernetes commands come from the
official CLI reference and are shown without fabricated output.

Rework the custom checks page from an inventory into practical guidance,
documenting the three resource pack distribution patterns with a worked
example for each.

Rewrite the six compliance scenarios so each ends in concrete linked steps
instead of an aspirational outcome, and point two of them at specific steps
of the walkthrough. Note plainly where no dedicated guide exists yet.

Replace a promotional paragraph in "Getting Chef Compliance content" with
actionable guidance, preserving its intent.

The nine domain pages, benchmark tables, published figures, domain taxonomy,
URLs and navigation weights are unchanged. Catalog regeneration produces no
diff.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The cspell check failed on the Compliance overview. "walkthrough" is only
present in @cspell/dict-software-terms, and the version bundled with
cspell-action v2.1.1 doesn't include it, so CI flagged five occurrences that
a locally installed newer dictionary accepted.

Use "guide" instead, which is in the base en_US dictionary and so doesn't
depend on the software-terms dictionary version. Link targets and anchors
are unchanged.

Signed-off-by: Kushal J <kushalj@progress.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Hands-on guide using the AWS resource pack: install/verify Chef InSpec,
set up AWS credentials, write controls against S3, IAM, and security
group resources, run the assessment, read results, fix and reassess,
waive an accepted exception, and schedule recurring AWS scan jobs.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Pradyumn Prabhu <pradyumn.prabhu@progress.com>
- Collapse the five 'Compliance challenges' subsections into one
  bulleted list instead of a prose essay.
- Shorten the audit mechanics subsections (benchmark-to-profile,
  assessment results, evidence/reporting) that duplicated detail
  already documented at the Compliance Phase, scan jobs, and
  compliance reporting pages; link out instead of re-explaining.
- Link the SSH baseline guide from where profiles are introduced.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Pradyumn Prabhu <pradyumn.prabhu@progress.com>
Replace the opening pitch-style intro and 'Compliance challenges Chef
helps solve' agitate section with a concise intro, a direct problem
statement, and a 'What this solution implements' section that routes
straight to the SSH baseline and AWS foundations guides plus the
scenarios list.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Pradyumn Prabhu <pradyumn.prabhu@progress.com>
Remove 'The Chef Way of Compliance' 6-step loop, now redundant with
the problem statement and 'What this solution implements' section at
the top of the page. Replace the 3-bullet 'Chef Way of compliance
remediation' benefit pitch with one factual paragraph covering the
same facts (consistent application, cookbook workflow, idempotent
convergence). Drop a trailing sentence that just re-sold the
numbered steps above it.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Pradyumn Prabhu <pradyumn.prabhu@progress.com>
Replace generic/awkward headings with ones that name the actual
content: 'The problem' -> 'Why compliance drifts between audits',
'How a benchmark becomes something you can run' -> 'From benchmark
to runnable profile', 'What remediation content is' -> 'Remediation
content', 'How remediation content behaves' -> 'How remediation
content runs', 'How audit and remediation work together' -> 'The
audit, remediate, reassess cycle'. Update the matching internal
anchor link.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Pradyumn Prabhu <pradyumn.prabhu@progress.com>
Merge or cut subsections whose content is already documented in
detail elsewhere: 'From benchmark to runnable profile' (duplicates
/inspec/profiles/), 'What an assessment gives you' and 'Evidence and
reporting' (both duplicate /automate/reports/, merged into one
'Results and evidence' section), 'Remediation content' and 'How
remediation content runs' (duplicate /client/.../cookbooks/ and
general Chef Infra Client convergence docs, folded into the section
intro), and 'The audit, remediate, reassess cycle' (duplicated the
cycle already stated in 'What this solution implements').

Keep subsections that add information not found elsewhere: 'What
gets assessed', 'How you run an assessment' (comparison table), 'How
remediation relates to benchmarks and controls' (explains the
audit/remediation version independence), and 'Before you use
remediation content' (checklist).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Pradyumn Prabhu <pradyumn.prabhu@progress.com>
Fix the IAM control, which used three identifiers the AWS resource pack
doesn't document: where(attached:) instead of only_attached, entry_names
instead of policy_names, and an allow_actions property that doesn't exist
on aws_iam_policy. Use have_statement, which the pack documents for this
check, and note that it matches literal values without expanding wildcards.

Add the vendoring step. inspec check and inspec exec both fail on an
unfetched dependency, so the guide couldn't be followed end to end.

Correct the generator output and inspec.yml guidance, which omitted
inputs.yml and showed supports as platform-name rather than platform,
and keep depends and supports in the edited inspec.yml so copying the
example doesn't break the profile.

Replace the inspec detect claim that a failure indicates a credentials
problem. On InSpec 5.24.7 the command returns platform details with no
credentials set, so it confirms the transport loaded and nothing more.

Fold in the material from the S3 baseline draft: per-resource IAM
permissions, exit codes, the Automate AWS API node manager path, the
be_public object-ACL limitation, and a note recording which output was
executed and which is illustrative. Add an extension section covering
S3 default encryption and secure transport on the same profile.

Remove the unresolved screenshot placeholder from the reporting note.

Link the guide from the Compliance overview as a cloud scenario and
from the Cloud domain page through the page generator.

Signed-off-by: Kushal J <kushalj@progress.com>
Kuxhul and others added 8 commits October 26, 2026 14:42
The nine benchmark coverage pages describe what a licensed user receives,
not how to solve a problem, so they didn't belong under Solutions. Move
them to a top-level /premium_content/ section alongside the other product
sections, and give the section a landing page that explains what Premium
Content is, how audit and remediation content differ, and how to confirm
entitlement.

Keep the existing URLs working. Each moved page carries an alias for its
old /solutions/compliance/ path, which the site's Netlify _redirects
output picks up automatically.

Move the coverage summary off the Compliance overview so the published
figures have a single source. The overview keeps its heading and in-page
anchors and now points to the coverage tables instead of restating them.

Repoint the Chef Premium Content link in the Enterprise Edition page,
which previously landed on a redirect stub for generic InSpec profile
documentation.

Published figures are unchanged: 127 benchmarks, 53 audit and
remediation, 66 audit only, 8 remediation only, 191 audit versions,
84 remediation versions.

Signed-off-by: Kushal J <kushalj@progress.com>
Rename 'InSpec GCP Resource Pack' to 'CIS Google Cloud Platform
Foundations' in the cloud coverage table -- it's a resource pack is
not a benchmark, but this release notes confirm a real CIS GCP
Foundations benchmark exists, and the row was simply mislabeled.
Move it into alphabetical order with the other cloud rows.

Remove the 4-line 'audit and remediation coverage are tracked
independently' explanation duplicated verbatim across all 9 category
pages, since it's already stated once on the Premium Content index
under 'Benchmark coverage'. Replace each page's two-paragraph intro
with one sentence plus a link back to that section.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Pradyumn Prabhu <pradyumn.prabhu@progress.com>
Remove the page-less 'premium_content/benchmark_coverage' anchor node
from menu.toml and reparent the 9 category pages directly under
'premium_content', matching the single-level nesting used by other
working sections (e.g. Effortless). The intermediate anchor-only node
had no backing content page, which prevented the sidebar from
expanding to show the category children, making the left pane look
like Premium Content had no sub-navigation.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Pradyumn Prabhu <pradyumn.prabhu@progress.com>
Add repository assessment and organization-wide governance guides with resource examples, evidence handling, waivers, and recurring execution.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Jayamathans12 <jayams@progress.com>
Rename the five Compliance solution pages so each one carries the
product framing agreed in the review, and drop the "Guide:" prefix
from every sidebar entry.

Page titles now read "The Chef way of <area> compliance". Sidebar
labels stay short --- "AWS compliance", "SSH compliance", "GitHub
repository compliance", "GitHub organization compliance", "Custom
compliance checks" --- so the branded form appears in the page title,
the browser title, and the breadcrumb without repeating a six-word
prefix five times in the left pane.

Add a "The Chef way" section to the Compliance overview that states
the model once --- a control states the requirement, a profile groups
the controls, a run produces a result --- and routes readers to the
page closest to the systems they own.

Renaming the pages would have cost the keywords the old titles
carried, so each page now sets a `description` in front matter. The
theme's head_summary partial prefers `.Params.description` over the
generated summary, so the meta description keeps "audit an AWS
account", "SSH configuration across a Linux fleet", and the rest.

All slugs, URLs, weights, menu identifiers, and the nine
/premium_content/ redirects are unchanged. Link text across the
Compliance and Premium Content pages is updated to match the new
titles.

Port three generator drifts so docs/generate_compliance_pages.py
reproduces the committed category pages byte for byte instead of
reverting them on the next run: the deduplicated preamble, the
flattened `premium_content` menu parent, and the GCP row rename.
The rename is applied through a DISPLAY_OVERRIDES map in the
publication layer rather than by editing the approved catalog, and
rows are now sorted by display name so the renamed row lands in
alphabetical position. Published figures are unchanged: 127
benchmarks, 53/66/8, 191 audit and 84 remediation versions.

Add CODEOWNERS, ruleset, and rulesets to cspell.yaml. These are
GitHub product terms used by the two GitHub pages and aren't in the
shared Chef dictionaries.

Validation: Vale, markdownlint, and cspell report zero issues across
the 16 changed pages; Hugo builds 3732 pages cleanly; 306 internal
links and anchors resolve; the generator is idempotent.

Signed-off-by: Kushal J <kushalj@progress.com>

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Clicking "Chef Compliance" in the sidebar did nothing. The entry was
declared in menu.toml without a `url`, so it rendered as `<a href="">`.
The only way into the overview was the "Overview" child beneath it,
which pointed at the same page the parent should have opened.

Declare the entry in content/solutions/compliance/_index.md instead,
so the menu entry is the overview page. The link resolves to
/solutions/compliance/ and the duplicate "Overview" row is gone.

That alone would collapse the section as the reader arrives on it.
The sidebar marks a section expanded with HasMenuCurrent, which is
true only when one of its *children* is the current page; the
"Overview" child was what kept it open. Override range_menu.html in
the project layouts to also check IsMenuCurrent, so a section stays
expanded when the parent entry is itself the current page.

The override is a copy of the theme partial with that one condition
changed, at all four nesting levels. It's inert for entries declared
in menu.toml with a `url`, because Hugo associates no page with those,
so it only affects sections that declare their parent on a page.
Comparing a full build before and after: no URL added or removed, the
Netlify redirects are byte-identical, and the only markup that changes
is the compliance parent's href and the removed "Overview" row.

Verified in a throwaway build that the parent URL alone, the partial
override alone, and the front-matter entry on the stock partial each
leave the section collapsed on the overview page. Both halves are
required.

Signed-off-by: Kushal J <kushalj@progress.com>

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This reverts commit a685827.

The change doesn't work in a browser. The sidebar is a Foundation
accordion menu, and AccordionMenu binds this to every parent link that
has a submenu:

    $(this).children('a').off('click.zf.accordionMenu')
      .on('click.zf.accordionMenu', function(e) {
        e.preventDefault();
        _this.toggle($submenu);
      });

So a parent entry never navigates, whatever its href. That's why every
parent entry in menu.toml ships with no url: the click was never going
to work. Giving the compliance entry a real URL and removing the
"Overview" child left the overview page unreachable from the sidebar,
which is worse than the duplicate row it replaced.

The reverted work was verified by diffing rendered HTML, which can't
observe a click handler attached at runtime. Making the parent link
navigate needs either custom JavaScript to unbind that handler, or
Foundation's submenuToggle option, which would require a URL for every
parent entry in the site. Both are larger than this change and belong
with the navigation work, not here.

Signed-off-by: Kushal J <kushalj@progress.com>

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
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.

4 participants