Curbpack White Paper

Local evidence preparation for human review — runtime model, capability matrix, curb outlines / pathway, trust catalog, non-claims.

Curbpack checks your repository against local rule packs and writes a review pack you can hand to a buyer or auditor—on your machine, without claiming certification.

Not conformity assessment. Not CE marking. Not a notified-body opinion.

Public site: ri-se.github.io/curbpack (optional mirror: afelin.github.io/curbpack). Pin @v0.5.2.

Source markdown on GitHub · Voice: docs/voice-and-terms.md

1. Problem

Software suppliers must show documentation and dependency hygiene against house rules or regulatory-shaped checklists. Spreadsheets drift. Cloud governance-risk-compliance (GRC) platforms move source of truth off the machine and blur who decided what.

Teams need a local habit: check the tree, write evidence humans can hand to a buyer or auditor, and keep judgment with people—not a certificate of conformity.

2. Position

Curbpack is a local-first command-line interface (CLI). It evaluates rule packs (JSON rule sets) against a git repository, emits machine- and human-readable findings, and can bind a reproducible state digest into Git Notes.

3. Runtime model and evidence flow

Pack JSON → Validate engine → GateFailure IR (JSON + markdown)
                                    ↓
                         Review pack / evidence + optional attest

The engine is industry-agnostic. Packs are data. No remote policy service is required for daily check. The MCP example shells out to CLI; optional Unix sock sidecar lives under examples/mcp/cmd/curbpack-sock (not in the main binary).

End-to-end flow

flowchart LR
  install[Install] --> init[Init]
  init --> choosePath[ChoosePath]
  choosePath --> writePath[WritePath]
  choosePath --> bringPath[BringPath]
  choosePath --> ciPath[CIPath]
  writePath --> outlines[CurbOutlines]
  outlines --> confirmPacks[ConfirmPacks]
  confirmPacks --> localMap[LocalPackRuleMap]
  localMap --> drafts[DualDraftsCiteCheck]
  drafts --> check[LocalCheck]
  bringPath --> check
  ciPath --> check
  check --> reviewPack[ReviewPack]
  reviewPack --> humanReview[HumanReview]
  humanReview --> attest[OptionalAttest]
  attest --> proofVerify[ProofVerify]
      

Write path: curb outlines → human confirm-packs → local pack→rule map → optional dual drafts + cite-check → check.
Bring and CI: skip outlines; go straight to check.
After green: review pack → human review → optional attest → local proof verify.

4. Three ways in and curb outlines

Every path ends in the same local check. Optional drafts never replace check.

WayMeaning
Write→Check Build curb outlines via pathway warm-start (enums → closed-world pack suggest), human confirm-packs, optional research brief, dual drafts with Recommended: A|B, cite-check (refuses uncited Claims), human confirm-prose, then check.
Bring-docs→Check Place existing policies on pack paths (or custom pack JSON), then check. Skips curb outlines. No portal PDF ingest.
CI Run check alone (Action @v0.5.2 on Linux/macOS runners, or local). Skips curb outlines.

Curb outlines (your pathway sketch) are a soft sketch of what you are curbing—not pack gates, not regulation, and not the law. The CLI alone writes the pathway seed. Seed and research packets are not check inputs. Humans stamp confirms (TTY, --i-am-human, or CURBPACK_ALLOW_CONFIRM=1). Agents never forge ticks or invent pack ids.

Local pack→rule map

After human confirm-packs, Curbpack builds a local pack→rule map (closed-world suggest → confirm → local map → drafts). Use it to navigate house drafting; it is not regulation text and does not replace check. Optional refresh: curbpack packs export-graph.

Mnemonic: Curb outlines → packs → check → hand off.

5. Capability matrix

InputOperationOutputHuman decision
Git repo + pack JSONinitScaffold, hooks, skill, .curbpack.jsonChoose packs; confirm pathway if Write
Pathway enumspathway suggestClosed-world pack suggestions in seedconfirm-packs (TTY / --i-am-human)
Confirmed packspacks export-graphLocal pack→rule map JSONUse map to steer drafts—not as law
Repo treecheck / validateGateFailure IR; exit 0/1/2Remediate on red; never invent green
GateFailure JSONask --proposePropose-only remediation hintsApply in editor; re-check
Allowlisted URLsresearch [--fetch]Citation packet + human briefInform drafts; never gates check
Draft markdownresearch --cite-checkPass/fail on uncited ClaimsFix cites before confirm-prose
Dual draftsAssistant + humanOption A / B + Recommended A|BPick A, B, or edit; record via pathway note
Green treeshare / prepare-releaseReview pack + buyer one-pagerconfirm-share; hand to buyer
Ready stateattestGit Notes capsule + SBOM/VEX draftsHuman sign-off; unsigned ≠ verified
Attest capsuleproof/index.htmlLocal hash compareHuman judgment—not conformity assessment

6. Feature surface (shipped)

AreaWhat it does
Init / doctor / demoScaffold house-policy; environment confidence; sandbox check
check / validateDaily gates; --heal stubs only; dual-rep JSON + markdown
ask --proposeExplain GateFailure JSON; propose-only
pathwayWarm-start: status, suggest, note, human confirm-*
research / cite-checkAllowlisted brief; never gates check; cite-or-refuse before confirm-prose
export / shareSARIF, ContextPack, buyer-questions; share handoff recipe
prepare-release / attestReview pack + buyer one-pager; human Git Notes (never auto-attest)
proof verifyLocal proof/index.html vs evidence pointer—still human judgment
PlatformsRelease binaries: darwin_*, linux_*, windows_amd64 (local CLI). GitHub Action = Linux/macOS only
packs / Actionlist / import / local pack→rule map (export-graph); pin afelin/curbpack@v0.5.2; alias curb

Exit codes: 0 pass · 1 gates/error · 2 usage/env. Optional thin MCP wraps the CLI; no confirm/attest tools.

7. Worked example

  1. Curb outlines (Write)pathway statussuggest → human confirm-packs → optional research → dual drafts + Recommended A|B → cite-check → human confirm-prose.
  2. Red findings — e.g. missing SECURITY.md, forbidden claim-adjacent wording. curbpack check exits non-zero.
  3. Remediate — optionally check --heal for stubs; ask … --propose for hints.
  4. Re-check — gates passed on this tree (exit 0). Local gate score is not certification.
  5. Review packcurbpack share writes layered reports and a buyer one-pager; human confirm-share when reviewing handoff.
  6. Optional attest — human attest. Until ssh-agent signed: UNSIGNED — not cryptographically verified. Then open proof/index.html.

Bring and CI skip step 1. Teaching sample: samples/onepager.html.

8. Evidence catalog and trust levels

ArtifactTrust level (honest)
Gate JSON / action reportStructural evidence — reproducible locally; not a legal finding
SARIF exportSame gates in CI/IDE format — not certification
Buyer-questions / ContextPack / lay-of-landHuman checklist, washed assistant snapshot, map — not a CVE product
Pathway seed / research packetSession + citation trail — informational; not gate inputs
Review pack / buyer one-pagerProcurement snapshot — not a certificate of conformity
CycloneDX SBOM / OpenVEX draftsBest-effort inventory and draft notes
Git Notes attest capsulessh-agent-signed = signature present; unsigned ≠ verified
Explain-packetSanitized tutor surface — never greenlights gates

Unsigned ≠ verified. Green readiness % is a local gate score on this tree, not a certification score. Daily check does not generate or open the one-pager.

9. Attestation and install integrity

State hash seed: commit|parent|sbom_digest|vex_digest (no wall-clock in the hash).

StateMeaning
ssh-agent-signedReal SSH signature produced
not-verified / unsignedCapsule present; not cryptographically verified

Synthetic agent-bind: tokens are never accepted as verified signatures. Install paths (install.sh, install.ps1, GitHub Action) verify release checksums.txt with sha256 and fail closed on mismatch. Network pack updates require a sha256 pin; offline import is preferred. curbpack doctor --repair re-asserts PATH + alias locally — it does not download or auto-update.

10. Non-claims and RISE neutrality

Curbpack does not certify conformity or grant CE marking; does not replace notified bodies, auditors, or legal counsel; does not guarantee absence of vulnerabilities; does not claim that green gates equal market access.

Development supported by RISE Research Institutes of Sweden as an applied research / competence object. RISE does not certify products that use Curbpack gate results. Public Pages under RI-SE are a credibility home—not an endorsement of adopter products. Never claim “RISE-approved,” “NCSC-approved,” or agency-endorsed product claims.

11. Limitations

Pack coverage is only as good as pack authors; thin packs create false confidence. Regex and text checks are heuristics with size/time guards — not full program analysis. SBOM/VEX generation is best-effort from common Node lockfiles. Local CLI ships for darwin / linux / windows_amd64. GitHub Action runners are Linux/macOS only. Integrator sock sidecar is Unix-only under examples/mcp/. doctor --repair is local PATH/alias repair — not silent auto-update. Client-side hash-pointer verify does not imply remote notary services. Pathway suggest is closed-world; it does not invent regulation text or pack ids.

12. Glossary

TermMeaning
CEEuropean conformity marking — Curbpack does not issue CE marks
CRAEU Cyber Resilience Act — shapes some pack drafts; gate green ≠ legal conformity
Curb outlinesWrite-path warm-start pathway sketch (enums / suggested packs)—not pack gates and not the law
PathwayOptional warm-start CLI; seed is not a gate input
Dual-draft HITLOption A + Option B + Recommended A|B; human picks; then cite-check
Cite-checkRefuses uncited Claims before confirm-prose
Research briefAllowlisted Sources — never gates check
SBOMSoftware Bill of Materials (e.g. CycloneDX drafts)
SARIFStatic Analysis Results Interchange Format for CI/IDEs
GRCGovernance, Risk, Compliance platforms — not what Curbpack is
Rule packJSON checklist of gates; data, not hard-coded law
Review packEvidence folder for human review
Buyer one-pagerSupplier evidence summary HTML
ContextPackWashed assistant snapshot
Structural evidenceDocumentation and dependency checks for humans
Notified bodyIndependent conformity-assessment organization — not replaced by this tool
Conformity assessmentFormal legal process — Curbpack prepares human-review evidence only
VEXVulnerability Exploitability eXchange — draft OpenVEX at attest
ReDoSRegular expression denial-of-service — packs are length/time guarded
OPAOpen Policy Agent — explicit non-goal for OSS

13. Related surfaces

Technical paper only — no ops or GTM runbooks. Aligned with @v0.5.2.