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
2 changes: 1 addition & 1 deletion WEBSITE.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ 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
The homepage uses a compact biography followed by a linked research map. Its seven
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
Expand Down
126 changes: 126 additions & 0 deletions _bibliography/papers.bib

Large diffs are not rendered by default.

8 changes: 8 additions & 0 deletions _news/announcement_9.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
layout: post
date: 2026-09-12
inline: true
related_posts: false
---

New on the site: recent preprints on [RAG hallucination detection](/publications/#yu2026rt4chart), [conversational agent testing](/publications/#lin2026agenteval), [code specification alignment](/publications/#xu2026bespec), and [causal root-cause analysis](/publications/#fang2026openrca). See the [updated publication list](/publications/) for all recent work.
40 changes: 40 additions & 0 deletions _planning/scholar-update-2026-09-12.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# Scholar publication reconciliation

Source profile: https://scholar.google.com/citations?user=Tat3jMQAAAAJ&hl=en
Checked: 2026-09-12. All 22 profile rows were expanded and reviewed.

## Deduplication

The profile lists three versions of arXiv:2501.10711: the original 274-benchmark
survey, the 572-benchmark revision, and the ICML position paper. Keep the existing
`cao2025` record and citation anchor for this single work. The website therefore
contains 20 distinct works after adding nine missing records, rather than copying
all 22 Scholar rows. No changes were made to the Scholar profile itself.

## Added records and primary metadata sources

| Key | Source | Status |
| ---------------- | -------------------------------------------- | ---------------------------------- |
| fang2026openrca | https://arxiv.org/abs/2606.27154 | 2026 preprint |
| zhang2025cleanet | https://arxiv.org/abs/2510.22619 | 2025 preprint |
| lin2026agenteval | https://arxiv.org/abs/2607.06873 | 2026 preprint |
| xu2026bespec | https://arxiv.org/abs/2607.02949 | 2026 preprint |
| cao2026omnifocus | https://arxiv.org/abs/2607.03050 | 2026 preprint |
| li2026trace | https://arxiv.org/abs/2607.16242 | 2026 preprint |
| zheng2026adr | https://arxiv.org/abs/2605.31058 | 2026 preprint |
| yu2026rt4chart | https://arxiv.org/abs/2603.27752 | 2026 preprint |
| yu2021maskgan | https://doi.org/10.1016/j.neucom.2021.02.045 | Neurocomputing 441, 192-201 (2021) |

The eight arXiv records use full authors in citation-author order, exact titles,
publication years, paper URLs, and abstracts from their abstract pages. Formatting
commands in abstracts are converted to plain text. No conference acceptance is
inferred. Preserve the spelling of author names in each source record.

The Mask-guided GAN record was checked against the Scholar article detail and
Crossref title, full authors, DOI, journal, volume, pages, and year. Its source
abstract in Scholar is truncated, so it is not imported as a complete abstract.

RT4CHART is included among selected works and linked from the research map; the
other additions have contextual summaries in Research and full publication
records. The new news item is dated as a website update, not as paper acceptance.
Citation counts are deliberately not stored because they change over time.
5 changes: 4 additions & 1 deletion src/components/ResearchMap.astro
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,10 @@ import { projects } from '../data/site';
</div>
<div class="map-empirical">
<a href={`/research/#${empiricalResearch.id}`}>{empiricalResearch.title}</a><p>
LightAD examines model choice, preprocessing, and efficiency in log anomaly detection.
<a href="/research/#lightad">LightAD</a>, <a href="/publications/#fang2026openrca"
>OpenRCA 2.0</a
>, and <a href="/publications/#zhang2025cleanet">CLEANet</a> examine model efficiency, causal diagnosis,
and robustness to contaminated data.
</p>
</div>
<figcaption id="map-caption">
Expand Down
22 changes: 17 additions & 5 deletions src/data/research.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,18 @@ export const researchGroups = [
question: 'What does a passing benchmark establish?',
description: 'Strengthening tests and examining the reliability of benchmark results.',
projects: ['swe-abs', 'utboost'],
related: [{ name: 'Benchmark design', href: '/publications/#cao2025' }],
related: [
{ name: 'BeSpec', href: '/publications/#xu2026bespec' },
{ name: 'Code RLVR synthesis', href: '/publications/#zheng2026adr' },
{ name: 'Benchmark design', href: '/publications/#cao2025' },
],
},
{
id: 'test-oracles',
title: 'Constructing test oracles',
question: 'How can we test without a known answer?',
description: 'Using relations between programs and executions to detect inconsistencies.',
projects: ['retromorphic-testing'],
projects: ['rt4chart', 'retromorphic-testing'],
related: [],
},
{
Expand All @@ -21,15 +25,23 @@ export const researchGroups = [
question: 'Which changes should an AI system respond to?',
description: 'Controlled transformations reveal errors in vision and language systems.',
projects: ['rome', 'tin'],
related: [{ name: 'MetaIC', href: '/publications/#yu2022automated' }],
related: [
{ name: 'AgentEval', href: '/publications/#lin2026agenteval' },
{ name: 'TRACE', href: '/publications/#li2026trace' },
{ name: 'MetaIC', href: '/publications/#yu2022automated' },
],
},
];

export const empiricalResearch = {
id: 'aiops',
title: 'AIOps & empirical evaluation',
question: 'When is a simpler model enough?',
description: 'Studying accuracy, preprocessing, and computational cost in log anomaly detection.',
description:
'Studying causal evaluation, data contamination, and efficiency in operational AI systems.',
projects: ['lightad'],
related: [],
related: [
{ name: 'OpenRCA 2.0', href: '/publications/#fang2026openrca' },
{ name: 'CLEANet', href: '/publications/#zhang2025cleanet' },
],
};
16 changes: 16 additions & 0 deletions src/data/site.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,22 @@ export const site = {
};

export const projects = [
{
id: 'rt4chart',
paper: 'yu2026rt4chart',
name: 'RT4CHART',
year: '2026',
venue: 'arXiv',
question: 'Which claims in a RAG answer are supported by the retrieved context?',
summary:
'Retromorphic testing with claim-level, local-to-global verification identifies unsupported or contradictory claims in RAG answers and links them to answer spans and context-side evidence.',
method:
'RT4CHART decomposes an answer into independently verifiable claims, checks them against the retrieved context, and assigns each claim an entailed, contradicted, or baseless label. Hierarchical verification maps these decisions back to answer spans with explicit supporting evidence.',
finding:
'On RAGTruth++ (408 samples), RT4CHART reports precision of 0.845, recall of 0.718, and F1 of 0.776. It also reports span-level F1 of 47.5% on the re-annotated RAGTruth-Enhance dataset (2,675 samples). These results measure faithfulness to retrieved context, rather than open-domain factual correctness.',
topic: 'Trustworthy AI',
links: [{ label: 'Preprint', href: 'https://arxiv.org/abs/2603.27752' }],
},
{
id: 'swe-abs',
paper: 'yu2026sweabs',
Expand Down
2 changes: 2 additions & 0 deletions src/lib/publications.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ const topics: Record<string, string> = {
AutomatedTesting: 'Automated testing',
TrustworthyAI: 'Trustworthy AI',
AIOps: 'AIOps',
MultimodalAI: 'Multimodal AI',
ComputerVision: 'Computer vision',
};
const localResource = (value: string) =>
/^https?:\/\//.test(value) ? value : `/assets/pdf/${value}`;
Expand Down
7 changes: 4 additions & 3 deletions src/pages/publications.astro
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ const topics = [...new Set(publications.map((p) => p.topic))];
>Find a publication<input
type="search"
name="query"
placeholder="Title, author, or venue"
placeholder="Title, author, venue, or keyword"
autocomplete="off"
/></label
>
Expand All @@ -44,7 +44,7 @@ const topics = [...new Set(publications.map((p) => p.topic))];
class="publication"
id={p.id}
data-topic={p.topic}
data-search={`${p.title} ${p.authors.join(' ')} ${p.venue} ${p.year}`.toLowerCase()}
data-search={`${p.title} ${p.authors.join(' ')} ${p.venue} ${p.year} ${p.abstract}`.toLowerCase()}
>
<div class="pub-year">{p.year}</div>
<div>
Expand All @@ -59,7 +59,8 @@ const topics = [...new Set(publications.map((p) => p.topic))];
))}
</p>
<p class="pub-venue">
{p.venue} <span class="muted">/ {p.topic}</span>
{p.venue === 'arXiv' ? 'arXiv preprint' : p.venue}{' '}
<span class="muted">/ {p.topic}</span>
</p>
</>
{p.links.length > 0 && (
Expand Down
58 changes: 57 additions & 1 deletion src/pages/research.astro
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ const themes = [
title: 'Constructing test oracles',
description:
'For many programs, specifying the right answer is harder than running the program. My work explores relations between executions and between programs as a way to detect failures without enumerating correct outputs.',
projects: ['retromorphic-testing'],
projects: ['rt4chart', 'retromorphic-testing'],
},
{
id: 'ai-systems',
Expand Down Expand Up @@ -100,6 +100,19 @@ const themes = [
</article>
);
})}
{theme.id === 'coding-agents' && (
<aside class="related-research">
<h3>Specification alignment &amp; training data</h3>
<p>
<a href="/publications/#xu2026bespec">BeSpec</a> builds explicit behavioral
specifications and uses execution on probe inputs to refine the specification or
reject candidate programs.{' '}
<a href="/publications/#zheng2026adr">Combinatorial Synthesis</a> introduces
atomic decomposition and recombination to generate verifiable code tasks for
reinforcement learning. Both are 2026 preprints.
</p>
</aside>
)}
{theme.id === 'coding-agents' && (
<aside class="related-research">
<h3>Benchmark design beyond individual test suites</h3>
Expand All @@ -118,6 +131,19 @@ const themes = [
</p>
</aside>
)}
{theme.id === 'ai-systems' && (
<aside class="related-research">
<h3>Conversational agents &amp; model safety</h3>
<p>
<a href="/publications/#lin2026agenteval">AgentEval</a> mines conversational
workflow graphs, replays paths to hidden stateful boundaries, and perturbs those
boundaries to test agents without source-code access.{' '}
<a href="/publications/#li2026trace">TRACE</a> learns a reusable safety patch
across simulated harmful fine-tuning trajectories to recover alignment while
preserving task utility. Both are 2026 preprints.
</p>
</aside>
)}
{theme.id === 'ai-systems' && (
<aside class="related-research">
<h3>Earlier work: MetaIC</h3>
Expand All @@ -133,9 +159,39 @@ const themes = [
</div>
</aside>
)}
{theme.id === 'aiops' && (
<aside class="related-research">
<h3>Causal diagnosis &amp; contaminated time series</h3>
<p>
<a href="/publications/#fang2026openrca">OpenRCA 2.0</a> provides 500
root-cause-analysis instances with step-wise causal annotations, exposing failures
that outcome-only evaluation can miss.{' '}
<a href="/publications/#zhang2025cleanet">CLEANet</a> combines
contamination-resilient training with a lightweight model for multivariate
time-series anomaly detection. These works are available as preprints.
</p>
</aside>
)}
</div>
</section>
))
}
<section class="section" aria-labelledby="further-work">
<div class="section-heading">
<h2 id="further-work">Multimodal AI &amp; visual computing</h2><a href="/publications/"
>All publications</a
>
</div>
<div class="prose">
<p>
<a href="/publications/#cao2026omnifocus">OmniFocus</a> (2026 preprint) studies query-guided
audio-visual token compression, estimating importance independently for each modality while
preserving their alignment. Earlier work on <a href="/publications/#yu2021maskgan"
>mask-guided GANs</a
> (Neurocomputing 2021) uses text-body, outline, and shadow masks to guide scene text editing
while preserving style and background.
</p>
</div>
</section>
</div>
</Base>
6 changes: 6 additions & 0 deletions tests/site.test.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,12 @@ test('retains publication keys, authors, chronology, citations, and PDF files',
'',
);
const entries = bibtex.toJSON(source).filter((entry) => entry.citationKey);
const arxivIds = entries.map((entry) => entry.entryTags.arxiv).filter(Boolean);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Include eprint values in duplicate arXiv validation

When another title for the known arXiv work 2501.10711 is added using an arxiv field, this assertion still passes because the existing cao2025 record stores that identifier in eprint with archivePrefix={arXiv} (_bibliography/papers.bib:55-56) and is omitted from arxivIds. Normalize both supported representations before checking uniqueness so the new test enforces the deduplication scenario it was added for.

Useful? React with 👍 / 👎.

assert.equal(
new Set(arxivIds).size,
arxivIds.length,
'Different titles must not duplicate the same arXiv work',
);
const $ = load(await readFile(join(dist, 'publications/index.html'), 'utf8'));
assert.equal($('.publication').length, entries.length);
for (const entry of entries) {
Expand Down
Loading