Documentation
¶
Overview ¶
Package audit reports workflow-conformance findings over a branch's git history. It is advisory (ADR-0017): standalone, never wired into the gate. Most rules are pure over the commit range; the uncommitted-changes rule (ADR-0025) additionally inspects the live working tree.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Commit ¶
type Commit struct {
Hash string
Subject string
Body string
IsMerge bool
Changes []FileChange
}
Commit is a neutral view of one range commit. The rule engine reads only this.
type FileChange ¶
type FileChange struct {
Path string // repo-relative path (the new path; old path for a delete)
OldPath string // repo-relative pre-image path (differs only on rename)
Action Action
Added, Deleted int
OldText, NewText string
}
FileChange is one file touched by a commit. OldText/NewText are populated only for ".md" files (cheap; the rules need ADR frontmatter), empty otherwise.
type Finding ¶
type Finding struct {
Severity Severity
Rule string
Commit string // short hash, "" for a branch-level finding
Subject string
Detail string
}
Finding is one reported conformance issue.
func CheckConventionalCommit ¶ added in v0.3.0
CheckConventionalCommit validates one commit's subject against the Conventional Commits settings and returns any violations. It is the single definition of the rule — consumed by the audit range loop above and by the blocking `awf commit-gate` command (ADR-0036), so neither re-implements the regex, the type/scope allow-lists, or the subject-length limit. Merge commits are exempt. invariant: audit-conventional-commits invariant: commit-gate-shared-rule
type Inputs ¶
type Inputs struct {
Settings
GeneratedPaths map[string]bool
ADRDir string // e.g. "docs/decisions"
ActiveMd string // e.g. "docs/decisions/ACTIVE.md"
PlansDir string // e.g. "docs/plans"
ConfiguredDomains []string // config.Domains; staleness limited to these, undocumented-domain fires outside them
DomainsPartsDir string // e.g. ".awf/domains/parts"
DomainsIndexDir string // e.g. "docs/domains"; rendered per-domain index dir (adr-domain-cochange)
// DomainPaths maps a configured domain to its sidecar-declared anchored
// path globs (ADR-0077); empty = the domain-code-staleness rule is inert.
DomainPaths map[string][]string
}
Inputs are the resolved audit settings plus the project-derived layout the rules need. The embedded Settings carries the resolved knobs (BaseBranch, AllowedTypes, AllowedScopes, SubjectMaxLength, DependencyManifests, DiffThreshold, DomainDocStaleness, DomainCodeStaleness, UndocumentedDomain, UncommittedChanges), promoted so the rules read in.AllowedTypes etc. directly.
type Settings ¶
type Settings struct {
BaseBranch string
AllowedTypes []string
AllowedScopes []config.ScopeSpec
DependencyManifests []string
SubjectMaxLength int
DiffThreshold int
DomainDocStaleness bool
DomainCodeStaleness bool
UndocumentedDomain bool
UncommittedChanges bool
}
Settings is the resolved, default-applied audit configuration the rules consume.
func Resolve ¶
func Resolve(a *config.AuditConfig) Settings
Resolve resolves the effective audit settings from the raw config, applying defaults. A nil AuditConfig yields the full default set.
func (Settings) ScopeNames ¶ added in v0.8.0
ScopeNames returns just the allowed scope names, for gate matching.