docs(#263): satisfy rg acceptance gate in invariants file #401

Merged
PlasticDigits merged 1 commit from cursor/verify-issue-263-rg-gate-9c0f into main 2026-06-02 13:48:02 +00:00
PlasticDigits commented 2026-06-02 13:35:59 +00:00 (Migrated from gitlab.com)

Summary

Verification pass for GitLab #263 (bulk removal of legacy TimeCurve / FeeRouter invariant prose). The bulk doc cleanup already landed on main; this MR fixes a regression in the #263 rg acceptance gate: INV-DOCS-274 / INV-DOCS-276 rows in invariants-and-business-logic.md spelled retired operator tokens inline, causing rg -i 'FeeRouter|TimeCurve\.endSale|redeemCharms|idx_timecurve' to match despite the intent being “must not appear.”

Change: Reword those two table rows + the #276 intro line to reference check-doc-retired-terms.sh / check-doc-satellite-retired-count.sh instead of listing forbidden symbols.

Issue #263 stays open per verification policy (sign-off + default e2e-anvil.sh green on a clean host).

Acceptance checklist

Criterion Command / evidence Result
No standalone retired TimeCurve sale / FeeRouter five-sink / Burrow / Leprechaun sections in invariants Read-through docs/testing/invariants-and-business-logic.md — only Arena v2 + cross-cutting + #274/#276 satellite gates PASS
TimeArena v2 (#260) table intact Anchor #timearena-v2-gitlab-260; 31+ INV-TIME-ARENA-* rows PASS
No docs/testing/archive/ or stub paragraphs test ! -d docs/testing/archive PASS
rg gate on invariants file rg -i 'FeeRouter|TimeCurve\.endSale|redeemCharms|idx_timecurve' docs/testing/invariants-and-business-logic.md → exit 1 (no matches) PASS (after this MR)
Line-count reduction ≥40% vs ~1,668 baseline wc -l docs/testing/invariants-and-business-logic.md → 480 (~71% reduction) PASS
Internal anchor links bash scripts/check-doc-anchors.sh → OK (40 anchors) PASS
P0 operator paths free of retired terms bash scripts/check-doc-retired-terms.sh PASS
Satellite doc token budget (#276) bash scripts/check-doc-satellite-retired-count.sh PASS
manual-qa-checklists.md TOC — no retired-only duplicates TOC lists #260, #87, #95, … only; primary path /arena PASS
strategy.md + guardrails agree with post-deletion map Both cite Arena v2 invariants + check-doc-anchors.sh PASS
Agent smoke (guardrails) .cursor/skills/yieldomega-guardrails/SKILL.md cites /arena, TimeArena.t.sol, anvil-arena-*, not endSale / FeeRouter ops PASS
cd frontend && npm test -- --run 103 files, 534 tests passed PASS
cd indexer && cargo test RUSTUP_TOOLCHAIN=stable + libssl-dev; unit + integration tests green PASS
bash scripts/e2e-anvil.sh (default) Exits ~8s after Kumbaya deploy: set -o pipefail + empty MockReserveCl8y: grep in seed path → EXIT trap kill 0 FAIL — pre-existing on main; not introduced by this doc diff
YIELDOMEGA_SEED_EVM_DEV_WALLETS=0 bash scripts/e2e-anvil.sh 6 passed, Done., EXIT=0 (Playwright anvil-arena-*) PASS (workaround)
E2E doc env table vs script docs/testing/e2e-anvil.md lists VITE_TIME_ARENA_*, /arena, anvil-arena-*.spec.ts PASS
Misuse vectors: VITE_FEE_ROUTER / post-end-gates in docs/testing/ rg → no matches (except strategy.md #276 budget prose) PASS
timecurve-views.md removed File absent; fee-routing-and-governance.md is Arena v2 DOUB split PASS

Follow-ups

  • Fix default scripts/e2e-anvil.sh seed step: tolerate missing MockReserveCl8y: label in deploy log (or align log label with _yieldomega_extract_addr) so YIELDOMEGA_SEED_EVM_DEV_WALLETS=1 does not abort under pipefail.
  • Optional satellite trim from prior agent note: historical TimeCurve mentions in docs/indexer/design.md, docs/onchain/cl8y-flow-audit.md, docs/qa/QA-onboarding-gitlab-issue-body.md (#274 scope).
## Summary Verification pass for GitLab [#263](https://gitlab.com/PlasticDigits/yieldomega/-/issues/263) (bulk removal of legacy TimeCurve / FeeRouter invariant prose). The bulk doc cleanup already landed on `main`; this MR fixes a **regression in the #263 `rg` acceptance gate**: `INV-DOCS-274` / `INV-DOCS-276` rows in `invariants-and-business-logic.md` spelled retired operator tokens inline, causing `rg -i 'FeeRouter|TimeCurve\.endSale|redeemCharms|idx_timecurve'` to match despite the intent being “must not appear.” **Change:** Reword those two table rows + the #276 intro line to reference `check-doc-retired-terms.sh` / `check-doc-satellite-retired-count.sh` instead of listing forbidden symbols. Issue **#263 stays open** per verification policy (sign-off + default `e2e-anvil.sh` green on a clean host). ## Acceptance checklist | Criterion | Command / evidence | Result | |-----------|-------------------|--------| | No standalone retired TimeCurve sale / FeeRouter five-sink / Burrow / Leprechaun sections in invariants | Read-through `docs/testing/invariants-and-business-logic.md` — only Arena v2 + cross-cutting + #274/#276 satellite gates | **PASS** | | **TimeArena v2 (#260)** table intact | Anchor `#timearena-v2-gitlab-260`; 31+ `INV-TIME-ARENA-*` rows | **PASS** | | No `docs/testing/archive/` or stub paragraphs | `test ! -d docs/testing/archive` | **PASS** | | `rg` gate on invariants file | `rg -i 'FeeRouter\|TimeCurve\.endSale\|redeemCharms\|idx_timecurve' docs/testing/invariants-and-business-logic.md` → exit 1 (no matches) | **PASS** (after this MR) | | Line-count reduction ≥40% vs ~1,668 baseline | `wc -l docs/testing/invariants-and-business-logic.md` → **480** (~71% reduction) | **PASS** | | Internal anchor links | `bash scripts/check-doc-anchors.sh` → OK (40 anchors) | **PASS** | | P0 operator paths free of retired terms | `bash scripts/check-doc-retired-terms.sh` | **PASS** | | Satellite doc token budget (#276) | `bash scripts/check-doc-satellite-retired-count.sh` | **PASS** | | `manual-qa-checklists.md` TOC — no retired-only duplicates | TOC lists #260, #87, #95, … only; primary path **`/arena`** | **PASS** | | `strategy.md` + guardrails agree with post-deletion map | Both cite Arena v2 invariants + `check-doc-anchors.sh` | **PASS** | | Agent smoke (guardrails) | `.cursor/skills/yieldomega-guardrails/SKILL.md` cites **`/arena`**, `TimeArena.t.sol`, `anvil-arena-*`, not `endSale` / FeeRouter ops | **PASS** | | `cd frontend && npm test -- --run` | 103 files, **534** tests passed | **PASS** | | `cd indexer && cargo test` | `RUSTUP_TOOLCHAIN=stable` + `libssl-dev`; unit + integration tests green | **PASS** | | `bash scripts/e2e-anvil.sh` (default) | Exits ~8s after Kumbaya deploy: `set -o pipefail` + empty `MockReserveCl8y:` grep in seed path → EXIT trap `kill 0` | **FAIL** — pre-existing on `main`; not introduced by this doc diff | | `YIELDOMEGA_SEED_EVM_DEV_WALLETS=0 bash scripts/e2e-anvil.sh` | **6 passed**, `Done.`, `EXIT=0` (Playwright `anvil-arena-*`) | **PASS** (workaround) | | E2E doc env table vs script | `docs/testing/e2e-anvil.md` lists `VITE_TIME_ARENA_*`, `/arena`, `anvil-arena-*.spec.ts` | **PASS** | | Misuse vectors: `VITE_FEE_ROUTER` / `post-end-gates` in `docs/testing/` | `rg` → no matches (except `strategy.md` #276 budget prose) | **PASS** | | `timecurve-views.md` removed | File absent; `fee-routing-and-governance.md` is Arena v2 DOUB split | **PASS** | ## Follow-ups - Fix default `scripts/e2e-anvil.sh` seed step: tolerate missing `MockReserveCl8y:` label in deploy log (or align log label with `_yieldomega_extract_addr`) so `YIELDOMEGA_SEED_EVM_DEV_WALLETS=1` does not abort under `pipefail`. - Optional satellite trim from prior agent note: historical TimeCurve mentions in `docs/indexer/design.md`, `docs/onchain/cl8y-flow-audit.md`, `docs/qa/QA-onboarding-gitlab-issue-body.md` ([#274](https://gitlab.com/PlasticDigits/yieldomega/-/issues/274) scope).
PlasticDigits commented 2026-06-02 13:36:04 +00:00 (Migrated from gitlab.com)

mentioned in issue #263

mentioned in issue #263
ghost1 commented 2026-06-02 13:38:19 +00:00 (Migrated from gitlab.com)

Security review

Reviewed: 780c26e64ae5ded8e374de1619285cff457af240 (merge 2f9cecea12cc922d2948fee5875e4d4c1f394045)

Scope: Documentation-only diff in docs/testing/invariants-and-business-logic.md — three table/intro rows (INV-DOCS-274-RETIRED-TERMS, #276 intro, INV-DOCS-276-SATELLITE-COUNT) reworded to reference check-doc-retired-terms.sh / check-doc-satellite-retired-count.sh instead of inlining retired v1 operator symbol strings (satisfies issue #263 rg acceptance gate).

Analysis: No added or modified executable code, dependencies, auth paths, indexer/frontend handlers, or scripts. Enforcement remains in unchanged CI scripts (scripts/check-doc-retired-terms.sh, scripts/check-doc-satellite-retired-count.sh) with the same rg denylist patterns; this MR only changes prose in the invariants doc. No attacker-controlled input sinks, injection surfaces, secret exposure, or permission-boundary changes were introduced.

Outcome: FINDINGS: 0 medium+ — no inline threads.

Security review: no medium+ findings on this diff.

## Security review **Reviewed:** `780c26e64ae5ded8e374de1619285cff457af240` (merge `2f9cecea12cc922d2948fee5875e4d4c1f394045`) **Scope:** Documentation-only diff in `docs/testing/invariants-and-business-logic.md` — three table/intro rows (`INV-DOCS-274-RETIRED-TERMS`, `#276` intro, `INV-DOCS-276-SATELLITE-COUNT`) reworded to reference `check-doc-retired-terms.sh` / `check-doc-satellite-retired-count.sh` instead of inlining retired v1 operator symbol strings (satisfies issue #263 `rg` acceptance gate). **Analysis:** No added or modified executable code, dependencies, auth paths, indexer/frontend handlers, or scripts. Enforcement remains in unchanged CI scripts (`scripts/check-doc-retired-terms.sh`, `scripts/check-doc-satellite-retired-count.sh`) with the same `rg` denylist patterns; this MR only changes prose in the invariants doc. No attacker-controlled input sinks, injection surfaces, secret exposure, or permission-boundary changes were introduced. **Outcome:** **FINDINGS: 0** medium+ — no inline threads. **Security review: no medium+ findings on this diff.**
PlasticDigits commented 2026-06-02 13:48:02 +00:00 (Migrated from gitlab.com)

mentioned in commit 2f9cecea12

mentioned in commit 2f9cecea12cc922d2948fee5875e4d4c1f394045
PlasticDigits (Migrated from gitlab.com) merged commit 2f9cecea12 into main 2026-06-02 13:48:02 +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/yieldomega!401
No description provided.