@blueforge-studio/audit-scoring

Pure, deterministic audit scoring: penalty/suggestion format, per-dimension baseline compare + gate, markdown scorecard. No I/O.

Package Info

Latest Version0.2.0
Licensenone
Keywords-
Repositorygit+https://github.com/blueforge-studio/blueforge-org.git
Author-
Homepagehttps://github.com/blueforge-studio/blueforge-org#readme
Bugs[object Object]

Versions

VersionPublished
0.2.02026-10-19
0.1.02026-10-19

Per-version supply chain

VersionSigSBOMAtt
0.2.0
0.1.0

Click a version to view its details.

Supply chain

Provenance

Published by
web:5
When
2026-10-19T20:26:09Z
sha256 (registry-computed)
32f90ca57a16345fec2822430ae2c67e2b004f7697e26ea46f42751ac124ef0b

Observed by the registry at publish.

Claimed by the build

The publisher claimed nothing about its build.

Attachments

Signature
none
SBOM
none

Dependencies

Loading dependency graph...

README

@blueforge-studio/audit-scoring

Pure, deterministic scoring for user/XP audits. No file, network or browser access; the caller reads and writes files. Proposal and decisions: PR #360 (docs/proposals/2026-10-17-audit-packages.md).

Parts:

  • Scorecard. buildScorecard(dimensions) turns per-dimension penalties into 0-100 scores and a weighted aggregate. Every penalty carries its evidence and a required basis of observed or modelled. A dimension the audit could not finish is blocked: it has no score, gets no low-score suggestion, and stays out of the aggregate.
  • Baseline gate. toBaseline(card) stores ids and scores only. gate(baseline, card, { tolerance }) compares each dimension with its own baseline and reports below-floor, went-null and dimension-removed. There is no global floor and no per-content comparison.
  • Markdown. renderMarkdown(card, { gate }).

Types are shaped like auditor-sdk's so convergence later is mechanical; this package does not depend on it.

  • Coverage (0.2.0). A dimension may declare coverage: { observed, declared }. Thin coverage lowers lowerBound and aggregateLowerBound (unwalked units assumed 0); it never raises a score.
  • Ratchet (0.2.0). updateRatchet(state, card, { window }) raises each dimension's own floor to the minimum of its last window scored runs (default 3) and never lowers it; a blocked run changes nothing. overrideFloor is the only way down and records its reason. ratchetBaseline(state) feeds gate.

Not here: personas and runners (user-audit).