Pin the workflow plugin in a team harness¶
A team harness repository holds the native files a team's agents run with and a
hangar harness.lock that pins them; the
example team harness is a copyable
one, and its
ai-dlc workflow plugin section
shows the result. ai-dlc publishes the workflow plugin into
it; the harness repository decides where the plugin is on. These steps use the
example's names (harnesses/team-default, marketplace team-harness).
-
Publish, dry run first. From a prepared ai-dlc checkout (
sh scripts/bootstrap.sh --source), with the harness repository checked out beside it:uv run --locked --no-sync python scripts/publish_workflow_plugin.py \ --harness-repo ../team-harness/harnesses/team-default \ --marketplace team-harness --dry-runThe dry run writes nothing. It lists the files it would copy and prints the component ids and digests, the source commit and the marketplace entry; a harness that already has this revision reports
"status": "unchanged". Repeat with--applyto writeplugins/team-harness/ai-dlc-workflow/andnative/codex/ai-dlc-workflow/. The script refuses a target that holds anything other than an unmodified earlier publication. -
Open a pull request in the harness repository with those files. The first time, add the printed marketplace entry to
plugins/team-harness/.claude-plugin/marketplace.json; the script never edits it. -
Pin it in the lock. Re-pin with the harness repository's tooling:
hangar harness freezefrom a good run, or the example'spython scripts/relock.py harnesses/team-default --writefor a hand edit. The lock gains one component, with the printed source commit as itssource:- id: plugin:ai-dlc-workflow@team-harness digest: sha256:… # hangar's plugin digest, printed as hangar_plugin_digest path: plugins/team-harness/ai-dlc-workflow enabled: true source: git:https://github.com/Sean-Koval/ai-dlc#plugins/ai-dlc-workflow@<commit>Keep
plugins: {autoUpdate: false}in the lock, so the treatment can't change mid-experiment. -
Point
candidateat it. Inchannels.yaml, set the harness'scandidateto the newharness_digestthathangar harness checkprints.stablestays where it is: only a promotion after flightdeck's with/without comparison moves it.
Every file the script publishes, the plugin README included, is in the plugin's
plugin.lock.json and in hangar's plugin digest. Any change to
plugins/ai-dlc-workflow/ therefore gives the harness a new candidate when it is republished.
hangar pins and mounts plugin: components since
hangar#221; consuming this plugin
from the team harness repository is tracked in
hangar#139.