presets
constpresets:object
Defined in: types/src/config.ts:605
Type Declaration
Section titled “Type Declaration”production
Section titled “production”production:
object
production.$schema?
Section titled “production.$schema?”
optional$schema?:string
production.acDiscipline
Section titled “production.acDiscipline”acDiscipline:
"strict"
production.boundaryEnforcement
Section titled “production.boundaryEnforcement”boundaryEnforcement:
"warn"|"block"
Boundary enforcement mode (Phase 155). warn (default, back-compat) —
an out-of-boundary edit is only notified via anomaly-notify, never
blocked. block — handlePreToolEdit refuses an out-of-boundary edit at
edit time, wherever the host surfaces the touched files. Top-level (not
nested under hooks, which is boolean-only gate toggles) because a
settle-time counterpart is planned as a follow-on (rec-20260704-001).
Overridable per-phase via DRAFT frontmatter, mirroring profile.
production.codeReview
Section titled “production.codeReview”codeReview:
object
production.codeReview.model?
Section titled “production.codeReview.model?”
optionalmodel?:string
Optional model override for the Anthropic provider.
production.codeReview.provider
Section titled “production.codeReview.provider”provider:
"local"|"mock"|"anthropic"|"host-cli"
Code-review verifier provider selection (Phase 24.3). Fires at
cadence settle run when 'code-review' is in the effective
gate set. HIGH findings refuse settle unless --force /
--allow-code-review-failure.
production.commitCadence
Section titled “production.commitCadence”commitCadence:
"task"|"draft"|"manual"
production.convergence
Section titled “production.convergence”convergence:
object
production.convergence.maxAttempts
Section titled “production.convergence.maxAttempts”maxAttempts:
number
production.gates
Section titled “production.gates”gates:
object
production.gates.evidenceFloor
Section titled “production.gates.evidenceFloor”evidenceFloor:
"executed"
production.gates.sealed
Section titled “production.gates.sealed”sealed:
string[]
production.handoff
Section titled “production.handoff”handoff:
object
Handoff retention (Phase 88, v1.20). Opt-in, count-based pruning of dated
SESSION-*.md docs under .cadence/handoff/, applied at handoff-write
time (not settle — settle fires per-phase and would race the lastHandoff
pointer). retain: N keeps the N most-recent docs (the just-written
lastHandoff is always newest, so never deleted) and hard-deletes the
rest, best-effort. Omitting retain (the default empty block) disables
pruning entirely — same non-destructive-by-default posture the manual
dated archive relies on.
production.handoff.retain?
Section titled “production.handoff.retain?”
optionalretain?:number
production.hooks
Section titled “production.hooks”hooks:
object
production.hooks.preToolUseBuildGate
Section titled “production.hooks.preToolUseBuildGate”preToolUseBuildGate:
true=true
production.hooks.sessionStart
Section titled “production.hooks.sessionStart”sessionStart:
boolean
production.hooks.stopReminder
Section titled “production.hooks.stopReminder”stopReminder:
boolean
production.hooks.userPromptSubmit
Section titled “production.hooks.userPromptSubmit”userPromptSubmit:
boolean
production.logging
Section titled “production.logging”logging:
object
Operational diagnostic logging (Phase 80, Post-v1.0 observability).
Persistent default for the structured stderr logger. Env vars override
these at runtime: CADENCE_LOG_LEVEL > logging.level, and
CADENCE_LOG_FORMAT > logging.format. format omitted → the logger
picks pretty on a TTY, else json. Default level silent = off.
Distinct from telemetry/skillAudit (user-behavior tracking).
production.logging.format?
Section titled “production.logging.format?”
optionalformat?:"pretty"|"json"
production.logging.level
Section titled “production.logging.level”level:
"info"|"warn"|"error"|"silent"|"debug"|"trace"
production.loopEnforcement
Section titled “production.loopEnforcement”loopEnforcement:
"strict"
production.modelPerClass
Section titled “production.modelPerClass”modelPerClass:
object
Model id per task class, read by classifyTaskExecution
(packages/core/src/dispatch/policy.ts) to resolve the model field it
attaches to each task’s dispatch plan entry.
production.modelPerClass.complex
Section titled “production.modelPerClass.complex”complex:
string
production.modelPerClass.drafting
Section titled “production.modelPerClass.drafting”drafting:
string
production.modelPerClass.mechanical
Section titled “production.modelPerClass.mechanical”mechanical:
string
production.modelPerClass.standard
Section titled “production.modelPerClass.standard”standard:
string
production.notify
Section titled “production.notify”notify:
object
production.notify.file?
Section titled “production.notify.file?”
optionalfile?:string
Path for the file transport. Defaults to .cadence/anomalies.log.
production.notify.transport
Section titled “production.notify.transport”transport:
"file"|"stderr"|"none"|"webhook"
Anomaly-event transport. stderr (default) writes one line per event;
file appends NDJSON to notify.file; none drops events;
webhook POSTs {events: [...]} JSON to notify.webhook.url
(Phase 19.1). Only fires when 'anomaly-notify' is in the
effective gate set.
production.notify.webhook?
Section titled “production.notify.webhook?”
optionalwebhook?:object
Webhook target for the webhook transport (Phase 19.1). Required
when transport === ‘webhook’; ignored otherwise. URL is sensitive
(may carry a token); never logged on failure.
production.notify.webhook.headers?
Section titled “production.notify.webhook.headers?”
optionalheaders?:Record<string,string>
production.notify.webhook.timeoutMs?
Section titled “production.notify.webhook.timeoutMs?”
optionaltimeoutMs?:number
production.notify.webhook.url
Section titled “production.notify.webhook.url”url:
string
production.packs
Section titled “production.packs”packs:
object
production.packs.disabled
Section titled “production.packs.disabled”disabled:
string[]
production.packs.enabled
Section titled “production.packs.enabled”enabled:
string[]
production.perTaskVerifier
Section titled “production.perTaskVerifier”perTaskVerifier:
object
production.perTaskVerifier.model?
Section titled “production.perTaskVerifier.model?”
optionalmodel?:string
Optional model override for the Anthropic provider.
production.perTaskVerifier.provider
Section titled “production.perTaskVerifier.provider”provider:
"local"|"mock"|"anthropic"|"host-cli"
Per-task verifier provider selection (Phase 24.2). Fires at
cadence build task <id> --status=DONE when 'per-task-verify'
is in the effective gate set (strict×standard, strict×complex).
production.phaseGuard
Section titled “production.phaseGuard”phaseGuard:
object
Phase-collision guard (Phase 83, v1.18 worktree-safety). Refuses to
scaffold a phase number already claimed by a sibling git worktree or by
origin/<integrationRef>, so a cross-worktree collision fails loud before
wasted work instead of silently dual-merging. Observes ground truth (the
worktree list + upstream tree) — no reservation registry. enabled: false
disables the guard entirely; omitting the block applies the defaults.
production.phaseGuard.enabled
Section titled “production.phaseGuard.enabled”enabled:
boolean
production.phaseGuard.integrationRef
Section titled “production.phaseGuard.integrationRef”integrationRef:
string
production.planReview
Section titled “production.planReview”planReview:
object
production.planReview.model?
Section titled “production.planReview.model?”
optionalmodel?:string
Optional model override for the Anthropic provider.
production.planReview.provider
Section titled “production.planReview.provider”provider:
"local"|"mock"|"anthropic"|"host-cli"
Plan-review verifier provider selection (Phase 25.1). Fires at
cadence draft approve when 'plan-review' is in the effective
gate set (strict×complex). pass=false refuses approve unless
--allow-plan-review-failure.
production.profile
Section titled “production.profile”profile:
"strict"|"standard"|"auto"
User-involvement profile per DESIGN.md Section 3.1. Defaults to auto.
production.recommendations
Section titled “production.recommendations”recommendations:
object
Recommendation retention (Phase 102, v1.24). autoArchive (default true)
soft-archives a rec the moment it reaches a terminal state: shipped/rejected
immediately on promote, and a converted rec when its phase completes SETTLE.
Archival is recoverable (recommendation unarchive), so unlike handoff.retain
(a hard delete, opt-in) this defaults on. Set false to keep terminal recs in
the active ledger; manual recommendation archive still works either way.
autoRoute (Phase 242, default true) is the settle-time writer that turns
identified code-review findings into source: 'review' recommendations
instead of leaving them stranded in the SUMMARY. Routing is dedup-safe
(keyed on Finding.id, never mints a duplicate) and best-effort (a routing
failure never blocks settle), so — like autoArchive — it defaults on. Set
false to keep settle’s ledger writes limited to the existing auto-archive
hook.
production.recommendations.autoArchive
Section titled “production.recommendations.autoArchive”autoArchive:
boolean
production.recommendations.autoRoute
Section titled “production.recommendations.autoRoute”autoRoute:
boolean
production.redundantWorkEnforcement
Section titled “production.redundantWorkEnforcement”redundantWorkEnforcement:
"warn"|"block"|"off"
Redundant-work enforcement mode (subagent task-redundancy monitoring).
off — the check never runs. warn (default) — an edit touching a file
owned by an already-terminal (DONE/DONE_WITH_CONCERNS) task is only
notified via anomaly-notify. block — handlePreToolEdit refuses the
edit, and the SubagentStop safety net hard-blocks the subagent’s stop.
A third off value exists (unlike boundaryEnforcement) because
re-touching finished work is a more subjective, more commonly legitimate
signal than an out-of-boundary edit. Overridable per-phase via DRAFT
frontmatter, mirroring boundaryEnforcement.
production.resume
Section titled “production.resume”resume:
object
Resume cross-worktree discovery (Phase 142/143, v1.38 cross-worktree-handoff-discovery).
Configures cadence resume behavior when multiple handoff candidates exist across git
worktrees. crossWorktree: false disables discovery entirely (today’s exact behavior).
autoList: true means when 2+ candidates exist, the interactive picker opens
automatically instead of just nudging. Omitting the block applies the defaults.
production.resume.autoList
Section titled “production.resume.autoList”autoList:
boolean
production.resume.crossWorktree
Section titled “production.resume.crossWorktree”crossWorktree:
boolean
production.resume.remoteCheck
Section titled “production.resume.remoteCheck”remoteCheck:
boolean
Origin-freshness probe on resume (fetch + behind-count). The fetch
touches remote-tracking refs only. false = never probe.
production.retro
Section titled “production.retro”retro:
object
Post-settle retro artifact (Phase 174, rec-20260712-001). enabled
(default true) is the master switch: on every successful settle,
synthesize a friction digest from the SUMMARY already assembled and
write <draftId>-RETRO.json/.md alongside it. offerGithubIssue
(default true) is a sub-toggle — when the digest is non-empty and the
run is interactive, offer to file a GitHub issue via gh. Setting
enabled: false disables both the artifact and the offer; setting only
offerGithubIssue: false keeps the artifact but never prompts.
production.retro.enabled
Section titled “production.retro.enabled”enabled:
boolean
production.retro.offerGithubIssue
Section titled “production.retro.offerGithubIssue”offerGithubIssue:
boolean
production.ruleProvider
Section titled “production.ruleProvider”ruleProvider:
string
production.schemaVersion
Section titled “production.schemaVersion”schemaVersion:
1
production.securityAudit
Section titled “production.securityAudit”securityAudit:
object
production.securityAudit.model?
Section titled “production.securityAudit.model?”
optionalmodel?:string
Optional model override for the Anthropic provider.
production.securityAudit.provider
Section titled “production.securityAudit.provider”provider:
"local"|"mock"|"anthropic"|"host-cli"
Security-audit verifier provider selection (Phase 25.2). Fires at
cadence settle run (after code-review, before SUMMARY write)
when 'security-audit' is in the effective gate set
(strict×complex only). CRITICAL findings refuse settle unless
--force / --allow-security-audit-failure.
production.skillAudit
Section titled “production.skillAudit”skillAudit:
object
production.skillAudit.required
Section titled “production.skillAudit.required”required:
string[]
production.specReview
Section titled “production.specReview”specReview:
object
production.specReview.model?
Section titled “production.specReview.model?”
optionalmodel?:string
production.specReview.provider
Section titled “production.specReview.provider”provider:
"local"|"mock"|"anthropic"|"host-cli"
production.subagentPolicy
Section titled “production.subagentPolicy”subagentPolicy:
object
Thresholds consumed by packages/core/src/dispatch/policy.ts’s
classifyTaskExecution to decide, per task, whether execution should be
dispatch or inline (batch-size, size, and context-budget signals).
production.subagentPolicy.contextBudgetThreshold
Section titled “production.subagentPolicy.contextBudgetThreshold”contextBudgetThreshold:
number
production.subagentPolicy.largeTaskTokens
Section titled “production.subagentPolicy.largeTaskTokens”largeTaskTokens:
number
production.subagentPolicy.mechanicalBatchMin
Section titled “production.subagentPolicy.mechanicalBatchMin”mechanicalBatchMin:
number
production.telemetry
Section titled “production.telemetry”telemetry:
object
production.telemetry.remoteOptIn
Section titled “production.telemetry.remoteOptIn”remoteOptIn:
boolean
production.telemetry.skillInvocations
Section titled “production.telemetry.skillInvocations”skillInvocations:
boolean
production.telemetry.tokenUtilization
Section titled “production.telemetry.tokenUtilization”tokenUtilization:
boolean
production.templates
Section titled “production.templates”templates:
object
production.templates.dir
Section titled “production.templates.dir”dir:
string
production.templates.overrides
Section titled “production.templates.overrides”overrides:
string[]
production.tier
Section titled “production.tier”tier:
object
production.tier.complex
Section titled “production.tier.complex”complex:
object
production.tier.complex.maxTasks
Section titled “production.tier.complex.maxTasks”maxTasks:
number
production.tier.complex.minTasks
Section titled “production.tier.complex.minTasks”minTasks:
number
production.tier.quickFix
Section titled “production.tier.quickFix”quickFix:
object
production.tier.quickFix.maxFiles
Section titled “production.tier.quickFix.maxFiles”maxFiles:
number
production.tier.quickFix.maxTasks
Section titled “production.tier.quickFix.maxTasks”maxTasks:
number
production.tier.standard
Section titled “production.tier.standard”standard:
object
production.tier.standard.maxFiles
Section titled “production.tier.standard.maxFiles”maxFiles:
number
production.tier.standard.maxTasks
Section titled “production.tier.standard.maxTasks”maxTasks:
number
production.uiSpecReview
Section titled “production.uiSpecReview”uiSpecReview:
object
production.uiSpecReview.model?
Section titled “production.uiSpecReview.model?”
optionalmodel?:string
production.uiSpecReview.provider
Section titled “production.uiSpecReview.provider”provider:
"local"|"mock"|"anthropic"|"host-cli"
production.verification
Section titled “production.verification”verification:
object
production.verification.coverageMode
Section titled “production.verification.coverageMode”coverageMode:
"assertion"|"mention"
How strictly an AC token must be referenced by a test (phase 108).
mention (default) — any AC-N occurrence anywhere in a matched file
counts (whole-file string search; unchanged historical behavior).
assertion — the token must appear inside an it()/test() block that
contains at least one assertion (expect( / assert / .should).
production.verification.coverageProfiles
Section titled “production.verification.coverageProfiles”coverageProfiles:
object[]
Operator-extensible assertion-coverage profiles for languages no
built-in profile claims (phase 167, T7). Add-only: an entry
claiming an extension a BUILT-IN profile already owns (.ts,
.py, .go, .rs, .php, …) is refused loudly at config-load
time, naming the collision and suggesting a fix — overriding a
built-in is not supported. Validated (regex compiles, required
fields present, no collision) by
packages/core/src/config/loader.ts via
mergeCustomProfiles (packages/core/src/verify/coverage-profiles/ registry.ts), never silently accepted or ignored.
production.verification.coverageScheme
Section titled “production.verification.coverageScheme”coverageScheme:
"bare"|"phase-qualified"
Whether an AC test-coverage token must be phase-qualified (phase 239).
bare (default) — the historical unqualified AC-N token, which
every config predating this field keeps on upgrade.
phase-qualified — the token must carry its phase-slice prefix
(239-01/AC-3), making it globally unique across the repo’s history.
NOTE on where back-compat actually lives: this field-level
.default('bare') is NOT the mechanism that keeps upgraders on
‘bare’. Core’s loadConfig merges the user’s config.json over
defaultConfig (below) before parsing, so on that path the key is
always present and this default never fires — defaultConfig
holding ‘bare’ is the real back-compat contract. This default only
covers direct schema parses where verification is present but the
key is absent. Both this default, the object-level .default({...})
literal below, and defaultConfig must all carry ‘bare’
independently (in Zod 4 the object-level literal is returned as-is,
not re-parsed through the inner field defaults).
production.verification.testCommand?
Section titled “production.verification.testCommand?”
optionaltestCommand?:string
Shell command the build-test-must-pass gate runs at settle time
(Phase 39.2). When set, settle runs it and refuses on a non-zero exit
unless --allow-failing-build / --force. When absent, the gate is
evaluated but cannot enforce — it passes with a one-time note.
production.verification.testGlobs
Section titled “production.verification.testGlobs”testGlobs:
string[]
Glob patterns the test-coverage scanner walks. Supports ** and *.
Default scans the workspace packages/**/*.test.ts(x).
production.verifier
Section titled “production.verifier”verifier:
object
production.verifier.diffCapBytes
Section titled “production.verifier.diffCapBytes”diffCapBytes:
number
Byte budget for the unified diff sent to the --deep verifier
(Phase 70). Oversized diffs are truncated with an explicit marker so
the verifier knows it saw a partial picture. Default 256KB.
production.verifier.localHeaders?
Section titled “production.verifier.localHeaders?”
optionallocalHeaders?:Record<string,string>
Phase 72: extra HTTP headers for the local provider (e.g. an
Authorization bearer for a token-gated OpenAI-compatible proxy).
Merged over the base content-type. Prefer the CADENCE_LOCAL_API_KEY
env var for the bearer; use this for arbitrary headers. Never logged.
production.verifier.maxRetries?
Section titled “production.verifier.maxRetries?”
optionalmaxRetries?:number
Phase 72: retry budget for the anthropic provider on transient
(429/5xx/network) errors. Omitted → the SDK default holds; 0 disables
retries explicitly.
production.verifier.model?
Section titled “production.verifier.model?”
optionalmodel?:string
Optional model override for the Anthropic provider.
production.verifier.provider
Section titled “production.verifier.provider”provider:
"local"|"mock"|"anthropic"|"host-cli"
--deep verifier provider selection (Phase 15). mock always works
offline; anthropic requires ANTHROPIC_API_KEY in env.
production.verifier.timeoutMs?
Section titled “production.verifier.timeoutMs?”
optionaltimeoutMs?:number
Phase 72: request timeout (ms) for the anthropic provider. Omitted →
the Anthropic SDK default holds. A transient slow call in a settle gate
should time out and retry, not hang.
production.workstreamBackend
Section titled “production.workstreamBackend”workstreamBackend:
string
solo:
object
solo.$schema?
Section titled “solo.$schema?”
optional$schema?:string
solo.acDiscipline
Section titled “solo.acDiscipline”acDiscipline:
"optional"
solo.boundaryEnforcement
Section titled “solo.boundaryEnforcement”boundaryEnforcement:
"warn"|"block"
Boundary enforcement mode (Phase 155). warn (default, back-compat) —
an out-of-boundary edit is only notified via anomaly-notify, never
blocked. block — handlePreToolEdit refuses an out-of-boundary edit at
edit time, wherever the host surfaces the touched files. Top-level (not
nested under hooks, which is boolean-only gate toggles) because a
settle-time counterpart is planned as a follow-on (rec-20260704-001).
Overridable per-phase via DRAFT frontmatter, mirroring profile.
solo.codeReview
Section titled “solo.codeReview”codeReview:
object
solo.codeReview.model?
Section titled “solo.codeReview.model?”
optionalmodel?:string
Optional model override for the Anthropic provider.
solo.codeReview.provider
Section titled “solo.codeReview.provider”provider:
"local"|"mock"|"anthropic"|"host-cli"
Code-review verifier provider selection (Phase 24.3). Fires at
cadence settle run when 'code-review' is in the effective
gate set. HIGH findings refuse settle unless --force /
--allow-code-review-failure.
solo.commitCadence
Section titled “solo.commitCadence”commitCadence:
"manual"
solo.convergence
Section titled “solo.convergence”convergence:
object
solo.convergence.maxAttempts
Section titled “solo.convergence.maxAttempts”maxAttempts:
number
solo.gates
Section titled “solo.gates”gates:
object
solo.gates.evidenceFloor
Section titled “solo.gates.evidenceFloor”evidenceFloor:
"assertion"
solo.gates.sealed
Section titled “solo.gates.sealed”sealed:
string[]
solo.handoff
Section titled “solo.handoff”handoff:
object
Handoff retention (Phase 88, v1.20). Opt-in, count-based pruning of dated
SESSION-*.md docs under .cadence/handoff/, applied at handoff-write
time (not settle — settle fires per-phase and would race the lastHandoff
pointer). retain: N keeps the N most-recent docs (the just-written
lastHandoff is always newest, so never deleted) and hard-deletes the
rest, best-effort. Omitting retain (the default empty block) disables
pruning entirely — same non-destructive-by-default posture the manual
dated archive relies on.
solo.handoff.retain?
Section titled “solo.handoff.retain?”
optionalretain?:number
solo.hooks
Section titled “solo.hooks”hooks:
object
solo.hooks.preToolUseBuildGate
Section titled “solo.hooks.preToolUseBuildGate”preToolUseBuildGate:
boolean
solo.hooks.sessionStart
Section titled “solo.hooks.sessionStart”sessionStart:
boolean
solo.hooks.stopReminder
Section titled “solo.hooks.stopReminder”stopReminder:
boolean
solo.hooks.userPromptSubmit
Section titled “solo.hooks.userPromptSubmit”userPromptSubmit:
boolean
solo.logging
Section titled “solo.logging”logging:
object
Operational diagnostic logging (Phase 80, Post-v1.0 observability).
Persistent default for the structured stderr logger. Env vars override
these at runtime: CADENCE_LOG_LEVEL > logging.level, and
CADENCE_LOG_FORMAT > logging.format. format omitted → the logger
picks pretty on a TTY, else json. Default level silent = off.
Distinct from telemetry/skillAudit (user-behavior tracking).
solo.logging.format?
Section titled “solo.logging.format?”
optionalformat?:"pretty"|"json"
solo.logging.level
Section titled “solo.logging.level”level:
"info"|"warn"|"error"|"silent"|"debug"|"trace"
solo.loopEnforcement
Section titled “solo.loopEnforcement”loopEnforcement:
"reminder"
solo.modelPerClass
Section titled “solo.modelPerClass”modelPerClass:
object
Model id per task class, read by classifyTaskExecution
(packages/core/src/dispatch/policy.ts) to resolve the model field it
attaches to each task’s dispatch plan entry.
solo.modelPerClass.complex
Section titled “solo.modelPerClass.complex”complex:
string
solo.modelPerClass.drafting
Section titled “solo.modelPerClass.drafting”drafting:
string
solo.modelPerClass.mechanical
Section titled “solo.modelPerClass.mechanical”mechanical:
string
solo.modelPerClass.standard
Section titled “solo.modelPerClass.standard”standard:
string
solo.notify
Section titled “solo.notify”notify:
object
solo.notify.file?
Section titled “solo.notify.file?”
optionalfile?:string
Path for the file transport. Defaults to .cadence/anomalies.log.
solo.notify.transport
Section titled “solo.notify.transport”transport:
"file"|"stderr"|"none"|"webhook"
Anomaly-event transport. stderr (default) writes one line per event;
file appends NDJSON to notify.file; none drops events;
webhook POSTs {events: [...]} JSON to notify.webhook.url
(Phase 19.1). Only fires when 'anomaly-notify' is in the
effective gate set.
solo.notify.webhook?
Section titled “solo.notify.webhook?”
optionalwebhook?:object
Webhook target for the webhook transport (Phase 19.1). Required
when transport === ‘webhook’; ignored otherwise. URL is sensitive
(may carry a token); never logged on failure.
solo.notify.webhook.headers?
Section titled “solo.notify.webhook.headers?”
optionalheaders?:Record<string,string>
solo.notify.webhook.timeoutMs?
Section titled “solo.notify.webhook.timeoutMs?”
optionaltimeoutMs?:number
solo.notify.webhook.url
Section titled “solo.notify.webhook.url”url:
string
solo.packs
Section titled “solo.packs”packs:
object
solo.packs.disabled
Section titled “solo.packs.disabled”disabled:
string[]
solo.packs.enabled
Section titled “solo.packs.enabled”enabled:
string[]
solo.perTaskVerifier
Section titled “solo.perTaskVerifier”perTaskVerifier:
object
solo.perTaskVerifier.model?
Section titled “solo.perTaskVerifier.model?”
optionalmodel?:string
Optional model override for the Anthropic provider.
solo.perTaskVerifier.provider
Section titled “solo.perTaskVerifier.provider”provider:
"local"|"mock"|"anthropic"|"host-cli"
Per-task verifier provider selection (Phase 24.2). Fires at
cadence build task <id> --status=DONE when 'per-task-verify'
is in the effective gate set (strict×standard, strict×complex).
solo.phaseGuard
Section titled “solo.phaseGuard”phaseGuard:
object
Phase-collision guard (Phase 83, v1.18 worktree-safety). Refuses to
scaffold a phase number already claimed by a sibling git worktree or by
origin/<integrationRef>, so a cross-worktree collision fails loud before
wasted work instead of silently dual-merging. Observes ground truth (the
worktree list + upstream tree) — no reservation registry. enabled: false
disables the guard entirely; omitting the block applies the defaults.
solo.phaseGuard.enabled
Section titled “solo.phaseGuard.enabled”enabled:
boolean
solo.phaseGuard.integrationRef
Section titled “solo.phaseGuard.integrationRef”integrationRef:
string
solo.planReview
Section titled “solo.planReview”planReview:
object
solo.planReview.model?
Section titled “solo.planReview.model?”
optionalmodel?:string
Optional model override for the Anthropic provider.
solo.planReview.provider
Section titled “solo.planReview.provider”provider:
"local"|"mock"|"anthropic"|"host-cli"
Plan-review verifier provider selection (Phase 25.1). Fires at
cadence draft approve when 'plan-review' is in the effective
gate set (strict×complex). pass=false refuses approve unless
--allow-plan-review-failure.
solo.profile
Section titled “solo.profile”profile:
"strict"|"standard"|"auto"
User-involvement profile per DESIGN.md Section 3.1. Defaults to auto.
solo.recommendations
Section titled “solo.recommendations”recommendations:
object
Recommendation retention (Phase 102, v1.24). autoArchive (default true)
soft-archives a rec the moment it reaches a terminal state: shipped/rejected
immediately on promote, and a converted rec when its phase completes SETTLE.
Archival is recoverable (recommendation unarchive), so unlike handoff.retain
(a hard delete, opt-in) this defaults on. Set false to keep terminal recs in
the active ledger; manual recommendation archive still works either way.
autoRoute (Phase 242, default true) is the settle-time writer that turns
identified code-review findings into source: 'review' recommendations
instead of leaving them stranded in the SUMMARY. Routing is dedup-safe
(keyed on Finding.id, never mints a duplicate) and best-effort (a routing
failure never blocks settle), so — like autoArchive — it defaults on. Set
false to keep settle’s ledger writes limited to the existing auto-archive
hook.
solo.recommendations.autoArchive
Section titled “solo.recommendations.autoArchive”autoArchive:
boolean
solo.recommendations.autoRoute
Section titled “solo.recommendations.autoRoute”autoRoute:
boolean
solo.redundantWorkEnforcement
Section titled “solo.redundantWorkEnforcement”redundantWorkEnforcement:
"warn"|"block"|"off"
Redundant-work enforcement mode (subagent task-redundancy monitoring).
off — the check never runs. warn (default) — an edit touching a file
owned by an already-terminal (DONE/DONE_WITH_CONCERNS) task is only
notified via anomaly-notify. block — handlePreToolEdit refuses the
edit, and the SubagentStop safety net hard-blocks the subagent’s stop.
A third off value exists (unlike boundaryEnforcement) because
re-touching finished work is a more subjective, more commonly legitimate
signal than an out-of-boundary edit. Overridable per-phase via DRAFT
frontmatter, mirroring boundaryEnforcement.
solo.resume
Section titled “solo.resume”resume:
object
Resume cross-worktree discovery (Phase 142/143, v1.38 cross-worktree-handoff-discovery).
Configures cadence resume behavior when multiple handoff candidates exist across git
worktrees. crossWorktree: false disables discovery entirely (today’s exact behavior).
autoList: true means when 2+ candidates exist, the interactive picker opens
automatically instead of just nudging. Omitting the block applies the defaults.
solo.resume.autoList
Section titled “solo.resume.autoList”autoList:
boolean
solo.resume.crossWorktree
Section titled “solo.resume.crossWorktree”crossWorktree:
boolean
solo.resume.remoteCheck
Section titled “solo.resume.remoteCheck”remoteCheck:
boolean
Origin-freshness probe on resume (fetch + behind-count). The fetch
touches remote-tracking refs only. false = never probe.
solo.retro
Section titled “solo.retro”retro:
object
Post-settle retro artifact (Phase 174, rec-20260712-001). enabled
(default true) is the master switch: on every successful settle,
synthesize a friction digest from the SUMMARY already assembled and
write <draftId>-RETRO.json/.md alongside it. offerGithubIssue
(default true) is a sub-toggle — when the digest is non-empty and the
run is interactive, offer to file a GitHub issue via gh. Setting
enabled: false disables both the artifact and the offer; setting only
offerGithubIssue: false keeps the artifact but never prompts.
solo.retro.enabled
Section titled “solo.retro.enabled”enabled:
boolean
solo.retro.offerGithubIssue
Section titled “solo.retro.offerGithubIssue”offerGithubIssue:
boolean
solo.ruleProvider
Section titled “solo.ruleProvider”ruleProvider:
string
solo.schemaVersion
Section titled “solo.schemaVersion”schemaVersion:
1
solo.securityAudit
Section titled “solo.securityAudit”securityAudit:
object
solo.securityAudit.model?
Section titled “solo.securityAudit.model?”
optionalmodel?:string
Optional model override for the Anthropic provider.
solo.securityAudit.provider
Section titled “solo.securityAudit.provider”provider:
"local"|"mock"|"anthropic"|"host-cli"
Security-audit verifier provider selection (Phase 25.2). Fires at
cadence settle run (after code-review, before SUMMARY write)
when 'security-audit' is in the effective gate set
(strict×complex only). CRITICAL findings refuse settle unless
--force / --allow-security-audit-failure.
solo.skillAudit
Section titled “solo.skillAudit”skillAudit:
object
solo.skillAudit.required
Section titled “solo.skillAudit.required”required:
string[]
solo.specReview
Section titled “solo.specReview”specReview:
object
solo.specReview.model?
Section titled “solo.specReview.model?”
optionalmodel?:string
solo.specReview.provider
Section titled “solo.specReview.provider”provider:
"local"|"mock"|"anthropic"|"host-cli"
solo.subagentPolicy
Section titled “solo.subagentPolicy”subagentPolicy:
object
Thresholds consumed by packages/core/src/dispatch/policy.ts’s
classifyTaskExecution to decide, per task, whether execution should be
dispatch or inline (batch-size, size, and context-budget signals).
solo.subagentPolicy.contextBudgetThreshold
Section titled “solo.subagentPolicy.contextBudgetThreshold”contextBudgetThreshold:
number
solo.subagentPolicy.largeTaskTokens
Section titled “solo.subagentPolicy.largeTaskTokens”largeTaskTokens:
number
solo.subagentPolicy.mechanicalBatchMin
Section titled “solo.subagentPolicy.mechanicalBatchMin”mechanicalBatchMin:
number
solo.telemetry
Section titled “solo.telemetry”telemetry:
object
solo.telemetry.remoteOptIn
Section titled “solo.telemetry.remoteOptIn”remoteOptIn:
boolean
solo.telemetry.skillInvocations
Section titled “solo.telemetry.skillInvocations”skillInvocations:
boolean
solo.telemetry.tokenUtilization
Section titled “solo.telemetry.tokenUtilization”tokenUtilization:
boolean
solo.templates
Section titled “solo.templates”templates:
object
solo.templates.dir
Section titled “solo.templates.dir”dir:
string
solo.templates.overrides
Section titled “solo.templates.overrides”overrides:
string[]
solo.tier
Section titled “solo.tier”tier:
object
solo.tier.complex
Section titled “solo.tier.complex”complex:
object
solo.tier.complex.maxTasks
Section titled “solo.tier.complex.maxTasks”maxTasks:
number
solo.tier.complex.minTasks
Section titled “solo.tier.complex.minTasks”minTasks:
number
solo.tier.quickFix
Section titled “solo.tier.quickFix”quickFix:
object
solo.tier.quickFix.maxFiles
Section titled “solo.tier.quickFix.maxFiles”maxFiles:
number
solo.tier.quickFix.maxTasks
Section titled “solo.tier.quickFix.maxTasks”maxTasks:
number
solo.tier.standard
Section titled “solo.tier.standard”standard:
object
solo.tier.standard.maxFiles
Section titled “solo.tier.standard.maxFiles”maxFiles:
number
solo.tier.standard.maxTasks
Section titled “solo.tier.standard.maxTasks”maxTasks:
number
solo.uiSpecReview
Section titled “solo.uiSpecReview”uiSpecReview:
object
solo.uiSpecReview.model?
Section titled “solo.uiSpecReview.model?”
optionalmodel?:string
solo.uiSpecReview.provider
Section titled “solo.uiSpecReview.provider”provider:
"local"|"mock"|"anthropic"|"host-cli"
solo.verification
Section titled “solo.verification”verification:
object
solo.verification.coverageMode
Section titled “solo.verification.coverageMode”coverageMode:
"assertion"|"mention"
How strictly an AC token must be referenced by a test (phase 108).
mention (default) — any AC-N occurrence anywhere in a matched file
counts (whole-file string search; unchanged historical behavior).
assertion — the token must appear inside an it()/test() block that
contains at least one assertion (expect( / assert / .should).
solo.verification.coverageProfiles
Section titled “solo.verification.coverageProfiles”coverageProfiles:
object[]
Operator-extensible assertion-coverage profiles for languages no
built-in profile claims (phase 167, T7). Add-only: an entry
claiming an extension a BUILT-IN profile already owns (.ts,
.py, .go, .rs, .php, …) is refused loudly at config-load
time, naming the collision and suggesting a fix — overriding a
built-in is not supported. Validated (regex compiles, required
fields present, no collision) by
packages/core/src/config/loader.ts via
mergeCustomProfiles (packages/core/src/verify/coverage-profiles/ registry.ts), never silently accepted or ignored.
solo.verification.coverageScheme
Section titled “solo.verification.coverageScheme”coverageScheme:
"bare"|"phase-qualified"
Whether an AC test-coverage token must be phase-qualified (phase 239).
bare (default) — the historical unqualified AC-N token, which
every config predating this field keeps on upgrade.
phase-qualified — the token must carry its phase-slice prefix
(239-01/AC-3), making it globally unique across the repo’s history.
NOTE on where back-compat actually lives: this field-level
.default('bare') is NOT the mechanism that keeps upgraders on
‘bare’. Core’s loadConfig merges the user’s config.json over
defaultConfig (below) before parsing, so on that path the key is
always present and this default never fires — defaultConfig
holding ‘bare’ is the real back-compat contract. This default only
covers direct schema parses where verification is present but the
key is absent. Both this default, the object-level .default({...})
literal below, and defaultConfig must all carry ‘bare’
independently (in Zod 4 the object-level literal is returned as-is,
not re-parsed through the inner field defaults).
solo.verification.testCommand?
Section titled “solo.verification.testCommand?”
optionaltestCommand?:string
Shell command the build-test-must-pass gate runs at settle time
(Phase 39.2). When set, settle runs it and refuses on a non-zero exit
unless --allow-failing-build / --force. When absent, the gate is
evaluated but cannot enforce — it passes with a one-time note.
solo.verification.testGlobs
Section titled “solo.verification.testGlobs”testGlobs:
string[]
Glob patterns the test-coverage scanner walks. Supports ** and *.
Default scans the workspace packages/**/*.test.ts(x).
solo.verifier
Section titled “solo.verifier”verifier:
object
solo.verifier.diffCapBytes
Section titled “solo.verifier.diffCapBytes”diffCapBytes:
number
Byte budget for the unified diff sent to the --deep verifier
(Phase 70). Oversized diffs are truncated with an explicit marker so
the verifier knows it saw a partial picture. Default 256KB.
solo.verifier.localHeaders?
Section titled “solo.verifier.localHeaders?”
optionallocalHeaders?:Record<string,string>
Phase 72: extra HTTP headers for the local provider (e.g. an
Authorization bearer for a token-gated OpenAI-compatible proxy).
Merged over the base content-type. Prefer the CADENCE_LOCAL_API_KEY
env var for the bearer; use this for arbitrary headers. Never logged.
solo.verifier.maxRetries?
Section titled “solo.verifier.maxRetries?”
optionalmaxRetries?:number
Phase 72: retry budget for the anthropic provider on transient
(429/5xx/network) errors. Omitted → the SDK default holds; 0 disables
retries explicitly.
solo.verifier.model?
Section titled “solo.verifier.model?”
optionalmodel?:string
Optional model override for the Anthropic provider.
solo.verifier.provider
Section titled “solo.verifier.provider”provider:
"local"|"mock"|"anthropic"|"host-cli"
--deep verifier provider selection (Phase 15). mock always works
offline; anthropic requires ANTHROPIC_API_KEY in env.
solo.verifier.timeoutMs?
Section titled “solo.verifier.timeoutMs?”
optionaltimeoutMs?:number
Phase 72: request timeout (ms) for the anthropic provider. Omitted →
the Anthropic SDK default holds. A transient slow call in a settle gate
should time out and retry, not hang.
solo.workstreamBackend
Section titled “solo.workstreamBackend”workstreamBackend:
string
team:
object
team.$schema?
Section titled “team.$schema?”
optional$schema?:string
team.acDiscipline
Section titled “team.acDiscipline”acDiscipline:
"optional"|"strict"|"tier-scaled"
team.boundaryEnforcement
Section titled “team.boundaryEnforcement”boundaryEnforcement:
"warn"|"block"
Boundary enforcement mode (Phase 155). warn (default, back-compat) —
an out-of-boundary edit is only notified via anomaly-notify, never
blocked. block — handlePreToolEdit refuses an out-of-boundary edit at
edit time, wherever the host surfaces the touched files. Top-level (not
nested under hooks, which is boolean-only gate toggles) because a
settle-time counterpart is planned as a follow-on (rec-20260704-001).
Overridable per-phase via DRAFT frontmatter, mirroring profile.
team.codeReview
Section titled “team.codeReview”codeReview:
object
team.codeReview.model?
Section titled “team.codeReview.model?”
optionalmodel?:string
Optional model override for the Anthropic provider.
team.codeReview.provider
Section titled “team.codeReview.provider”provider:
"local"|"mock"|"anthropic"|"host-cli"
Code-review verifier provider selection (Phase 24.3). Fires at
cadence settle run when 'code-review' is in the effective
gate set. HIGH findings refuse settle unless --force /
--allow-code-review-failure.
team.commitCadence
Section titled “team.commitCadence”commitCadence:
"task"|"draft"|"manual"
team.convergence
Section titled “team.convergence”convergence:
object
team.convergence.maxAttempts
Section titled “team.convergence.maxAttempts”maxAttempts:
number
team.gates
Section titled “team.gates”gates:
object
team.gates.evidenceFloor
Section titled “team.gates.evidenceFloor”evidenceFloor:
"executed"
team.gates.sealed
Section titled “team.gates.sealed”sealed:
string[]
team.handoff
Section titled “team.handoff”handoff:
object
Handoff retention (Phase 88, v1.20). Opt-in, count-based pruning of dated
SESSION-*.md docs under .cadence/handoff/, applied at handoff-write
time (not settle — settle fires per-phase and would race the lastHandoff
pointer). retain: N keeps the N most-recent docs (the just-written
lastHandoff is always newest, so never deleted) and hard-deletes the
rest, best-effort. Omitting retain (the default empty block) disables
pruning entirely — same non-destructive-by-default posture the manual
dated archive relies on.
team.handoff.retain?
Section titled “team.handoff.retain?”
optionalretain?:number
team.hooks
Section titled “team.hooks”hooks:
object
team.hooks.preToolUseBuildGate
Section titled “team.hooks.preToolUseBuildGate”preToolUseBuildGate:
boolean
team.hooks.sessionStart
Section titled “team.hooks.sessionStart”sessionStart:
boolean
team.hooks.stopReminder
Section titled “team.hooks.stopReminder”stopReminder:
boolean
team.hooks.userPromptSubmit
Section titled “team.hooks.userPromptSubmit”userPromptSubmit:
boolean
team.logging
Section titled “team.logging”logging:
object
Operational diagnostic logging (Phase 80, Post-v1.0 observability).
Persistent default for the structured stderr logger. Env vars override
these at runtime: CADENCE_LOG_LEVEL > logging.level, and
CADENCE_LOG_FORMAT > logging.format. format omitted → the logger
picks pretty on a TTY, else json. Default level silent = off.
Distinct from telemetry/skillAudit (user-behavior tracking).
team.logging.format?
Section titled “team.logging.format?”
optionalformat?:"pretty"|"json"
team.logging.level
Section titled “team.logging.level”level:
"info"|"warn"|"error"|"silent"|"debug"|"trace"
team.loopEnforcement
Section titled “team.loopEnforcement”loopEnforcement:
"strict"|"soft"|"reminder"
team.modelPerClass
Section titled “team.modelPerClass”modelPerClass:
object
Model id per task class, read by classifyTaskExecution
(packages/core/src/dispatch/policy.ts) to resolve the model field it
attaches to each task’s dispatch plan entry.
team.modelPerClass.complex
Section titled “team.modelPerClass.complex”complex:
string
team.modelPerClass.drafting
Section titled “team.modelPerClass.drafting”drafting:
string
team.modelPerClass.mechanical
Section titled “team.modelPerClass.mechanical”mechanical:
string
team.modelPerClass.standard
Section titled “team.modelPerClass.standard”standard:
string
team.notify
Section titled “team.notify”notify:
object
team.notify.file?
Section titled “team.notify.file?”
optionalfile?:string
Path for the file transport. Defaults to .cadence/anomalies.log.
team.notify.transport
Section titled “team.notify.transport”transport:
"file"|"stderr"|"none"|"webhook"
Anomaly-event transport. stderr (default) writes one line per event;
file appends NDJSON to notify.file; none drops events;
webhook POSTs {events: [...]} JSON to notify.webhook.url
(Phase 19.1). Only fires when 'anomaly-notify' is in the
effective gate set.
team.notify.webhook?
Section titled “team.notify.webhook?”
optionalwebhook?:object
Webhook target for the webhook transport (Phase 19.1). Required
when transport === ‘webhook’; ignored otherwise. URL is sensitive
(may carry a token); never logged on failure.
team.notify.webhook.headers?
Section titled “team.notify.webhook.headers?”
optionalheaders?:Record<string,string>
team.notify.webhook.timeoutMs?
Section titled “team.notify.webhook.timeoutMs?”
optionaltimeoutMs?:number
team.notify.webhook.url
Section titled “team.notify.webhook.url”url:
string
team.packs
Section titled “team.packs”packs:
object
team.packs.disabled
Section titled “team.packs.disabled”disabled:
string[]
team.packs.enabled
Section titled “team.packs.enabled”enabled:
string[]
team.perTaskVerifier
Section titled “team.perTaskVerifier”perTaskVerifier:
object
team.perTaskVerifier.model?
Section titled “team.perTaskVerifier.model?”
optionalmodel?:string
Optional model override for the Anthropic provider.
team.perTaskVerifier.provider
Section titled “team.perTaskVerifier.provider”provider:
"local"|"mock"|"anthropic"|"host-cli"
Per-task verifier provider selection (Phase 24.2). Fires at
cadence build task <id> --status=DONE when 'per-task-verify'
is in the effective gate set (strict×standard, strict×complex).
team.phaseGuard
Section titled “team.phaseGuard”phaseGuard:
object
Phase-collision guard (Phase 83, v1.18 worktree-safety). Refuses to
scaffold a phase number already claimed by a sibling git worktree or by
origin/<integrationRef>, so a cross-worktree collision fails loud before
wasted work instead of silently dual-merging. Observes ground truth (the
worktree list + upstream tree) — no reservation registry. enabled: false
disables the guard entirely; omitting the block applies the defaults.
team.phaseGuard.enabled
Section titled “team.phaseGuard.enabled”enabled:
boolean
team.phaseGuard.integrationRef
Section titled “team.phaseGuard.integrationRef”integrationRef:
string
team.planReview
Section titled “team.planReview”planReview:
object
team.planReview.model?
Section titled “team.planReview.model?”
optionalmodel?:string
Optional model override for the Anthropic provider.
team.planReview.provider
Section titled “team.planReview.provider”provider:
"local"|"mock"|"anthropic"|"host-cli"
Plan-review verifier provider selection (Phase 25.1). Fires at
cadence draft approve when 'plan-review' is in the effective
gate set (strict×complex). pass=false refuses approve unless
--allow-plan-review-failure.
team.profile
Section titled “team.profile”profile:
"strict"|"standard"|"auto"
User-involvement profile per DESIGN.md Section 3.1. Defaults to auto.
team.recommendations
Section titled “team.recommendations”recommendations:
object
Recommendation retention (Phase 102, v1.24). autoArchive (default true)
soft-archives a rec the moment it reaches a terminal state: shipped/rejected
immediately on promote, and a converted rec when its phase completes SETTLE.
Archival is recoverable (recommendation unarchive), so unlike handoff.retain
(a hard delete, opt-in) this defaults on. Set false to keep terminal recs in
the active ledger; manual recommendation archive still works either way.
autoRoute (Phase 242, default true) is the settle-time writer that turns
identified code-review findings into source: 'review' recommendations
instead of leaving them stranded in the SUMMARY. Routing is dedup-safe
(keyed on Finding.id, never mints a duplicate) and best-effort (a routing
failure never blocks settle), so — like autoArchive — it defaults on. Set
false to keep settle’s ledger writes limited to the existing auto-archive
hook.
team.recommendations.autoArchive
Section titled “team.recommendations.autoArchive”autoArchive:
boolean
team.recommendations.autoRoute
Section titled “team.recommendations.autoRoute”autoRoute:
boolean
team.redundantWorkEnforcement
Section titled “team.redundantWorkEnforcement”redundantWorkEnforcement:
"warn"|"block"|"off"
Redundant-work enforcement mode (subagent task-redundancy monitoring).
off — the check never runs. warn (default) — an edit touching a file
owned by an already-terminal (DONE/DONE_WITH_CONCERNS) task is only
notified via anomaly-notify. block — handlePreToolEdit refuses the
edit, and the SubagentStop safety net hard-blocks the subagent’s stop.
A third off value exists (unlike boundaryEnforcement) because
re-touching finished work is a more subjective, more commonly legitimate
signal than an out-of-boundary edit. Overridable per-phase via DRAFT
frontmatter, mirroring boundaryEnforcement.
team.resume
Section titled “team.resume”resume:
object
Resume cross-worktree discovery (Phase 142/143, v1.38 cross-worktree-handoff-discovery).
Configures cadence resume behavior when multiple handoff candidates exist across git
worktrees. crossWorktree: false disables discovery entirely (today’s exact behavior).
autoList: true means when 2+ candidates exist, the interactive picker opens
automatically instead of just nudging. Omitting the block applies the defaults.
team.resume.autoList
Section titled “team.resume.autoList”autoList:
boolean
team.resume.crossWorktree
Section titled “team.resume.crossWorktree”crossWorktree:
boolean
team.resume.remoteCheck
Section titled “team.resume.remoteCheck”remoteCheck:
boolean
Origin-freshness probe on resume (fetch + behind-count). The fetch
touches remote-tracking refs only. false = never probe.
team.retro
Section titled “team.retro”retro:
object
Post-settle retro artifact (Phase 174, rec-20260712-001). enabled
(default true) is the master switch: on every successful settle,
synthesize a friction digest from the SUMMARY already assembled and
write <draftId>-RETRO.json/.md alongside it. offerGithubIssue
(default true) is a sub-toggle — when the digest is non-empty and the
run is interactive, offer to file a GitHub issue via gh. Setting
enabled: false disables both the artifact and the offer; setting only
offerGithubIssue: false keeps the artifact but never prompts.
team.retro.enabled
Section titled “team.retro.enabled”enabled:
boolean
team.retro.offerGithubIssue
Section titled “team.retro.offerGithubIssue”offerGithubIssue:
boolean
team.ruleProvider
Section titled “team.ruleProvider”ruleProvider:
string
team.schemaVersion
Section titled “team.schemaVersion”schemaVersion:
1
team.securityAudit
Section titled “team.securityAudit”securityAudit:
object
team.securityAudit.model?
Section titled “team.securityAudit.model?”
optionalmodel?:string
Optional model override for the Anthropic provider.
team.securityAudit.provider
Section titled “team.securityAudit.provider”provider:
"local"|"mock"|"anthropic"|"host-cli"
Security-audit verifier provider selection (Phase 25.2). Fires at
cadence settle run (after code-review, before SUMMARY write)
when 'security-audit' is in the effective gate set
(strict×complex only). CRITICAL findings refuse settle unless
--force / --allow-security-audit-failure.
team.skillAudit
Section titled “team.skillAudit”skillAudit:
object
team.skillAudit.required
Section titled “team.skillAudit.required”required:
string[]
team.specReview
Section titled “team.specReview”specReview:
object
team.specReview.model?
Section titled “team.specReview.model?”
optionalmodel?:string
team.specReview.provider
Section titled “team.specReview.provider”provider:
"local"|"mock"|"anthropic"|"host-cli"
team.subagentPolicy
Section titled “team.subagentPolicy”subagentPolicy:
object
Thresholds consumed by packages/core/src/dispatch/policy.ts’s
classifyTaskExecution to decide, per task, whether execution should be
dispatch or inline (batch-size, size, and context-budget signals).
team.subagentPolicy.contextBudgetThreshold
Section titled “team.subagentPolicy.contextBudgetThreshold”contextBudgetThreshold:
number
team.subagentPolicy.largeTaskTokens
Section titled “team.subagentPolicy.largeTaskTokens”largeTaskTokens:
number
team.subagentPolicy.mechanicalBatchMin
Section titled “team.subagentPolicy.mechanicalBatchMin”mechanicalBatchMin:
number
team.telemetry
Section titled “team.telemetry”telemetry:
object
team.telemetry.remoteOptIn
Section titled “team.telemetry.remoteOptIn”remoteOptIn:
boolean
team.telemetry.skillInvocations
Section titled “team.telemetry.skillInvocations”skillInvocations:
boolean
team.telemetry.tokenUtilization
Section titled “team.telemetry.tokenUtilization”tokenUtilization:
boolean
team.templates
Section titled “team.templates”templates:
object
team.templates.dir
Section titled “team.templates.dir”dir:
string
team.templates.overrides
Section titled “team.templates.overrides”overrides:
string[]
team.tier
Section titled “team.tier”tier:
object
team.tier.complex
Section titled “team.tier.complex”complex:
object
team.tier.complex.maxTasks
Section titled “team.tier.complex.maxTasks”maxTasks:
number
team.tier.complex.minTasks
Section titled “team.tier.complex.minTasks”minTasks:
number
team.tier.quickFix
Section titled “team.tier.quickFix”quickFix:
object
team.tier.quickFix.maxFiles
Section titled “team.tier.quickFix.maxFiles”maxFiles:
number
team.tier.quickFix.maxTasks
Section titled “team.tier.quickFix.maxTasks”maxTasks:
number
team.tier.standard
Section titled “team.tier.standard”standard:
object
team.tier.standard.maxFiles
Section titled “team.tier.standard.maxFiles”maxFiles:
number
team.tier.standard.maxTasks
Section titled “team.tier.standard.maxTasks”maxTasks:
number
team.uiSpecReview
Section titled “team.uiSpecReview”uiSpecReview:
object
team.uiSpecReview.model?
Section titled “team.uiSpecReview.model?”
optionalmodel?:string
team.uiSpecReview.provider
Section titled “team.uiSpecReview.provider”provider:
"local"|"mock"|"anthropic"|"host-cli"
team.verification
Section titled “team.verification”verification:
object
team.verification.coverageMode
Section titled “team.verification.coverageMode”coverageMode:
"assertion"|"mention"
How strictly an AC token must be referenced by a test (phase 108).
mention (default) — any AC-N occurrence anywhere in a matched file
counts (whole-file string search; unchanged historical behavior).
assertion — the token must appear inside an it()/test() block that
contains at least one assertion (expect( / assert / .should).
team.verification.coverageProfiles
Section titled “team.verification.coverageProfiles”coverageProfiles:
object[]
Operator-extensible assertion-coverage profiles for languages no
built-in profile claims (phase 167, T7). Add-only: an entry
claiming an extension a BUILT-IN profile already owns (.ts,
.py, .go, .rs, .php, …) is refused loudly at config-load
time, naming the collision and suggesting a fix — overriding a
built-in is not supported. Validated (regex compiles, required
fields present, no collision) by
packages/core/src/config/loader.ts via
mergeCustomProfiles (packages/core/src/verify/coverage-profiles/ registry.ts), never silently accepted or ignored.
team.verification.coverageScheme
Section titled “team.verification.coverageScheme”coverageScheme:
"bare"|"phase-qualified"
Whether an AC test-coverage token must be phase-qualified (phase 239).
bare (default) — the historical unqualified AC-N token, which
every config predating this field keeps on upgrade.
phase-qualified — the token must carry its phase-slice prefix
(239-01/AC-3), making it globally unique across the repo’s history.
NOTE on where back-compat actually lives: this field-level
.default('bare') is NOT the mechanism that keeps upgraders on
‘bare’. Core’s loadConfig merges the user’s config.json over
defaultConfig (below) before parsing, so on that path the key is
always present and this default never fires — defaultConfig
holding ‘bare’ is the real back-compat contract. This default only
covers direct schema parses where verification is present but the
key is absent. Both this default, the object-level .default({...})
literal below, and defaultConfig must all carry ‘bare’
independently (in Zod 4 the object-level literal is returned as-is,
not re-parsed through the inner field defaults).
team.verification.testCommand?
Section titled “team.verification.testCommand?”
optionaltestCommand?:string
Shell command the build-test-must-pass gate runs at settle time
(Phase 39.2). When set, settle runs it and refuses on a non-zero exit
unless --allow-failing-build / --force. When absent, the gate is
evaluated but cannot enforce — it passes with a one-time note.
team.verification.testGlobs
Section titled “team.verification.testGlobs”testGlobs:
string[]
Glob patterns the test-coverage scanner walks. Supports ** and *.
Default scans the workspace packages/**/*.test.ts(x).
team.verifier
Section titled “team.verifier”verifier:
object
team.verifier.diffCapBytes
Section titled “team.verifier.diffCapBytes”diffCapBytes:
number
Byte budget for the unified diff sent to the --deep verifier
(Phase 70). Oversized diffs are truncated with an explicit marker so
the verifier knows it saw a partial picture. Default 256KB.
team.verifier.localHeaders?
Section titled “team.verifier.localHeaders?”
optionallocalHeaders?:Record<string,string>
Phase 72: extra HTTP headers for the local provider (e.g. an
Authorization bearer for a token-gated OpenAI-compatible proxy).
Merged over the base content-type. Prefer the CADENCE_LOCAL_API_KEY
env var for the bearer; use this for arbitrary headers. Never logged.
team.verifier.maxRetries?
Section titled “team.verifier.maxRetries?”
optionalmaxRetries?:number
Phase 72: retry budget for the anthropic provider on transient
(429/5xx/network) errors. Omitted → the SDK default holds; 0 disables
retries explicitly.
team.verifier.model?
Section titled “team.verifier.model?”
optionalmodel?:string
Optional model override for the Anthropic provider.
team.verifier.provider
Section titled “team.verifier.provider”provider:
"local"|"mock"|"anthropic"|"host-cli"
--deep verifier provider selection (Phase 15). mock always works
offline; anthropic requires ANTHROPIC_API_KEY in env.
team.verifier.timeoutMs?
Section titled “team.verifier.timeoutMs?”
optionaltimeoutMs?:number
Phase 72: request timeout (ms) for the anthropic provider. Omitted →
the Anthropic SDK default holds. A transient slow call in a settle gate
should time out and retry, not hang.
team.workstreamBackend
Section titled “team.workstreamBackend”workstreamBackend:
string