Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 31 additions & 19 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: deploy
name: Build and deploy website

on:
push:
Expand All @@ -12,26 +12,38 @@ on:
workflow_dispatch:

permissions:
contents: write
contents: read

concurrency:
group: website-${{ github.ref }}
cancel-in-progress: true

jobs:
deploy:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout 🛎️
uses: actions/checkout@v3
- name: Setup Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: '3.2.1'
bundler-cache: true
- name: Install and Build 🔧
run: |
npm install -g mermaid.cli
bundle exec jekyll build
- name: Deploy 🚀
if: github.event_name != 'pull_request'
uses: JamesIves/github-pages-deploy-action@v4
with:
folder: _site
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '24'
cache: npm
- run: npm ci
- run: npm run verify
- uses: actions/upload-pages-artifact@v3
with:
path: dist

deploy:
needs: build
if: github.event_name != 'pull_request' && (github.ref == 'refs/heads/master' || github.ref == 'refs/heads/main')
runs-on: ubuntu-latest
permissions:
pages: write
id-token: write
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
10 changes: 9 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,12 @@ _site
.tweet-cache
Gemfile.lock
vendor

node_modules/
dist/
.astro/
public/assets/
public/papers.bib
public/social-card.png
.env
.env.*
!.env.example
6 changes: 6 additions & 0 deletions .prettierrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"plugins": ["prettier-plugin-astro"],
"singleQuote": true,
"printWidth": 100,
"overrides": [{ "files": "*.astro", "options": { "parser": "astro" } }]
}
667 changes: 14 additions & 653 deletions README.md

Large diffs are not rendered by default.

117 changes: 117 additions & 0 deletions WEBSITE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
# Website maintenance

The new site uses Astro static output. Original Jekyll source remains for reference
and is not included in the generated website.

## Current scope: academic homepage

The homepage uses a compact biography followed by a linked research map. Its six
selected publications are grouped into coding-agent evaluation, test oracles,
AI-system testing, and AIOps. Edit `src/data/research.ts` to update map membership
and publication groups together. The map describes thematic connections, not a
timeline or technical dependency graph. Its layout becomes a vertical list on
small screens; all links work without client-side JavaScript.

The homepage and navigation prioritize academic identity, research, publications,
service, and biography. Writing and education routes are retained for later work,
but are not promoted in the academic navigation or homepage. Normal local preview
should use `npm run dev` (without drafts).

Research summaries and resource links live in `src/data/site.ts`; full citation
metadata lives in `_bibliography/papers.bib`. Keep quantitative claims scoped to
the cited paper's evaluation. Service records in `src/data/services.json` preserve
all 20 original entries across 2021-2025, with an integration test against the
original source. Add new service records to both the migration baseline and the
dataset, or explicitly update the migration test when maintaining newer years.

## Run and verify

Use Node 24 LTS (minimum 22.12) and npm.

```sh
npm ci
npm run dev
npm run dev:drafts
npm run verify
npm run preview
```

Use either development command, not both on the same port. Normal development
hides drafts; `dev:drafts` shows them with a visible editorial banner and noindex.
Production builds always exclude drafts, including when CONTENT_PREVIEW is set.
Astro 7 runs the dev server in the background. Use `npx astro dev stop` before
switching preview modes; `npx astro dev logs` displays its logs.

`verify` runs type checks, the static build, link and migration checks, draft
isolation checks, and a publishing integration test in a temporary directory.
The integration test renders both Markdown and MDX without changing local articles.

## Write an article

Create a stable filename under `src/content/writing/`. Its name becomes the URL.
Use Markdown by default and MDX when an article needs a component.

```yaml
---
title: 'A precise article title'
description: 'What the reader will learn.'
publishedAt: 2026-09-08
language: en
topics: [AI evaluation]
audience: developers and research readers
draft: true
featured: false
series: Evaluating AI in practice
order: 3
---
```

`series` and `order` are optional, but must be supplied together. Use distinct
order values within a series. `updatedAt` describes a substantive revision.
Review facts, references, examples, and resource links. Then set `draft: false`,
select the publication date, and run `npm run verify`.
Home shows up to two featured articles; Writing contains all released articles.
RSS and sitemap use the same publication-date and draft restrictions.

Future-dated posts require a new build on or after their publication date. This
repository does not schedule future publishing automatically. Articles linked
from a released article must also be published; broken links fail verification.

The two initial English explainers are editorial drafts prepared during the
redesign, not existing published work. Review them before release.

## Update research and background

- `_bibliography/papers.bib`: publication records, resource URLs, citation keys.
- `src/data/site.ts`: profile metadata and three research highlights.
- `src/data/services.json`: migrated academic service records.
- `_news/*.md` and `_talks/*.md`: retained announcement and talk sources.
- `src/pages/about.astro` and `src/pages/teaching.astro`: background and assistantships.
- `src/pages/education.astro`: learning resource and series placement.

Bibliography keys remain publication anchors. The unused legacy APS string
declaration was removed; the lightweight parser expects explicit field values
rather than BibTeX string macros. Existing PDF paths remain unchanged.
`prepare:assets` copies PDFs, portrait and legacy icon, exports clean BibTeX,
and generates a PNG social card from `public/social-card.svg`.

## Release and rollback

Review the site and editorial drafts separately. Production builds exclude drafts.

The workflow validates pull requests and uploads an artifact without publishing
them. Pushes or manual runs on master/main deploy verified `dist/` output using
GitHub's official upload-pages-artifact and deploy-pages actions. Repository Pages
settings must use GitHub Actions as the build source; the github-pages environment
allows the master branch to deploy.

The previous deployed gh-pages commit is
`5ad5ce2f6b855d3b6ececc9be7090c22e14c2fe6`; the branch is retained for rollback.
For rollback, prepare a revert PR for the migration, including its workflow, or
redeploy the retained known-good static artifact through the normal deployment
process. Avoid force-pushing or resetting shared history. The source baseline for
this redesign is 5b12a018464201cee4c0b2bf148779c425289b0d. To restore the legacy
site immediately, switch Pages back to branch publishing from gh-pages at its
retained commit. Reverting source code alone does not change the Pages build source.

See `_planning/migration-report.md` for retained routes and editorial follow-ups.
29 changes: 18 additions & 11 deletions _bibliography/papers.bib
Original file line number Diff line number Diff line change
@@ -1,31 +1,34 @@
---
---

@string{aps = {American Physical Society,}}


@article{yu2026sweabs,
abbr={ICML},
title={SWE-ABS: Adversarial Benchmark Strengthening Exposes Inflated Success Rates on Test-based Benchmark},
author={Yu, Boxi and others},
author={Yu, Boxi and Cao, Yang and Zhang, Yuzhong and Lin, Liting and Xu, Junjielong and Zhong, Zhiqing and Xu, Qinghua and Wang, Guancheng and Cao, Jialun and Cheung, Shing-Chi and He, Pinjia and Briand, Lionel},
journal={ICML'26: International Conference on Machine Learning},
year={2026},
selected={true},
topic={CodeAgents}
topic={CodeAgents},
arxiv={2603.00520},
url={https://arxiv.org/abs/2603.00520},
pdf={https://arxiv.org/pdf/2603.00520}
}

@article{yu2025utboost,
@inproceedings{yu2025utboost,
abbr={ACL},
title={UTBoost: Rigorous Evaluation of Coding Agents on SWE-Bench},
author={Boxi Yu and Yuxuan Zhu and Pinjia He and Daniel Kang},
year={2025},
booktitle={Proceedings of the 63rd Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers)},
pages={3762--3774},
doi={10.18653/v1/2025.acl-long.189},
selected={true},
topic={CodeAgents},
arxiv={2506.09289},
code={https://github.com/CUHK-Shenzhen-SE/UTBoost},
primaryClass={cs.SE},
url={https://arxiv.org/abs/2506.09289},
pdf={https://arxiv.org/pdf/2506.09289}
url={https://aclanthology.org/2025.acl-long.189/},
pdf={https://aclanthology.org/2025.acl-long.189.pdf}
}

@article{yu2023Retro,
Expand All @@ -43,7 +46,7 @@ @article{yu2023Retro

@article{cao2025,
abbr={ICML Position},
title={How Should We Build A Benchmark? Revisiting 274 Code-Related Benchmarks For LLMs},
title={Code Benchmarks Should Prioritize Rigor, Reliability, and Reproducibility},
author={Jialun Cao and Yuk-Kit Chan and Zixuan Ling and Wenxuan Wang and Shuqing Li and Mingwei Liu and Ruixi Qiao and Yuting Han and Chaozheng Wang and Boxi Yu and Pinjia He and Shuai Wang and Zibin Zheng and Michael R. Lyu and Shing-Chi Cheung},
journal={ICML Position},
year={2026},
Expand All @@ -59,6 +62,8 @@ @article{cao2025
@article{zhong2025deprecation,
abbr={ICSE},
title={An Empirical Study on Package-Level Deprecation in Python Ecosystem},
doi={10.1109/ICSE55347.2025.00046},
url={https://doi.org/10.1109/ICSE55347.2025.00046},
author={Zhong, Zhiqing and He, Shilin and Wang, Haoxuan and Yu, Boxi and Yang, Haowen and He, Pinjia},
journal={ICSE'25: International Conference on Software Engineering},
year={2025},
Expand Down Expand Up @@ -94,6 +99,8 @@ @article{yu2024dspyg
@article{mang2024EQR,
abbr={ICSE},
title={Testing Graph Database Systems via Equivalent Query Rewriting},
doi={10.1145/3597503.3639200},
url={https://doi.org/10.1145/3597503.3639200},
author={Mang, Qiuyang and Fang, Aoyang and Yu, Boxi and Chen, Hanfei and He, Pinjia},
journal={ICSE'24: International Conference on Software Engineering},
year={2024},
Expand Down Expand Up @@ -123,7 +130,7 @@ @article{yu2023tin
author={Yu, Boxi and Hu, Yiyan and Mang, Qiuyang and Hu, Wenhan and He, Pinjia},
journal={ESEC/FSE'23: Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering},
pdf={https://arxiv.org/pdf/2308.07937.pdf},
code={https://github.com/RobustNLP/TestIC},
code={https://github.com/RobustNLP/TestNER},
year={2023},
selected={true},
topic={AutomatedTesting},
Expand Down Expand Up @@ -151,7 +158,7 @@ @inproceedings{yu2023rome
series = {ISSTA 2023},
selected={true},
topic={AutomatedTesting},
code={https://github.com/RobustNLP/TestNER},
code={https://github.com/RobustNLP/TestIC},
html={https://dl.acm.org/doi/abs/10.1145/3597926.3598094},
pdf={https://arxiv.org/pdf/2306.02228.pdf},
slides={Rome_slides.pdf}
Expand Down
2 changes: 1 addition & 1 deletion _config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ title: blank # the website title (if blank, full name will be used instead)
first_name: Boxi
middle_name:
last_name: Yu
email: boxiyu@link.cuhk.edu.cn
email: boxi.yu@lero.ie
description: > # the ">" symbol means to ignore newlines until "footer_text:"
Academic homepage of Boxi Yu, Senior Research Fellow at Lero.
footer_text: >
Expand Down
Loading
Loading