Problem
internal/init/init.go has zero test coverage. The init package installs chitin hooks into agent driver configs (Claude Code, Copilot, Codex, Gemini). If Run() writes bad config, users get silent governance bypass.
Acceptance Criteria
Hints
- File:
internal/init/init.go
- Functions:
Run(driverName string, global bool, projectDir string), Remove(driverName string, global bool, projectDir string)
- Templates in
internal/init/templates.go: ClaudeSettings, CopilotHooks, CodexHooks, GeminiSettings, StarterPolicy
- Driver map:
Drivers — keys are "claude", "copilot", "codex", "gemini"
- Create test file:
internal/init/init_test.go
Generated by /forge fill
Problem
internal/init/init.gohas zero test coverage. The init package installs chitin hooks into agent driver configs (Claude Code, Copilot, Codex, Gemini). IfRun()writes bad config, users get silent governance bypass.Acceptance Criteria
Run()creates the config directory if it does not existRun()writes the correct settings file for each driver (claude, copilot, codex, gemini)Run()creates a starter chitin.yaml if missingRun()skips chitin.yaml if it already existsRun()creates .chitin-identity fileRun()in global mode uses the global config dirRun()returns error for unknown driver nameRemove()deletes the settings fileRemove()returns error for unknown driver namet.TempDir()for filesystem isolationgo test ./internal/init/...Hints
internal/init/init.goRun(driverName string, global bool, projectDir string),Remove(driverName string, global bool, projectDir string)internal/init/templates.go:ClaudeSettings,CopilotHooks,CodexHooks,GeminiSettings,StarterPolicyDrivers— keys are "claude", "copilot", "codex", "gemini"internal/init/init_test.goGenerated by /forge fill