Summary
src/adapter/oracleAdapter.ts is an explicit stub (getScore returns a deterministic hash-based number, :6-17) -- per README's roadmap and its own doc comment, this is the single blocking item before real interception has any value ('Do not build real interception until the adapter returns a real score' -- README.md:181).
Current Behavior / Relevant Code
- src/adapter/oracleAdapter.ts:1-17.
- README.md roadmap section, lines 176-181.
- src/popup/App.tsx:2 and src/background/background.ts:2 are the two call sites depending only on getScore's signature.
Why This Matters
This is the highest-leverage single issue in the whole project -- everything else (tiers, popup, interception) is already built and tested against the stub's contract; wiring the real scoring source is what turns Gryd Lock from a demo into a functioning product.
Proposed Solution
- Introduce an environment-driven switch (e.g. import.meta.env.VITE_ORACLE_MODE) selecting between the stub and a real grydlock-oracle-adapter import, keeping the stub available for offline dev/testing per the existing DevScoreSlider workflow.
- Preserve getScore(destination: string): Promise's exact signature so no downstream code changes.
- Add integration tests against the real adapter's contract (mocked network layer) alongside the existing stub tests.
Acceptance Criteria
Definition of Done
How to Claim This Issue (Application Process)
- Comment first. Post a short implementation plan on this issue — your proposed approach, the files you expect to touch, and any open questions — before writing code. This prevents duplicate effort and lets a maintainer flag concerns early, which matters especially for an issue at this complexity level.
- Wait for assignment. A maintainer will review your plan and assign the issue to you, typically within 48 hours. Please do not open a draft PR before you're assigned.
- Stay active. If there's no visible activity (commits or comments) for 10 days after assignment, the issue may be unassigned and reopened to other contributors.
- Submit a scoped PR. Reference this issue (
Closes #<issue-number>), keep the diff scoped to the acceptance criteria above, and ensure all CI gates pass before requesting review.
- Engage with review. Respond to review feedback within a reasonable timeframe; PRs with no response after 7 days may be closed pending resubmission when you're ready to pick it back up.
Category: Oracle Adapter & Scoring
Estimated effort: L (large, ~1-2 weeks)
Difficulty: Advanced — this issue assumes familiarity with the codebase's MV3 service-worker architecture, the Freighter interception protocol, and/or the Stellar SDK.
Summary
src/adapter/oracleAdapter.ts is an explicit stub (getScore returns a deterministic hash-based number, :6-17) -- per README's roadmap and its own doc comment, this is the single blocking item before real interception has any value ('Do not build real interception until the adapter returns a real score' -- README.md:181).
Current Behavior / Relevant Code
Why This Matters
This is the highest-leverage single issue in the whole project -- everything else (tiers, popup, interception) is already built and tested against the stub's contract; wiring the real scoring source is what turns Gryd Lock from a demo into a functioning product.
Proposed Solution
Acceptance Criteria
Definition of Done
npm run lint,npm run typecheck,npm test, andnpm run buildall pass locally and in CIREADME.mdHow to Claim This Issue (Application Process)
Closes #<issue-number>), keep the diff scoped to the acceptance criteria above, and ensure all CI gates pass before requesting review.Category: Oracle Adapter & Scoring
Estimated effort: L (large, ~1-2 weeks)
Difficulty: Advanced — this issue assumes familiarity with the codebase's MV3 service-worker architecture, the Freighter interception protocol, and/or the Stellar SDK.