Files
acdl/.ciagent/config.json
T
CIAgent 68908d7f6a docs(init): validate specification
---ci---
project: acdl
phase: 0
milestone: v1.31
status: specify
---/ci---
2026-08-20 14:56:47 +00:00

332 lines
7.6 KiB
JSON

{
"projects": [
{
"slug": "acdl",
"name": "Nova \u2014 The New Dawn of DevSecOps",
"default": true
},
{
"slug": "nova-blockchain-exchange",
"name": "Nova Pilot Consumer \u2014 Blockchain Stock Exchange",
"default": false
}
],
"active_project": "acdl",
"active_projects": [
"acdl",
"nova-blockchain-exchange"
],
"active_milestone": "v1.31",
"autonomy": {
"level": "full",
"escalation_hooks": [
"deploy",
"delete_data",
"merge_to_main"
],
"clarify_budget": 10,
"decision_confidence_threshold": 0.6,
"max_revision_iterations": 3,
"max_verification_retries": 2,
"escalation_timeout_ms": 300000
},
"model_profile": "quality",
"parallelization": {
"enabled": true,
"max_concurrent_agents": 5,
"min_plans_for_parallel": 2,
"max_concurrent_projects": 3
},
"verification": {
"automated_only": true,
"escalate_visual": true,
"escalate_external_integration": true,
"test_first": false
},
"security": {
"auto_accept_low_severity": true,
"auto_mitigate_medium_severity": true,
"escalate_high_severity": true,
"bash_allowlist": {
"allowed_commands": [
"git",
"ls",
"cat",
"head",
"tail",
"wc",
"echo",
"mkdir",
"cp",
"mv",
"rm",
"touch",
"pwd",
"which",
"env",
"printenv",
"python3",
"pytest",
"pip",
"terraform",
"checkov",
"curl",
"wget",
"docker",
"docker-compose"
],
"max_output_bytes": 1048576,
"timeout_ms": 30000,
"blocked_env_vars": [
"HOME",
"PATH",
"USER",
"SHELL",
"AWS_*",
"*_TOKEN",
"*_KEY",
"*_SECRET",
"*_PASSWORD",
"*_CREDENTIAL",
"GITHUB_TOKEN",
"GITHUB_API_KEY",
"OPENAI_API_KEY",
"ANTHROPIC_API_KEY",
"OLLAMA_CLOUD_API_KEY"
]
}
},
"git": {
"branching_strategy": "flat",
"_branching_strategy_note": "Nova uses flat workflow (committed directly to main per established convention since v1.0; renamed ACDL\u2192Nova in v1.15). The 'phase' strategy is advisory; CIAgent uses milestone/phase branches for v1.14 but the project convention is flat.",
"auto_commit": true,
"auto_push": true
},
"secrets": {
"sources": [
".env",
".env.secrets",
".env.*"
],
"disallow": [
"shell_env",
"netrc",
"keychain",
"rc_files",
"global_config"
],
"scopes": {
"forge": "NOVA_FORGE_TOKEN",
"gitea": "NOVA_FORGE_TOKEN",
"github": "GITHUB_TOKEN",
"gitlab": "GITLAB_TOKEN",
"openai": "OPENAI_API_KEY",
"anthropic": "ANTHROPIC_API_KEY",
"ollama_cloud": "OLLAMA_CLOUD_API_KEY"
}
},
"release": {
"forge": "gitea",
"gitea": {
"base_url": "https://git.cloudinit.dev",
"owner": "continuous-intelligence",
"repo": "acdl",
"token_scope": "gitea"
},
"github": {
"owner": "",
"repo": "",
"token_scope": "github"
},
"gitlab": {
"base_url": "",
"owner": "",
"repo": "",
"token_scope": "gitlab"
}
},
"ship": {
"per_phase": true,
"require_release": true,
"allow_skip": false,
"confirm_before_ship": false,
"max_release_retries": 3,
"release_blocking": false
},
"backend": {
"provider": "auto",
"agent_backends": {
"opencode": {
"enabled": true
},
"codex": {
"enabled": true
},
"claude-code": {
"enabled": true
},
"hermes": {
"enabled": true
}
},
"llm_backends": {
"openai": {
"base_url": "https://api.openai.com/v1",
"api_key_env": "OPENAI_API_KEY",
"model": "gpt-4o",
"model_profile": "quality",
"timeout_ms": 60000
},
"ollama-local": {
"base_url": "http://localhost:11434",
"model_profile": "balanced"
},
"ollama-cloud": {
"base_url": "",
"_base_url_note": "Intentionally unset. The runtime uses the glm-5.2 model via the opencode backend (not the llm_backends config). This entry is for reference only.",
"api_key_env": "OLLAMA_CLOUD_API_KEY",
"model_profile": "quality",
"timeout_ms": 60000
},
"anthropic": {
"base_url": "https://api.anthropic.com",
"api_key_env": "ANTHROPIC_API_KEY",
"model": "claude-sonnet-4-20250514",
"api_version": "2023-06-01",
"model_profile": "quality",
"timeout_ms": 60000
}
}
},
"ideation": {
"enabled": true,
"categories": [
"security",
"quality",
"architecture",
"coverage",
"improvement"
],
"confidence_threshold": 0.6,
"max_ideas": 20,
"external_signals": {
"npm_audit": true,
"osv_advisories": true,
"dependency_staleness": true
},
"cross_project": {
"enabled": false,
"similarity_weight": 0.5
},
"chaos": {
"enabled": true,
"scenarios": [
"backend_unavailable",
"requirement_change",
"test_coverage_drop"
]
}
},
"sessions": {
"max_concurrent_sessions": 3,
"session_timeout_ms": 3600000,
"session_isolation": "branch"
},
"personas": {
"enabled": true,
"territory_enforcement": "warn",
"personas": [
{
"name": "lead-developer",
"domain": "coordination",
"frameworks": [],
"constraints": [
"pragmatic",
"battle-tested defaults"
],
"territory": []
},
{
"name": "data-engineer",
"domain": "data",
"frameworks": [
"drizzle",
"postgresql"
],
"constraints": [
"schema-first",
"type-safe ORM",
"migration-driven"
],
"territory": [
"**/migrations/**",
"**/schema/**",
"**/models/**",
"**/db/**",
"prisma/schema.prisma",
"drizzle/**",
"**/*.sql"
]
},
{
"name": "backend-engineer",
"domain": "backend",
"frameworks": [
"fastify",
"hono"
],
"constraints": [
"api-first",
"strict-typing",
"dependency-injection"
],
"territory": [
"**/api/**",
"**/routes/**",
"**/services/**",
"**/middleware/**",
"**/controllers/**",
"**/auth/**"
]
},
{
"name": "frontend-engineer",
"domain": "frontend",
"active": false,
"frameworks": [
"react",
"next.js"
],
"constraints": [
"component-first",
"server-components",
"minimal-client-js"
],
"territory": [
"**/components/**",
"**/pages/**",
"**/hooks/**",
"**/styles/**",
"**/*.tsx",
"**/*.css",
"**/*.vue"
],
"reason": "ACDL has no frontend (no package.json); decks are markdown (lead-developer territory). Deactivated per PERSONAS.md:80."
}
]
},
"logging": {
"level": "info",
"format": "json",
"file": ".ciagent/logs/ciagent.jsonl"
},
"telemetry": {
"enabled": true,
"persist": true
},
"strategic_direction_file": ".ciagent/NORTH_STAR.md",
"policy": {
"engine": "kyverno-json",
"policy_root": "adapters/kyverno-json/policies"
}
}