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.