This is the record of an abcd-managed repository

abcdBetav0.16.2 · 2026-11-06

Development record

abcd launch --dry-run (and ship) in a NON-plugin-payload repo dies with a raw 'include config not found: .abcd/config/launch-payload.json' (LoadIncludes preflight in internal/core/launch/includes.go), giving the operator no idea WHY. launch preview/ship is a plugin-payload-repo feature (it needs launch-payload.json, and ship additionally needs .claude-plugin/plugin.json); a repo that ships no plugin bundle legitimately has neither and should be told so, not handed a missing-file error. Fix (loud-staging/legibility): when the launch config is absent AND the repo is not a plugin-payload repo, the dry-run should explain 'launch preview/ship applies to plugin-payload repos; this repo's release path is launch scaffold + the CHANGELOG roll + auto-release' rather than reporting a raw missing include config. Surfaced from a Testimony (non-plugin repo) onboarding session.

issueresolvedminoriss-2608270559313719

abcd launch --dry-run (and ship) in a NON-plugin-payload repo dies with a raw 'include config not found: .abcd/config/launch-payload.json' (LoadIncludes preflight in internal/core/launch/includes.go), giving the operator no idea WHY. launch preview/ship is a plugin-payload-repo feature (it needs launch-payload.json, and ship additionally needs .claude-plugin/plugin.json); a repo that ships no plugin bundle legitimately has neither and should be told so, not handed a missing-file error. Fix (loud-staging/legibility): when the launch config is absent AND the repo is not a plugin-payload repo, the dry-run should explain 'launch preview/ship applies to plugin-payload repos; this repo's release path is launch scaffold + the CHANGELOG roll + auto-release' rather than reporting a raw missing include config. Surfaced from a Testimony (non-plugin repo) onboarding session.

Corroboration (2026-09-10, autonomous-run field experiment in managed repositories). Reproduced twice more, and in one case it blocked the task outright rather than merely confusing the operator.

First reproduction: an operator ran the bare verb and was sent down a two-step dead end. abcd launch answered "pass --dry-run to preview the bundle (publishing is not wired at this stage)", advertising a flag without checking whether this repo can run it; abcd launch --dry-run then answered "include config not found: .abcd/config/launch-payload.json" and stopped. Neither message says the thing the operator needs: this repository does not use abcd launch, its releases are cut by a changelog-driven workflow, and the correct move is to roll a dated heading and merge. The repo is not misconfigured — abcd launch scaffold exists precisely to install that changelog-driven gate, and this repo has one and it works — so the tool routed an operator away from the mechanism its own sibling verb installed.

Second reproduction: a session could not run the release preview at all, on a repository that had already cut releases through abcd (0.3.1 and 0.4.0 headings stand in its CHANGELOG). Nothing in --help, abcd lint or abcd ahoy names the missing include file or says how to create one, and launch scaffold documents only the workflows and the runbook. The preview was abandoned.

Two remedies beyond the one already recorded here. Have the bare invocation detect a changelog-driven gate and name it, rather than advertising a flag that cannot run. And consider whether the dry run needs a payload include at all — the gates and the changelog composer do not — in which case the preview should run without one.

Grounds

  • pursued: an operator in a non-plugin repository reads why the preview does not apply and where their releases come from; a preview there that still ends in the raw 'include config not found' would show it wrong.

Correction, 2026-09-29

The resolution was true when it was written, and one of the two tests it names is not in the tree. 950218be8 ("feat(launch): read the declared artefact kind in every launch verb") made the dry run refuse a repository that declares no artefact kind, naming .abcd/config/artefact.json and the kinds it accepts, so the release-path message this record added applies to a repository that declares the plugin kind and has no launch payload. The same commit replaced TestLaunchDryRunInANonPayloadRepoNamesTheReleasePath with TestLaunchDryRunInANonPayloadPluginNamesTheReleasePath (this record's case) and TestLaunchDryRunWithNoDeclarationNamesItsHome (the undeclared case), both in internal/surface/cli/launch_nopayload_test.go. TestMissingPayloadConfigIsNamed still stands.

Frontmatter

idiss-2608270559313719
typeissue
lifecycleresolved
severityminor

mentions4