diff --git a/docs/_ext/custom-meta.py b/docs/_ext/custom-meta.py
index 1f5a9f9ef0..1fcf7b1424 100644
--- a/docs/_ext/custom-meta.py
+++ b/docs/_ext/custom-meta.py
@@ -5,8 +5,9 @@
def html_page_context(app, pagename, templatename, context, doctree):
notebook_path = app.env.doc2path(os.path.abspath("" + pagename), base=None)
- if "notebook" in notebook_path or notebook_path.endswith("examples.rst"):
- context["metatags"] += "".join(['\n\t'])
+ if "/notebooks/" in notebook_path or notebook_path.endswith("examples.rst"):
+ if "metatags" in context:
+ context["metatags"] += "".join(['\n\t'])
def setup(app):
diff --git a/docs/conf.py b/docs/conf.py
index 9ef702b7dc..767e274147 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -168,6 +168,7 @@
"tidy3d/*",
"faq/docs/**",
"notebooks/*.ipynb",
+ "notebooks/**/*.ipynb",
"notebooks/docs/*",
"**.rst",
"**.png",
diff --git a/docs/lectures/fabrication_invdes.rst b/docs/lectures/fabrication_invdes.rst
new file mode 100644
index 0000000000..75c622aa4f
--- /dev/null
+++ b/docs/lectures/fabrication_invdes.rst
@@ -0,0 +1,39 @@
+Fabrication-aware inverse design
+================================
+
+.. meta::
+ :description: Fabrication-aware inverse design seminar notebooks and walkthrough
+ :keywords: tidy3d, inverse design, fabrication-aware, adjoint, grating coupler
+
+The October 9, 2025 seminar walks through a complete dual-layer grating coupler workflow: start from a uniform baseline, pull a strong seed design with Bayesian optimization, switch to adjoint gradients for per-tooth control, study fabrication sensitivities, and close the loop with measurement-driven calibration. Everything runs inside Tidy3D, so you can rerun the exact same jobs or adapt the utilities to your own device stack.
+
+Seminar recording: `YouTube link `_
+
+Notebook lineup
+----------------
+* :doc:`Setup Guide: Building the Simulation <../notebooks/2025-10-09-invdes-seminar/00_setup_guide>` - builds the nominal SiN stack, launches the reference simulation, and visualizes the initial geometry so the later notebooks can reuse the cached job ID.
+* :doc:`Bayesian Optimization: Finding a Strong Baseline <../notebooks/2025-10-09-invdes-seminar/01_bayes>` - uses a five-parameter Bayesian search to quickly find a good uniform grating. This provides a practical baseline before investing in gradients.
+* :doc:`Adjoint Optimization: High-Dimensional Refinement <../notebooks/2025-10-09-invdes-seminar/02_adjoint>` - expands to per-tooth parameters and applies Adam with adjoint sensitivities to apodize the grating and boost efficiency.
+* :doc:`Fabrication Sensitivity Analysis: Is Our Design Robust? <../notebooks/2025-10-09-invdes-seminar/03_sensitivity>` - sweeps :math:`\pm 20` nm etch bias, runs Monte Carlo samples, and logs adjoint-derived sensitivity units (:math:`\Delta` objective / :math:`\Delta` parameter) so readers understand what the gradients mean physically.
+* :doc:`Robust Adjoint Optimization for Manufacturability <../notebooks/2025-10-09-invdes-seminar/04_adjoint_robust>` - penalizes variance across nominal/over/under corners, illustrating a fabrication-aware adjoint loop that matches what we demoed live.
+* :doc:`Monte Carlo View: Nominal vs Robust Grating <../notebooks/2025-10-09-invdes-seminar/05_robust_comparison>` - reruns the Monte Carlo campaign for both nominal and robust devices to quantify yield improvements.
+* :doc:`Measurement Calibration: Bridging Simulation and Fabrication <../notebooks/2025-10-09-invdes-seminar/06_measurement_calibration>` - demonstrates gradient-based calibration of tooth widths against (synthetic) spectra, using adjoint sensitivities to recover the as-fabricated geometry from optical measurements.
+
+Getting the code
+----------------
+The notebooks are available in the `Tidy3D notebooks repository `_. You will need the ``.ipynb`` files as well as the helper scripts `setup.py `_ and `optim.py `_ to run the examples.
+
+How to run the series
+---------------------
+1. Install ``tidy3d`` and ``bayesian-optimization`` (``pip install tidy3d bayesian-optimization``) and configure your API key.
+2. Execute the notebooks in order; each step writes results into ``results/`` and later notebooks assume those JSON files exist.
+
+Supporting assets
+-----------------
+* `setup.py `_ - shared simulation builders, fabrication constraints, and helper functions.
+* `optim.py `_ - a lightweight, autograd-friendly Adam implementation with parameter clipping.
+* ``results/`` - JSON checkpoints (Bayes best point, adjoint refinements, robust design) consumed by subsequent notebooks.
+
+
+
+
diff --git a/docs/lectures/fabrication_invdes_notebooks.rst b/docs/lectures/fabrication_invdes_notebooks.rst
new file mode 100644
index 0000000000..344950b4f5
--- /dev/null
+++ b/docs/lectures/fabrication_invdes_notebooks.rst
@@ -0,0 +1,12 @@
+:orphan:
+
+.. toctree::
+
+ ../notebooks/2025-10-09-invdes-seminar/00_setup_guide
+ ../notebooks/2025-10-09-invdes-seminar/01_bayes
+ ../notebooks/2025-10-09-invdes-seminar/02_adjoint
+ ../notebooks/2025-10-09-invdes-seminar/03_sensitivity
+ ../notebooks/2025-10-09-invdes-seminar/04_adjoint_robust
+ ../notebooks/2025-10-09-invdes-seminar/05_robust_comparison
+ ../notebooks/2025-10-09-invdes-seminar/06_measurement_calibration
+
diff --git a/docs/lectures/index.rst b/docs/lectures/index.rst
index ee95ad1175..2ff1b0317c 100644
--- a/docs/lectures/index.rst
+++ b/docs/lectures/index.rst
@@ -10,8 +10,10 @@ Welcome to our lecture series!
fdtd101
fdtd_workshop
inversedesign
+ fabrication_invdes
.. include:: /lectures/fdtd101.rst
.. include:: /lectures/fdtd_workshop.rst
.. include:: /lectures/inversedesign.rst
+.. include:: /lectures/fabrication_invdes.rst
diff --git a/docs/notebooks b/docs/notebooks
index c9a54bcb87..0126c1d474 160000
--- a/docs/notebooks
+++ b/docs/notebooks
@@ -1 +1 @@
-Subproject commit c9a54bcb87a25de06bda0c41f22d84ffd8605cd3
+Subproject commit 0126c1d47478366f647a72f563409efba6664ba4