Add launch-monitoring runbook + docs-check (#434) #964
No reviewers
Labels
No labels
agent:fix_bugfix
agent:fix_conflicts
agent:fix_security
agent:gap_analysis
agent:implement
agent:implement
agent:implement
agent:open_issues
agent:ready
agent:research
agent:security_audit
agent:verify
architecture
backend
blocker:hybrid
blocker:launch
blocker:limit-orders
blocker:v2
block:log_only
block:security
bug
ci
contracts
correctness
deploy
dev
devops
docs
documentation
duplicate
e2e
enhancement
epic
feature
frontend
functional-completion
gas
good first issue
governance
help wanted
high-risk
hooks
hybrid
indexer
infra
infrastructure
integrators
invalid
launch-blocker
limit-orders
localnet
localterra
low priority
missing-implementation
needs-design
ops
performance
priority
high
priority
medium
product
qa
QA
question
ready
ready
research
scripts
security
security-hardening
smartcontracts
tech-debt
testing
ux
UX
v2
verification
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
code/cl8y-dex-terraclassic!964
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "issue-434-launch-monitoring-runbook"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
SEC-G01 / #434: the stack had no runbook listing monitoring commands/queries for launch signals — only reorg-halt alerting was documented.
What this adds
docs/runbooks/launch-monitoring.md— for each launch signal: a tested command, its healthy baseline, and the escalation trigger. Covers: (1) contract/index error spikes, (2) indexer lag behind chain tip, (3) API 429/5xx, (4) large swaps, (5) large LP withdrawals, (6) blacklist hits, (7) pause-state changes, (8) the existing reorg halt. Plus a one-pass "quick sweep".scripts/check_launch_monitoring_docs.py+make check-launch-monitoring-docs(wired intomake lint) — asserts the runbook covers all 8 signals so a future edit can't silently drop one.Validated
Every command was run against the live LocalTerra/QA stack with real baselines baked into the doc — indexer lag
6,swap_eventsp99 return442,197,580,indexer_failed_blocks0,liquidity_eventsadd/remove split, the blacklist endpoint shape, and the pause query.make check-launch-monitoring-docspasses; adversarially confirmed it fails when a signal section is removed.Includes a log-grep caveat that bit me while validating: naive
grep -ci error $LOGreturned 7147 (substring "Parse error" in benign oracle WARNs), while the realERROR-level count was 4 (all genuine reorg-halt events). The runbook tells operators to match the level token after stripping ANSI, not the bare word.Note: touches the same
.PHONY/lint:lines as !961 (#433) — if both merge, it's a trivial 2-word combine on those two lines.For #434.
mentioned in issue #434
Security review — MR !964
Commit reviewed:
e3806af045e97d4cbf2f492b26dd9faab3fb767cScope: Added
docs/runbooks/launch-monitoring.md,scripts/check_launch_monitoring_docs.py,Makefilelint target, and launch-checklist Phase 4 checkbox. No application/runtime code (indexer, contracts, frontend) changed.Method: Diff review; traced operator runbook shell/SQL/curl snippets for injection, authz, secret exposure, and SSRF sinks; compared blacklist-check examples against
indexer/src/api/compliance.rs(BlacklistCheckParams.wallet).Outcome:
FINDINGS: 0medium+This MR is documentation and a static doc-coverage checker only. The runbook commands are operator-run, use fixed SQL with operator-set thresholds, quote log paths, and source on-chain-address-shaped fields from the indexer DB. The checker reads a fixed repo path with no user input. No new attack surface in deployed services, dependencies, or CI beyond substring presence checks.
Inline threads: none (no medium+ findings).
Note (below threshold): Signal 6 curl examples use
?address=but the indexer API expects?wallet=perBlacklistCheckParams— operators following the runbook literally would get wallet-less checks (blocked: false). That is an ops-doc correctness gap for SEC-G01 detection, not an exploitable vulnerability in this diff; recommend fixing in a follow-up doc pass.Resolved merge conflicts with
mainin Makefile by keeping both targets from this MR and !961:check-launch-monitoring-docs(#434) — runbook coverage checklint-log-secrets(#433) — indexer log secret scanUpdated
.PHONY, the individual targets, and thelintaggregate. Sanity:make check-launch-monitoring-docsandmake lint-log-secretsboth pass.added 5 commits
PlasticDigits:main131058d1- Merge origin/main into issue-434-launch-monitoring-runbookCompare with previous version
Security review — MR !964 (re-review)
Commit reviewed:
131058d111fdcae7f32be3d1ea9c52f8eded2e17Scope: Re-reviewed after merge with
main(Makefile conflict resolution with !961). Changes remain:docs/runbooks/launch-monitoring.md,scripts/check_launch_monitoring_docs.py,Makefilelint wiring (check-launch-monitoring-docs), and launch-checklist Phase 4 checkbox. No application/runtime code (indexer, contracts, frontend) in this diff.Method: Full diff review; traced operator runbook shell/SQL/curl snippets for injection, authz bypass, secret exposure, and SSRF sinks; verified blacklist-check examples against
indexer/src/api/compliance.rs(BlacklistCheckParams.wallet).Outcome:
FINDINGS: 0medium+This MR adds operator documentation and a static doc-coverage checker only. Runbook commands are operator-run locally: SQL uses fixed queries with operator-set numeric thresholds (
$THRESH,$THRESH_LP), log paths are quoted ("$LOG"), and on-chain-address-shaped fields come from the indexer DB or operator env. The Python checker reads a fixed repo path with no external/user input. No new attack surface in deployed services, dependencies, or CI beyond substring presence checks.Inline threads: none (no medium+ findings).
Note (below threshold, unchanged from prior review on
e3806af): Signal 6 curl examples use?address=but the indexer API expects?wallet=perBlacklistCheckParams. Operators following the runbook literally would get wallet-less checks (blocked: false). That is an ops-doc correctness gap for SEC-G01 detection, not an exploitable vulnerability in this diff; recommend fixing in a follow-up doc pass.Resolved merge conflicts with
mainin Makefile only.Combined both sides on
.PHONYandlint::lint-indexer-log-secrets+lint-log-secretsfrom main (!961)check-launch-monitoring-docsfrom this branchSanity:
make check-launch-monitoring-docspasses.added 4 commits
PlasticDigits:maina5bb1c32- Merge origin/main into issue-434-launch-monitoring-runbookCompare with previous version
Security review — MR !964
Commit reviewed:
a5bb1c32c9a60873e2709b0035cf7702ac035ddbScope: Re-reviewed after latest merge with
main(Makefile conflict resolution). Changes remain:docs/runbooks/launch-monitoring.md,scripts/check_launch_monitoring_docs.py,Makefilelint wiring (check-launch-monitoring-docs), and launch-checklist Phase 4 checkbox. No application/runtime code (indexer, contracts, frontend) in this diff.Method: Full diff review; traced operator runbook shell/SQL/curl snippets for injection, authz bypass, secret exposure, and SSRF sinks; verified blacklist-check examples against
indexer/src/api/compliance.rs(BlacklistCheckParams.wallet); confirmed prior review threads still do not apply as medium+ findings on current SHA.Outcome:
FINDINGS: 0medium+This MR adds operator documentation and a static doc-coverage checker only. Runbook commands are operator-run locally: SQL uses fixed queries with operator-set numeric thresholds (
$THRESH,$THRESH_LP), log paths are quoted ("$LOG"), and on-chain-address-shaped fields come from the indexer DB or operator env. The Python checker reads a fixed repo path with no external/user input. No new attack surface in deployed services, dependencies, or CI beyond substring presence checks.Inline threads: none (no medium+ findings).
Note (below threshold, unchanged): Signal 6 curl examples use
?address=but the indexer API expects?wallet=perBlacklistCheckParams. Operators following the runbook literally would get wallet-less checks (blocked: false). That is an ops-doc correctness gap for SEC-G01 detection, not an exploitable vulnerability in this diff; recommend fixing in a follow-up doc pass.mentioned in commit
32063409d0