Troubleshooting¶
Use this when CI, DSW, render previews, release assets, or audits fail.
DSW Stack Will Not Start¶
Symptoms:
make start-ci-dswfailsDocker reports port conflicts
DSW API is unavailable at
localhost:3000
Actions:
make ci-dsw-logs
make stop-ci-dsw
Use alternate ports locally:
export DSW_CI_API_PORT=3100
export DSW_CI_MINIO_PORT=9100
export DSW_API_URL=http://localhost:3100/wizard-api
make start-ci-dsw
Metamodel Is Unsupported¶
Symptoms:
discover-upstream-compatfailsCI says a template
metamodelVersionis not coveredscheduled CI opens or updates an
automation/dsw-compat-probe-*pull request
Actions:
Read the CI summary.
Open the generated compatibility probe PR if one exists.
Confirm the PR copied the intended previous DSW/TDK runtime into
config/dsw-compat.ymland the intended pinned KM fixture assignment intoconfig/regression-evidence.yml.Let CI run full regression and strict preview evidence for the candidate. If it fails, check the official DSW metamodel notes linked in the summary, then update the DSW server image, matching TDK version, KM assignment, or compatibility code.
Run
make sync-dsw-runtime-matrixafter any manual config edit.
Do not merge a probe only because the version number looks plausible. The probe is useful because CI tests the assumption.
Existing release assets are not deleted by this failure. The new upstream tag is blocked until a runtime is proven, while already-supported metamodel ranges can continue refreshing.
Translation Audit Fails¶
Symptoms:
raw Jinja appears in a
translation.mda translation block is malformed
a sentence is split by branch logic
Actions:
Open the exact file from the audit message.
If the Markdown block is broken, regenerate the tree.
If the source unit is structurally bad, fix transform/export logic instead of hand-editing generated Markdown.
Re-run:
make audit-translation-tree
Sync or Output Audit Fails¶
Symptoms:
missing placeholder
new placeholder introduced
executable Jinja or HTML structure changed
static asset drift
Actions:
Check the failing
translation.md.Restore required placeholders such as
{name}.Avoid writing raw Jinja in translations.
Run:
make sync-translation-tree make audit-translated-template
Render Preview Fails¶
Symptoms:
PDF is missing
failed.jsonappears underoutputs/project-render/...DSW document worker errors
Actions:
Inspect
failed.json.Inspect
outputs/ci-dsw/.Confirm template
metamodelVersionmatches the DSW runtime.Confirm the Knowledge Model bundle and project fixture are compatible.
Re-run with a clean DSW stack.
Release Upload Fails¶
Symptoms:
Publish ... release assetsstep failsgh release viewsays not a git repositoryRelease.tag_name already existsgh release upload --clobberfails
Actions:
Confirm workflow commands pass
--repo "$GITHUB_REPOSITORY"togh release.Confirm workflow has
permissions: contents: write.Confirm release assets were staged under
outputs/release-assets/....If
Release.tag_name already existsappears, confirm the workflow template contains the create-then-edit fallback. This handles the case where the Git tag already exists or GitHub release APIs are briefly inconsistent.If GitHub immutable releases are enabled,
--clobbercannot overwrite assets. Disable immutability for these CI download-bucket releases or switch to run-id-specific release tags.
Scheduled Workflows Do Not Run Where Expected¶
GitHub scheduled workflows run from the repository default branch. Do not assume a schedule declared only on a non-default version branch will run there.
Use branch push, workflow_dispatch, or a default-branch control workflow when
you need to refresh version branches.
Release Asset Looks Stale¶
Remember:
release assets are refreshed only by successful scheduled runs, manual
workflow_dispatchruns, andmasterpushesrelease Git tags are stable version labels and are not moved during refresh
provenance is recorded in release notes, checksums, and workflow run metadata
If the asset is stale:
Confirm the branch CI ran after the change.
Confirm the
Stage ... release assetsstep used the expected output paths.Confirm the
Publish ... release assetsstep used--clobber.Confirm
release-notes.mdrecords the expected producing commit and run.