Skip to content

feat: implement NestForge Vouch (.td) trust management system #28

@vernonthedev

Description

@vernonthedev

Area

core

NestForge Version

1.9.0

Rust Version

1.87

Summary

To protect the NestForge ecosystem from low-quality AI-generated contributions, we need to implement Vouch: a community trust management system.

Inspired by the Trustdown (.td) format, this system will allow maintainers to vouch for or denounce contributors. Unvouched users will be restricted from certain interactions (e.g., opening PRs or Issues) until a trusted member of the community vouches for them.

Technical Spec

The implementation will focus on a decentralized, flat-file database and CLI integration.

1. The VOUCHED.td Format:
A minimal, line-based format stored in .github/VOUCHED.td:

  • username (Vouched)
  • platform:username (Explicit platform, e.g., github:vernonthedev)
  • -username [reason] (Denounced user with optional metadata)

2. CLI Commands (nf vouch):

  • nf vouch check <user>: Returns exit code 0 (vouched), 1 (denounced), or 2 (unknown).
  • nf vouch add <user> --write: Appends a user to the local trust list.
  • nf vouch denounce <user> --reason "AI slop": Marks a user as untrusted.

3. GitHub Action Integration:

  • check-pr: Automatically labels or closes PRs from unvouched users.
  • manage-by-comment: Allows maintainers to trigger /vouch @user or /denounce @user directly from Issue/PR comments to update the .td file.

4. Web of Trust Logic:
The CLI will support a vouch.toml config to include external trust lists:

[trust]
include = [
  "[https://raw.githubusercontent.com/ghostty-org/ghostty/main/.github/VOUCHED.td](https://raw.githubusercontent.com/ghostty-org/ghostty/main/.github/VOUCHED.td)",
  "[https://raw.githubusercontent.com/nestforge/community/main/VOUCHED.td](https://raw.githubusercontent.com/nestforge/community/main/VOUCHED.td)"
]

Breaking Change Analysis

None. This is an opt-in governance layer. It does not change the Rust compilation logic or existing framework APIs. It only affects the CI/CD workflow and community interaction policies.

Performance Impact

  • Parsing: The .td format is designed for $O(n)$ linear parsing. Using a simple line-iterator in Rust, parsing 10,000+ entries will take $&lt;1ms$
  • Zero Runtime Overhead: No code is injected into the production binary.

Alternatives Considered

  • GitHub Interaction Limits: Too restrictive (blocks all new users). We want to allow new users if they are already trusted by our partners (Zig, Ghostty, etc.).

  • Manual Whitelisting: Doesn't scale and doesn't allow for a "Web of Trust" across different repositories.

Metadata

Metadata

Assignees

Projects

Status

Backlog

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions