entire-rsl CLI plugin lets you inspect that ledger and verify refs locally. It shows the recorded push actor, time, signer, and history for branches, tags, and checkpoints.
Before You Start
You need:- The Entire CLI installed.
- A local clone of a repository hosted on Entire, with its Entire remote configured.
- Entire enabled and checkpoint capture configured, especially if you want to follow the checkpoint steps.
1. Install the Plugin
Update the plugin index, install RSL, and check its version using:2. Fetch the Ledger
Fetch the RSL and policy from your Entire remote:refs/gittuf/policyrefs/gittuf/reference-state-log
A normal Git clone does not fetch gittuf refs.
refresh fetches the ledger and policy, but does not fetch branches, tags, or checkpoints. Use Git to fetch those refs separately when needed.3. Push and Verify a Branch
Push a committed change as usual. For a branch with an upstream configured, use:main with your branch name. Verification checks the ref’s RSL history against the repository policy, checks its local state against the ledger, and checks the root of trust and signer. A successful result reports verified, verify exits with code 0.
To see who pushed the branch, when, and its recorded history, use the command below:
4. Inspect a Checkpoint or Commit
After capturing a checkpoint and pushing it, find its ID:<checkpoint-id> with that ID to inspect its history and verify it:
Entire-Checkpoint trailer:
Entire-Checkpoint trailer, the named checkpoint must verify too. A valid checkpoint alone is insufficient to verify a commit.
Inspect Tags and Earlier Updates
For an existing tag, replacev1.0.0 with its name:
3:
Understand Verification Results
Exit code
2 indicates invalid command usage.
A local branch can verify while its tip check reports behind, if its state is covered by the verified history. This means it is verified at an earlier state; it does not mean it is up to date. Unrecorded local commits ahead of the RSL, divergent history, and states introduced by revoked entries fail verification.
The push actor and timestamp are assertions recorded by the signer. Verification relies on signatures and policy; those metadata fields do not determine whether a ref verifies.
Refresh Before Automating Verification
Use--fetch to fetch the gittuf refs without needing to run rsl refresh beforehand, including when running without a terminal:
--json. Use the verify command’s exit code to decide whether verification passed. See the JSON schema for output fields, or run entire agent-help rsl for agent instructions.
Troubleshooting
- A newly pushed ref is
unprotected: Runentire rsl refreshand retry. If it remains unprotected, check the reported reason; the ref may have no entries or no covering policy rule. - Your branch is behind or required objects are missing: Fetch the relevant Git refs from Entire. Update your local branch through your usual Git workflow if you need to verify the latest state. Refreshing the ledger alone does not update it.
- Refresh reports
diverged: The remote gittuf ref does not descend from the local one. Refresh leaves the local ref unchanged and exits with code1. Investigate the mismatch before retrying verification. - A fetch is refused: Review the configuration keys or remote URL named in the error. RSL fetches accept
https://andentire://remotes and restrict repository-local Git configuration.