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
18 changes: 18 additions & 0 deletions .github/workflows/site-check.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
name: Public site checks

on:
pull_request:
push:
branches: [main]

jobs:
validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.11"
- run: python -m unittest discover -s tests -v
- run: node --check assets/research-portfolio.js
- run: node --check app.js
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
__pycache__/
*.py[cod]
7 changes: 6 additions & 1 deletion assets/research-portfolio.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,11 @@
manifest.projects.forEach((project) => {
const card = document.createElement(project.url ? "a" : "article");
card.className = `research-card${project.url ? "" : " is-unlinked"}`;
if (project.url) card.href = project.url;
if (project.url) {
card.href = project.url;
card.target = "_blank";
card.rel = "noopener noreferrer";
}

const head = document.createElement("div");
head.className = "research-card-head";
Expand All @@ -37,6 +41,7 @@
addText(card, "", project.name, "h3");
addText(card, "", project.summary, "p");
addText(card, "research-card-role", project.role);
addText(card, "research-card-access", project.url ? "Repository ↗" : "Link not public");
fragment.append(card);
});

Expand Down
14 changes: 7 additions & 7 deletions data/research-portfolio.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,33 +20,33 @@
{
"code": "CONSISTENCY",
"name": "Tenet",
"url": "https://github.com/intellistream/Tenet",
"url": null,
"role": "Agent workspace consistency",
"summary": "Versioned premise tracking, stale-read detection, writer attribution, and bounded recovery for parallel coding agents.",
"summary": "Versioned premise tracking, stale-read detection, and writer attribution for parallel coding agents.",
"stage": "PRIVATE INCUBATION"
},
{
"code": "ANNS",
"name": "NewGammaFresh",
"url": "https://github.com/intellistream/NewGammaFresh",
"url": null,
"role": "Dynamic vector indexes",
"summary": "Continuous ANNS under update and query pressure, including delete absorption and rebuild boundaries.",
"stage": "PRIVATE INCUBATION"
},
{
"code": "TIME",
"name": "TA-RAG",
"url": "https://github.com/intellistream/TA-RAG",
"url": null,
"role": "Temporal retrieval",
"summary": "Time-aware retrieval contracts, temporal splits, baselines, and reproducible evaluation.",
"summary": "Time-aware retrieval over controlled temporal splits with reproducible evaluation.",
"stage": "PRIVATE INCUBATION"
},
{
"code": "LIFECYCLE",
"name": "Temporal RAG",
"url": "https://github.com/intellistream/sage-temporal-memory",
"url": null,
"role": "Temporal data lifecycle",
"summary": "Temporal visibility, versions, updates, expiry semantics, and matched retrieval evaluation.",
"summary": "Temporal visibility, versions, updates, expiry semantics, and retrieval evaluation.",
"stage": "PRIVATE INCUBATION"
},
{
Expand Down
8 changes: 4 additions & 4 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
<title>DataSys | Systems for Evolving Data</title>
<link rel="canonical" href="https://datasys.sage.org.ai/">
<link rel="icon" href="favicon.svg" type="image/svg+xml">
<link rel="stylesheet" href="styles.css?v=mobile-navigation-20260723">
<link rel="stylesheet" href="styles.css?v=public-boundary-20260825">
</head>
<body class="portal portal-datasys">
<header class="site-header">
Expand Down Expand Up @@ -121,9 +121,9 @@ <h3>Sesame</h3>
<section class="section research-portfolio" id="research-portfolio">
<div class="section-head">
<div><p class="eyebrow">Evolving-data research</p><h2>Eight questions. One data-systems home.</h2></div>
<p>These projects study framework-neutral processing, retrieval, indexing, temporal state, and evaluation. Incubating projects retain their current repositories and access boundaries until they satisfy the DataSys graduation contract.</p>
<p>These projects study framework-neutral processing, retrieval, indexing, temporal state, and evaluation. Project names and technical roles remain visible throughout incubation; repository links appear only after public release.</p>
</div>
<div class="research-grid" data-research-portfolio data-source="./data/research-portfolio.json">
<div class="research-grid" data-research-portfolio data-source="./data/research-portfolio.json?v=public-boundary-20260825">
<p class="research-status" data-research-status>Loading the research portfolio…</p>
</div>
</section>
Expand Down Expand Up @@ -198,7 +198,7 @@ <h3>Sesame</h3>
<div><strong>DataSys</strong><span>Open systems for evolving data.</span></div>
<nav aria-label="Footer navigation"><a href="./achievements.html">Achievements</a><a href="https://github.com/DataSysResearch">GitHub</a><a href="https://github.com/DataSysResearch/.github/blob/main/SECURITY.md">Security</a><a href="https://github.com/DataSysResearch/.github/blob/main/CONTRIBUTING.md">Contribute</a></nav>
</footer>
<script src="assets/research-portfolio.js"></script>
<script src="assets/research-portfolio.js?v=public-boundary-20260825"></script>
<script src="app.js"></script>
</body>
</html>
2 changes: 2 additions & 0 deletions styles.css
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,8 @@ h1 { margin: 0; font-size: clamp(72px, 11vw, 166px); line-height: .82; }
.research-card h3 { margin: 18px 0 0; font-size: 24px; }
.research-card p { margin: 0; color: var(--muted); }
.research-card-role { margin-top: auto; color: #527616; font-size: 12px; font-weight: 800; }
.research-card-access { color: #176f72; font: 700 10px ui-monospace, SFMono-Regular, Menlo, monospace; text-transform: uppercase; }
.research-card.is-unlinked .research-card-access { color: #7b5550; }
.research-status { grid-column: 1 / -1; margin: 0; padding: 28px; color: var(--muted); }
.filterbar { margin-bottom: 20px; display: flex; gap: 7px; flex-wrap: wrap; }
.filter { min-height: 40px; padding: 8px 13px; color: var(--muted); background: transparent; border: 1px solid var(--line); border-radius: 4px; font-size: 13px; font-weight: 800; cursor: pointer; }
Expand Down
45 changes: 45 additions & 0 deletions tests/test_public_site.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
from __future__ import annotations

import json
import unittest
from pathlib import Path


ROOT = Path(__file__).resolve().parents[1]
PORTFOLIO = json.loads(
(ROOT / "data" / "research-portfolio.json").read_text(encoding="utf-8")
)


class PublicSiteTests(unittest.TestCase):
def test_research_portfolio_keeps_the_governed_topics(self) -> None:
names = {project["name"] for project in PORTFOLIO["projects"]}
self.assertEqual(
names,
{
"Semantic-MR",
"Wiki-Link Retrieval",
"Tenet",
"NewGammaFresh",
"TA-RAG",
"Temporal RAG",
"GRACE",
"BriskSeed",
},
)

def test_only_public_organization_links_are_emitted(self) -> None:
allowed = (
"https://github.com/DataSysResearch/",
"https://github.com/RIDE-Lab/",
)
for project in PORTFOLIO["projects"]:
url = project["url"]
self.assertTrue(url is None or url.startswith(allowed), project["name"])

linked = {project["name"] for project in PORTFOLIO["projects"] if project["url"]}
self.assertEqual(linked, {"Wiki-Link Retrieval", "GRACE", "BriskSeed"})


if __name__ == "__main__":
unittest.main()
Loading