Docs & rules

macalbert/envilderGitHub

This is a public, read-only report. Striff reads this repository's docs, turns each sentence that makes a claim about the code into a rule, and checks the rule against the code on the default branch. How this works

mainb6a0327Last read 2h ago

Is this yours? Install to manage it

Once installed, Striff checks every pull request.

25
9
2
1
1
1
1
7
2
2
2
13
13
13
13
1
25 docs
macalbert/envilderOpen repository

macalbert/envilder — documented rules

25 of 25 rules, printed October 10, 2026.

The sentence in your docs
Read Oct 8
EnvironmentVariable (immutable, with validation and maskedValue for safe logging)
EnvironmentVariable has maskedValue
HoldsPR #527 · Oct 8
Read Oct 8
Custom domain errors (InvalidArgumentError, ParameterNotFoundError, etc.) extend DomainError
2 rules from this sentence
InvalidArgumentError extends DomainError
HoldsPR #527 · Oct 8
ParameterNotFoundError extends DomainError
HoldsPR #527 · Oct 8
Read Oct 8
AzureKeyVaultSecretProvider: Implements ISecretProvider using @azure/keyvault-secrets
AzureKeyVaultSecretProvider implements ISecretProvider
Holds
Read Oct 8
PushSingleCommand.create(key, value, ssmPath)
PushSingleCommand has a create method
HoldsPR #527 · Oct 8
Read Oct 8
PushSingleCommandHandler injects ISecretProvider and ILogger
2 rules from this sentence
PushSingleCommandHandler depends on ILogger
HoldsPR #527 · Oct 8
PushSingleCommandHandler depends on ISecretProvider
checks “PushSingleCommandHandler injects ISecretProvider”
HoldsPR #527 · Oct 8
Read Oct 9
Use EnvironmentVariable.maskedValue (shows last 3 chars) for logging
EnvironmentVariable has maskedValue
Holds
Read Oct 8
The SecretProviderFactory is always internal (not part of public API):
SecretProviderFactory is internal to its module
HoldsPR #527 · Oct 8
Read Oct 9
Term SecretProviderFactory, Definition Internal factory selecting the correct adapter based on config Not exposed in public API
SecretProviderFactory is not exported
Holds
Read Oct 8
Dispatch->>Pull: handle(PullSecretsToEnvCommand)
DispatchActionCommandHandler depends on PullSecretsToEnvCommandHandler
HoldsPR #527 · Oct 8
Read Oct 8
Dispatch->>Push: handle(PushEnvToSecretsCommand)
DispatchActionCommandHandler depends on PushEnvToSecretsCommandHandler
HoldsPR #527 · Oct 8
Read Oct 9
Method Load(path), Description Resolve secrets and inject into Environment
Env has a Load method
Holds
Read Oct 9
Method LoadAsync(path, ct?), Description Async version of Load
Env has a LoadAsync method
Holds
Read Oct 9
Method ResolveFile(path), Description Resolve secrets, return as IReadOnlyDictionary
Env has a ResolveFile method
Holds
Read Oct 9
Method ResolveFileAsync(path, ct?), Description Async version of ResolveFile
Env has a ResolveFileAsync method
Holds
Read Oct 9
Method FromMapFile(path), Description Returns EnvilderBuilder for fluent configuration
Env has a FromMapFile method
Holds
Read Oct 9
Method WithProvider(type), Description Override secret provider (AWS/Azure)
EnvilderBuilder has a WithProvider method
Holds
Read Oct 9
Method WithProfile(name), Description Override AWS named profile
EnvilderBuilder has a WithProfile method
Holds
Read Oct 9
Method WithVaultUrl(url), Description Override Azure Key Vault URL
EnvilderBuilder has a WithVaultUrl method
Holds
Read Oct 9
Method Resolve(), Description Resolve secrets, return as dictionary
EnvilderBuilder has a Resolve method
Holds
Read Oct 9
Method ResolveAsync(ct?), Description Async version of Resolve
EnvilderBuilder has a ResolveAsync method
Holds
Read Oct 9
Method Inject(), Description Resolve + inject into Environment
EnvilderBuilder has an Inject method
Holds
Read Oct 9
Method InjectAsync(ct?), Description Async version of Inject
EnvilderBuilder has an InjectAsync method
Holds
Read Oct 9
Method ValidateSecrets(), Description Throws SecretValidationException if any value is empty or dictionary is empty
SecretValidationExtensions has a ValidateSecrets method
Holds
25 rules from 6 docs

See these where the change is. The browser extension puts a pull request's doc findings, and a diagram of what it changed, on the GitHub page itself, so the code and what your docs say about it are side by side.