Docs and verify-issue-365 for registry outage observability (#375) #892

Merged
PlasticDigits merged 1 commit from docs/verify-issue-365-registry-outage into main 2026-06-13 03:11:31 +00:00
PlasticDigits commented 2026-06-13 03:02:00 +00:00 (Migrated from gitlab.com)

Summary

Completes GitLab #375 (child of #365): integrator-facing documentation for distinguishing unregistered traders from registry LCD outage, plus a one-command regression ladder for re-verifying #365 observability after merges.

  • docs/integrators.md — new § Fee-discount registry outage: on-chain fail-closed P5 semantics, off-chain signals (GET /api/v1/health/fee-discount, LCD queries), decision table, cross-links (no duplicate tier table).
  • scripts/qa/verify-issue-365.sh + make verify-issue-365 — Postgres-only ladder: contract swap_uses_full_fee_when_discount_registry_query_fails, indexer api_fee_discount_health, frontend feeDiscountRegistryWarning unit tests.
  • Cross-links — P5, I10, skills/AGENTS_FEE_DISCOUNT_TIERS.md, docs/testing.md reference the new section and verify target.

Acceptance checklist

Criterion Command / step Result
docs/integrators.md registry-outage guidance with health + on-chain links Read § Fee-discount registry outage PASS
make verify-issue-365 exists and passes make verify-issue-365 PASS (3/3 steps)
docs/testing.md or skills doc references verify target Grep verify-issue-365 in both PASS
P5 / I10 accurate and cross-linked to integrators section Doc review PASS
Verify script PASS/FAIL summary, non-zero on failure Script output PASS

Verification checklist (third parties)

  1. git checkout docs/verify-issue-365-registry-outage && make verify-issue-365 — expect 3 PASS, exit 0.
  2. Read docs/integrators.md#fee-discount-registry-outage — actionable without reading Rust sources.
  3. make check-fee-discount-tier-docs — tier table unchanged (I10 link only).

Test plan

make verify-issue-365
make check-fee-discount-tier-docs

Related: #365 (parent), #373 (indexer health), #374 (frontend warning).


Note

Low Risk
Documentation and QA automation only; no changes to on-chain contracts, indexer runtime, or frontend production paths.

Overview
Documents fee-discount registry outage behavior for integrators (#375 / #365): on-chain P5 fail-closed to full fee_bps, off-chain health and LCD signals, and a decision table separating unregistered traders from registry unreachable.

Adds scripts/qa/verify-issue-365.sh and make verify-issue-365 — a Postgres-only ladder (auto setup-indexer-postgres when needed) that runs the P5 contract test, indexer api_fee_discount_health, and frontend feeDiscountRegistryWarning unit tests.

Cross-links only: P5, I10, docs/testing.md, and skills/AGENTS_FEE_DISCOUNT_TIERS.md now point at the new integrator section and the verify target; make help lists verify-issue-365.

Reviewed by Cursor Bugbot for commit b92a12ced3. Bugbot is set up for automated code reviews on this repo. Configure here.

## Summary Completes GitLab #375 (child of #365): integrator-facing documentation for distinguishing **unregistered** traders from **registry LCD outage**, plus a one-command regression ladder for re-verifying #365 observability after merges. - **`docs/integrators.md`** — new § [Fee-discount registry outage](docs/integrators.md#fee-discount-registry-outage): on-chain fail-closed P5 semantics, off-chain signals (`GET /api/v1/health/fee-discount`, LCD queries), decision table, cross-links (no duplicate tier table). - **`scripts/qa/verify-issue-365.sh`** + **`make verify-issue-365`** — Postgres-only ladder: contract `swap_uses_full_fee_when_discount_registry_query_fails`, indexer `api_fee_discount_health`, frontend `feeDiscountRegistryWarning` unit tests. - **Cross-links** — P5, I10, `skills/AGENTS_FEE_DISCOUNT_TIERS.md`, `docs/testing.md` reference the new section and verify target. ## Acceptance checklist | Criterion | Command / step | Result | |-----------|----------------|--------| | `docs/integrators.md` registry-outage guidance with health + on-chain links | Read § Fee-discount registry outage | **PASS** | | `make verify-issue-365` exists and passes | `make verify-issue-365` | **PASS** (3/3 steps) | | `docs/testing.md` or skills doc references verify target | Grep `verify-issue-365` in both | **PASS** | | P5 / I10 accurate and cross-linked to integrators section | Doc review | **PASS** | | Verify script PASS/FAIL summary, non-zero on failure | Script output | **PASS** | ## Verification checklist (third parties) 1. `git checkout docs/verify-issue-365-registry-outage && make verify-issue-365` — expect 3 PASS, exit 0. 2. Read `docs/integrators.md#fee-discount-registry-outage` — actionable without reading Rust sources. 3. `make check-fee-discount-tier-docs` — tier table unchanged (I10 link only). ## Test plan ```bash make verify-issue-365 make check-fee-discount-tier-docs ``` Related: #365 (parent), #373 (indexer health), #374 (frontend warning). <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Low Risk** > Documentation and QA automation only; no changes to on-chain contracts, indexer runtime, or frontend production paths. > > **Overview** > Documents **fee-discount registry outage** behavior for integrators ([#375](https://gitlab.com/PlasticDigits/cl8y-dex-terraclassic/-/work_items/375) / [#365](https://gitlab.com/PlasticDigits/cl8y-dex-terraclassic/-/work_items/365)): on-chain **P5** fail-closed to full `fee_bps`, off-chain health and LCD signals, and a **decision table** separating unregistered traders from registry unreachable. > > Adds **`scripts/qa/verify-issue-365.sh`** and **`make verify-issue-365`** — a Postgres-only ladder (auto **`setup-indexer-postgres`** when needed) that runs the P5 contract test, indexer **`api_fee_discount_health`**, and frontend **`feeDiscountRegistryWarning`** unit tests. > > **Cross-links** only: P5, I10, **`docs/testing.md`**, and **`skills/AGENTS_FEE_DISCOUNT_TIERS.md`** now point at the new integrator section and the verify target; **`make help`** lists **`verify-issue-365`**. > > <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit b92a12ced36a5b803b78fa13637005d9f017968c. Bugbot is set up for automated code reviews on this repo. Configure [here](https://www.cursor.com/dashboard/bugbot).</sup> <!-- /CURSOR_SUMMARY -->
ghost1 commented 2026-06-13 03:02:08 +00:00 (Migrated from gitlab.com)

changed the description

changed the description
ghost1 commented 2026-06-13 03:02:17 +00:00 (Migrated from gitlab.com)

changed the description

changed the description
PlasticDigits commented 2026-06-13 03:03:38 +00:00 (Migrated from gitlab.com)

Security review

Commit reviewed: b92a12ced36a5b803b78fa13637005d9f017968c
Scope: 7 files — integrator/audit/tier docs (docs/integrators.md registry-outage section, cross-links), scripts/qa/verify-issue-365.sh, make verify-issue-365 in Makefile, skills/testing references. No changes to CosmWasm contracts, indexer runtime handlers, frontend production paths, or dependencies.

Method: Full MR diff review; traced attacker-controlled input to sinks in modified code; compared verify-issue-365.sh to existing verify-issue-369.sh bootstrap pattern. Prior MR security-review threads: none.

Outcome: FINDINGS: 0 medium+

Summary

This MR is documentation and developer QA automation only. The new verify script uses set -euo pipefail, hardcoded cargo test / npm run test:run invocations (no user/CI parameters interpolated into shell), and optional make setup-indexer-postgres bootstrap — same trusted-local pattern as other verify-issue-* ladders. The integrator doc section describes existing P5/I10 fail-closed on-chain behavior and public health-endpoint fields; it does not expose secrets and includes guidance not to publish per-trader registry errors on public APIs.

No injection, authz bypass, SSRF, XSS, path traversal, secret leakage, or supply-chain changes were introduced in this diff.

Inline threads: none (no medium+ findings).

## Security review **Commit reviewed:** `b92a12ced36a5b803b78fa13637005d9f017968c` **Scope:** 7 files — integrator/audit/tier docs (`docs/integrators.md` registry-outage section, cross-links), `scripts/qa/verify-issue-365.sh`, `make verify-issue-365` in `Makefile`, skills/testing references. No changes to CosmWasm contracts, indexer runtime handlers, frontend production paths, or dependencies. **Method:** Full MR diff review; traced attacker-controlled input to sinks in modified code; compared `verify-issue-365.sh` to existing `verify-issue-369.sh` bootstrap pattern. Prior MR security-review threads: none. **Outcome:** `FINDINGS: 0` medium+ ### Summary This MR is documentation and developer QA automation only. The new verify script uses `set -euo pipefail`, hardcoded `cargo test` / `npm run test:run` invocations (no user/CI parameters interpolated into shell), and optional `make setup-indexer-postgres` bootstrap — same trusted-local pattern as other `verify-issue-*` ladders. The integrator doc section describes existing P5/I10 fail-closed on-chain behavior and public health-endpoint fields; it does not expose secrets and includes guidance not to publish per-trader registry errors on public APIs. No injection, authz bypass, SSRF, XSS, path traversal, secret leakage, or supply-chain changes were introduced in this diff. **Inline threads:** none (no medium+ findings).
PlasticDigits commented 2026-06-13 03:11:31 +00:00 (Migrated from gitlab.com)

mentioned in commit edbe288781

mentioned in commit edbe288781a51b224e9eed9971de563c09ef1260
PlasticDigits (Migrated from gitlab.com) merged commit edbe288781 into main 2026-06-13 03:11:31 +00:00
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!892
No description provided.