From fdf46a2aadede85d92a3b3a57342e68295b3901b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Zhanghao=20Zhouyin=20=28=E5=91=A8=E5=AF=85=E5=BC=A0?=
=?UTF-8?q?=E7=9A=93=29?= <64253517+floatingCatty@users.noreply.github.com>
Date: Sun, 11 Oct 2026 20:57:54 -0400
Subject: [PATCH 01/15] Unpublish technical synthesis until RSATB work is
released
---
...rch-learned-hamiltonians-to-observables.md | 134 ------------------
1 file changed, 134 deletions(-)
delete mode 100644 _pages/research-learned-hamiltonians-to-observables.md
diff --git a/_pages/research-learned-hamiltonians-to-observables.md b/_pages/research-learned-hamiltonians-to-observables.md
deleted file mode 100644
index a2c2567..0000000
--- a/_pages/research-learned-hamiltonians-to-observables.md
+++ /dev/null
@@ -1,134 +0,0 @@
----
-layout: research
-permalink: /research/learned-hamiltonians-to-observables/
-title: "从机器学习哈密顿量到真正可计算的电子物性"
-title_en: "From learned Hamiltonians to scalable electronic properties"
-description: "A technical guide to turning learned electronic Hamiltonians into density of states, optical response and quantum transport, with published DeePTB, SLEM, VBCSR and NEGF examples."
-description_zh: "从 DeePTB 和 SLEM 预测哈密顿量,到利用稀疏算法计算态密度、光学响应和器件输运:一份有原始论文依据的技术路线说明。"
-paper_year: 2026
-project_kind: guide
-tags:
- - Electronic structure
- - Scientific computing
-paper_url: "https://doi.org/10.1038/s41467-024-51006-4"
-code_url: "https://github.com/deepmodeling/DeePTB"
-citation_urls:
- - "https://doi.org/10.1038/s41467-024-51006-4"
- - "https://proceedings.iclr.cc/paper_files/paper/2025/hash/7db2ffcbfd0bd361d47b7fa612bd2ba2-Abstract-Conference.html"
- - "https://arxiv.org/abs/2609.04397"
- - "https://doi.org/10.1103/PhysRevB.108.195143"
- - "https://doi.org/10.1038/s41524-025-01853-6"
- - "https://doi.org/10.1038/s41524-026-02137-3"
-research_locale: en
-translation_url: "/zh/research/learned-hamiltonians-to-observables/"
-alternate_en_url: "/research/learned-hamiltonians-to-observables/"
-alternate_zh_url: "/zh/research/learned-hamiltonians-to-observables/"
----
-
-
-
-An accurate Hamiltonian is not yet an electronic-structure calculation in the sense that an experimentalist or device engineer needs. It describes a system. It does not, by itself, tell us its conductivity, the charge around a defect, or what happens when we put contacts on either side of a channel.
-
-I have come across this distinction repeatedly while working on learned Hamiltonians, quantum transport and large sparse-matrix software. The prediction of an operator may take seconds, yet the next step still involves a numerical problem that is too large to solve naively. This note collects the **publicly documented pieces** of that route. It is a technical reading map, not a new paper or a report of unpublished benchmarks.
-
-## One calculation, several quite different problems
-
-A useful way to organize the work is:
-
-**Atomic structure and environment → Hamiltonian and overlap → scalable linear algebra → observable → physical validation.**
-
-These steps have different failure modes. Learning a matrix accurately is mostly a modeling problem. Applying it to a million-atom system is partly a data-layout and parallel-computing problem. Computing optical or transport response introduces another set of physical assumptions. The distinction matters because success at one stage is not evidence that the later stages work.
-
-| Layer | Main question | Something that must be checked |
-| --- | --- | --- |
-| Operator prediction | Can a model produce the right matrix on structures it has not seen? | Band energies, matrix symmetries, local environments outside the training set |
-| Orbital representation | What is the basis in which the model acts? | Overlap matrix, orbital ordering, basis transformations and Hermiticity |
-| Numerical evaluation | Can we apply or factor the needed sparse operators at the target size? | Accuracy, memory, communication, and time-to-solution |
-| Physical observable | Is the chosen quantity formulated correctly for this basis and boundary condition? | Spectra, charge, optical response, or transmission against a reference |
-| Engineering interpretation | Does a computed difference correspond to a measurable effect? | Contacts, electrostatics, temperature, disorder and uncertainty |
-
-## Learning an operator: DeePTB and SLEM solve related but different problems
-
-In [DeePTB](https://doi.org/10.1038/s41467-024-51006-4), we learned environment-dependent parameters of a compact Slater–Koster tight-binding Hamiltonian from first-principles electronic information. The point was not merely to interpolate one band diagram: the same trained model could be evaluated along atomic trajectories with local distortions. The published finite-temperature GaP example then used a **learned Hamiltonian and tight-binding propagation** on a structure of one million atoms. It was **not** a million-atom self-consistent DFT calculation. [Project explanation]({{ '/research/deeptb/' | relative_url }}) · [Code](https://github.com/deepmodeling/DeePTB).
-
-[SLEM](https://proceedings.iclr.cc/paper_files/paper/2025/hash/7db2ffcbfd0bd361d47b7fa612bd2ba2-Abstract-Conference.html) starts closer to the matrices used in atomic-orbital DFT: the Hamiltonian, overlap and other quantum operators. Its strictly local, equivariant architecture deals explicitly with the transformation of orbital tensors under rotations. That buys something different from compact tight binding, but it also means that the **nonorthogonal basis is part of the computational problem**, not a detail to ignore. [Project explanation]({{ '/research/slem/' | relative_url }}).
-
-In a nonorthogonal basis, the stationary problem is the generalized eigenproblem
-
-$$
-Hc_n = E_n S c_n,
-$$
-
-where the overlap matrix $S$ defines the orbital metric. If we simply pass the learned $H$ to an algorithm that assumes $S=I$, we may solve the wrong problem. We also need to verify that the predicted matrices obey the symmetries and numerical conditions expected by the downstream solver. Small errors in an operator need not lead to equally small errors in every derived property, particularly near delicate spectral features.
-
-## Getting a spectrum is not the same as diagonalizing everything
-
-For a finite basis with a Hermitian $H$ and positive-definite $S$, one can write the retarded resolvent and density of states as
-
-$$
-G^r(E)=\left[(E+i\eta)S-H\right]^{-1},
-$$
-
-$$
-D_\eta(E)=-\frac{1}{\pi}\operatorname{Im}\operatorname{Tr}\!\left[S\,G^r(E)\right],\qquad \eta>0.
-$$
-
-This is a broadened density of states. The appearance of $S$ in the trace is not optional: it is how the metric enters this representation. The formula describes the target quantity; it does **not** mean we should form the dense inverse of a huge matrix.
-
-For a well-localized sparse Hamiltonian, a matrix-vector product can be much cheaper than full diagonalization. Polynomial propagation and stochastic trace methods can exploit that distinction when their convergence, statistical error and required resolution are controlled. The important caveat is that a cheap action of $H$ does not automatically make every operation involving $S^{-1}$ cheap. Nor does it guarantee that sharply resolved local or response properties can be evaluated at the same cost as a coarse total DOS.
-
-The 2024 DeePTB work provides a concrete published example: DeePTB Hamiltonians were post-processed with the tight-binding propagation method to obtain finite-temperature DOS and optical properties for a million-atom GaP structure. [Nature Communications 15, 6772](https://doi.org/10.1038/s41467-024-51006-4). Later, a separate [npj Computational Materials study](https://doi.org/10.1038/s41524-026-02137-3) combined DeePMD trajectory sampling with HSE-trained DeePTB models to study phonon-assisted optical properties in supercells up to 4,096 atoms. The two papers answer different scale/accuracy questions and should not be conflated.
-
-## The sparse-matrix problem is physical as well as computational
-
-Atomic-orbital matrices carry local structure. If an atom has several orbitals, its interactions with another atom appear as a small dense block. Different elements may have different numbers of orbitals, so the block dimensions are not necessarily uniform. Storing every entry as an unrelated scalar can lose the opportunity to use efficient block kernels.
-
-[VBCSR](https://arxiv.org/abs/2609.04397) preserves those variable-sized blocks, groups compatible block shapes for optimized operations, and distributes matrices across MPI processes. Its public preprint reports sparse-matrix benchmarks and an application to an InP nanoparticle containing more than one million atoms. [Project explanation and runnable benchmark entry]({{ '/research/vbcsr/' | relative_url }}) · [Code](https://github.com/DeepElectron/vbcsr).
-
-It is worth separating three claims: a block representation saves overhead for some sparsity patterns; a particular multiplication is faster on the tested hardware; and an entire physical calculation becomes cheaper at a larger scale. These are not interchangeable. Thresholding small entries can keep intermediate matrices sparse, but it changes the approximation and needs an observable-level error check. MPI communication, memory growth and the block-size distribution matter as much as a kernel microbenchmark.
-
-## Transport changes the question: the system is open
-
-A bulk spectrum says little about the current through a device unless the contacts, boundary conditions and electrostatics are also specified. In coherent NEGF, the device Green function contains the lead self-energies:
-
-$$
-G^r_C(E)=\left[(E+i\eta)S_C-H_C-\Sigma^r_L(E)-\Sigma^r_R(E)\right]^{-1}.
-$$
-
-The transmission depends on $G^r_C$ and its coupling to the leads, not only on the isolated device's eigenvalues. In nonorthogonal formulations the lead-device coupling and related observables must also be treated consistently with overlap; the compact expression here does not replace a full implementation.
-
-This is why validating only the band structure is not enough. The [2025 npj Computational Materials DeePTB-NEGF paper](https://doi.org/10.1038/s41524-025-01853-6) used learned Hamiltonians for more than 10,000 break-junction configurations and for carbon-nanotube field-effect transistors, including an electrostatically gated 41 nm channel benchmarked against experimental transfer characteristics. It also reported a 180 nm nanotube **zero-bias transmission** calculation. Those last two are distinct tests; the 180 nm result should not be mistaken for a fully gated, finite-bias transistor benchmark.
-
-The [2D-material transport work](https://arxiv.org/abs/2512.11291) tests graphene, h-BN and MoS₂ against DFT-NEGF transmission calculations. It is a separate study of representative materials, not evidence that all defects, contacts and industrial device geometries are already covered. [DeePTB-NEGF explanation]({{ '/research/deeptb-negf/' | relative_url }}).
-
-A different direction is to differentiate the transport calculation itself. [AD-NEGF, Physical Review B 108, 195143 (2023)](https://doi.org/10.1103/PhysRevB.108.195143) uses automatic differentiation and implicit-layer methods within a tight-binding NEGF model for response derivatives and inverse design. That does not turn an approximate Hamiltonian into an exact one; it makes the chosen model's calculations differentiable. [Project explanation]({{ '/research/ad-negf/' | relative_url }}) · [Code](https://github.com/floatingCatty/ADNEGF).
-
-## What I would check before believing a large calculation
-
-When a new model or fast solver is described as accurate and scalable, I try to separate the evidence into a few concrete questions:
-
-1. **Model domain:** Which structures, species, distortions and electronic states were covered by the reference data? Was the test genuinely held out?
-2. **Operator consistency:** Are $H$ and, when present, $S$ Hermitian in the chosen representation? Is $S$ numerically usable, and are the basis conventions recorded?
-3. **Observable accuracy:** What is the error in the **quantity being used**—DOS peak positions, charge, optical spectrum, transmission, or a response coefficient—rather than only in a training loss?
-4. **Numerical convergence:** Does the answer change with broadening, polynomial order, stochastic samples, solver tolerance, sparse threshold or lead self-energy accuracy?
-5. **Scaling evidence:** Are wall-clock time, memory, node count and communication reported for the **entire useful calculation** with a fixed accuracy target, not only for a favorable matrix kernel?
-
-That list is also useful for a coding agent. An agent can assemble a model, run a sparse calculation and generate plots. It should also record the input, training-model version, operator conventions, solver parameters, reference and failed checks. Otherwise a fast automated run can be very difficult for another scientist to interpret. My separate [flower project](https://github.com/floatingCatty/flower) focuses on the reproducibility side, and its [worked scientific-agent example](https://github.com/floatingCatty/flower/blob/main/docs/REPRODUCING_AGENT_CALCULATIONS.md) shows how a run can be exported and compared numerically.
-
-## Where this line of work leads
-
-The useful unit of scientific software is not just a model that returns a matrix. It is a workflow that turns a structure into a physically meaningful answer, with the approximations and failure modes still visible. Learned quantum operators, sparse numerical infrastructure and observable-specific solvers each remove a different bottleneck. Together they make new scales and new kinds of questions accessible—but only where the whole chain has been validated.
-
-This note draws on already public papers and repositories. It intentionally does not describe methods or results from manuscripts that have not yet been released.
-
-### Original sources and code
-
-- [DeePTB — Nature Communications **15**, 6772 (2024)](https://doi.org/10.1038/s41467-024-51006-4) · [GitHub](https://github.com/deepmodeling/DeePTB)
-- [SLEM — ICLR 2025 proceedings](https://proceedings.iclr.cc/paper_files/paper/2025/hash/7db2ffcbfd0bd361d47b7fa612bd2ba2-Abstract-Conference.html)
-- [VBCSR — arXiv:2609.04397 (2026 preprint)](https://arxiv.org/abs/2609.04397) · [GitHub](https://github.com/DeepElectron/vbcsr)
-- [AD-NEGF — Physical Review B **108**, 195143 (2023)](https://doi.org/10.1103/PhysRevB.108.195143)
-- [DeePTB-NEGF — npj Computational Materials **11**, 375 (2025)](https://doi.org/10.1038/s41524-025-01853-6)
-- [Phonon-assisted optics — npj Computational Materials **12**, 268 (2026)](https://doi.org/10.1038/s41524-026-02137-3)
-- [DeePTB-NEGF for 2D materials — arXiv:2512.11291](https://arxiv.org/abs/2512.11291)
-
-
From 35b1b543d09f420c898617eeb95eb710a76eb507 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Zhanghao=20Zhouyin=20=28=E5=91=A8=E5=AF=85=E5=BC=A0?=
=?UTF-8?q?=E7=9A=93=29?= <64253517+floatingCatty@users.noreply.github.com>
Date: Sun, 11 Oct 2026 20:57:59 -0400
Subject: [PATCH 02/15] Unpublish technical synthesis until RSATB work is
released
---
...-learned-hamiltonians-to-observables-zh.md | 134 ------------------
1 file changed, 134 deletions(-)
delete mode 100644 _pages/research-learned-hamiltonians-to-observables-zh.md
diff --git a/_pages/research-learned-hamiltonians-to-observables-zh.md b/_pages/research-learned-hamiltonians-to-observables-zh.md
deleted file mode 100644
index 3d288da..0000000
--- a/_pages/research-learned-hamiltonians-to-observables-zh.md
+++ /dev/null
@@ -1,134 +0,0 @@
----
-layout: research
-permalink: /zh/research/learned-hamiltonians-to-observables/
-title: "从机器学习哈密顿量到真正可计算的电子物性"
-title_en: "From learned Hamiltonians to scalable electronic properties"
-description: "A technical guide to turning learned electronic Hamiltonians into density of states, optical response and quantum transport, with published DeePTB, SLEM, VBCSR and NEGF examples."
-description_zh: "从 DeePTB 和 SLEM 预测哈密顿量,到利用稀疏算法计算态密度、光学响应和器件输运:一份有原始论文依据的技术路线说明。"
-paper_year: 2026
-project_kind: guide
-tags:
- - Electronic structure
- - Scientific computing
-paper_url: "https://doi.org/10.1038/s41467-024-51006-4"
-code_url: "https://github.com/deepmodeling/DeePTB"
-citation_urls:
- - "https://doi.org/10.1038/s41467-024-51006-4"
- - "https://proceedings.iclr.cc/paper_files/paper/2025/hash/7db2ffcbfd0bd361d47b7fa612bd2ba2-Abstract-Conference.html"
- - "https://arxiv.org/abs/2609.04397"
- - "https://doi.org/10.1103/PhysRevB.108.195143"
- - "https://doi.org/10.1038/s41524-025-01853-6"
- - "https://doi.org/10.1038/s41524-026-02137-3"
-research_locale: zh
-translation_url: "/research/learned-hamiltonians-to-observables/"
-alternate_en_url: "/research/learned-hamiltonians-to-observables/"
-alternate_zh_url: "/zh/research/learned-hamiltonians-to-observables/"
-translation_of: "/research/learned-hamiltonians-to-observables/"
----
-
-
-
From 42612cfeb2235a09a6ce0ff51b845584f6f1d939 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Zhanghao=20Zhouyin=20=28=E5=91=A8=E5=AF=85=E5=BC=A0?=
=?UTF-8?q?=E7=9A=93=29?= <64253517+floatingCatty@users.noreply.github.com>
Date: Sun, 11 Oct 2026 20:58:48 -0400
Subject: [PATCH 06/15] Assert postponed guide stays out of generated site,
sitemap and research feeds
---
scripts/audit_site.py | 56 ++++++++++++++++---------------------------
1 file changed, 20 insertions(+), 36 deletions(-)
diff --git a/scripts/audit_site.py b/scripts/audit_site.py
index 68bf69e..a7a9f91 100644
--- a/scripts/audit_site.py
+++ b/scripts/audit_site.py
@@ -256,43 +256,27 @@ def json_file(name):
papers = json_file("publications.json")
notes = research.get("items", [])
entries = papers.get("papers", [])
- expect(len(notes) >= 11, "Fewer than eleven research/software and technical guide entries")
+ expect(len(notes) >= 10, "Fewer than ten released research and software notes")
expect(len(entries) >= 11, "Fewer than eleven verified publications in generated feed")
- # The high-level technical guide should be discoverable in both
- # languages and cite all its public primary sources, not just the
- # reference DeePTB paper. It is a BlogPosting, not a fictitious journal work.
- guide_slug = "learned-hamiltonians-to-observables"
- guide_en = "https://floatingcatty.github.io/research/" + guide_slug + "/"
- guide_zh = "https://floatingcatty.github.io/zh/research/" + guide_slug + "/"
- guide_record = next((x for x in notes if x.get("url") == guide_en), None)
- expect(guide_record is not None, "High-level technical perspective missing from research feed")
- if guide_record:
- expect(guide_record.get("url_zh") == guide_zh,
- "High-level guide missing Chinese URL in research feed")
- for url, expected_lang in ((guide_en, "en"), (guide_zh, "zh-Hans")):
- guide = parse_page(url)
- if guide:
- posts = [x for x in guide.schemas if isinstance(x, dict)
- and x.get("@type") == "BlogPosting"]
- expect(len(posts) == 1, "Guide should have one BlogPosting schema: " + url)
- if posts:
- source_urls = posts[0].get("citation")
- expect(isinstance(source_urls, list) and len(source_urls) >= 6,
- "Guide does not cite the primary papers: " + url)
- expect(posts[0].get("inLanguage") == expected_lang,
- "Guide has wrong structured-data language: " + url)
- expect(any("s41524-025-01853-6" in (href or "") for href in guide.links),
- "Guide missing published device-transport source: " + url)
- expect(any("2609.04397" in (href or "") for href in guide.links),
- "Guide missing VBCSR source: " + url)
- for url in (guide_en, guide_zh):
- index_url = "https://floatingcatty.github.io/" + (
- "research/" if url == guide_en else "zh/research/")
- idx = parse_page(index_url)
- if idx:
- expect(any(urlsplit(href or "").path == urlsplit(url).path
- for href in idx.links),
- "Localized research index omits flagship guide: " + index_url)
+ # The author postponed the standalone cross-project synthesis until RSATB
+ # is public; no public page, sitemap entry, JSON feed item or index link
+ # may expose either localized draft in the meantime.
+ for slug in ("research/learned-hamiltonians-to-observables/",
+ "zh/research/learned-hamiltonians-to-observables/"):
+ withheld = "https://floatingcatty.github.io/" + slug
+ expect(resolve_url(withheld) is None, "Postponed guide still rendered: " + withheld)
+ expect(withheld.rstrip("/") not in sitemap_urls, "Postponed guide in sitemap: " + withheld)
+ expect(not any(slug.rstrip("/") in (x.get("url", "") or "") or
+ slug.rstrip("/") in (x.get("url_zh", "") or "")
+ for x in notes),
+ "Postponed guide leaked into research.json: " + withheld)
+ for location in ("https://floatingcatty.github.io/",
+ "https://floatingcatty.github.io/research/",
+ "https://floatingcatty.github.io/zh/research/"):
+ p = resolve_url(location)
+ if p:
+ expect(slug.rstrip("/") not in p.read_text(encoding="utf-8"),
+ "Postponed guide still linked from public navigation: " + location)
conference = next((x for x in entries
if "2025-12-12-DeePTB-NEGF-preprint" in x.get("url", "")), None)
From 69e06f7edf82878b4c44f9a2386d9b6c98c85127 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Zhanghao=20Zhouyin=20=28=E5=91=A8=E5=AF=85=E5=BC=A0?=
=?UTF-8?q?=E7=9A=93=29?= <64253517+floatingCatty@users.noreply.github.com>
Date: Sun, 11 Oct 2026 20:59:31 -0400
Subject: [PATCH 07/15] Ground CV multiscale research arc in reference PDF and
expose original paper links
---
_pages/cv.html | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/_pages/cv.html b/_pages/cv.html
index 2c333d9..5dba044 100644
--- a/_pages/cv.html
+++ b/_pages/cv.html
@@ -32,7 +32,8 @@
Curriculum vitae
Zhanghao Zhouyin 周寅张皓
Physics PhD candidate · McGill University · Montréal, Canada
-
I develop AI-native scientific computing systems that connect machine-learned physical models, high-performance simulation, and engineering-scale prediction, spanning numerical infrastructure, electronic and device simulation, differentiable physics, and multiscale software.
+
I develop AI-native scientific computing systems that connect machine-learned physical models, high-performance simulation, and engineering-scale prediction. My work bridges scales—from atomistic and electronic-structure simulation through quantum transport and physical observables to device-level TCAD, coupled multiphysics, and circuit-aware modeling—using scalable numerical solvers and differentiable physics.
+
Across scales: Atomistic / electronic structure → quantum operators and observables → quantum transport → device TCAD / multiphysics → circuit models.
Some publications use the author name Yinzhanghao Zhou or YinZhangHao Zhou.
AI-native scientific computing and research projects
Industry and research experience
-
Oct 2025–Sep 2026
Research Intern · Nanoacademic Technologies Inc. (QTCAD)
Montréal. AI-enhanced modeling for superconducting quantum devices, linking first-principles Hamiltonians, finite-element electrostatics, quantum dynamics, and circuit-level simulation in QTCAD workflows.
+
Oct 2025–Sep 2026
Research Intern · Nanoacademic Technologies Inc. (QTCAD)
Montréal. AI-enhanced multiscale modeling for Nanoacademic's QTCAD, including learned first-principles Hamiltonian surrogates for superconducting-junction and circuit quantities, and device workflows that couple finite-element electrostatics, atomistic tight binding, time-dependent quantum dynamics and circuit-level models.
May 2022–Jun 2024
Research Intern · AI for Science Institute
Beijing; machine learning for materials simulation. Research mentors: Dr. Qiangqiang Gu and Dr. Linfeng Zhang.
Oct 2020–Mar 2021
Editorial Intern · Beijing Academy of Artificial Intelligence
Tracked machine-learning research and wrote technical reviews.
This page is part of the author's maintained research bibliography. The text may be an author-written overview or an abstract from an earlier manuscript version; consult the linked publisher or preprint for the version of record.
+{% include lamp-embers.html %}
+
+
From 36c8207b2a203f8c69e8c7d64ac2119ddfd96db9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Zhanghao=20Zhouyin=20=28=E5=91=A8=E5=AF=85=E5=BC=A0?=
=?UTF-8?q?=E7=9A=93=29?= <64253517+floatingCatty@users.noreply.github.com>
Date: Sun, 11 Oct 2026 21:00:54 -0400
Subject: [PATCH 13/15] Migrate all existing publication URLs from
AcademicPages single layout to the current research site
---
_config.yml | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/_config.yml b/_config.yml
index 4efa7cc..f22fb90 100644
--- a/_config.yml
+++ b/_config.yml
@@ -205,15 +205,16 @@ defaults:
values:
layout: single
author_profile: true
- # _publications
+ # _publications: original URLs remain stable, but use the unified
+ # oil-lamp layout and preserve independent Scholar/Highwire citation tags.
- scope:
path: ""
type: publications
values:
- layout: single
- author_profile: true
- share: true
- comments: true
+ layout: publication
+ author_profile: false
+ share: false
+ comments: false
# Sass/SCSS
sass:
From 3331217748a28469fb46405010c85a27d10da54a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Zhanghao=20Zhouyin=20=28=E5=91=A8=E5=AF=85=E5=BC=A0?=
=?UTF-8?q?=E7=9A=93=29?= <64253517+floatingCatty@users.noreply.github.com>
Date: Sun, 11 Oct 2026 21:01:21 -0400
Subject: [PATCH 14/15] Test visible CV navigation, cross-scale description and
unified publication pages
---
scripts/audit_site.py | 34 ++++++++++++++++++++++++++++++++++
1 file changed, 34 insertions(+)
diff --git a/scripts/audit_site.py b/scripts/audit_site.py
index a7a9f91..02d973a 100644
--- a/scripts/audit_site.py
+++ b/scripts/audit_site.py
@@ -142,6 +142,15 @@ def json_file(name):
"Homepage should expose the researcher identity")
expect(any("/research/" in (href or "") for href in home.links),
"Homepage does not link to research")
+ expect(any("/cv/" in (href or "") for href in home.links),
+ "Homepage must visibly link the academic CV")
+ home_path = resolve_url("https://floatingcatty.github.io/")
+ if home_path:
+ markup = home_path.read_text(encoding="utf-8")
+ expect('class="nav-cv"' in markup,
+ "Shared navigation lacks visible icon-labeled CV item")
+ expect('data-href-zh="/zh/cv/"' in markup,
+ "CV navigation does not expose the Chinese URL")
# The human-facing researcher and CV pages should not expose the old 2023-era
# resume or stale biography, and their canonical URL must stay unchanged.
@@ -167,6 +176,20 @@ def json_file(name):
"Alea iacta est.", "Zhanghao's Blog")),
slug + " still contains content from the retired CV/website")
+ # CV deliberately links papers to original scientific sources as well
+ # as same-theme author-owned detail pages (not an old AcademicPages view).
+ for locale in ("cv/", "zh/cv/"):
+ cv_path = resolve_url("https://floatingcatty.github.io/" + locale)
+ if cv_path:
+ cv_html = cv_path.read_text(encoding="utf-8")
+ expect('10.1038/s41467-024-51006-4' in cv_html,
+ "CV missing direct DOI link to published DeePTB paper")
+ expect('/publication/' in cv_html,
+ "CV should preserve stable local paper detail links")
+ expect('TCAD' in cv_html and 'circuit' in cv_html.lower() or
+ 'TCAD' in cv_html and '电路' in cv_html,
+ "CV lost atomistic-to-device multiscale positioning")
+
# Full-language profile URLs must be crawlable independently.
for slug in ("cv", "about"):
en_url = "https://floatingcatty.github.io/" + slug + "/"
@@ -336,6 +359,17 @@ def json_file(name):
expect("ScholarlyArticle" in page.schema_types(),
"ScholarlyArticle missing in " + url)
expect(bool(page.meta.get("citation_title")), "citation_title missing in " + url)
+ published_page = resolve_url(url)
+ if published_page:
+ markup = published_page.read_text(encoding="utf-8")
+ expect('class="publication-title"' in markup and
+ 'class="profile-intro"' in markup,
+ "Paper detail still uses retired academic theme: " + url)
+ expect('class="page__inner-wrap"' not in markup,
+ "Paper detail unexpectedly retains AcademicPages HTML: " + url)
+ source = paper.get("paper_url")
+ expect(bool(source) and source in markup,
+ "Paper detail must link to original published paper: " + url)
authors = paper.get("authors") or []
expect(bool(authors) and len(page.meta.get("citation_author", [])) == len(authors),
"Citation author count mismatch in " + url)
From ba835329f56c62784e59bf32cb5277d12743323e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Zhanghao=20Zhouyin=20=28=E5=91=A8=E5=AF=85=E5=BC=A0?=
=?UTF-8?q?=E7=9A=93=29?= <64253517+floatingCatty@users.noreply.github.com>
Date: Sun, 11 Oct 2026 21:01:39 -0400
Subject: [PATCH 15/15] Document stable paper permalinks, refreshed citation
design and conservative publication policy
---
README.md | 15 ++++++---------
1 file changed, 6 insertions(+), 9 deletions(-)
diff --git a/README.md b/README.md
index a3de68f..b158062 100644
--- a/README.md
+++ b/README.md
@@ -6,7 +6,7 @@ Live at .
## Structure
-The site is a Jekyll project. The homepage, research, essays, study notes and publication index use the oil-lamp design. The CV, About page and individual publication abstracts use the underlying [academicpages](https://github.com/academicpages/academicpages.github.io) / Minimal Mistakes theme.
+The site is a Jekyll project. The homepage, research, essays, study notes and publication index use the oil-lamp design. The CV, About, research notes, publication index and individual paper records now share the site's oil-lamp visual design; old paper permalinks are retained, with Highwire and ScholarlyArticle metadata.
| Path | Purpose |
| --- | --- |
@@ -19,7 +19,8 @@ The site is a Jekyll project. The homepage, research, essays, study notes and pu
| `_pages/research-*.md` | Bilingual research and software notes (`layout: research`) |
| `publications.json`, `research.json` | Jekyll-generated public machine-readable indexes |
| `scripts/audit_site.py` | Checks generated pages, research links, citation metadata, profile canonicals and legacy redirects |
-| `_includes/lamp-profile-style.html` | Shared accessible/printable About and CV presentation |
+| `_includes/lamp-profile-style.html` | Shared accessible/printable profile and citation presentation |
+| `_layouts/publication.html` | Current-styled paper records at existing permalinks, preserving citation metadata and direct source links |
| `_includes/lamp-*.html` | Shared markup for the lamp-styled pages (head, nav, footer, embers) |
| `_layouts/raw.html` | Pass-through layout for the lamp landing/listing pages |
| `_layouts/post.html`, `_layouts/research.html` | Lamp-styled article layouts, incl. MathJax |
@@ -84,13 +85,9 @@ each, linking directly to the corresponding translation. The site homepage
uses locale-aware links where a real Chinese equivalent exists.
A research note is a personal explanation of a project, not the original
-paper abstract. A broader **technical perspective** may use
-`project_kind: guide` with a first-party source URL and
-`citation_urls:` listing several fully verified primary references.
-This renders `BlogPosting.citation` as a list of URLs and labels the note
-as a technical perspective, not a new research paper. Do not describe
-unpublished numerical results, or add SEO-only translations that do not
-contain a substantial independent-language body.
+paper abstract. A research synthesis should only be published when its sources and intended
+scope are ready for public discussion. Never disclose unreleased numerical
+results or create SEO-only translations with no substantive body.
An academic paper belongs in `_publications/`. Its front matter should
include the **published** author list, journal or conference, date/year, DOI