Skip to content

Config errors

Codes that start with config. come from seampact.config.yaml. Each line names the file, the line and the key. Run the command again after the fix.

Code Cause and fix
config.file.missing Create seampact.config.yaml in the app folder, or pass its path with --config.
config.yaml.syntax Fix the YAML at the line and column the message gives.
config.yaml.date PHP: quote the date, such as '2026-10-26'.
config.yaml.tag PHP: remove the tag, such as !!binary or !foo. Quote the value if it must stay text.
config.yaml.merge-key PHP: write the keys in place of <<: *anchor.
config.yaml.leading-zero, config.yaml.underscore-number, config.yaml.signed-number, config.yaml.keyword-case, config.yaml.integer-range PHP and Node read this value differently. Quote it to keep it as text, or write the plain number or keyword.
config.schema A key or value of the config does not match its schema. The message after the code says which: see the list below the table.
config.key.waits The key is not read yet. Remove it from the config.
config.key.unsupported mount, frameworkRoutes and frameworkDocs belong to a server target. Remove them from this entry.
config.key.conflict You set two keys that cancel each other, such as frameworkRoutes with artefacts.bootCheck: false. Keep one.

config.schema messages and their fix:

  • 'colour' is not a key the app config takes here: Remove the key or fix its spelling.
  • The key 'id' is required here: Add the key it names.
  • The key 'mount' is '/' then segments ...: Write the prefix as /api: a leading /, no trailing /, no *, no . or .. segment, no segment starting with :.
  • 'bootCheck.frameworkRoutes' is true, false or 'strict': Write true, false or strict.
  • A source takes one form: Keep the keys of one form: path, or package with version, or release, or git. integrity goes with the last three only.
  • The key 'path' of a framework route is '/' then segments ...: Each segment is *, ** or text without ?, { or } holding at most two *. Write a route parameter as *.
Code Cause and fix
config.source.no-workspace The path folder holds neither workspace.yaml nor api.yaml. Point it at the contract folder.
config.source.local Local sources are refused (allowLocal: false or SEAMPACT_ALLOW_LOCAL=false). Use a pinned package, release or git source.
config.source.maven-unpinned A maven source names a dynamic or snapshot version. Name a release, such as 1.4.0, and pin its integrity.
config.source.apis-unread PHP: the path source compiled, but its api names are not readable. List them under workspace.apis in its workspace.yaml.
config.source.duplicate The same source name is in the app config and in the root config. Keep one.
Code Cause and fix
config.target.missing Install the package that use names. The message gives the command.
config.target.not-a-target use must name a seampact target package, not another library.
config.target.native A Maven or Composer use is generated by the Gradle or Maven plugin. Run the build; seampact compile still reads the entry.
config.target.load-failed Reinstall the package, or match its version to the CLI.
config.target.installed-unreadable PHP: vendor/composer/installed.json does not read. Run composer install again with Composer 2.
config.target.generate-failed PHP: the target’s generator failed. Update the package the message names, or report the error to its maintainers.
config.target.unknown The Gradle and Maven plugins generate io.github.jubasse:seampact-spring-boot only. Move the entry to the app whose runner generates it.
config.target.duplicate-id Give each entry of targets its own id.
config.api.unknown api or apis names an api that no source holds. Use a name from workspace.yaml.
config.api.ambiguous Two sources hold that api. Write it as <source>/<api>.
config.api.unknown-source The part before the / is not a key of sources.
Code Cause and fix
config.out.outside out must stay inside outDir.
config.out.overlap Two entries write to the same folder. Give each its own out.
config.out.case-overlap Two entries write to folders that differ only by letter case (Api and api) or by how an accent is written, or one folder is inside the other once those differences are ignored. A Windows or macOS disk sees one folder. Rename one out.
config.artefacts.unknown The target has no such artefact. The message lists the ones it has.
config.artefacts.needed An artefact needs one you switched off. Switch it on, or switch both off.
config.php.autoload-missing PHP: no PSR-4 entry of composer.json holds outDir. Add one, such as "App\\Generated\\": "src/Generated/", then run composer dump-autoload.
config.php.namespace-invalid PHP: a folder name is not a PHP namespace name. An entry id such as laravel-api needs an out such as LaravelApi. Use letters, digits and _.
config.php.namespace-ambiguous PHP: composer.json maps the folder to two namespaces. Map it to one.
config.artefacts.none Every artefact of the entry is off, so it would generate nothing. Remove the entry.
config.frameworkDocs.unsupported DRF cannot switch its framework’s document off, because seampact does not own it. Remove frameworkDocs: off, and remove your own schema view if you want no document.
config.root.unsupported Python: a monorepo root config lists this app, and the Python seampact does not read root configs yet. Remove the app from the root’s apps, or generate it with the Node CLI.
config.api.duplicate Python: one entry names the same api twice (api and apis, two sources). Keep one item.
config.file.too-large, config.file.unreadable Python: the file is over the size limit or cannot be read. Pass the path of the config file itself.
config.key.reserved Python: the config uses __proto__, constructor or prototype as a key. Rename or remove it.
Code Cause and fix
config.matrix.untested Your framework version is not tested. Accept it with allowUntested: [nestjs@13] (Spring Boot: spring-boot@5) on the entry, or install a tested one. With checks.matrix: error it fails.
config.matrix.untested-minor Your Django, DRF or Ninja minor is not tested, in a tested major: a warning, or an error under checks.matrix: error. Install a tested minor the message lists, or keep yours under the default level.
config.matrix.incompatible Install a framework version the message lists.
config.matrix.unknown-framework Write the allowUntested item as <framework>@<major> for the framework this target serves (<framework>@0.<minor> for a 0.x framework).
config.matrix.allowed-tested That major is tested, so the item does nothing. Remove it.
config.matrix.pnp-unsupported Yarn Plug’n’Play hides the versions. Set nodeLinker: node-modules in .yarnrc.yml, run yarn install.
framework.version.unresolved The Gradle or Maven plugin found no Spring Boot on the compile classpath, or a version whose major it cannot read. Depend on a released Spring Boot 4.
config.own-validators.library-missing Install the validator library the message names.
config.matrix.row-missing (FastAPI, DRF, Ninja) Your seampact-ir has no compatibility row for the target. Install the same release of seampact-ir and the target (seampact-fastapi, seampact-drf or seampact-ninja).

See also Link errors, Monorepo and OpenAPI errors and the config reference.