Relationships
#596 Support CI-friendly adversarial review artifacts for extension push
Opened by jentz · 6/8/2026· Shipped 6/8/2026
This was generated by AI during triage.
Summary
swamp extension push currently checks for a content-hash-bound adversarial review report under a system temp directory such as /tmp/swamp-extension-review/<extension>-<hash>.json.
That works for local publishing, but it is awkward to automate in GitHub Actions. A review completed on a developer machine does not survive into a clean CI runner, so CI publishing workflows emit adversarial-review warnings even when the code was reviewed elsewhere.
Evidence from GitHub Actions publish logs
In jentz/swamp-extensions, publishing runs from a clean workflow_run runner after CI succeeds. These publish runs all succeeded, but emitted the same adversarial-review warning:
- Run
27119479865, extension@jentz/aws-context-guard, 2026-06-08:/tmp/swamp-extension-review/_jentz_aws-context-guard-92f4990bdd4a480508779a8ecf753d86cd43beaee1b2dafb1587896b42516d68.json - Run
27119507505, extension@jentz/aws-rds-reservations, 2026-06-08:/tmp/swamp-extension-review/_jentz_aws-rds-reservations-8156e657841bca740df52fd2fc18091209953805152db2030567e24681f08baa.json - Run
27104269237, extension@jentz/aws-rds-inventory, 2026-06-07:/tmp/swamp-extension-review/_jentz_aws-rds-inventory-e20d841ef880a275957476c61e8a86cd83f168d48f402825070af7d3b10e3f8d.json - Run
27104121041, extension@jentz/aws-s3-bucket-audit, 2026-06-07:/tmp/swamp-extension-review/_jentz_aws-s3-bucket-audit-b97f39ca9516d1f6f67013e6ae79b478803f01255180b23fa97af1faad30e753.json - Run
27103500808, extension@jentz/aws-rds-reservations, 2026-06-07:/tmp/swamp-extension-review/_jentz_aws-rds-reservations-e2dcd2fb308fc8bd0b702ea78b3fdb44a5ad4cdbfd37ba565d9682583f9c1612.json
The repeated warning text is:
["medium"] "Adversarial review" — "/tmp/swamp-extension-review/<extension>-<hash>.json": "No adversarial review recorded for the current code — perform the review and write the report here (run with --dry-run --json for the fill-in skeleton, or see the swamp skill)."Current local dry-runs also emit reviewRuleWarnings with ruleId: adversarial-review-report, a temp-path file, and an inline skeleton.
Current CI shape
The publish workflow checks out github.event.workflow_run.head_sha, detects changed extension manifests, then runs:
swamp extension push "<extension>/manifest.yaml" --yesBecause the runner is clean, it does not have any local temp review report from prior human/agent review work.
Why current workarounds are awkward
A repo-local workaround might be possible:
- In CI, run
swamp extension push <manifest> --dry-run --json. - Extract the expected review report temp path / basename.
- Copy or materialize a matching completed review JSON.
- Re-run dry-run to verify the warning is gone.
- Publish.
But this relies on scripting around an implementation detail: the temp path and content-hash filename. It also leaves extension authors without a documented durable place to store or verify review reports.
Requested improvement
Please provide a first-class CI-friendly way to satisfy the adversarial review gate.
Possible designs:
Add a repo-local review directory flag, for example:
swamp extension push manifest.yaml --review-dir .swamp-reviews
where review files are keyed by extension content hash.
Provide review lifecycle commands:
swamp extension review init manifest.yaml --output .swamp-reviews swamp extension review check manifest.yaml --review-dir .swamp-reviewsAllow committed review artifacts using a documented stable naming convention.
Make
--jsoneasier for CI to consume by emitting one final structured object that includes:reviewRuleWarnings- expected report paths / basenames
- skeleton content
- whether publish would require confirmation
Document the recommended GitHub Actions pattern if temp-path materialization is intended.
Related issue
This is separate from Lab #583. #583 was about helper imports being shown as bogus model entries in push preview. This issue is specifically about adversarial-review report persistence and CI automation.
Shipped
Click a lifecycle step above to view its details.