feat(trust): full Duniter web-of-trust membership (params + referents)
Slice 4 of Block 2. The pure rule was already parameterised; this adds the policy, cold-start and UI around it. - commons_core: WotParams (sigQty/stepMax/sigValidity, Duniter defaults) + WebOfTrust.membersWith; npubToHex helper (NIP-19 decode) for adding roots. - WotSettings (keystore): the active parameters, configurable — a young network loosens them and tightens as it grows, as Ğ1 did. Defaults Duniter. - TrustReferents: the bootstrap 'seeds' membership is measured from — a bundled asset (empty until real founders are curated, no invented keys) unioned with referents the user adds by npub/QR. Honest cold-start. - TrustCubit: computes the full membership verdict against referents+params alongside the personal circle, and exposes a TrustTier (networkMember > inYourCircle > vouched > unknown). Certifications issued with the active validity (they expire and renew, Duniter rule). - UI: chat trust badge by tier; a 'Network of trust' screen (manage roots + advanced params) reached from the profile. i18n en/es/pt/ast. Tests: WotParams/membersWith, npubToHex, TrustReferents, WotSettings, and TrustCubit tiers/membership. Resolves the WoT-parameters decision (open-decisions §B). Trust net stays empty/undetermined until seeded — by design; users bootstrap their own roots.
This commit is contained in:
parent
f767ccd70e
commit
e715b129f6
29 changed files with 1111 additions and 39 deletions
|
|
@ -75,6 +75,7 @@ class TranslationsAst extends Translations with BaseTranslations<AppLocale, Tran
|
|||
@override late final _Translations$chatList$ast chatList = _Translations$chatList$ast._(_root);
|
||||
@override late final _Translations$chat$ast chat = _Translations$chat$ast._(_root);
|
||||
@override late final _Translations$trust$ast trust = _Translations$trust$ast._(_root);
|
||||
@override late final _Translations$wot$ast wot = _Translations$wot$ast._(_root);
|
||||
}
|
||||
|
||||
// Path: app
|
||||
|
|
@ -762,6 +763,35 @@ class _Translations$trust$ast extends Translations$trust$en {
|
|||
@override String get vouch => 'Conozo a esta persona';
|
||||
@override String get vouched => 'Avales a esta persona';
|
||||
@override String get circle => 'Nel to círculu';
|
||||
@override String get member => 'Miembru de confianza de la rede';
|
||||
}
|
||||
|
||||
// Path: wot
|
||||
class _Translations$wot$ast extends Translations$wot$en {
|
||||
_Translations$wot$ast._(TranslationsAst root) : this._root = root, super.internal(root);
|
||||
|
||||
final TranslationsAst _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
@override String get title => 'Rede de confianza';
|
||||
@override String get open => 'Rede de confianza';
|
||||
@override String get help => 'Cómo se decide quién ye miembru de confianza: la xente aválase ente sí, y la confianza estiéndese dende un conxuntu de raíces fundadores.';
|
||||
@override String get roots => 'Raíces de confianza';
|
||||
@override String get rootsHelp => 'Les identidaes fundadores qu\'anclen la rede. Amiesta a quien te fíes (apega\'l so códigu d\'identidá); la pertenencia mídese p\'afuera dende elles.';
|
||||
@override String get noRoots => 'Entá nun hai raíces de confianza — nun se pue calcular la pertenencia hasta semar la rede.';
|
||||
@override String get addRoot => 'Amestar una raíz de confianza';
|
||||
@override String get rootHint => 'Apega un códigu d\'identidá (npub…)';
|
||||
@override String get add => 'Amestar';
|
||||
@override String get rootAdded => 'Raíz de confianza amestada';
|
||||
@override String get rootInvalid => 'Esi nun ye un códigu d\'identidá válidu';
|
||||
@override String get remove => 'Quitar';
|
||||
@override String get params => 'Parámetros avanzaos';
|
||||
@override String get paramsHelp => 'Regles Duniter. Aflóxales pa una rede nueva; apriétales según crez.';
|
||||
@override String get sigQty => 'Avales pa ser miembru';
|
||||
@override String get stepMax => 'Distancia máxima a una raíz';
|
||||
@override String get validityDays => 'Validez del aval (díes)';
|
||||
@override String get reset => 'Reafitar a valores Duniter';
|
||||
@override String get saved => 'Guardáu';
|
||||
}
|
||||
|
||||
// Path: intro.slides
|
||||
|
|
@ -1499,6 +1529,26 @@ extension on TranslationsAst {
|
|||
'trust.vouch' => 'Conozo a esta persona',
|
||||
'trust.vouched' => 'Avales a esta persona',
|
||||
'trust.circle' => 'Nel to círculu',
|
||||
'trust.member' => 'Miembru de confianza de la rede',
|
||||
'wot.title' => 'Rede de confianza',
|
||||
'wot.open' => 'Rede de confianza',
|
||||
'wot.help' => 'Cómo se decide quién ye miembru de confianza: la xente aválase ente sí, y la confianza estiéndese dende un conxuntu de raíces fundadores.',
|
||||
'wot.roots' => 'Raíces de confianza',
|
||||
'wot.rootsHelp' => 'Les identidaes fundadores qu\'anclen la rede. Amiesta a quien te fíes (apega\'l so códigu d\'identidá); la pertenencia mídese p\'afuera dende elles.',
|
||||
'wot.noRoots' => 'Entá nun hai raíces de confianza — nun se pue calcular la pertenencia hasta semar la rede.',
|
||||
'wot.addRoot' => 'Amestar una raíz de confianza',
|
||||
'wot.rootHint' => 'Apega un códigu d\'identidá (npub…)',
|
||||
'wot.add' => 'Amestar',
|
||||
'wot.rootAdded' => 'Raíz de confianza amestada',
|
||||
'wot.rootInvalid' => 'Esi nun ye un códigu d\'identidá válidu',
|
||||
'wot.remove' => 'Quitar',
|
||||
'wot.params' => 'Parámetros avanzaos',
|
||||
'wot.paramsHelp' => 'Regles Duniter. Aflóxales pa una rede nueva; apriétales según crez.',
|
||||
'wot.sigQty' => 'Avales pa ser miembru',
|
||||
'wot.stepMax' => 'Distancia máxima a una raíz',
|
||||
'wot.validityDays' => 'Validez del aval (díes)',
|
||||
'wot.reset' => 'Reafitar a valores Duniter',
|
||||
'wot.saved' => 'Guardáu',
|
||||
_ => null,
|
||||
};
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue