How it works
Three steps to the badge.
Write down what your software is for, put it on the record, and show a badge that keeps itself honest. Nothing here ever blocks a release.
1. Write your IZ4
Copy this into a file called IZ4 at the root of your repo and fill in the prose. Nothing to install.
IZ4
gist:
What is this project FOR, in a few plain sentences?
invariants:
- Invariant 0: humans first. Help people thrive, and respect
each person's dignity. Do no harm, and no greater good makes a
person disposable. Keep humans in charge: explain
consequential actions, accept challenge and correction, and
stop safely when asked. When an objective conflicts with these
protections, preserve them, report the conflict, and safely
pause the affected action. Be honest about what this is, what
it knows, what it has done, and what remains uncertain or
blocked. No other entry may weaken this.
- The rules someone would be upset to see silently broken, one per
entry, in plain sentences.
constraints:
decisions:
references:
Or let the open iz4 CLI draft it: iz4 init. Review before you commit.
2. Register it
Create a workspace, add your project, and the Connect CI page gives you one command to paste in your repo, which adds this workflow and your token. It reports counts, outcomes and coverage on every push. A private repo's file and code stay in CI. We never access them.
# .github/workflows/iz4.yml
name: iz4
on: [push]
jobs:
report:
runs-on: ubuntu-latest
continue-on-error: true # advisory: never blocks a release
steps:
- uses: actions/checkout@v4
with: { fetch-depth: 1 }
- run: |
curl -fsSL https://iz4.you/iz4-report -o iz4-report
chmod +x iz4-report
./iz4-report --url https://iz4.you/api/v1/projects/YOUR_ID/reports --token "$IZ4_TOKEN" \
--release "$GITHUB_REF_NAME" --run-id "$GITHUB_RUN_ID"
env:
IZ4_TOKEN: ${{ secrets.IZ4_TOKEN }}
Connect CI fills in your project's address and stores the token for you.
3. Publish, then show your badge
Preview what goes public and publish. Your project page then mints your IZ4 badge, the QR code in the frame, for your site and packaging. For your README, drop in the status badge:
[](https://iz4.you/p/YOUR_ID)
From a connected checkout, iz4 badge prints these lines with your own id filled in, offline.
The status badge is live. It shows the card's evidence-backed state, a failed check included. Never a score.
The evidence stays up to date by itself
- CI reports every push, so evidence tracks your code.
- The status badge is served, not pasted, so your README never goes stale.
- The presented revision stays yours: a report can never choose what your card presents. Cut a release, set it, done.
- If CI goes quiet, the card says "stale" after 30 days. A fact, not a judgement.