Instruction file imported from BobcatPlus/BobcatPlus (
.cursor/rules/banner-pool.mdc). Copyright stays with the author.
Banner / DegreeWorks fetch rules
The service worker (extension/bg/*) is where session bugs and
half-auth states live. These patterns are non-negotiable.
- Per-CRN work goes through
BPPerf.mapPoolwith concurrency ≤ 6. NeverPromise.allan unbounded list of fetches. - Every Banner fetch uses
BPPerf.fetchWithTimeoutwith a timeout ≥ 12s. The Banner SP occasionally hangs forever; the timeout is the only thing keeping the worker alive. - Every Banner fetch path passes through
withSessionLockor the per-tab queue. Concurrent unsynchronized requests burn the session. - After every
awaitinsiderunAnalysis, checkbail(). Stale analysis runs must abort cleanly when the user changes terms or re-imports. - The
BPReq/BPPerfmodules are loaded as ES module imports (D20). The oldimportScripts+ inline-fallback path is gone; don't reintroduce it. Missing imports fail loudly at SW startup, which is the correct behavior. - See
docs/invariants.md§1 + §3 and ADRs D19, D20, D22, D23 indocs/decisions.md.