abhigyanpatwari/GitNexus · error · Error
Unsupported group.yaml version: ${raw.version}. Expected 1.
Error message
Unsupported group.yaml version: ${raw.version}. Expected 1. What it means
Thrown by parseGroupConfig when the 'version' field is present but not equal to 1. Only version 1 is implemented; any other value (2, '1.0', a string, etc.) is rejected. This guards forward/backward incompatibility explicitly rather than silently misinterpreting a newer manifest.
Source
Thrown at gitnexus/src/core/group/config-parser.ts:55
const DEFAULT_MATCHING = {
bm25_threshold: 0.7,
embedding_threshold: 0.65,
max_candidates_per_step: 3,
exclude_links_paths: [] as string[],
exclude_links_param_only_paths: false,
};
export function parseGroupConfig(yamlContent: string): GroupConfig {
const raw = yaml.load(yamlContent, { schema: yaml.JSON_SCHEMA }) as Record<string, unknown>;
if (!raw || typeof raw !== 'object' || Array.isArray(raw)) {
throw new Error('Invalid YAML: expected an object');
}
if (raw.version === undefined) throw new Error('version is required in group.yaml');
if (raw.version !== 1) {
throw new Error(`Unsupported group.yaml version: ${raw.version}. Expected 1.`);
}
if (!raw.name || typeof raw.name !== 'string') throw new Error('name is required in group.yaml');
if (!raw.repos || typeof raw.repos !== 'object' || Array.isArray(raw.repos)) {
throw new Error('repos is required in group.yaml (must be a mapping)');
}
const repos = raw.repos as Record<string, string>;
const repoPaths = new Set(Object.keys(repos));
const rawLinks = (raw.links as unknown[]) || [];
const links: GroupManifestLink[] = rawLinks.map((l: unknown, i: number) => {
const link = l as Record<string, unknown>;
if (!link.from || !repoPaths.has(link.from as string)) {
throw new Error(`links[${i}].from "${link.from}" does not match any repo path in group`);
}
if (!link.to || !repoPaths.has(link.to as string)) {
throw new Error(`links[${i}].to "${link.to}" does not match any repo path in group`);
}View on GitHub (pinned to d540b00184)
Solutions
- Set `version: 1` (the integer literal, no quotes, no decimal) — the only supported value.
- If you genuinely need a newer manifest format, upgrade GitNexus to a build that supports that version.
- If migrating an old unversioned manifest, set version: 1 and audit the remaining fields against the v1 schema.
Example fix
# before — float parsed by YAML, not the integer 1 version: 1.0 # after version: 1
Defensive patterns
Strategy: validation
Validate before calling
const raw = yaml.load(text, { schema: yaml.JSON_SCHEMA }) as Record<string, unknown>;
if (raw.version !== 1) {
throw new Error(`manifest version ${String(raw.version)} not supported by this build`);
} Type guard
function isSupportedVersion(v: unknown): v is 1 { return v === 1; } Prevention
- Write `version: 1` as a bare integer literal — avoid quotes or decimals that YAML may parse differently.
- When upgrading GitNexus, re-check which manifest versions this build supports.
- If authoring for a future format, wait for a GitNexus build that declares support for that version.
When it happens
Trigger: A group.yaml with version: 2, version: '1.0' (string), version: 0, or any non-1 value.
Common situations: An old manifest predating versioning (version set to something legacy); a manifest written for a future GitNexus version not yet supported by this build; a typo like version: 1.0 (float) which js-yaml parses to the number 1 in JSON_SCHEMA but could be 1.0 in other schemas.
Related errors
- Invalid YAML: expected an object
- version is required in group.yaml
- name is required in group.yaml
- repos is required in group.yaml (must be a mapping)
- links[${i}].from "${link.from}" does not match any repo path
AI-assisted analysis of abhigyanpatwari/GitNexus@d540b00184 (2026-08-12).
Data as JSON: /api/errors/596e899181614c2d.
Report an issue: GitHub.