77ethers commited on
Commit
2a48722
·
verified ·
1 Parent(s): 9df01d2

Deploy optimized case study image loading

Browse files
assets/case_study/capabl_india_microgrid_hero.webp CHANGED

Git LFS Details

  • SHA256: f1d8677e56f3f9be4ab500549670afe71c27207d03d0b843bbea0bfefeb15aff
  • Pointer size: 131 Bytes
  • Size of remote file: 180 kB

Git LFS Details

  • SHA256: dd91b7313b9c0668102084a0e5dfae798cd37607cdbd3c1dd83915bdaaad30bb
  • Pointer size: 130 Bytes
  • Size of remote file: 81.1 kB
assets/case_study/capabl_neighbourhood_dispatch.webp CHANGED

Git LFS Details

  • SHA256: f0b9fd73e60557143498a3284498f2c8eb782922a7cf103360982c2c7432ed81
  • Pointer size: 131 Bytes
  • Size of remote file: 181 kB

Git LFS Details

  • SHA256: bbc5017a2ad7b85919b8c2a4e64cd0d2c44feb6ea79be74d5213b5d487f3538e
  • Pointer size: 130 Bytes
  • Size of remote file: 83.6 kB
assets/case_study/capabl_rooftop_infrastructure.webp CHANGED

Git LFS Details

  • SHA256: b5c809fe297e5163b65aedba8cae2fa93809cae883a88448ffa1ba5ff58c7d8d
  • Pointer size: 131 Bytes
  • Size of remote file: 208 kB

Git LFS Details

  • SHA256: f73980c4d243a1bd9cadf720e9dab5e6a3130ecbe7047b790596015087b9d018
  • Pointer size: 130 Bytes
  • Size of remote file: 91.9 kB
assets/case_study/capabl_society_operator.webp CHANGED
gridops/server/app.py CHANGED
@@ -35,6 +35,14 @@ app = create_app(
35
  max_concurrent_envs=int(os.environ.get("MAX_CONCURRENT_ENVS", "10")),
36
  )
37
 
 
 
 
 
 
 
 
 
38
  # ── Shared stateful environment for HTTP dashboard ───────────────────────
39
  # OpenEnv HTTP /reset and /step are stateless (new env per request).
40
  # The dashboard needs persistent state between reset → step → step...
 
35
  max_concurrent_envs=int(os.environ.get("MAX_CONCURRENT_ENVS", "10")),
36
  )
37
 
38
+
39
+ @app.middleware("http")
40
+ async def add_static_cache_headers(request, call_next):
41
+ response = await call_next(request)
42
+ if request.url.path.startswith(("/assets/", "/evals/")):
43
+ response.headers.setdefault("Cache-Control", "public, max-age=31536000, immutable")
44
+ return response
45
+
46
  # ── Shared stateful environment for HTTP dashboard ───────────────────────
47
  # OpenEnv HTTP /reset and /step are stateless (new env per request).
48
  # The dashboard needs persistent state between reset → step → step...
gridops/server/static/case-study.html CHANGED
@@ -6,6 +6,7 @@
6
  <title>GridOps India Case Study | Capabl Machines</title>
7
  <meta name="description" content="GridOps is a Capabl Machines case study on AI-managed community microgrids for India's fast-growing rooftop solar future.">
8
  <link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 64'%3E%3Crect width='64' height='64' rx='14' fill='%23111827'/%3E%3Cpath d='M34 8 14 34h17l-3 22 22-30H33z' fill='%238ef2c3'/%3E%3C/svg%3E">
 
9
  <style>
10
  :root {
11
  --ink: #15202b;
@@ -538,12 +539,12 @@
538
  <div class="stat"><strong>1 crore</strong><span>national rooftop household ambition</span></div>
539
  </div>
540
  <div class="wide-image">
541
- <img src="/assets/case_study/capabl_rooftop_infrastructure.webp" alt="Indian apartment society rooftop solar, battery storage, EV charging, and transformer infrastructure">
542
  </div>
543
  <p class="source-line">Context sources: <a href="https://mnre.gov.in/en/physical-progress/">MNRE Physical Achievements</a> and <a href="https://static.pib.gov.in/WriteReadData/specificdocs/documents/2025/dec/doc2025126720001.pdf">PIB India Solar Momentum</a>.</p>
544
  <div class="infographic" id="journey" aria-label="GridOps India solar intelligence journey infographic">
545
  <div class="infographic-scroll">
546
- <img src="/assets/case_study/capabl_energy_journey_infographic.svg" alt="Journey from India's rooftop solar scale to local microgrid complexity, Capabl Machine dispatch, and community outcomes">
547
  </div>
548
  </div>
549
  </div>
@@ -566,7 +567,7 @@
566
  </div>
567
  </div>
568
  <div class="image-frame">
569
- <img src="/assets/case_study/capabl_society_operator.webp" alt="Indian society manager and solar installer reviewing microgrid intelligence">
570
  </div>
571
  </div>
572
  </section>
@@ -574,7 +575,7 @@
574
  <section class="section light" id="machine">
575
  <div class="wrap split reverse">
576
  <div class="image-frame">
577
- <img src="/assets/case_study/capabl_neighbourhood_dispatch.webp" alt="Indian neighbourhood microgrid with solar, battery, EV charging, grid connection, and local dispatch">
578
  </div>
579
  <div>
580
  <p class="eyebrow">What intelligence unlocks</p>
@@ -681,19 +682,19 @@
681
  </div>
682
  <div class="plots">
683
  <figure class="plot">
684
- <img src="/evals/plots/gridops_holdout_scores.png" alt="Holdout score comparison for do-nothing, SFT, and oracle policies">
685
  <figcaption>Holdout score by task.</figcaption>
686
  </figure>
687
  <figure class="plot">
688
- <img src="/evals/plots/gridops_battery_throughput.png" alt="Battery throughput by policy and task">
689
  <figcaption>Battery throughput confirms active dispatch.</figcaption>
690
  </figure>
691
  <figure class="plot">
692
- <img src="/evals/plots/gridops_blackout_kwh.png" alt="Blackout kilowatt hours by policy and task">
693
  <figcaption>Blackout energy falls sharply versus baseline.</figcaption>
694
  </figure>
695
  <figure class="plot">
696
- <img src="/evals/plots/gridops_sft_training_curve.png" alt="SFT training loss and token accuracy curve">
697
  <figcaption>Real training loss and token accuracy from the run.</figcaption>
698
  </figure>
699
  </div>
 
6
  <title>GridOps India Case Study | Capabl Machines</title>
7
  <meta name="description" content="GridOps is a Capabl Machines case study on AI-managed community microgrids for India's fast-growing rooftop solar future.">
8
  <link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 64'%3E%3Crect width='64' height='64' rx='14' fill='%23111827'/%3E%3Cpath d='M34 8 14 34h17l-3 22 22-30H33z' fill='%238ef2c3'/%3E%3C/svg%3E">
9
+ <link rel="preload" as="image" href="/assets/case_study/capabl_india_microgrid_hero.webp" type="image/webp" fetchpriority="high">
10
  <style>
11
  :root {
12
  --ink: #15202b;
 
539
  <div class="stat"><strong>1 crore</strong><span>national rooftop household ambition</span></div>
540
  </div>
541
  <div class="wide-image">
542
+ <img src="/assets/case_study/capabl_rooftop_infrastructure.webp" alt="Indian apartment society rooftop solar, battery storage, EV charging, and transformer infrastructure" width="1280" height="720" loading="lazy" decoding="async">
543
  </div>
544
  <p class="source-line">Context sources: <a href="https://mnre.gov.in/en/physical-progress/">MNRE Physical Achievements</a> and <a href="https://static.pib.gov.in/WriteReadData/specificdocs/documents/2025/dec/doc2025126720001.pdf">PIB India Solar Momentum</a>.</p>
545
  <div class="infographic" id="journey" aria-label="GridOps India solar intelligence journey infographic">
546
  <div class="infographic-scroll">
547
+ <img src="/assets/case_study/capabl_energy_journey_infographic.svg" alt="Journey from India's rooftop solar scale to local microgrid complexity, Capabl Machine dispatch, and community outcomes" width="2200" height="900" loading="lazy" decoding="async">
548
  </div>
549
  </div>
550
  </div>
 
567
  </div>
568
  </div>
569
  <div class="image-frame">
570
+ <img src="/assets/case_study/capabl_society_operator.webp" alt="Indian society manager and solar installer reviewing microgrid intelligence" width="1120" height="630" loading="lazy" decoding="async">
571
  </div>
572
  </div>
573
  </section>
 
575
  <section class="section light" id="machine">
576
  <div class="wrap split reverse">
577
  <div class="image-frame">
578
+ <img src="/assets/case_study/capabl_neighbourhood_dispatch.webp" alt="Indian neighbourhood microgrid with solar, battery, EV charging, grid connection, and local dispatch" width="1280" height="720" loading="lazy" decoding="async">
579
  </div>
580
  <div>
581
  <p class="eyebrow">What intelligence unlocks</p>
 
682
  </div>
683
  <div class="plots">
684
  <figure class="plot">
685
+ <img src="/evals/plots/gridops_holdout_scores.png" alt="Holdout score comparison for do-nothing, SFT, and oracle policies" width="1200" height="750" loading="lazy" decoding="async">
686
  <figcaption>Holdout score by task.</figcaption>
687
  </figure>
688
  <figure class="plot">
689
+ <img src="/evals/plots/gridops_battery_throughput.png" alt="Battery throughput by policy and task" width="1200" height="750" loading="lazy" decoding="async">
690
  <figcaption>Battery throughput confirms active dispatch.</figcaption>
691
  </figure>
692
  <figure class="plot">
693
+ <img src="/evals/plots/gridops_blackout_kwh.png" alt="Blackout kilowatt hours by policy and task" width="1200" height="750" loading="lazy" decoding="async">
694
  <figcaption>Blackout energy falls sharply versus baseline.</figcaption>
695
  </figure>
696
  <figure class="plot">
697
+ <img src="/evals/plots/gridops_sft_training_curve.png" alt="SFT training loss and token accuracy curve" width="1200" height="750" loading="lazy" decoding="async">
698
  <figcaption>Real training loss and token accuracy from the run.</figcaption>
699
  </figure>
700
  </div>