diff --git a/.github/workflows/site-check.yml b/.github/workflows/site-check.yml new file mode 100644 index 0000000..1964a88 --- /dev/null +++ b/.github/workflows/site-check.yml @@ -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 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..43ae0e2 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +__pycache__/ +*.py[cod] diff --git a/assets/research-portfolio.js b/assets/research-portfolio.js index 4ed4bae..648afe1 100644 --- a/assets/research-portfolio.js +++ b/assets/research-portfolio.js @@ -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"; @@ -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); }); diff --git a/data/research-portfolio.json b/data/research-portfolio.json index b5d3f92..fdfbd59 100644 --- a/data/research-portfolio.json +++ b/data/research-portfolio.json @@ -20,15 +20,15 @@ { "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" @@ -36,17 +36,17 @@ { "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" }, { diff --git a/index.html b/index.html index 75e9181..a932ed9 100644 --- a/index.html +++ b/index.html @@ -9,7 +9,7 @@
Evolving-data research
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.
+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.
Loading the research portfolio…