Skip to content

docs(cloud security): the consolidated Code Scanning docs — supersedes #355, #360, #361 - #362

Draft
maximelb wants to merge 2 commits into
masterfrom
docs/cloud-security-code-lane-consolidated
Draft

docs(cloud security): the consolidated Code Scanning docs — supersedes #355, #360, #361#362
maximelb wants to merge 2 commits into
masterfrom
docs/cloud-security-code-lane-consolidated

Conversation

@maximelb

@maximelb maximelb commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

Draft, and it stays a draft — this repo is public and the code lane is not
announced. It supersedes four in-flight branches; it is here so the docs round
is reviewable as one thing rather than as a stack.

What this replaces

PR State Folded in
#355 code lane open draft the page, the findings/compliance/providers/nav edits
#357 alert permissions already merged built on, not restated
#360 bring your own scanner open draft, stacked on #355 the BYO section and the Actions recipe
#361 IDE & MCP open draft mcp.md, with the autofix tool corrected

All three open ones are left open with a comment pointing here; closing them is
yours.

Where the branches and the code disagreed

Every claim was checked against legion_cloudsec_host/docs/CODE-LANE.md,
go-cloudsec/docs/API-CONTRACT.md, the hive schema and the tracker rows. The
code won each time. Nine differences, worth reading before approving:

  1. Static analysis ships. docs(code-scanning): bring your own scanner (P2.2) — HOLD OPEN #360's "Not yet available" listed SAST as
    unshipped. It landed with a curated CWE-mapped rule pack; it is off by
    default in the policy, which is a different statement, and the page makes it.
  2. Push-triggered rescans ship. Also listed as unavailable. The webhook
    adapter, the shipped D&R recipe and the debounce are documented.
  3. Pull-request checks and merge gating ship, via the separate opt-in write
    App. docs(code-scanning): bring your own scanner (P2.2) — HOLD OPEN #360 said they "need write access, which the read-only connector does
    not have and will not gain" — the second half is right and load-bearing, the
    conclusion was not.
  4. Dependency AutoFix ships, with the npm / go lockfile limitation stated in
    the table rather than implied.
  5. severity_floor does not filter. Both branches said it "drops code
    findings below this severity". It is validated, stored and composed; nothing
    applies it yet. Now carries an explicit note.
  6. scan_status reads unknown for every repository today — the
    per-repository scan props live on the lane's own status document and are not
    merged onto the inventory row, so the field reports
    repo_scan_props_not_projected. Documented as a known state with the
    authoritative alternative (code status) named, rather than described as if
    it worked.
  7. OWASP Top 10 is fully assessable now (ten of ten once static analysis has
    run over a repository), not five of ten.
  8. image_sources: ["registries"] is accepted and not enumerated. Named in
    "Not yet available" instead of listed as a working option.
  9. sast_ruleset: custom:<ref> is accepted by the policy validator and
    refused by the scanner — and because the scan then reports an error, that
    repository's unrelated findings stop being swept. Documented as a thing not
    to set, with the consequence.

What the review then caught

Every command on the page was run against the CLI's own source rather than read,
which found seven copy-paste failures — all fixed in the second commit:
--finding-class is --class; the Actions recipe invented limacharlie login
and --alias (the group is auth, and there is no alias option), so the
workflow died before it scanned; local secret scanning is refused, not "off
by default", which the MCP page in this same PR already said correctly; the
webhook heredoc used $OID and $INSTALLATION_KEY without defining them, in an
unquoted heredoc, so a reader wrote an empty identity; image_sources is a list
and appeared twice as a bare scalar.

Two things that gate merging, beyond the rollout

Both are tracked as go-cloudsec roadmap 15 §10 items 35b and 36 (PR
go-cloudsec#240).

Deliberately not here

  • No competitor or vendor names. Scanner engines, rule-pack vendors and
    other source-control platforms are described by what they do. One consequence:
    the sast_ruleset alternative pack value is not documented — only the curated
    default and the fact that custom: does not work.
  • The webhook adapter page is not edited. The code lane links to the existing
    tutorial and carries only the record shape it needs; none of the four branches
    touched that page either.
  • No release-note entry. That is legion_deployments#5197, held for the
    production rollout.

Consolidates the four in-flight code-lane documentation branches (#355 code
lane, #357 alert permissions — already merged, #360 bring-your-own scanner,
#361 IDE/MCP) into one page set, and reconciles every claim against the
shipped code rather than against the plan each branch was written from.

- `cloud-security/code-scanning.md` — one setup path (Contents: Read, the
  optional alert permissions, the opt-in write App with its manifest and the
  exact permission union, the webhook adapter and both shipped D&R recipes),
  the scanners and their finding classes, BYO ingest + local/CI scanner + an
  Actions recipe, pull-request checks and gating, AutoFix with the npm/go
  lockfile limitation stated as it ships, free-tier limits for repositories
  AND container images, the two code compliance catalogs and what
  "NOT_ASSESSED — reason" means, and a security section on what leaves the
  repository.
- `cloud-security/mcp.md` — the MCP tool surface, with autofix documented as
  the shipped tool rather than the stub.
- `provider-setup/github.md` — the Contents row with its preflight id, and a
  pointer to the separate write App.
- `findings.md`, `compliance.md`, `providers.md`, `mkdocs.yml` — the code
  classes, the two new frameworks, the connector paragraph, the nav.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
lcbill
lcbill previously approved these changes Aug 27, 2026
…two new pages

Every command on the page was run against the CLI's own source rather than
read. Seven of them do not work as written:

- 'finding list --finding-class' is '--class'. The sibling CLI page already
  spells it correctly, so the page contradicted a shipped page.
- The Actions recipe's auth step invented two things: there is no top-level
  'limacharlie login' (the group is 'auth') and no '--alias'. Copy-pasted, the
  workflow dies before it scans. Deliberately NOT switched to a named
  environment either, because the following step would then resolve 'default'
  and fail one line later.
- Local secret scanning is REFUSED, not off by default. '--scanners
  sca,iac,secrets' raises; the page framed it as a choice, and mcp.md in this
  same PR already said it correctly. Two new pages disagreeing about the same
  behaviour is worse than either being wrong alone.
- The webhook heredoc is unquoted and referenced OID and INSTALLATION_KEY
  without defining them, so a reader writes a cloud_sensor record with empty
  identity fields - and the block generates SECRET on the line above, which
  sets the expectation that it is self-contained.
- image_sources is a list; it appeared twice as a bare scalar in
  value-naming position, which unmarshals to an opaque error.
- The 'cloudsec code' group is newer than any published CLI release, so a
  reader who installs and follows the page gets 'No such command'. Says so
  where the first command appears.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.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.

2 participants