Fission-AI/OpenSpec · error
Invalid 'operations.
Error message
Invalid 'operations.${operationId}' field in config (must be object), ignoring this operation What it means
Warning (console.warn, non-fatal) from parseOperations in project-config reading: an entry under 'operations' in config.yaml is not an object. That single operation's configuration is skipped while the rest of the config still loads; the at-fault input is the malformed operations.<id> value.
Solutions
- Make the operation's value a mapping, e.g. 'operations: <id>: guidance: ["..."]'
- Remove the malformed operation entry
Defensive patterns
Strategy: fallback
When it happens
Trigger: Thrown at src/core/project-config.ts:143 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of Fission-AI/OpenSpec@6926ccb18a (2026-08-25).
Data as JSON: /api/errors/b0c424c8cc97430b.
Report an issue: GitHub.
Appendix: source
Thrown at src/core/project-config.ts:143
if (!raw || typeof raw !== 'object' || Array.isArray(raw)) {
console.warn(`Invalid 'operations' field in config (must be object)`);
return undefined;
}
const supported = new Set<string>(OPERATION_IDS);
const operations: OperationsConfig = {};
for (const [operationId, value] of Object.entries(raw)) {
if (!supported.has(operationId)) {
console.warn(
`Unknown operation ID '${operationId}' in config. Supported operation IDs: ${OPERATION_IDS.join(', ')}`
);
continue;
}
const typedOperationId = operationId as OperationId;
if (!value || typeof value !== 'object' || Array.isArray(value)) {
console.warn(
`Invalid 'operations.${operationId}' field in config (must be object), ignoring this operation`
);
continue;
}
const operation = value as Record<string, unknown>;
const unknownFields = Object.keys(operation).filter((field) => field !== 'guidance');
if (unknownFields.length > 0) {
console.warn(
`Unknown field(s) in 'operations.${operationId}': ${unknownFields.join(', ')}. Supported fields: guidance`
);
}
if (operation.guidance === undefined) {
continue;
}
const guidanceResult = z.array(z.string()).safeParse(operation.guidance);View on GitHub (pinned to 6926ccb18a)