Kemily Solutions  ·  Paper 04 of 04

The measured standard

Maxwell Connolly  ·  August 2026
Summary

This is the fourth of four papers. The third described the delivery pipeline and the gates every change passes through; this one goes inside the security standard those gates enforce. Its subject is the measurement itself: the four external references that define the bar, the automated scorecard the estate scores against and why that score is adjusted, the watchers that read every repository on a schedule to confirm each control is still enforcing, the reports they emit and the discipline that they are read, the rolling re-measurement that keeps the figures current, and the safety nets that make a green result mean what it says. The organising principle is that the posture is measured rather than asserted. Every figure below was read from a command-line run or a configuration file on a dated measurement in August 2026.


1What this is

Kemily runs a real security standard, measured rather than recalled. Four external references define the bar; a machine checks each control on every change; and a second machine reads every repository on a schedule to confirm the first still enforces.

This paper describes that measurement: the automated scorecard the estate scores against and why that score is adjusted, the checks that run on every change, the watchers that audit enforcement on a clock, the reports they emit and who reads them, the rolling re-measurement that keeps the figures current, and the safety nets.

THE STANDARD ASVS 5.0.0 the product SSDF v1.1 the process SLSA v1.0 the provenance Scorecard v5.5.0 the proxy MEASURED MEASURED BY Per-change gates a red check blocks the merge Scheduled watchers is each control still enforcing? ON THE RECORD DATED FIGURE ISSUE · 365-DAY ARTIFACT · EMAIL READ ON A CADENCE
Figure 1 — The regime, in three bands. Four external standards define the bar. It is measured two ways at once: gates that block a change on every pull request, and watchers that read the estate on a schedule to confirm the gates still enforce. Every result lands on the record as a dated figure, emitted through three channels and read on a cadence.

2The four standards, measured not asserted

The standard is not one document but four external references, each answering a different question, each pinned to a named version so a requirement number cannot drift under it.

StandardVersionWhat it answers
OWASP ASVS5.0.0Is the product sound — 345 requirements across 17 chapters.
NIST SSDFSP 800-218 v1.1Is the development process sound.
SLSAv1.0Can we prove what we built came from the source we claim.
OpenSSF Scorecardv5.5.0An automated proxy, useful for direction rather than for judgment.

Two disciplines travel with every figure. A Scorecard number is quoted only from a command-line run against our own private repositories, never from the hosted service that scores public repositories — a result quoted without a CLI run behind it is a result for someone else’s repository. And a statement of which checks a branch requires names the mechanism it was read from and the date, because a repository host enforces branch rules through two independent systems and the effective requirement is their union, which no single query returns. A table of required checks without its mechanism cannot be re-derived, and reading one system yields a confident wrong answer.

The version numbers carry the same weight. ASVS 5.0.0 renumbered every requirement from its previous edition, so an identifier copied from a pre-2025 source is invalid until re-checked; and the SSDF has a later draft that is not yet final, which the estate does not cite as normative. Naming the version is part of measuring rather than asserting.

3The adjusted Scorecard, and why we adjust it

The OpenSSF Scorecard scores a repository from 0 to 10 across a fixed set of automated checks. The estate holds itself to a bar of 8.0 — on a Kemily-adjusted score, with the raw score published beside it so nothing is hidden.

The adjustment removes three checks, and only three, each because it measures something a single-operator, private, proprietary organization structurally cannot do. Left in, they report on the shape of the organization rather than on the security of its code.

Excluded checkWhat it actually requires
Code-ReviewAn approver who is not the author. There is one seat, so nothing can be approved by a second party.
CII-Best-PracticesThe OpenSSF badge, which is issued only to a publicly reachable project. The repositories are private.
ContributorsThree or more contributing organizations. There is one.

A check is excluded only when it is unreachable by construction; a check that can be moved is moved instead. Fuzzing was excluded once, and the exclusion was withdrawn a day later after reading the vendor documentation: the tool supports private repositories, so it was a control Kemily could adopt rather than one it could not reach. It was adopted, and the check now scores. Excluding a check the estate can actually satisfy would be gaming the score.

The bar sits on the adjusted score rather than the raw score for a measured reason, not a convenient one. The raw ceiling — every reachable check at its maximum — is 7.70, which is below 8.0, so a raw bar of 8.0 would be unreachable by construction. The adjusted ceiling is 8.81, and the 8.0 bar sits about 0.8 below it, with headroom. Every aggregate is recomputed from the per-check scores using the vendor’s own risk weights (Critical 10, High 7.5, Medium 5, Low 2.5), and each recomputation reproduces the reported figure exactly, so the adjusted arithmetic applies the real formula rather than approximating it.

0 2 4 6 8 10 7.70 RAW CEILING below 8.0 by construction 8.81 ADJUSTED CEILING BAR 8.0 headroom above remove 3 checks that measure org shape, not code Code-Review · CII-Best-Practices · Contributors
Figure 2 — Why the bar sits on the adjusted score. The raw ceiling reaches 7.70 — below 8.0, so a raw 8.0 bar is unreachable by construction. Removing the three checks that measure organizational shape rather than code lifts the reachable ceiling to 8.81, and the 8.0 bar sits below that with headroom. The raw score is published beside the adjusted one at every measurement.

The raw score is published next to the adjusted one at every measurement, and where the two diverge the divergence is itself on the record. The estate’s static analyzer runs as a required, unbypassable gate on every change, but the Scorecard check that would credit static analysis does not recognize that particular tool and reads zero — so the raw score understates the posture, and publishing it is what lets a reader see that rather than take it on trust.

One of the largest near-term movements in the score arrives on a calendar rather than through work: a check that reads zero on a repository younger than 90 days is worth close to a full point, and it resolves as the repositories age. It is recorded here before it happens, so that when the number moves the cause is already on the record rather than claimed as remediation.

4The mechanisms — what runs on every change

The standard’s enforcement surface is the pull request. A change reaches a protected branch only through one, and the request merges only when a defined set of checks pass. The checks are required in branch protection, so a red check blocks the merge, and a workflow that runs without blocking is treated as absent.

CheckWhat it blocks
Static analysis (Semgrep)Dangerous code patterns fail the build on a finding, and the scan cannot be silently skipped.
Secret scanning (gitleaks)A committed credential fails the build; it cannot reach the default branch.
Dependency scanning (osv-scanner)A known-vulnerable dependency cannot merge; a release-age cooldown holds back freshly published versions.
Typecheck and buildCode that does not type or does not build is refused.
Coverage floorsA drop below the configured floor fails the run instead of printing a report.
Cross-tenant isolationOn the multi-tenant products, a change that lets one tenant reach another’s data fails against a policy-capable database.
Browser end-to-endThe behavioral flows are exercised in a real browser in CI.
Continuous fuzzingParsing and boundary code is fuzzed on every change — Jazzer.js for TypeScript, Atheris for Python; a crashing input fails the job.

Two properties keep the set honest. A branch’s true required set is the union of two independent enforcement systems, and the estate reads that union rather than one side of it. And each check’s context is pinned to the application that produces it, so a token that can post a status cannot forge a passing result the scanner never emitted.

5The watchers — the machines that audit the machines

Enforcing a control and proving it still enforces are two different jobs. A required check that quietly stops running still reports green, which is the failure a passing dashboard hides. So a second tier reads the estate on a schedule and asks, per control, whether it is still enforcing.

The estate every repository + the template Conformance sweep DAILY · 17 CONTROLS × EVERY REPO Rolling Scorecard WEEKLY · RECOMPUTE THE ADJUSTED SCORE Document control ON TRIGGERS · REVIEW + RETENTION reads THREE CHANNELS Tracked issue 365-day artifact Email Read on a cadence
Figure 3 — The watchers. Three scheduled machines read the estate, each asking whether a control is still enforcing rather than merely present. Each emits the same three channels — a tracked issue, a retained artifact, and an email — and the result is read on a cadence, because a control nobody reads is not a control.

6The reports, and the discipline that they are read

Each watcher emits the same three channels, so a result cannot exist only in a log that no one opens: a tracked issue that accumulates the rolling triage, an artifact retained for 365 days, and an email. The subject line carries the verdict, so the outcome is known before the report is opened — a clean sweep, a count of actionable findings, or, treated as the hardest failure of the three, an incomplete read that could not be trusted whole.

The reports are read on a cadence, not when someone remembers: the daily orientation reads the latest conformance result from a fixed path, and a standing calendar review sits against each watcher. A finding is carded, not noted — one left off the board is one the next sweep raises again. This is enforced because it once failed: a monthly audit ran for three months, opened an issue and committed an artifact that nobody read, while three real findings sat open under a report that claimed a clean sweep of a fraction of the estate.

7Rolling management — recheck and adjustment

Nothing in the regime is measured once. The scorecard re-runs weekly and the sweep daily, so the published figures stay current rather than a snapshot that ages out of date.

The bar itself is re-derived rather than fixed. Stated conditions reopen it, each written down as a trigger so it moves when the world does and not when someone happens to notice: a second operator joining, which makes an excluded check reachable and dissolves the exceptions that rest on there being one seat; a Scorecard-recognized static analyzer being adopted, which recovers the points the current one is not credited for; or a repository passing 90 days, which moves a check on the calendar. The conditions are the schedule; the recompute is mechanical.

The same holds for the documents and the exceptions. Every canon document carries its own expiry triggers, and an exception is valid only while its premise holds — including the estate’s own exceptions. Each declared exception carries the condition under which it retires, and the sweep re-checks that its premise is still true, so an exception with a reason that has quietly expired is caught as drift rather than surviving as an oversight.

8The safety nets

The regime is built around the specific ways a measurement can mislead, and each has a net that turns the failure into a visible signal.

9Born with the standard

The standard propagates forward through the project template a new repository is created from. The template carries the gate workflows, the fuzzing scaffold, and the dependency and secret configuration, so a repository scaffolded from it arrives with the scanners running on its first commit and the dependency watcher already active.

This was proven, not assumed. A throwaway repository created from the template in August 2026 was born carrying seven security workflows and the fuzz scaffold, with the scanners green on the first push and the dependency watcher already opening update requests. A single wiring step — requiring the checks in branch protection — is deliberately left for creation time, and the conformance sweep names exactly that step rather than passing over it. The standard is uniform across products because it is inherited from one template, verified outward by the sweep that reads every repository against it. It propagates forward and is checked backward, and neither direction depends on memory.

10Observation

The regime rests on one property: the posture is measured, and the measurement is itself audited. The controls are mechanical, a second machine reads them on a schedule, the adjusted score is published beside the raw one, and every figure carries the date and the tool it was read from.

An enterprise security review asks whether the controls exist, whether they run, and whether something independent checks them. Each answer here is a command output, which is what lets a single operator hold a product to the bar such a review expects.