diff --git a/.github/workflows/regression-lock.yml b/.github/workflows/regression-lock.yml
index 0a8498f..670ff34 100644
--- a/.github/workflows/regression-lock.yml
+++ b/.github/workflows/regression-lock.yml
@@ -107,6 +107,22 @@ jobs:
exit 1
fi
+ # --------------------------------------------------
+ # STEP 4.5 — NDJSON Strictness: no empty lines
+ # --------------------------------------------------
+ - name: NDJSON strictness (no empty lines in latest.jsonl)
+ run: |
+ set -euo pipefail
+
+ DATASET_FILE="public/dataset/latest.jsonl"
+
+ if rg -n "^[[:space:]]*$" "$DATASET_FILE"; then
+ echo "ERROR: latest.jsonl contains empty/whitespace-only lines"
+ exit 1
+ fi
+
+ echo "OK: latest.jsonl contains no empty lines"
+
# --------------------------------------------------
# STEP 5 — Refusal-on-Ambiguity Enforcement
# --------------------------------------------------
diff --git a/app/cards/etherfi/cash-card/page.tsx b/app/cards/etherfi/cash-card/page.tsx
new file mode 100644
index 0000000..1f14ee4
--- /dev/null
+++ b/app/cards/etherfi/cash-card/page.tsx
@@ -0,0 +1,77 @@
+// ENGINE_ERA: vNEXT
+import type { Metadata } from 'next';
+
+export const metadata: Metadata = {
+ title: 'ether.fi Registry_17',
+ description: '',
+ alternates: {
+ canonical: '',
+ },
+};
+
+export default function EtherfiRegistry17Page() {
+ return (
+
+
+
+
+
+ Section_A
+
+
+
+ | Column_A |
+ Column_B |
+
+
+
+
+ | Parameter_A |
+ Not disclosed |
+
+
+ | Parameter_B |
+ Not disclosed |
+
+
+ | Parameter_C |
+ Not disclosed |
+
+
+
+
+
+
+ Section_B
+
+
+
+ | Column_A |
+ Column_B |
+
+
+
+
+ | Attribute_A |
+ Not disclosed |
+
+
+ | Attribute_B |
+ Not disclosed |
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/app/cards/etherfi/dvt-technology/page.tsx b/app/cards/etherfi/dvt-technology/page.tsx
new file mode 100644
index 0000000..ea6e062
--- /dev/null
+++ b/app/cards/etherfi/dvt-technology/page.tsx
@@ -0,0 +1,77 @@
+// ENGINE_ERA: vNEXT
+import type { Metadata } from 'next';
+
+export const metadata: Metadata = {
+ title: 'ether.fi Registry_18',
+ description: '',
+ alternates: {
+ canonical: '',
+ },
+};
+
+export default function EtherfiRegistry18Page() {
+ return (
+
+
+
+
+
+ Section_A
+
+
+
+ | Column_A |
+ Column_B |
+
+
+
+
+ | Parameter_A |
+ Not disclosed |
+
+
+ | Parameter_B |
+ Not disclosed |
+
+
+ | Parameter_C |
+ Not disclosed |
+
+
+
+
+
+
+ Section_B
+
+
+
+ | Column_A |
+ Column_B |
+
+
+
+
+ | Attribute_A |
+ Not disclosed |
+
+
+ | Attribute_B |
+ Not disclosed |
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/app/cards/etherfi/page.tsx b/app/cards/etherfi/page.tsx
index b3a3c40..274c57a 100644
--- a/app/cards/etherfi/page.tsx
+++ b/app/cards/etherfi/page.tsx
@@ -146,6 +146,22 @@ export default function EtherFiPage() {
Child_Page |
Link_N |
+
+ | Child_Page |
+ Link_O |
+
+
+ | Child_Page |
+ Link_P |
+
+
+ | Child_Page |
+ Link_Q |
+
+
+ | Child_Page |
+ Link_R |
+
diff --git a/app/cards/etherfi/validator-performance/page.tsx b/app/cards/etherfi/validator-performance/page.tsx
new file mode 100644
index 0000000..a828db1
--- /dev/null
+++ b/app/cards/etherfi/validator-performance/page.tsx
@@ -0,0 +1,77 @@
+// ENGINE_ERA: vNEXT
+import type { Metadata } from 'next';
+
+export const metadata: Metadata = {
+ title: 'ether.fi Registry_19',
+ description: '',
+ alternates: {
+ canonical: '',
+ },
+};
+
+export default function EtherfiRegistry19Page() {
+ return (
+
+
+
+
+
+ Section_A
+
+
+
+ | Column_A |
+ Column_B |
+
+
+
+
+ | Parameter_A |
+ Not disclosed |
+
+
+ | Parameter_B |
+ Not disclosed |
+
+
+ | Parameter_C |
+ Not disclosed |
+
+
+
+
+
+
+ Section_B
+
+
+
+ | Column_A |
+ Column_B |
+
+
+
+
+ | Attribute_A |
+ Not disclosed |
+
+
+ | Attribute_B |
+ Not disclosed |
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/app/cards/etherfi/withdrawal-guide/page.tsx b/app/cards/etherfi/withdrawal-guide/page.tsx
new file mode 100644
index 0000000..4ddf2d5
--- /dev/null
+++ b/app/cards/etherfi/withdrawal-guide/page.tsx
@@ -0,0 +1,77 @@
+// ENGINE_ERA: vNEXT
+import type { Metadata } from 'next';
+
+export const metadata: Metadata = {
+ title: 'ether.fi Registry_20',
+ description: '',
+ alternates: {
+ canonical: '',
+ },
+};
+
+export default function EtherfiRegistry20Page() {
+ return (
+
+
+
+
+
+ Section_A
+
+
+
+ | Column_A |
+ Column_B |
+
+
+
+
+ | Parameter_A |
+ Not disclosed |
+
+
+ | Parameter_B |
+ Not disclosed |
+
+
+ | Parameter_C |
+ Not disclosed |
+
+
+
+
+
+
+ Section_B
+
+
+
+ | Column_A |
+ Column_B |
+
+
+
+
+ | Attribute_A |
+ Not disclosed |
+
+
+ | Attribute_B |
+ Not disclosed |
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/app/dex/asterdex/cross-margin/page.tsx b/app/dex/asterdex/cross-margin/page.tsx
new file mode 100644
index 0000000..1810ad9
--- /dev/null
+++ b/app/dex/asterdex/cross-margin/page.tsx
@@ -0,0 +1,77 @@
+// ENGINE_ERA: vNEXT
+import type { Metadata } from 'next';
+
+export const metadata: Metadata = {
+ title: 'AsterDEX Registry_28',
+ description: '',
+ alternates: {
+ canonical: '',
+ },
+};
+
+export default function AsterDEXRegistry28Page() {
+ return (
+
+
+
+
+
+ Section_A
+
+
+
+ | Column_A |
+ Column_B |
+
+
+
+
+ | Parameter_A |
+ Not disclosed |
+
+
+ | Parameter_B |
+ Not disclosed |
+
+
+ | Parameter_C |
+ Not disclosed |
+
+
+
+
+
+
+ Section_B
+
+
+
+ | Column_A |
+ Column_B |
+
+
+
+
+ | Attribute_A |
+ Not disclosed |
+
+
+ | Attribute_B |
+ Not disclosed |
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/app/dex/asterdex/fee-tiers/page.tsx b/app/dex/asterdex/fee-tiers/page.tsx
new file mode 100644
index 0000000..28baa8c
--- /dev/null
+++ b/app/dex/asterdex/fee-tiers/page.tsx
@@ -0,0 +1,77 @@
+// ENGINE_ERA: vNEXT
+import type { Metadata } from 'next';
+
+export const metadata: Metadata = {
+ title: 'AsterDEX Registry_29',
+ description: '',
+ alternates: {
+ canonical: '',
+ },
+};
+
+export default function AsterDEXRegistry29Page() {
+ return (
+
+
+
+
+
+ Section_A
+
+
+
+ | Column_A |
+ Column_B |
+
+
+
+
+ | Parameter_A |
+ Not disclosed |
+
+
+ | Parameter_B |
+ Not disclosed |
+
+
+ | Parameter_C |
+ Not disclosed |
+
+
+
+
+
+
+ Section_B
+
+
+
+ | Column_A |
+ Column_B |
+
+
+
+
+ | Attribute_A |
+ Not disclosed |
+
+
+ | Attribute_B |
+ Not disclosed |
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/app/dex/asterdex/page.tsx b/app/dex/asterdex/page.tsx
index 37ac373..dafe6a2 100644
--- a/app/dex/asterdex/page.tsx
+++ b/app/dex/asterdex/page.tsx
@@ -64,6 +64,10 @@ export default function AsterDEXPage() {
| Content_Link | /dex/asterdex/staking-guide |
| Content_Link | /dex/asterdex/insurance-fund |
| Content_Link | /dex/asterdex/security-features |
+ | Content_Link | /dex/asterdex/cross-margin |
+ | Content_Link | /dex/asterdex/fee-tiers |
+ | Content_Link | /dex/asterdex/perpetuals-guide |
+ | Content_Link | /dex/asterdex/risk-management |
diff --git a/app/dex/asterdex/perpetuals-guide/page.tsx b/app/dex/asterdex/perpetuals-guide/page.tsx
new file mode 100644
index 0000000..e53c39e
--- /dev/null
+++ b/app/dex/asterdex/perpetuals-guide/page.tsx
@@ -0,0 +1,77 @@
+// ENGINE_ERA: vNEXT
+import type { Metadata } from 'next';
+
+export const metadata: Metadata = {
+ title: 'AsterDEX Registry_30',
+ description: '',
+ alternates: {
+ canonical: '',
+ },
+};
+
+export default function AsterDEXRegistry30Page() {
+ return (
+
+
+
+
+
+ Section_A
+
+
+
+ | Column_A |
+ Column_B |
+
+
+
+
+ | Parameter_A |
+ Not disclosed |
+
+
+ | Parameter_B |
+ Not disclosed |
+
+
+ | Parameter_C |
+ Not disclosed |
+
+
+
+
+
+
+ Section_B
+
+
+
+ | Column_A |
+ Column_B |
+
+
+
+
+ | Attribute_A |
+ Not disclosed |
+
+
+ | Attribute_B |
+ Not disclosed |
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/app/dex/asterdex/risk-management/page.tsx b/app/dex/asterdex/risk-management/page.tsx
new file mode 100644
index 0000000..86c1110
--- /dev/null
+++ b/app/dex/asterdex/risk-management/page.tsx
@@ -0,0 +1,77 @@
+// ENGINE_ERA: vNEXT
+import type { Metadata } from 'next';
+
+export const metadata: Metadata = {
+ title: 'AsterDEX Registry_31',
+ description: '',
+ alternates: {
+ canonical: '',
+ },
+};
+
+export default function AsterDEXRegistry31Page() {
+ return (
+
+
+
+
+
+ Section_A
+
+
+
+ | Column_A |
+ Column_B |
+
+
+
+
+ | Parameter_A |
+ Not disclosed |
+
+
+ | Parameter_B |
+ Not disclosed |
+
+
+ | Parameter_C |
+ Not disclosed |
+
+
+
+
+
+
+ Section_B
+
+
+
+ | Column_A |
+ Column_B |
+
+
+
+
+ | Attribute_A |
+ Not disclosed |
+
+
+ | Attribute_B |
+ Not disclosed |
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/app/dex/hibachi/page.tsx b/app/dex/hibachi/page.tsx
index 272836e..88fc501 100644
--- a/app/dex/hibachi/page.tsx
+++ b/app/dex/hibachi/page.tsx
@@ -148,6 +148,10 @@ export default function HibachiPage() {
Child_Link |
Link_X |
+
+ | Child_Link |
+ Link_Y |
+
diff --git a/app/dex/hibachi/wallet-integration/page.tsx b/app/dex/hibachi/wallet-integration/page.tsx
new file mode 100644
index 0000000..cf685c5
--- /dev/null
+++ b/app/dex/hibachi/wallet-integration/page.tsx
@@ -0,0 +1,77 @@
+// ENGINE_ERA: vNEXT
+import type { Metadata } from 'next';
+
+export const metadata: Metadata = {
+ title: 'Hibachi Registry_25',
+ description: '',
+ alternates: {
+ canonical: '',
+ },
+};
+
+export default function HibachiRegistry25Page() {
+ return (
+
+
+
+
+
+ Section_A
+
+
+
+ | Column_A |
+ Column_B |
+
+
+
+
+ | Parameter_A |
+ Not disclosed |
+
+
+ | Parameter_B |
+ Not disclosed |
+
+
+ | Parameter_C |
+ Not disclosed |
+
+
+
+
+
+
+ Section_B
+
+
+
+ | Column_A |
+ Column_B |
+
+
+
+
+ | Attribute_A |
+ Not disclosed |
+
+
+ | Attribute_B |
+ Not disclosed |
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/app/dex/hyperliquid/page.tsx b/app/dex/hyperliquid/page.tsx
index 664a79d..92b2cf9 100644
--- a/app/dex/hyperliquid/page.tsx
+++ b/app/dex/hyperliquid/page.tsx
@@ -152,6 +152,10 @@ export default function HyperliquidPage() {
Child_Link |
Link_Y |
+
+ | Child_Link |
+ Link_Z |
+
diff --git a/app/dex/hyperliquid/wallet-integration/page.tsx b/app/dex/hyperliquid/wallet-integration/page.tsx
new file mode 100644
index 0000000..d61efbf
--- /dev/null
+++ b/app/dex/hyperliquid/wallet-integration/page.tsx
@@ -0,0 +1,77 @@
+// ENGINE_ERA: vNEXT
+import type { Metadata } from 'next';
+
+export const metadata: Metadata = {
+ title: 'Hyperliquid Registry_26',
+ description: '',
+ alternates: {
+ canonical: '',
+ },
+};
+
+export default function HyperliquidRegistry26Page() {
+ return (
+
+
+
+ Hyperliquid Registry_26
+
+
+
+ Section_A
+
+
+
+ | Column_A |
+ Column_B |
+
+
+
+
+ | Parameter_A |
+ Not disclosed |
+
+
+ | Parameter_B |
+ Not disclosed |
+
+
+ | Parameter_C |
+ Not disclosed |
+
+
+
+
+
+
+ Section_B
+
+
+
+ | Column_A |
+ Column_B |
+
+
+
+
+ | Attribute_A |
+ Not disclosed |
+
+
+ | Attribute_B |
+ Not disclosed |
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/app/dex/lighter/page.tsx b/app/dex/lighter/page.tsx
index 0b6c2f0..d889ca9 100644
--- a/app/dex/lighter/page.tsx
+++ b/app/dex/lighter/page.tsx
@@ -152,6 +152,10 @@ export default function LighterPage() {
Child_Link |
Link_Y |
+
+ | Child_Link |
+ Link_Z |
+
diff --git a/app/dex/lighter/wallet-integration/page.tsx b/app/dex/lighter/wallet-integration/page.tsx
new file mode 100644
index 0000000..6481ac8
--- /dev/null
+++ b/app/dex/lighter/wallet-integration/page.tsx
@@ -0,0 +1,77 @@
+// ENGINE_ERA: vNEXT
+import type { Metadata } from 'next';
+
+export const metadata: Metadata = {
+ title: 'Lighter Registry_26',
+ description: '',
+ alternates: {
+ canonical: '',
+ },
+};
+
+export default function LighterRegistry26Page() {
+ return (
+
+
+
+
+
+ Section_A
+
+
+
+ | Column_A |
+ Column_B |
+
+
+
+
+ | Parameter_A |
+ Not disclosed |
+
+
+ | Parameter_B |
+ Not disclosed |
+
+
+ | Parameter_C |
+ Not disclosed |
+
+
+
+
+
+
+ Section_B
+
+
+
+ | Column_A |
+ Column_B |
+
+
+
+
+ | Attribute_A |
+ Not disclosed |
+
+
+ | Attribute_B |
+ Not disclosed |
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/app/exchanges/binance/convert-trading/page.tsx b/app/exchanges/binance/convert-trading/page.tsx
new file mode 100644
index 0000000..65bdb52
--- /dev/null
+++ b/app/exchanges/binance/convert-trading/page.tsx
@@ -0,0 +1,77 @@
+// ENGINE_ERA: vNEXT
+import type { Metadata } from 'next';
+
+export const metadata: Metadata = {
+ title: 'Binance Registry_36',
+ description: '',
+ alternates: {
+ canonical: '',
+ },
+};
+
+export default function BinanceRegistry36Page() {
+ return (
+
+
+
+
+
+ Section_A
+
+
+
+ | Column_A |
+ Column_B |
+
+
+
+
+ | Parameter_A |
+ Not disclosed |
+
+
+ | Parameter_B |
+ Not disclosed |
+
+
+ | Parameter_C |
+ Not disclosed |
+
+
+
+
+
+
+ Section_B
+
+
+
+ | Column_A |
+ Column_B |
+
+
+
+
+ | Attribute_A |
+ Not disclosed |
+
+
+ | Attribute_B |
+ Not disclosed |
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/app/exchanges/binance/dual-investment/page.tsx b/app/exchanges/binance/dual-investment/page.tsx
new file mode 100644
index 0000000..4957c93
--- /dev/null
+++ b/app/exchanges/binance/dual-investment/page.tsx
@@ -0,0 +1,77 @@
+// ENGINE_ERA: vNEXT
+import type { Metadata } from 'next';
+
+export const metadata: Metadata = {
+ title: 'Binance Registry_37',
+ description: '',
+ alternates: {
+ canonical: '',
+ },
+};
+
+export default function BinanceRegistry37Page() {
+ return (
+
+
+
+
+
+ Section_A
+
+
+
+ | Column_A |
+ Column_B |
+
+
+
+
+ | Parameter_A |
+ Not disclosed |
+
+
+ | Parameter_B |
+ Not disclosed |
+
+
+ | Parameter_C |
+ Not disclosed |
+
+
+
+
+
+
+ Section_B
+
+
+
+ | Column_A |
+ Column_B |
+
+
+
+
+ | Attribute_A |
+ Not disclosed |
+
+
+ | Attribute_B |
+ Not disclosed |
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/app/exchanges/binance/leveraged-tokens/page.tsx b/app/exchanges/binance/leveraged-tokens/page.tsx
new file mode 100644
index 0000000..43c46b4
--- /dev/null
+++ b/app/exchanges/binance/leveraged-tokens/page.tsx
@@ -0,0 +1,77 @@
+// ENGINE_ERA: vNEXT
+import type { Metadata } from 'next';
+
+export const metadata: Metadata = {
+ title: 'Binance Registry_38',
+ description: '',
+ alternates: {
+ canonical: '',
+ },
+};
+
+export default function BinanceRegistry38Page() {
+ return (
+
+
+
+
+
+ Section_A
+
+
+
+ | Column_A |
+ Column_B |
+
+
+
+
+ | Parameter_A |
+ Not disclosed |
+
+
+ | Parameter_B |
+ Not disclosed |
+
+
+ | Parameter_C |
+ Not disclosed |
+
+
+
+
+
+
+ Section_B
+
+
+
+ | Column_A |
+ Column_B |
+
+
+
+
+ | Attribute_A |
+ Not disclosed |
+
+
+ | Attribute_B |
+ Not disclosed |
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/app/exchanges/binance/nft-marketplace/page.tsx b/app/exchanges/binance/nft-marketplace/page.tsx
new file mode 100644
index 0000000..20d5e60
--- /dev/null
+++ b/app/exchanges/binance/nft-marketplace/page.tsx
@@ -0,0 +1,77 @@
+// ENGINE_ERA: vNEXT
+import type { Metadata } from 'next';
+
+export const metadata: Metadata = {
+ title: 'Binance Registry_39',
+ description: '',
+ alternates: {
+ canonical: '',
+ },
+};
+
+export default function BinanceRegistry39Page() {
+ return (
+
+
+
+
+
+ Section_A
+
+
+
+ | Column_A |
+ Column_B |
+
+
+
+
+ | Parameter_A |
+ Not disclosed |
+
+
+ | Parameter_B |
+ Not disclosed |
+
+
+ | Parameter_C |
+ Not disclosed |
+
+
+
+
+
+
+ Section_B
+
+
+
+ | Column_A |
+ Column_B |
+
+
+
+
+ | Attribute_A |
+ Not disclosed |
+
+
+ | Attribute_B |
+ Not disclosed |
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/app/exchanges/binance/page.tsx b/app/exchanges/binance/page.tsx
index fff6b64..93a7f77 100644
--- a/app/exchanges/binance/page.tsx
+++ b/app/exchanges/binance/page.tsx
@@ -215,6 +215,22 @@ export default function BinancePage() {
Child_Page |
Link_AH |
+
+ | Child_Page |
+ Link_AI |
+
+
+ | Child_Page |
+ Link_AJ |
+
+
+ | Child_Page |
+ Link_AK |
+
+
+ | Child_Page |
+ Link_AL |
+
diff --git a/app/exchanges/gate/convert-trading/page.tsx b/app/exchanges/gate/convert-trading/page.tsx
new file mode 100644
index 0000000..c06173c
--- /dev/null
+++ b/app/exchanges/gate/convert-trading/page.tsx
@@ -0,0 +1,77 @@
+// ENGINE_ERA: vNEXT
+import type { Metadata } from 'next';
+
+export const metadata: Metadata = {
+ title: 'Gate Registry_38',
+ description: '',
+ alternates: {
+ canonical: '',
+ },
+};
+
+export default function GateRegistry38Page() {
+ return (
+
+
+
+
+
+ Section_A
+
+
+
+ | Column_A |
+ Column_B |
+
+
+
+
+ | Parameter_A |
+ Not disclosed |
+
+
+ | Parameter_B |
+ Not disclosed |
+
+
+ | Parameter_C |
+ Not disclosed |
+
+
+
+
+
+
+ Section_B
+
+
+
+ | Column_A |
+ Column_B |
+
+
+
+
+ | Attribute_A |
+ Not disclosed |
+
+
+ | Attribute_B |
+ Not disclosed |
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/app/exchanges/gate/dual-investment/page.tsx b/app/exchanges/gate/dual-investment/page.tsx
new file mode 100644
index 0000000..0d60aef
--- /dev/null
+++ b/app/exchanges/gate/dual-investment/page.tsx
@@ -0,0 +1,77 @@
+// ENGINE_ERA: vNEXT
+import type { Metadata } from 'next';
+
+export const metadata: Metadata = {
+ title: 'Gate Registry_39',
+ description: '',
+ alternates: {
+ canonical: '',
+ },
+};
+
+export default function GateRegistry39Page() {
+ return (
+
+
+
+
+
+ Section_A
+
+
+
+ | Column_A |
+ Column_B |
+
+
+
+
+ | Parameter_A |
+ Not disclosed |
+
+
+ | Parameter_B |
+ Not disclosed |
+
+
+ | Parameter_C |
+ Not disclosed |
+
+
+
+
+
+
+ Section_B
+
+
+
+ | Column_A |
+ Column_B |
+
+
+
+
+ | Attribute_A |
+ Not disclosed |
+
+
+ | Attribute_B |
+ Not disclosed |
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/app/exchanges/gate/leveraged-tokens/page.tsx b/app/exchanges/gate/leveraged-tokens/page.tsx
new file mode 100644
index 0000000..e9b0bd2
--- /dev/null
+++ b/app/exchanges/gate/leveraged-tokens/page.tsx
@@ -0,0 +1,77 @@
+// ENGINE_ERA: vNEXT
+import type { Metadata } from 'next';
+
+export const metadata: Metadata = {
+ title: 'Gate Registry_40',
+ description: '',
+ alternates: {
+ canonical: '',
+ },
+};
+
+export default function GateRegistry40Page() {
+ return (
+
+
+
+
+
+ Section_A
+
+
+
+ | Column_A |
+ Column_B |
+
+
+
+
+ | Parameter_A |
+ Not disclosed |
+
+
+ | Parameter_B |
+ Not disclosed |
+
+
+ | Parameter_C |
+ Not disclosed |
+
+
+
+
+
+
+ Section_B
+
+
+
+ | Column_A |
+ Column_B |
+
+
+
+
+ | Attribute_A |
+ Not disclosed |
+
+
+ | Attribute_B |
+ Not disclosed |
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/app/exchanges/gate/nft-marketplace/page.tsx b/app/exchanges/gate/nft-marketplace/page.tsx
new file mode 100644
index 0000000..e8d11de
--- /dev/null
+++ b/app/exchanges/gate/nft-marketplace/page.tsx
@@ -0,0 +1,77 @@
+// ENGINE_ERA: vNEXT
+import type { Metadata } from 'next';
+
+export const metadata: Metadata = {
+ title: 'Gate Registry_41',
+ description: '',
+ alternates: {
+ canonical: '',
+ },
+};
+
+export default function GateRegistry41Page() {
+ return (
+
+
+
+
+
+ Section_A
+
+
+
+ | Column_A |
+ Column_B |
+
+
+
+
+ | Parameter_A |
+ Not disclosed |
+
+
+ | Parameter_B |
+ Not disclosed |
+
+
+ | Parameter_C |
+ Not disclosed |
+
+
+
+
+
+
+ Section_B
+
+
+
+ | Column_A |
+ Column_B |
+
+
+
+
+ | Attribute_A |
+ Not disclosed |
+
+
+ | Attribute_B |
+ Not disclosed |
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/app/exchanges/gate/page.tsx b/app/exchanges/gate/page.tsx
index db113ec..f832e51 100644
--- a/app/exchanges/gate/page.tsx
+++ b/app/exchanges/gate/page.tsx
@@ -213,6 +213,22 @@ export default function GatePage() {
Child_Page |
Link_AJ |
+
+ | Child_Page |
+ Link_AK |
+
+
+ | Child_Page |
+ Link_AL |
+
+
+ | Child_Page |
+ Link_AM |
+
+
+ | Child_Page |
+ Link_AN |
+
diff --git a/app/exchanges/okx/convert-trading/page.tsx b/app/exchanges/okx/convert-trading/page.tsx
new file mode 100644
index 0000000..49bfd73
--- /dev/null
+++ b/app/exchanges/okx/convert-trading/page.tsx
@@ -0,0 +1,77 @@
+// ENGINE_ERA: vNEXT
+import type { Metadata } from 'next';
+
+export const metadata: Metadata = {
+ title: 'OKX Registry_35',
+ description: '',
+ alternates: {
+ canonical: '',
+ },
+};
+
+export default function OKXRegistry35Page() {
+ return (
+
+
+
+
+
+ Section_A
+
+
+
+ | Column_A |
+ Column_B |
+
+
+
+
+ | Parameter_A |
+ Not disclosed |
+
+
+ | Parameter_B |
+ Not disclosed |
+
+
+ | Parameter_C |
+ Not disclosed |
+
+
+
+
+
+
+ Section_B
+
+
+
+ | Column_A |
+ Column_B |
+
+
+
+
+ | Attribute_A |
+ Not disclosed |
+
+
+ | Attribute_B |
+ Not disclosed |
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/app/exchanges/okx/page.tsx b/app/exchanges/okx/page.tsx
index 89d8aea..fae1665 100644
--- a/app/exchanges/okx/page.tsx
+++ b/app/exchanges/okx/page.tsx
@@ -214,6 +214,10 @@ export default function OKXPage() {
Child_Page |
Link_AJ |
+
+ | Child_Page |
+ Link_AK |
+
diff --git a/public/dataset/latest.jsonl b/public/dataset/latest.jsonl
index cdf0255..1079d49 100644
--- a/public/dataset/latest.jsonl
+++ b/public/dataset/latest.jsonl
@@ -227,3 +227,23 @@
{"record_type":"registry","id":"okx_perpetuals_guide","page_status":"published","parent_id":"okx"}
{"record_type":"registry","id":"okx_sub_accounts","page_status":"published","parent_id":"okx"}
{"record_type":"registry","id":"okx_vip_program","page_status":"published","parent_id":"okx"}
+{"record_type":"registry","id":"asterdex_cross_margin","page_status":"published","parent_id":"asterdex"}
+{"record_type":"registry","id":"asterdex_fee_tiers","page_status":"published","parent_id":"asterdex"}
+{"record_type":"registry","id":"asterdex_perpetuals_guide","page_status":"published","parent_id":"asterdex"}
+{"record_type":"registry","id":"asterdex_risk_management","page_status":"published","parent_id":"asterdex"}
+{"record_type":"registry","id":"binance_convert_trading","page_status":"published","parent_id":"binance"}
+{"record_type":"registry","id":"binance_dual_investment","page_status":"published","parent_id":"binance"}
+{"record_type":"registry","id":"binance_leveraged_tokens","page_status":"published","parent_id":"binance"}
+{"record_type":"registry","id":"binance_nft_marketplace","page_status":"published","parent_id":"binance"}
+{"record_type":"registry","id":"etherfi_cash_card","page_status":"published","parent_id":"etherfi"}
+{"record_type":"registry","id":"etherfi_dvt_technology","page_status":"published","parent_id":"etherfi"}
+{"record_type":"registry","id":"etherfi_validator_performance","page_status":"published","parent_id":"etherfi"}
+{"record_type":"registry","id":"etherfi_withdrawal_guide","page_status":"published","parent_id":"etherfi"}
+{"record_type":"registry","id":"gate_convert_trading","page_status":"published","parent_id":"gate"}
+{"record_type":"registry","id":"gate_dual_investment","page_status":"published","parent_id":"gate"}
+{"record_type":"registry","id":"gate_leveraged_tokens","page_status":"published","parent_id":"gate"}
+{"record_type":"registry","id":"gate_nft_marketplace","page_status":"published","parent_id":"gate"}
+{"record_type":"registry","id":"hibachi_wallet_integration","page_status":"published","parent_id":"hibachi"}
+{"record_type":"registry","id":"hyperliquid_wallet_integration","page_status":"published","parent_id":"hyperliquid"}
+{"record_type":"registry","id":"lighter_wallet_integration","page_status":"published","parent_id":"lighter"}
+{"record_type":"registry","id":"okx_convert_trading","page_status":"published","parent_id":"okx"}
diff --git a/public/dataset/registry.json b/public/dataset/registry.json
index de2e1aa..4a6118e 100644
--- a/public/dataset/registry.json
+++ b/public/dataset/registry.json
@@ -1376,120 +1376,240 @@
{
"id": "asterdex_risk_management",
"type": "child_entity",
- "page_status": "missing",
+ "page_status": "published",
"parent_id": "asterdex"
},
{
"id": "asterdex_cross_margin",
"type": "child_entity",
- "page_status": "missing",
+ "page_status": "published",
"parent_id": "asterdex"
},
{
"id": "asterdex_fee_tiers",
"type": "child_entity",
- "page_status": "missing",
+ "page_status": "published",
"parent_id": "asterdex"
},
{
"id": "asterdex_perpetuals_guide",
"type": "child_entity",
- "page_status": "missing",
+ "page_status": "published",
"parent_id": "asterdex"
},
{
"id": "binance_convert_trading",
"type": "child_entity",
- "page_status": "missing",
+ "page_status": "published",
"parent_id": "binance"
},
{
"id": "binance_dual_investment",
"type": "child_entity",
- "page_status": "missing",
+ "page_status": "published",
"parent_id": "binance"
},
{
"id": "binance_leveraged_tokens",
"type": "child_entity",
- "page_status": "missing",
+ "page_status": "published",
"parent_id": "binance"
},
{
"id": "binance_nft_marketplace",
"type": "child_entity",
- "page_status": "missing",
+ "page_status": "published",
"parent_id": "binance"
},
{
"id": "etherfi_cash_card",
"type": "child_entity",
- "page_status": "missing",
+ "page_status": "published",
"parent_id": "etherfi"
},
{
"id": "etherfi_dvt_technology",
"type": "child_entity",
- "page_status": "missing",
+ "page_status": "published",
"parent_id": "etherfi"
},
{
"id": "etherfi_validator_performance",
"type": "child_entity",
- "page_status": "missing",
+ "page_status": "published",
"parent_id": "etherfi"
},
{
"id": "etherfi_withdrawal_guide",
"type": "child_entity",
- "page_status": "missing",
+ "page_status": "published",
"parent_id": "etherfi"
},
{
"id": "gate_convert_trading",
"type": "child_entity",
- "page_status": "missing",
+ "page_status": "published",
"parent_id": "gate"
},
{
"id": "gate_dual_investment",
"type": "child_entity",
- "page_status": "missing",
+ "page_status": "published",
"parent_id": "gate"
},
{
"id": "gate_leveraged_tokens",
"type": "child_entity",
- "page_status": "missing",
+ "page_status": "published",
"parent_id": "gate"
},
{
"id": "gate_nft_marketplace",
"type": "child_entity",
- "page_status": "missing",
+ "page_status": "published",
"parent_id": "gate"
},
{
"id": "hibachi_wallet_integration",
"type": "child_entity",
- "page_status": "missing",
+ "page_status": "published",
"parent_id": "hibachi"
},
{
"id": "hyperliquid_wallet_integration",
"type": "child_entity",
- "page_status": "missing",
+ "page_status": "published",
"parent_id": "hyperliquid"
},
{
"id": "lighter_wallet_integration",
"type": "child_entity",
- "page_status": "missing",
+ "page_status": "published",
"parent_id": "lighter"
},
{
"id": "okx_convert_trading",
"type": "child_entity",
+ "page_status": "published",
+ "parent_id": "okx"
+ },
+ {
+ "id": "asterdex_isolated_margin",
+ "type": "child_entity",
+ "page_status": "missing",
+ "parent_id": "asterdex"
+ },
+ {
+ "id": "asterdex_limit_orders",
+ "type": "child_entity",
+ "page_status": "missing",
+ "parent_id": "asterdex"
+ },
+ {
+ "id": "asterdex_twap_orders",
+ "type": "child_entity",
+ "page_status": "missing",
+ "parent_id": "asterdex"
+ },
+ {
+ "id": "asterdex_wallet_integration",
+ "type": "child_entity",
+ "page_status": "missing",
+ "parent_id": "asterdex"
+ },
+ {
+ "id": "binance_earn_products",
+ "type": "child_entity",
+ "page_status": "missing",
+ "parent_id": "binance"
+ },
+ {
+ "id": "binance_web3_wallet",
+ "type": "child_entity",
+ "page_status": "missing",
+ "parent_id": "binance"
+ },
+ {
+ "id": "etherfi_defi_integrations",
+ "type": "child_entity",
+ "page_status": "missing",
+ "parent_id": "etherfi"
+ },
+ {
+ "id": "etherfi_fee_structure",
+ "type": "child_entity",
+ "page_status": "missing",
+ "parent_id": "etherfi"
+ },
+ {
+ "id": "etherfi_interface_guide",
+ "type": "child_entity",
+ "page_status": "missing",
+ "parent_id": "etherfi"
+ },
+ {
+ "id": "etherfi_portfolio_guide",
+ "type": "child_entity",
+ "page_status": "missing",
+ "parent_id": "etherfi"
+ },
+ {
+ "id": "hibachi_isolated_margin",
+ "type": "child_entity",
+ "page_status": "missing",
+ "parent_id": "hibachi"
+ },
+ {
+ "id": "hibachi_staking_guide",
+ "type": "child_entity",
+ "page_status": "missing",
+ "parent_id": "hibachi"
+ },
+ {
+ "id": "hibachi_twap_orders",
+ "type": "child_entity",
+ "page_status": "missing",
+ "parent_id": "hibachi"
+ },
+ {
+ "id": "hyperliquid_isolated_margin",
+ "type": "child_entity",
+ "page_status": "missing",
+ "parent_id": "hyperliquid"
+ },
+ {
+ "id": "hyperliquid_limit_orders",
+ "type": "child_entity",
+ "page_status": "missing",
+ "parent_id": "hyperliquid"
+ },
+ {
+ "id": "hyperliquid_perpetuals_guide",
+ "type": "child_entity",
+ "page_status": "missing",
+ "parent_id": "hyperliquid"
+ },
+ {
+ "id": "lighter_isolated_margin",
+ "type": "child_entity",
+ "page_status": "missing",
+ "parent_id": "lighter"
+ },
+ {
+ "id": "lighter_twap_orders",
+ "type": "child_entity",
+ "page_status": "missing",
+ "parent_id": "lighter"
+ },
+ {
+ "id": "okx_dual_investment",
+ "type": "child_entity",
+ "page_status": "missing",
+ "parent_id": "okx"
+ },
+ {
+ "id": "okx_leveraged_tokens",
+ "type": "child_entity",
"page_status": "missing",
"parent_id": "okx"
}