{
  "schema": "pairlens-project/v1",
  "name": "PairLens",
  "updatedAt": "2026-11-12",
  "stage": "private research beta",
  "chain": {
    "name": "Elysium",
    "id": 99901
  },
  "purpose": "Create, share and remix research themes from indexed HYPE-paired markets, with traceable starting snapshots and indicative basket comparisons.",
  "implemented": [
    "Contract-identified HYPE pairs with confirmed block-hash checks",
    "Indexed pool search and filters",
    "Return provenance and CSV export",
    "Browser-local saved pools",
    "Browser-local thesis journal with timestamped provider snapshots and JSON export",
    "Manual progress and post-horizon review observations",
    "Best-effort tracked wallet balance reads",
    "One-to-four-pair equally weighted research themes",
    "Portable snapshot links and JSON import/export",
    "Browser-local followed theme shelf",
    "Remix source fingerprints and fresh common-baseline comparisons",
    "Rule-based discovery leads from real loaded observations",
    "Sites identity-linked author accounts with self-chosen display names",
    "D1-backed themes and append-only version history",
    "Server-retrieved initial market marks for account versions",
    "Standalone server-rendered fixed-version pages",
    "Audience-scoped listed theme directory with author filters and pagination",
    "Account-backed follows and in-app version updates",
    "Saved-version composition comparison and latest-version entry from fixed historical links",
    "Listed remix responses under source themes and in the source author collection",
    "Account-owned review plans with deadlines, calendar export and preserved post-deadline observations"
  ],
  "formulas": {
    "ledgerRelative": "Boxa priceChange1h / priceChange24h: token price change denominated in HYPE",
    "journalRelative": "(observedPoolRatio / startingPoolRatio - 1) * 100",
    "themeRelative": "(mean(currentTokenMark / startingTokenMark) / mean(currentEquityMark / startingEquityMark) - 1) * 100"
  },
  "journal": {
    "storage": "localStorage",
    "independentlyTimestamped": false,
    "tamperProof": false,
    "review": "First user-requested fresh observation retrieved at or after due time, not exact-time settlement",
    "horizonsHours": [
      1,
      24,
      168
    ],
    "prizes": false,
    "publicRanking": false
  },
  "limitations": [
    "Public RPC rate limits",
    "Incomplete provider coverage",
    "Provider retrieval times are not upstream observation times",
    "Pool marks are not executable quotes",
    "No fees or slippage in research observations",
    "No independent security audit claimed",
    "Private audience restricts external inspection",
    "Theme links require site access",
    "Local draft and journal snapshots remain editable and unsigned",
    "Account versions are append-only through the application, not independently notarized",
    "Display names are self-chosen; no wallet or legal-identity verification",
    "Updates are in-app on refresh; no email or push notification service"
  ],
  "token": {
    "configuredContract": null,
    "intendedVenue": "Montra Markets",
    "launchVerified": false,
    "requiredForUse": false,
    "launchUrl": "https://montramarkets.xyz/launch"
  },
  "notImplemented": [
    "Montra market indexing",
    "Verified launch origin",
    "Public competition settlement",
    "Historical wallet P&L",
    "Trading execution",
    "Follower counts",
    "Cryptographically signed public performance commitments",
    "Automatic account sync for local journals and saved-pair IDs",
    "Competition-grade settlement and manipulation-resistant oracle"
  ],
  "evidence": {
    "humanReadable": "/evidence.html",
    "health": "/api/health",
    "markets": "/api/markets",
    "guide": "/llms.txt",
    "themes": "/api/themes",
    "session": "/api/me"
  },
  "themes": {
    "storage": "Cloudflare D1 for account-owned themes, revisions and follows; localStorage for signed-out drafts and legacy imports",
    "membersMaximum": 4,
    "weights": "Equal initial USD allocations, no rebalancing",
    "sharedAuthorshipVerified": false,
    "startingSnapshotsSigned": false,
    "follow": "Account-backed subscriptions to theme versions with an in-app Updates list and monotonic last-seen tracking",
    "remix": "Saved source theme ID and exact source version, plus content fingerprint; source and remix compositions are recaptured at remix creation",
    "missingMemberPolicy": "Withhold aggregate; never drop or renormalize missing members",
    "discoveryRules": [
      "Positive or negative 24h HYPE-denominated return",
      "Reported pool liquidity below USD 25000 when available"
    ],
    "accountAuthorship": true,
    "authorDisplayNamesVerified": false,
    "serverStartingMarks": true,
    "versionHistory": "Append-only through authorized API; original versions remain addressable",
    "directoryVisibility": "Listed themes are discoverable to existing site visitors; unlisted themes require a link",
    "revisionComparison": "Title, thesis, exact asset identities, pool changes, pair rationales and initial weight changes. Fresh price baselines alone are not treated as composition changes; this is not cross-version performance ranking.",
    "schema": "pairlens-theme/v2"
  },
  "interaction": {
    "unfinishedEdits": "Up to eight in-progress edits are recovered from sessionStorage on the same tab, across refreshes. They are not account-synced.",
    "saveDestination": "Explicit account save, new version save or local draft save labels",
    "navigation": "Theme browser history and return-to-list position/focus; pair inspection stays in the current view",
    "requestOrdering": "Latest requested version wins; pending follow writes remain bound to their original theme",
    "writeRetry": "A stable editor request ID reuses a successful creation; matching base-version retries reuse an existing revision",
    "backgroundSave": "Leaving the editor preserves unfinished input; a completed save does not pull the user back to the reader"
  },
  "reviews": {
    "storage": "Cloudflare D1; private to the signed-in account",
    "horizonsHours": [
      1,
      24,
      168
    ],
    "maximumPerAccount": 200,
    "baseline": "Original fixed theme version, not plan creation time",
    "completion": "First successfully saved user-requested post-deadline observation, with all members fresh and matching; not exact-time settlement",
    "reflection": "Required user-written conclusion preserved on completion",
    "notifications": "In-app refresh and optional downloaded calendar file; no push or email",
    "publicScores": false
  },
  "network": {
    "name": "Elysium",
    "chainId": 99901,
    "nativeAsset": "HYPE",
    "launchVenue": "https://montramarkets.xyz/"
  },
  "dataSources": {
    "markets": "Boxa confirmed summaries",
    "rpc": "https://boxa.club/api/rpc",
    "usdReference": "Boxa HYPE spot price",
    "rollingReturns": "HYPE-denominated; dollar window returns unavailable"
  }
}
