Require deploy trace recording in runbooks (SEC-D12, #410) #930

Merged
PlasticDigits merged 4 commits from issue-410-deploy-trace-sec-d12 into main 2026-06-19 14:35:38 +00:00
PlasticDigits commented 2026-06-19 12:57:26 +00:00 (Migrated from gitlab.com)

Summary

Addresses #410 (SEC-D12): deploy runbooks now require operators to record git SHA, Terra Classic chain version, contract code IDs, wasm-checksums.txt, and post-deploy verification output at deploy/migration time.

What changed:

  • Added Deploy trace (audit record) checklist to docs/runbooks/launch-checklist.md Phase 1 and docs/runbooks/wasm-admin-migration.md Pre-flight
  • Added deploy trace section + post-deploy gate to docs/deployment-guide.md
  • New copy-paste template: docs/templates/deploy-trace.md (for launch tracking issue #391)
  • Doc drift guard: make check-deploy-trace-docs / make verify-issue-410
  • Agent playbook: skills/AGENTS_DEPLOY_TRACE.md
  • Cross-links in docs/supply-chain-security.md, docs/security-model.md, and related skills

Acceptance checklist (#410)

Criterion Verification Result
launch-checklist.md records git SHA, chain version, code IDs, wasm-checksums.txt grep 'Deploy trace' docs/runbooks/launch-checklist.md + make check-deploy-trace-docs PASS
wasm-admin-migration.md Pre-flight has same recording items grep 'SEC-D12' docs/runbooks/wasm-admin-migration.md + make check-deploy-trace-docs PASS
Deploy trace template placeholder for launch tracking issue test -f docs/templates/deploy-trace.md PASS

Verification checklist (third parties)

make verify-issue-410
make check-deploy-trace-docs

Manual review:

  1. Open docs/runbooks/launch-checklist.md → Phase 1 → Deploy trace (audit record)
  2. Open docs/runbooks/wasm-admin-migration.md → Pre-flight → Deploy trace (SEC-D12)
  3. Open docs/templates/deploy-trace.md — confirm all required fields (git SHA, chain version, code IDs, wasm-checksums, verification output)

Follow-ups

  • Operators should post a completed deploy trace on the launch tracking issue (#391) at the next staging/mainnet deploy; the template is ready but no live deploy trace is included in this MR (documentation-only change).
## Summary Addresses [#410](https://gitlab.com/PlasticDigits/cl8y-dex-terraclassic/-/issues/410) (SEC-D12): deploy runbooks now **require** operators to record git SHA, Terra Classic chain version, contract code IDs, `wasm-checksums.txt`, and post-deploy verification output at deploy/migration time. **What changed:** - Added **Deploy trace (audit record)** checklist to `docs/runbooks/launch-checklist.md` Phase 1 and `docs/runbooks/wasm-admin-migration.md` Pre-flight - Added deploy trace section + post-deploy gate to `docs/deployment-guide.md` - New copy-paste template: `docs/templates/deploy-trace.md` (for launch tracking issue [#391](https://gitlab.com/PlasticDigits/cl8y-dex-terraclassic/-/issues/391)) - Doc drift guard: `make check-deploy-trace-docs` / `make verify-issue-410` - Agent playbook: `skills/AGENTS_DEPLOY_TRACE.md` - Cross-links in `docs/supply-chain-security.md`, `docs/security-model.md`, and related skills ## Acceptance checklist (#410) | Criterion | Verification | Result | |-----------|--------------|--------| | `launch-checklist.md` records git SHA, chain version, code IDs, wasm-checksums.txt | `grep 'Deploy trace' docs/runbooks/launch-checklist.md` + `make check-deploy-trace-docs` | PASS | | `wasm-admin-migration.md` Pre-flight has same recording items | `grep 'SEC-D12' docs/runbooks/wasm-admin-migration.md` + `make check-deploy-trace-docs` | PASS | | Deploy trace template placeholder for launch tracking issue | `test -f docs/templates/deploy-trace.md` | PASS | ## Verification checklist (third parties) ```bash make verify-issue-410 make check-deploy-trace-docs ``` Manual review: 1. Open `docs/runbooks/launch-checklist.md` → Phase 1 → **Deploy trace (audit record)** 2. Open `docs/runbooks/wasm-admin-migration.md` → Pre-flight → **Deploy trace (SEC-D12)** 3. Open `docs/templates/deploy-trace.md` — confirm all required fields (git SHA, chain version, code IDs, wasm-checksums, verification output) ## Follow-ups - Operators should post a completed deploy trace on the launch tracking issue ([#391](https://gitlab.com/PlasticDigits/cl8y-dex-terraclassic/-/issues/391)) at the next staging/mainnet deploy; the template is ready but no live deploy trace is included in this MR (documentation-only change).
PlasticDigits commented 2026-06-19 13:00:39 +00:00 (Migrated from gitlab.com)

Security review — MR !930

Commit reviewed: 362c040d88633b84904c118b78c4c8947efcbaee
Scope: Documentation-only change (SEC-D12 / #410): deploy trace runbook gates, docs/templates/deploy-trace.md, agent playbook, doc drift guards (scripts/check_deploy_trace_docs.py, scripts/qa/verify-issue-410.sh), Makefile targets. No CosmWasm, indexer, or frontend runtime code modified.

Method: Full MR diff review; traced candidate issues (injection, secret leakage, authz, SSRF/XSS, supply-chain) to sinks; ran make check-deploy-trace-docs and make verify-issue-410 (PASS).

Outcome: FINDINGS: 0 medium+

Summary: No exploitable vulnerabilities introduced by this diff.

  • Scripts: check_deploy_trace_docs.py and verify-issue-410.sh operate on fixed repo paths with string/grep checks only — no attacker-controlled input, shell interpolation, or network I/O.
  • Deploy trace fields: Required artifacts (git SHA, chain version, code IDs, wasm-checksums.txt, factory get_config + smoke-pool-swap.sh output) are public audit metadata or on-chain query results; no instruction to paste private keys, mnemonics, or DATABASE_URL.
  • Attack surface: No new runtime endpoints, auth boundaries, dependencies, or deserialization paths.

Inline threads: None (no medium+ findings).

Security review: no medium+ findings on this diff.

## Security review — MR !930 **Commit reviewed:** `362c040d88633b84904c118b78c4c8947efcbaee` **Scope:** Documentation-only change (SEC-D12 / #410): deploy trace runbook gates, `docs/templates/deploy-trace.md`, agent playbook, doc drift guards (`scripts/check_deploy_trace_docs.py`, `scripts/qa/verify-issue-410.sh`), Makefile targets. No CosmWasm, indexer, or frontend runtime code modified. **Method:** Full MR diff review; traced candidate issues (injection, secret leakage, authz, SSRF/XSS, supply-chain) to sinks; ran `make check-deploy-trace-docs` and `make verify-issue-410` (PASS). **Outcome:** `FINDINGS: 0` medium+ **Summary:** No exploitable vulnerabilities introduced by this diff. - **Scripts:** `check_deploy_trace_docs.py` and `verify-issue-410.sh` operate on fixed repo paths with string/grep checks only — no attacker-controlled input, shell interpolation, or network I/O. - **Deploy trace fields:** Required artifacts (git SHA, chain version, code IDs, `wasm-checksums.txt`, factory `get_config` + `smoke-pool-swap.sh` output) are public audit metadata or on-chain query results; no instruction to paste private keys, mnemonics, or `DATABASE_URL`. - **Attack surface:** No new runtime endpoints, auth boundaries, dependencies, or deserialization paths. **Inline threads:** None (no medium+ findings). Security review: no medium+ findings on this diff.
PlasticDigits commented 2026-06-19 13:13:42 +00:00 (Migrated from gitlab.com)

added 9 commits

  • 362c040d...049471ed - 8 commits from branch main
  • 70ebb188 - Merge branch 'main' into issue-410-deploy-trace-sec-d12

Compare with previous version

added 9 commits <ul><li>362c040d...049471ed - 8 commits from branch <code>main</code></li><li>70ebb188 - Merge branch &#39;main&#39; into issue-410-deploy-trace-sec-d12</li></ul> [Compare with previous version](/PlasticDigits/cl8y-dex-terraclassic/-/merge_requests/212/diffs?diff_id=1861212042&start_sha=362c040d88633b84904c118b78c4c8947efcbaee)
PlasticDigits commented 2026-06-19 13:13:58 +00:00 (Migrated from gitlab.com)

Resolved merge conflicts with main.

Conflict: Makefile .PHONY line — both branches added new targets.

Resolution: Kept deploy-trace targets from this MR (check-deploy-trace-docs, verify-issue-410) and wrap-mapper smoke targets from main (smoke-wrap-mapper-pause, verify-issue-396).

Checks: make check-deploy-trace-docs and make verify-issue-410 pass on the merged branch.

Resolved merge conflicts with `main`. **Conflict:** `Makefile` `.PHONY` line — both branches added new targets. **Resolution:** Kept deploy-trace targets from this MR (`check-deploy-trace-docs`, `verify-issue-410`) and wrap-mapper smoke targets from `main` (`smoke-wrap-mapper-pause`, `verify-issue-396`). **Checks:** `make check-deploy-trace-docs` and `make verify-issue-410` pass on the merged branch.
PlasticDigits commented 2026-06-19 13:15:40 +00:00 (Migrated from gitlab.com)

Security review — MR !930

Commit reviewed: 70ebb1883694c1ff49b9b9e341215dcbbfbe2584
Scope: Documentation-only change (SEC-D12 / #410): deploy trace runbook gates, docs/templates/deploy-trace.md, agent playbook, doc drift guards (scripts/check_deploy_trace_docs.py, scripts/qa/verify-issue-410.sh), Makefile targets. No CosmWasm, indexer, or frontend runtime code modified. Re-reviewed after merge with main (conflict resolution in .PHONY only).

Method: Full MR diff review against 049471ed2a0714c4aff5b812b4670bcc0499fc75; traced candidate issues (injection, secret leakage, authz, SSRF/XSS, supply-chain) to sinks; ran make check-deploy-trace-docs and make verify-issue-410 (PASS).

Outcome: FINDINGS: 0 medium+

Summary: No exploitable vulnerabilities introduced by this diff.

  • Scripts: check_deploy_trace_docs.py and verify-issue-410.sh operate on fixed repo paths with string/grep checks only — no attacker-controlled input, shell interpolation, or network I/O.
  • Deploy trace fields: Required artifacts (git SHA, chain version, code IDs, wasm-checksums.txt, factory get_config + smoke-pool-swap.sh output) are public audit metadata or on-chain query results; no instruction to paste private keys, mnemonics, or DATABASE_URL.
  • Attack surface: No new runtime endpoints, auth boundaries, dependencies, or deserialization paths.

Prior review: Commit 362c040d had the same outcome; merge commit 70ebb188 adds no new security-relevant code paths.

Inline threads: None (no medium+ findings).

Security review: no medium+ findings on this diff.

## Security review — MR !930 **Commit reviewed:** `70ebb1883694c1ff49b9b9e341215dcbbfbe2584` **Scope:** Documentation-only change (SEC-D12 / #410): deploy trace runbook gates, `docs/templates/deploy-trace.md`, agent playbook, doc drift guards (`scripts/check_deploy_trace_docs.py`, `scripts/qa/verify-issue-410.sh`), Makefile targets. No CosmWasm, indexer, or frontend runtime code modified. Re-reviewed after merge with `main` (conflict resolution in `.PHONY` only). **Method:** Full MR diff review against `049471ed2a0714c4aff5b812b4670bcc0499fc75`; traced candidate issues (injection, secret leakage, authz, SSRF/XSS, supply-chain) to sinks; ran `make check-deploy-trace-docs` and `make verify-issue-410` (PASS). **Outcome:** `FINDINGS: 0` medium+ **Summary:** No exploitable vulnerabilities introduced by this diff. - **Scripts:** `check_deploy_trace_docs.py` and `verify-issue-410.sh` operate on fixed repo paths with string/grep checks only — no attacker-controlled input, shell interpolation, or network I/O. - **Deploy trace fields:** Required artifacts (git SHA, chain version, code IDs, `wasm-checksums.txt`, factory `get_config` + `smoke-pool-swap.sh` output) are public audit metadata or on-chain query results; no instruction to paste private keys, mnemonics, or `DATABASE_URL`. - **Attack surface:** No new runtime endpoints, auth boundaries, dependencies, or deserialization paths. **Prior review:** Commit `362c040d` had the same outcome; merge commit `70ebb188` adds no new security-relevant code paths. **Inline threads:** None (no medium+ findings). Security review: no medium+ findings on this diff.
PlasticDigits commented 2026-06-19 13:49:58 +00:00 (Migrated from gitlab.com)

added 11 commits

  • 70ebb188...e9d32c9b - 10 commits from branch main
  • 6abc30a3 - Merge branch 'main' into issue-410-deploy-trace-sec-d12

Compare with previous version

added 11 commits <ul><li>70ebb188...e9d32c9b - 10 commits from branch <code>main</code></li><li>6abc30a3 - Merge branch &#39;main&#39; into issue-410-deploy-trace-sec-d12</li></ul> [Compare with previous version](/PlasticDigits/cl8y-dex-terraclassic/-/merge_requests/212/diffs?diff_id=1861287954&start_sha=70ebb1883694c1ff49b9b9e341215dcbbfbe2584)
PlasticDigits commented 2026-06-19 13:50:02 +00:00 (Migrated from gitlab.com)

Resolved merge conflicts with latest main.

Conflicts:

  • Makefile — .PHONY and lint targets (both branches added doc-check targets)
  • docs/security-model.md — operator checklist cross-links

Resolution: Kept deploy-trace targets from this MR (check-deploy-trace-docs, verify-issue-410) and governance emergency rehearsal targets from main (check-governance-emergency-rehearsal-docs, rehearse-governance-emergency, verify-issue-397). Combined both deploy-trace and emergency-rehearsal links in security-model.md.

Checks: make check-deploy-trace-docs, make verify-issue-410, and make check-governance-emergency-rehearsal-docs pass.

Resolved merge conflicts with latest `main`. **Conflicts:** - `Makefile` — `.PHONY` and `lint` targets (both branches added doc-check targets) - `docs/security-model.md` — operator checklist cross-links **Resolution:** Kept deploy-trace targets from this MR (`check-deploy-trace-docs`, `verify-issue-410`) and governance emergency rehearsal targets from `main` (`check-governance-emergency-rehearsal-docs`, `rehearse-governance-emergency`, `verify-issue-397`). Combined both deploy-trace and emergency-rehearsal links in `security-model.md`. **Checks:** `make check-deploy-trace-docs`, `make verify-issue-410`, and `make check-governance-emergency-rehearsal-docs` pass.
PlasticDigits commented 2026-06-19 13:52:21 +00:00 (Migrated from gitlab.com)

Security review — MR !930

Commit reviewed: 6abc30a309e9ed8c4d3db8b193b285af7f458585
Scope: Documentation-only change (SEC-D12 / #410): deploy trace runbook gates, docs/templates/deploy-trace.md, agent playbook, doc drift guards (scripts/check_deploy_trace_docs.py, scripts/qa/verify-issue-410.sh), Makefile targets. No CosmWasm, indexer, or frontend runtime code modified. Re-reviewed after merge with main (current head is merge commit 6abc30a3).

Method: Full MR diff review against e9d32c9beb98f4f360388708165014e18b0bd929; traced candidate issues (injection, secret leakage, authz, SSRF/XSS, supply-chain) to sinks; ran make check-deploy-trace-docs and make verify-issue-410 (PASS).

Outcome: FINDINGS: 0 medium+

Summary: No exploitable vulnerabilities introduced by this diff.

  • Scripts: check_deploy_trace_docs.py and verify-issue-410.sh operate on fixed repo paths with string/grep checks only — no attacker-controlled input, shell interpolation, or network I/O.
  • Deploy trace fields: Required artifacts (git SHA, chain version, code IDs, wasm-checksums.txt, factory get_config + smoke-pool-swap.sh output) are public audit metadata or on-chain query results; no instruction to paste private keys, mnemonics, or DATABASE_URL.
  • Attack surface: No new runtime endpoints, auth boundaries, dependencies, or deserialization paths.

Prior review: Commits 362c040d and 70ebb188 had the same outcome; merge commit 6abc30a3 adds no new security-relevant code paths beyond conflict resolution in Makefile cross-links.

Inline threads: None (no medium+ findings).

Security review: no medium+ findings on this diff.

## Security review — MR !930 **Commit reviewed:** `6abc30a309e9ed8c4d3db8b193b285af7f458585` **Scope:** Documentation-only change (SEC-D12 / #410): deploy trace runbook gates, `docs/templates/deploy-trace.md`, agent playbook, doc drift guards (`scripts/check_deploy_trace_docs.py`, `scripts/qa/verify-issue-410.sh`), Makefile targets. No CosmWasm, indexer, or frontend runtime code modified. Re-reviewed after merge with `main` (current head is merge commit `6abc30a3`). **Method:** Full MR diff review against `e9d32c9beb98f4f360388708165014e18b0bd929`; traced candidate issues (injection, secret leakage, authz, SSRF/XSS, supply-chain) to sinks; ran `make check-deploy-trace-docs` and `make verify-issue-410` (PASS). **Outcome:** `FINDINGS: 0` medium+ **Summary:** No exploitable vulnerabilities introduced by this diff. - **Scripts:** `check_deploy_trace_docs.py` and `verify-issue-410.sh` operate on fixed repo paths with string/grep checks only — no attacker-controlled input, shell interpolation, or network I/O. - **Deploy trace fields:** Required artifacts (git SHA, chain version, code IDs, `wasm-checksums.txt`, factory `get_config` + `smoke-pool-swap.sh` output) are public audit metadata or on-chain query results; no instruction to paste private keys, mnemonics, or `DATABASE_URL`. - **Attack surface:** No new runtime endpoints, auth boundaries, dependencies, or deserialization paths. **Prior review:** Commits `362c040d` and `70ebb188` had the same outcome; merge commit `6abc30a3` adds no new security-relevant code paths beyond conflict resolution in Makefile cross-links. **Inline threads:** None (no medium+ findings). Security review: no medium+ findings on this diff.
PlasticDigits commented 2026-06-19 14:19:57 +00:00 (Migrated from gitlab.com)

added 6 commits

  • 6abc30a3...6f4fd29b - 5 commits from branch main
  • b177633c - Merge branch 'main' into issue-410-deploy-trace-sec-d12

Compare with previous version

added 6 commits <ul><li>6abc30a3...6f4fd29b - 5 commits from branch <code>main</code></li><li>b177633c - Merge branch &#39;main&#39; into issue-410-deploy-trace-sec-d12</li></ul> [Compare with previous version](/PlasticDigits/cl8y-dex-terraclassic/-/merge_requests/212/diffs?diff_id=1861349261&start_sha=6abc30a309e9ed8c4d3db8b193b285af7f458585)
PlasticDigits commented 2026-06-19 14:20:01 +00:00 (Migrated from gitlab.com)

Resolved merge conflicts with main in Makefile:

  • .PHONY: kept both check-emergency-commands-docs (from #399 on main) and check-deploy-trace-docs / verify-issue-410 (from this MR).
  • lint target: runs both doc-drift checks.

Sanity: make check-deploy-trace-docs and make check-emergency-commands-docs both pass.

Resolved merge conflicts with `main` in `Makefile`: - **`.PHONY`**: kept both `check-emergency-commands-docs` (from #399 on main) and `check-deploy-trace-docs` / `verify-issue-410` (from this MR). - **`lint` target**: runs both doc-drift checks. Sanity: `make check-deploy-trace-docs` and `make check-emergency-commands-docs` both pass.
PlasticDigits commented 2026-06-19 14:22:15 +00:00 (Migrated from gitlab.com)

Security review — MR !930

Commit reviewed: b177633c326a4a4aa5a87b6c5b85a624985a42ac
Scope: Documentation-only change (SEC-D12 / #410): deploy trace runbook gates, docs/templates/deploy-trace.md, agent playbook, doc drift guards (scripts/check_deploy_trace_docs.py, scripts/qa/verify-issue-410.sh), Makefile targets. No CosmWasm, indexer, or frontend runtime code modified. Re-reviewed after latest merge with main (head b177633c).

Method: Full MR diff review against 6f4fd29bf704c18cfc9f7c848690c4400cc9d562; traced candidate issues (injection, secret leakage, authz, SSRF/XSS, supply-chain) to sinks; ran make check-deploy-trace-docs and make verify-issue-410 (PASS).

Outcome: FINDINGS: 0 medium+

Summary: No exploitable vulnerabilities introduced by this diff.

  • Scripts: check_deploy_trace_docs.py and verify-issue-410.sh operate on fixed repo paths with string/grep checks only — no attacker-controlled input, shell interpolation, or network I/O.
  • Deploy trace fields: Required artifacts (git SHA, chain version, code IDs, wasm-checksums.txt, factory get_config + smoke-pool-swap.sh output) are public audit metadata or on-chain query results; no instruction to paste private keys, mnemonics, or DATABASE_URL.
  • Attack surface: No new runtime endpoints, auth boundaries, dependencies, or deserialization paths.

Prior review: Commits 362c040d, 70ebb188, and 6abc30a3 had the same outcome; merge commit b177633c adds no new security-relevant code paths beyond conflict resolution in Makefile cross-links.

Inline threads: None (no medium+ findings).

Security review: no medium+ findings on this diff.

## Security review — MR !930 **Commit reviewed:** `b177633c326a4a4aa5a87b6c5b85a624985a42ac` **Scope:** Documentation-only change (SEC-D12 / #410): deploy trace runbook gates, `docs/templates/deploy-trace.md`, agent playbook, doc drift guards (`scripts/check_deploy_trace_docs.py`, `scripts/qa/verify-issue-410.sh`), Makefile targets. No CosmWasm, indexer, or frontend runtime code modified. Re-reviewed after latest merge with `main` (head `b177633c`). **Method:** Full MR diff review against `6f4fd29bf704c18cfc9f7c848690c4400cc9d562`; traced candidate issues (injection, secret leakage, authz, SSRF/XSS, supply-chain) to sinks; ran `make check-deploy-trace-docs` and `make verify-issue-410` (PASS). **Outcome:** `FINDINGS: 0` medium+ **Summary:** No exploitable vulnerabilities introduced by this diff. - **Scripts:** `check_deploy_trace_docs.py` and `verify-issue-410.sh` operate on fixed repo paths with string/grep checks only — no attacker-controlled input, shell interpolation, or network I/O. - **Deploy trace fields:** Required artifacts (git SHA, chain version, code IDs, `wasm-checksums.txt`, factory `get_config` + `smoke-pool-swap.sh` output) are public audit metadata or on-chain query results; no instruction to paste private keys, mnemonics, or `DATABASE_URL`. - **Attack surface:** No new runtime endpoints, auth boundaries, dependencies, or deserialization paths. **Prior review:** Commits `362c040d`, `70ebb188`, and `6abc30a3` had the same outcome; merge commit `b177633c` adds no new security-relevant code paths beyond conflict resolution in Makefile cross-links. **Inline threads:** None (no medium+ findings). Security review: no medium+ findings on this diff.
PlasticDigits (Migrated from gitlab.com) merged commit 0e2eaa8dcf into main 2026-06-19 14:35:38 +00:00
PlasticDigits commented 2026-06-19 14:35:39 +00:00 (Migrated from gitlab.com)

mentioned in commit 0e2eaa8dcf

mentioned in commit 0e2eaa8dcf4b5f317d6f007b02c45479e96cf56f
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
code/cl8y-dex-terraclassic!930
No description provided.