Documentation
¶
Overview ¶
CANARY: REQ=CP-257; FEATURE="ProjectConfig"; ASPECT=Storage; STATUS=IMPL; UPDATED=2025-10-16
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ProjectConfig ¶
type ProjectConfig struct {
Project struct {
Name string `yaml:"name"`
Description string `yaml:"description"`
Key string `yaml:"key"`
} `yaml:"project"`
Sources []SourceConfig `yaml:"sources"`
Requirements struct {
IDPattern string `yaml:"id_pattern"`
} `yaml:"requirements"`
Scanner struct {
ExcludePaths []string `yaml:"exclude_paths"`
} `yaml:"scanner"`
Verification struct {
RequireTestField bool `yaml:"require_test_field"`
RequireBenchField bool `yaml:"require_bench_field"`
StalenessDays int `yaml:"staleness_days"`
} `yaml:"verification"`
Agent struct {
DefaultModel string `yaml:"default_model"`
} `yaml:"agent"`
}
ProjectConfig represents the .canary/project.yaml configuration
func Load ¶
func Load(rootDir string) (*ProjectConfig, error)
Load reads and parses the project.yaml configuration file
type SourceConfig ¶
type SourceConfig struct {
Name string `yaml:"name"`
Type string `yaml:"type"` // flatfile | jira | github | gitlab
Key string `yaml:"key"` // ID prefix, e.g. "CBIN", "PLAT", "GH"
URL string `yaml:"url,omitempty"`
// API is the REST base URL used by `canary ticket sync` when it differs
// from URL (which is the human browse-link template). Precedence is
// env > source.API: if JIRA_BASE_URL is set, it always wins; API is
// only consulted as a fallback when JIRA_BASE_URL is unset. Email and
// Token have no config-file fallback — they must come from
// JIRA_EMAIL/JIRA_API_TOKEN regardless of what this field holds.
API string `yaml:"api,omitempty"`
// StatusMap overrides the default CANARY-status -> remote-status-name
// mapping (STUB/IMPL/TESTED/BENCHED keys) for this source only.
StatusMap map[string]string `yaml:"status_map,omitempty"`
}
SourceConfig describes one requirement-ID source: a flatfile prefix or an external ticket system (jira, github, gitlab) whose keys appear in REQ= fields. CANARY: REQ=CP-267; FEATURE="TicketSources"; ASPECT=Storage; STATUS=TESTED; TEST=TestCANARY_CBIN_201_LoadSources; UPDATED=2026-08-28 CANARY: REQ=CP-279; FEATURE="TicketSync"; ASPECT=Storage; STATUS=TESTED; TEST=TestCANARY_CBIN_306_LoadSources_TicketSyncFields; UPDATED=2026-08-29