radicle/sigrefs: Revert strict verification of `refs/rad/root`

More sigrefs on the network than previously thought actually are missing
the reference `refs/rad/root`. Revert the change to make this an error,
which was part of commit `d3bc868e84c334f113806df1737f52cc57c5453d`.
This commit is contained in:
Lorenz Leutgeb 2026-03-19 12:09:36 +01:00 committed by Fintan Halpenny
parent d01ff2e79d
commit fa1699e5d0
3 changed files with 20 additions and 2 deletions

View File

@ -14,6 +14,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
in the ambiguous format could not be parsed anymore. Partially undo this change
to stay backward compatible, but log a warning in case ambiguous addresses are
encountered.
- In commit `d3bc868e84c334f113806df1737f52cc57c5453d` which was released in
version 1.7.0, the criteria for verification of Signed References was changed
to be more strict. In particular, to require the reference `refs/rad/root`
pointing at the root commit in the history of the repository identity.
This was done under the assumption that the overwhelming majority of
repositories on the network would have this reference, thus not many users
would be negatively affected, in a trade for improved security.
It turned out that this assumption was wrong, and that a larger-than-expected
portion of the network is affected by verification errors. The change is
reverted, relaxing the verification criteria again.
## 1.7.0

View File

@ -258,10 +258,17 @@ impl Commit {
// Identity verification succeeds.
}
} else {
return Err(error::Verify::MissingIdentity(error::MissingIdentity {
let err = error::Verify::MissingIdentity(error::MissingIdentity {
sigrefs_commit: self.oid,
expected,
}));
});
log::debug!("Reading sigrefs will error in the future: {err}");
// TODO: Make this return the error
// and enable test `test::commit_reader::missing_identity`.
// Identity verification succeeds.
}
self.refs.remove_sigrefs();

View File

@ -73,6 +73,7 @@ fn missing_commit() {
}
#[test]
#[ignore = "strict verification of `refs/rad/root` reverted due to compatibility issues"]
fn missing_identity() {
let head = mock::oid(1);
let refs = [(mock::refs_heads_main(), mock::oid(10))];