diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 6619121..36f06e6 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -1,5 +1,4 @@ -# Manual until the lab approves switching production to React. -# After the first approved deployment, add a push trigger for master if desired. +# Production is live. Keep deployment manual unless the maintainer requests automation. name: Deploy React website on: workflow_dispatch: diff --git a/README.md b/README.md index ef91e76..586f5cc 100644 --- a/README.md +++ b/README.md @@ -44,29 +44,25 @@ Run `npm run format` after editing JavaScript, JSX, CSS, or root configuration f See [Content model](docs/CONTENT_MODEL.md) for field definitions and [Maintenance runbook](docs/MAINTENANCE.md) for submissions, discovery, review, activation and recovery. Keep stable IDs when editing existing records: they determine page URLs. Ordinary papers do not require a thumbnail or local PDF. Do not modify the `legacy` metadata unless correcting an import; it preserves original bibliographic details. -Publications support explicit `personIds`; existing imports retain name matching until the roster/content pass supplies verified links. The discovery pipeline uses only the explicitly verified identities in the populated `maintenance/authors.json` registry. Eight current-member identities are used for discovery, while verified past-member and split-profile identities can match coauthors without expanding discovery into their later work. +All 66 publications have reviewed `personIds`, which determine profile paper lists. The discovery pipeline queries nine current-member identities and recognizes anchored past-member and split-profile identities as coauthors. Reviewed membership evidence uses inclusive calendar years; uncertain identities and dates remain human-review cases. ## Review and deploy Create a branch and pull request. The check workflow runs content validation, tests and the production build, then saves the exported site as a downloadable artifact. Review the content and preview before merging. -The React deployment workflow is **manual-only** until the lab approves the production switch. In the GitHub repository, set Pages → Source to GitHub Actions, then run “Deploy React website” after approval. It deploys `out/` at the existing organization site address. No production settings were changed during local migration. Once the lab wants automatic deployment, add a `push` trigger for `master`. - -Do not push the migration to the production branch while the old Pages branch-based Jekyll deployment remains enabled. Use a PR and coordinate the Pages source switch with the first React deployment. +The React site is live at from `master`, using GitHub Actions for Pages. Deployment remains **manual-only**: after reviewing and merging a change, run “Deploy React website” on `master`. Pushing a branch or merging a PR does not deploy it. The [runbook](docs/MAINTENANCE.md) covers verification and rollback without rewriting history. ## Migration and remaining work See [Next steps and GitHub issues](_planning/NEXT_STEPS.md) for the current delivery plan and completion criteria. -All 47 publication records, 22 people records, 11 legacy alumni entries, three news records, seven sponsors and original asset files were preserved. Old route names remain available, including `/team/`, `/publications/`, `/allnews/`, `/allnews.html`, `/vacancies/` and `/idiofid/`. A duplicated PDF path in the old GLOBEM entry was repaired. +The reviewed website contains 66 publications, 22 people records (nine current members), 11 legacy alumni entries, four news records, seven sponsors, and 69 honors. Sponsors are described as **Past and present support**, as confirmed by the maintainer. Original assets and stable publication URLs remain available. Empty Research, Pictures, and About website routes redirect to relevant live sections; historical news, recruitment, and IdioFid URLs are preserved. -The current and past lab roster has been reviewed, and the publication rule requires Tim plus at least one other current or past lab member. Historical membership intervals, ambiguous author identities, and publication/award backfill still need work. No new papers or honors were added by the migration itself. The IdioFID form retains its existing Google Apps Script endpoint; a signup was not submitted during migration. +The content and layout passes are complete. Keyboard, responsive, accessibility, and route checks are recorded in [final QA](_planning/FINAL_QA.md). The IdioFid form retains its existing Google Apps Script endpoint; the maintainer explicitly deferred a live signup test. The migration backup location and inventory are recorded in `_planning/migration-backup.json`. It includes the pre-migration legacy source and staged/unstaged Git patches. Generated Jekyll output and installed Ruby dependencies were not archived. Git's existing commit history is intact. -**Infrastructure first; content last.** Structured collections and related page skeletons, submission forms, OpenAlex discovery, deduplication, persistent review decisions, weekly draft-PR workflows, health checks, and deployment validation are implemented. Empty future collections contain no invented lab records. - -**Live maintenance remains disabled.** Activation requires a verified author roster, configuration and reviewer ownership, repository permissions, and an independent scheduler/notification hookup. Two real weekly review cycles and the approved production switch remain to be done after the content pass. Private reviewer notes, credentials and signup addresses must stay out of this public repository. +**Recurring maintenance remains disabled.** The isolated live discovery pilot passed; see [pilot evidence](_planning/MAINTENANCE_PILOT.md). Primary maintainer: [advaitmb](https://github.com/advaitmb). Activation still requires review safeguards, alert routing, an independent missed-run monitor, and two actual weekly review cycles. Automatic publication is out of scope. Private reviewer notes, credentials, and signup addresses stay outside this public repository. ## Credits diff --git a/_planning/ATTRIBUTION_REVIEW.md b/_planning/ATTRIBUTION_REVIEW.md new file mode 100644 index 0000000..a5702f7 --- /dev/null +++ b/_planning/ATTRIBUTION_REVIEW.md @@ -0,0 +1,35 @@ +# Explicit publication attribution review — September 10, 2026 + +Issue #22. All 66 approved papers now have explicit profile links; 23 imported records previously relied on name matching. These changes record authorship without reconsidering archive inclusion or the nine rejected candidate updates. The new-candidate requirement (Tim plus another lab author) does not retroactively remove grandfathered papers. + +The stored paper title pages were checked against the existing author lists and verified roster identities. Mike’s Homekit2020 authorship is also confirmed on [his bibliography](https://mikemerrill.io/). Yasaman’s GLOBEM authorship is confirmed in the [author-hosted final paper](https://micohan.github.io/assets/pdf/GLOBEM.pdf), [her CV](https://sefyas.github.io/files/2411-YSSCV.pdf), and the [UbiComp award record](https://ubicomp.hosting.acm.org/ubicompiswc2023_wp/awards/ubicomp-iswc-2023-awards/). The older locally stored GLOBEM PDF lacks her on the title page; the final author-hosted version supplies the evidence for the existing approved author list. That PDF/version discrepancy is recorded here; the previously rejected metadata update is not reopened. + +| Existing paper ID | Explicit person IDs | Primary source | +| --- | --- | --- | +| xu2023globemimwut | yasamansefidgar, timalthoff | [Paper](https://micohan.github.io/assets/pdf/GLOBEM.pdf) | +| merrillHomekit2020BenchmarkTime2023 | mikemerrill, timalthoff | [Paper](https://behavioral-data.github.io/resources/pubpdfs/merrillHomekit2020BenchmarkTime2023.pdf) | +| zech2023mhatsengagement | timalthoff | [Paper](https://behavioral-data.github.io/resources/pubpdfs/zech2023mhatsengagement.pdf) | +| miner2022computational | timalthoff | [Paper](https://behavioral-data.github.io/resources/pubpdfs/miner2022computational.pdf) | +| mezlini2021estimating | timalthoff | [Paper](https://behavioral-data.github.io/resources/pubpdfs/mezlini2021estimating.pdf) | +| althoff2022diet | timalthoff | [Paper](https://behavioral-data.github.io/resources/pubpdfs/althoff2022diet.pdf) | +| hicks2022leveraging | timalthoff | [Paper](https://behavioral-data.github.io/resources/pubpdfs/hicks2022leveraging.pdf) | +| althoffModeration | timalthoff | [Paper](https://behavioral-data.github.io/resources/pubpdfs/althoffModeration.pdf) | +| liupaths2020 | timalthoff | [Paper](https://behavioral-data.github.io/resources/pubpdfs/liupaths2020.pdf) | +| gordonactivity2019 | timalthoff | [Paper](https://behavioral-data.github.io/resources/pubpdfs/gordonactivity2019.pdf) | +| xuleveraging2019 | timalthoff | [Paper](https://behavioral-data.github.io/resources/pubpdfs/xuleveraging2019.pdf) | +| sefidgarpassively2020 | yasamansefidgar, timalthoff | [Paper](https://behavioral-data.github.io/resources/pubpdfs/sefidgarpassively2020.pdf) | +| kurashima2018tipas | timalthoff | [Paper](https://behavioral-data.github.io/resources/pubpdfs/kurashima2018tipas.pdf) | +| althoff2018psychomotor | timalthoff | [Paper](https://behavioral-data.github.io/resources/pubpdfs/althoff2018psychomotor.pdf) | +| althoff2016onlineappendix | timalthoff | [Paper](https://behavioral-data.github.io/resources/pubpdfs/althoff2016onlineappendix.pdf) | +| shameli2017gamification | timalthoff | [Paper](https://behavioral-data.github.io/resources/pubpdfs/shameli2017gamification.pdf) | +| althoff2017large | timalthoff | [Paper](https://behavioral-data.github.io/resources/pubpdfs/althoff2017large.pdf) | +| althoff2017onlineactions | timalthoff | [Paper](https://behavioral-data.github.io/resources/pubpdfs/althoff2017onlineactions.pdf) | +| althoff2017population | timalthoff | [Paper](https://behavioral-data.github.io/resources/pubpdfs/althoff2017population.pdf) | +| althoff2016pokemon | timalthoff | [Paper](https://behavioral-data.github.io/resources/pubpdfs/althoff2016pokemon.pdf) | +| althoff2016counseling | timalthoff | [Paper](https://behavioral-data.github.io/resources/pubpdfs/althoff2016counseling.pdf) | +| althoff2015donor | timalthoff | [Paper](https://behavioral-data.github.io/resources/pubpdfs/althoff2015donor.pdf) | +| althoff2014ask | timalthoff | [Paper](https://behavioral-data.github.io/resources/pubpdfs/althoff2014ask.pdf) | + +Yasaman’s 2019 and GLOBEM entries remain approved historical collaborations despite her later recorded 2025–2026 lab affiliation. Profile authorship and automatic eligibility for new additions serve different purposes. Names shared by unrelated coauthors (including other Lius, Lins, Xus, and Zhangs) are not converted into lab identities. + +The screening code reads the existing `maintenance/membership-evidence.json` directly, uses inclusive joining/leaving years, preserves Jina’s 2023–2025 gap, and treats omitted or unknown intervals as requiring review. It does not infer ongoing affiliation from current roster status or a null end. Reassessment updates screening labels while preserving the original human-decision receipts, IDs, targets, and rejected/deferred state. diff --git a/_planning/FINAL_QA.md b/_planning/FINAL_QA.md new file mode 100644 index 0000000..10a797f --- /dev/null +++ b/_planning/FINAL_QA.md @@ -0,0 +1,38 @@ +# Final browser and content QA + +September 10, 2026. Checked the static export served at `http://127.0.0.1:3100/`, using Chrome and Playwright. This covers the September 10 completion branch; it is not a claim that these final fixes have already deployed. + +## Results + +- Nine representative routes at five viewport sizes: home, team, publication archive, news, awards, Join us, IdioFid, Tim’s profile, and a publication detail page. Viewports: 1280×900, 390×844, 320×800, 640×450, and 1280×600. +- All 45 route/viewport combinations had zero axe-core WCAG 2 A/AA, 2.1 A/AA, or 2.2 AA violations, no horizontal page overflow, and no browser page errors. Automated checks do not establish complete accessibility conformance. +- The custom overflow check found a clipped sidebar footer at 1280×600. The sidebar now scrolls vertically when needed. All nine routes passed the short-window recheck, and keyboard focus brings the footer link into view. +- The skip link needed an explicitly focusable destination. `main` now has `tabIndex=-1`; activating “Skip to content” with Enter moves focus to `main` without adding a normal tab stop. The export checker guards this requirement. +- At phone width, keyboard activation opens and closes Filters, the expanded state updates, hidden filters are unavailable, combined 2026/Tim filters give the expected count, an unmatched query gives the empty state, and keyboard Clear filters restores all 66 papers. +- All 22 profile publication counts match the reviewed explicit `personIds`. Unit checks cover the underlying relationship and rejection of implicit name-only attribution. +- Browser navigation verifies the empty-page redirects: Research → Publications, Pictures → Team, About website and its `.html` legacy URL → Home. Canonical URLs and visible fallback links remain in the exported aliases. +- The future-content fixture build confirms that populated Research and Pictures pages retain their records and sitemap entries instead of redirecting. Closed recruitment records use the neutral empty state. +- The static export checker verifies all 106 HTML pages, internal assets/downloads, legacy URLs, anchors, heading order, signup action, and exclusion of review/configuration files. Existing production route and metadata checks are recorded in the launch runbook. +- After restoring the longer original hero description, repeated the homepage check at all five viewport sizes. It remained readable with no overflow, clipping, browser errors, or automated accessibility violations. + +## Manual follow-up to automated checks + +Axe could not evaluate text over the animated SVG, some headshot-adjacent names, and decorative middle-dot separators. Inspected desktop, narrow-phone, and tablet screenshots and checked the specified text/background colors. Ordinary dark text and purple links have contrast ratios of 15.90:1 and 10.41:1 against white; muted text is 5.59:1. The hero’s 85% white overlay gives a conservative lower bound of 11.26:1 for its dark copy and 7.37:1 for its purple link even over black artwork, before the additional text shadow/fade. The low-contrast middle dot is decorative; adjacent year and venue text conveys the information. + +The 640px and 320px reflow checks correspond to the available layout widths at 200% and 400% zoom from a 1280px viewport. Native browser zoom, other browser engines, screen-reader operation, and physical touch devices were not tested in this pass. Reduced-motion mode was used; the unchanged animation pause and movement behavior has separate coverage in the visual review. + +## Approved content decisions + +- Restore the original two-paragraph hero description at the maintainer’s request. Correct the Allen School name and use its current HTTPS link. Add the separately requested current-work sentence after the original paragraphs; broader research-description changes need Tim’s approval. The original text is retained in pre-migration `_pages/home.md`. +- Use **Past and present support** for Adobe, AI2, the Gates Foundation, Microsoft Research, NIH, NSF, and ONR (maintainer reply, September 10). +- Keep the smaller aligned sidebar and the approved **Allen School** wording. +- Keep the reviewed recruitment guidance and its existing Tim-owned review dates; no new opening was invented during QA. +- Keep empty sections out of navigation and the sitemap while preserving useful legacy destinations and the Allan Lab template credit in README. + +## Deferred integration + +The maintainer explicitly said to leave the IdioFid signup test. No live submission was sent, no address was stored, and endpoint ownership/delivery remain unverified. Preservation of the form action only confirms the exported form configuration. + +## Repeating the checks + +Run `npm run check` and `npm run test:skeleton`, serve `out/`, then repeat the viewport matrix above with an accessibility scanner. In a 600px-tall desktop window, tab to the sidebar footer and ensure it is visible. At phone width, exercise Filters and Clear filters using the keyboard. Start a new page load with Tab then Enter and verify that the skip link moves focus into the main content. Browser screenshots and machine-readable audit output from this pass are local QA artifacts, not shipped website assets. diff --git a/_planning/MAINTENANCE_PILOT.md b/_planning/MAINTENANCE_PILOT.md new file mode 100644 index 0000000..fdabc32 --- /dev/null +++ b/_planning/MAINTENANCE_PILOT.md @@ -0,0 +1,61 @@ +# Publication maintenance pilot + +September 10, 2026. Primary maintainer: **advaitmb**. This was an isolated readiness test, not an activated recurring service or a completed weekly human-review cycle. + +## Provider and identity coverage + +OpenAlex anonymous access worked. No API key, paid plan, or production secret was used. Current provider documentation allows basic anonymous access; a lab-owned free API key can increase the budget if needed. The client uses 100 works per page, a maximum of 100 requests per run, bounded retries, a six-hour cache, 45-day lookback, and 30-day full reconciliation. See [authentication](https://help.openalex.org/api/authentication/) and [paging](https://help.openalex.org/api/paging/). + +All nine current members now have configured discovery identities. Rongwu’s personal website links his [Scholar profile](https://scholar.google.com/citations?user=HyjNrDMAAAAJ). His [ACL 2024 paper](https://aclanthology.org/2024.acl-long.858/) and [EMNLP 2024 survey](https://aclanthology.org/2024.emnlp-main.486/) anchor OpenAlex `A5101295876` and four final/preprint work IDs. Other work from that profile still requires per-paper identity review. The retrieved Scholar page was stale and was used only as an identity cross-check, not evidence of complete current coverage. + +Namesake contamination and split identities remain documented. Anchored past-member identities can match coauthors without collecting their full later careers. A relevance label is not acceptance, and unrecognized coauthors can still cause false negatives. + +## Live runs + +Enabled discovery only in a temporary copy of `content/` and `maintenance/`. The repository’s scheduling gates stayed off. Queried all pages to completion and checked full, incremental, and cached repeat behavior. + +| Pass | Unique works returned | Network requests | Result | +| --- | ---: | ---: | --- | +| Initial eight-member full collection | 384 | 10 | Complete; one new source record | +| Eight-member incremental lookback | 9 | 8 | Same queue | +| Eight-member cached repeat | 9 | 0 | Same queue | +| Nine-member full collection, adding Rongwu | 402 | 1 additional; other responses cached | Complete; 19 new source records relative to repository | +| Nine-member incremental lookback | 9 | 1 additional; other responses cached | Same queue | +| Nine-member cached repeat | 9 | 0 | Same queue | + +The nine-member result retained 409 observations grouped into 330 canonical candidates: 42 accepted, 278 pending, and ten rejected. All three nine-member queues had SHA-256 `01242752f1edddd0e965c100f66327be1d96598a12fd735b068e4ab8ba7d66c2`. Existing observations include manually recovered records that need not appear in each live provider fetch. + +All 19 newly observed source records (14 canonical items) lacked the required Tim identity and screened as `does-not-meet-rule`. They consist of Rongwu profile records and Jina’s FrankenReport preprint. They remain pilot observations, not approved content or newly recorded human rejections. No eligible paper was added. The repeat produced no duplicate or metadata changes. Provider coverage is not exhaustive. + +Verified byte-for-byte preservation of the repository bibliography, review queue, and disabled configuration. In the isolated queue, every prior status and all ten rejections remained unchanged. The approved website still has 66 papers; its durable review queue still has 390 observations and 316 canonical decisions (42 accepted, 264 pending, ten rejected), plus one accepted manual supplement. Pilot observations were not copied over editorial decisions. + +## Recovery evidence + +The existing discovery tests exercise cursor pagination, missing cursors, provider retries and budget exhaustion, source-field changes, retractions, namesakes, rejected DOI aliases, deferred decisions, and preservation of the queue/checkpoint after partial failure. The live repeat adds real-provider idempotency evidence; fixtures do not count as successful scheduled runs. + +## Activation checklist + +- [x] Name primary maintainer: advaitmb. +- [x] Verify current provider access and bounded request budget. +- [x] Finish inclusive year-level membership screening and current-member discovery coverage. +- [ ] Confirm backup reviewer or explicit sole-maintainer operating policy. +- [ ] Confirm failure-alert destination and configure actionable notifications. +- [ ] Require passing website checks and an appropriate human-review policy on `master`. Existing protection has no required checks or required PR reviews; do not assume those safeguards are active. +- [ ] Merge the reviewed infrastructure and enable both the file gate and `WEBSITE_MAINTENANCE_ENABLED` repository variable. +- [ ] Connect an independent lab-owned missed-run monitor and verify delivery. The same-repository daily health workflow is not independent monitoring. +- [ ] Complete two actual weekly review cycles. + +The configured GitHub schedule is Monday 15:17 UTC for collection and daily 16:43 UTC for health. No new automation or external service was created by this local pilot. Production deployment remains manual; automatic publication is out of scope. + +## Weekly operating log + +After activation, add one row per actual cycle. Record no-change weeks as well; do not replace a week with repeated same-day test runs. + +| Cycle/date | Collection run and review PR | Missed papers / false matches / duplicates | Recovery and reviewer effort | Human reviewer / outcome | +| --- | --- | --- | --- | --- | +| First actual week | Pending activation | — | — | — | +| Second actual week | Pending activation | — | — | — | + +A temporary clean checkout of `5fd627e` passed formatting, all JS/Python tests, content validation, and the exported-site check. A local synthetic edit to the homepage description was committed, built, and confirmed in the export. Reverting that commit restored the exact original content bytes; a rebuilt export passed with a clean working tree. Shared local dependencies required the webpack build option in this isolated checkout. Nothing was pushed or deployed from the rehearsal. + +A backup maintainer’s practical content update, preview/check, and rollback exercise is still required for the handoff issue. This agent rehearsal does not establish that another person has completed the handoff. diff --git a/_planning/NEXT_STEPS.md b/_planning/NEXT_STEPS.md index 7283314..cad608d 100644 --- a/_planning/NEXT_STEPS.md +++ b/_planning/NEXT_STEPS.md @@ -1,172 +1,32 @@ -# Completing the new lab website +# Website issue status -Current implementation: React + Next.js, plain CSS, JSON content, optional Python helpers, and static export for GitHub Pages. Jekyll has been removed. The initial migration preserves 47 papers, 21 people records, 12 legacy alumni entries, three news items, seven sponsors, and the original assets. The UI uses original lab prose and branding with minimal functional labels. +Updated September 10, 2026. This document replaces the pre-launch roadmap. The React site is already live at ; deployment remains manual. -This is the current implementation roadmap. WEBSITE_SPEC.md and MODERN_STACK_OPTIONS.md retain the earlier audit and research history; this document supersedes their old stack and delivery recommendations. +## Completed content and engineering work -## Decisions already made +| Issue | Result | Evidence | +| --- | --- | --- | +| [#22](https://github.com/behavioral-data/behavioral-data.github.io/issues/22) · Roster and attribution | Nine current members, 22 profiles, explicit author links on all 66 papers, inclusive membership-year screening with separate affiliation periods. Omitted alumni ranges remain omitted. | [Attribution review](ATTRIBUTION_REVIEW.md), [membership review](MEMBERSHIP_REVIEW.md) | +| [#23](https://github.com/behavioral-data/behavioral-data.github.io/issues/23) · Publications | Approved backfill and metadata reconciliation complete. Final publication records take precedence over preprints. All nine declined cases stay excluded; 264 other pending matches are not treated as reviewed rejections. Issue closed. | [Backfill](PUBLICATION_BACKFILL_REVIEW.md), [reconciliation](PUBLICATION_RECONCILIATION_REVIEW.md) | +| [#24](https://github.com/behavioral-data/behavioral-data.github.io/issues/24) · Awards and news | Approved honors and homepage highlights published. Requested exclusions, Jina wording, and removal of the Ken/xAI news item retained. Issue closed. | [Awards audit](AWARDS_AUDIT.md) | +| [#25](https://github.com/behavioral-data/behavioral-data.github.io/issues/25) · Page content | Approved layout, dated recruitment records, “Past and present support” sponsor label, useful redirects for empty legacy sections. | [Content model](../docs/CONTENT_MODEL.md), [visual review](VISUAL_REVIEW.md) | +| [#26](https://github.com/behavioral-data/behavioral-data.github.io/issues/26) · Browser QA | Responsive, accessibility, keyboard, filters, profile relationships, and legacy route checks; short-window sidebar and skip-link focus fixed. Live signup test explicitly deferred by the maintainer. | [Final QA](FINAL_QA.md) | +| [#27](https://github.com/behavioral-data/behavioral-data.github.io/issues/27) · Discovery | Nine current discovery identities, isolated live full/incremental/repeat pilot, bounded anonymous API access, preserved decisions and content. | [Maintenance pilot](MAINTENANCE_PILOT.md) | -- Keep the website barebones. Use original prose; obtain approval for factual corrections or new wording. -- Keep the stack familiar and simple: React/Next.js, plain CSS, structured files, Python where helpful, GitHub Pages. -- Review one weekly batch before publishing. Automatic publication is not enabled or planned for this phase. -- Keep the production switch separate from migration development. The existing live website is unchanged. +The September 10 issue-completion branch still needs the normal PR review/merge and manual deployment. Implementation completion does not mean its newest changes are already in production. -## Delivery order +## Remaining operating work -**Updated direction: finish infrastructure and skeletons first; review and backfill content last.** The branch now includes structured content and relationship validation, related awards/news/projects, opportunity and gallery skeletons, explicit publication attribution fields, issue forms, OpenAlex collection, deduplication, review decisions, gated weekly draft-PR and health workflows, legacy export checks, and a maintainer runbook. +### #28 · Weekly review and monitoring -The roster now reflects the maintainer-confirmed eight current members. Scholar profiles are confirmed; OpenAlex identities and a local review batch are available. The latest Scholar check yields 13 recent review papers after version grouping; see `maintenance/recent-review.md`. Publication attribution requires at least two lab authors, including Tim plus a current/past member; Tim alone is insufficient. A repository skill and single pipeline command now make collection, status, decisions, validation, and draft-PR publication repeatable; acceptance enforces the policy and records evidence-backed overrides. Resolve membership dates and remaining identity ambiguities before accepting candidates. Verified duplicate versions are grouped; source records are preserved. Awards, projects, opportunities, and gallery collections remain empty. Fixture tests exercise future sections in a temporary checkout; activation and two weekly review cycles, browser/signup QA, external monitoring setup, and production deployment remain pending. See [Publication policy](../docs/PUBLICATION_POLICY.md). +Primary maintainer: **advaitmb**. Backup reviewer and failure-alert destination have not yet been confirmed. Both scheduling gates remain off. Complete review safeguards and notification routing, connect a lab-owned independent missed-run monitor, then enable the weekly workflow. Record **two actual weekly review cycles** before declaring maintenance operational. Same-day pilot reruns do not satisfy that requirement. No paper is published automatically. -Next, complete the content pass under issues #22–#25; configure real identities/owners and run the #27–#28 pilot; finish #26 launch QA; then perform the approved #29 production switch. The issues remain open because infrastructure alone does not complete their content or live-operation acceptance criteria. See [Maintenance runbook](../docs/MAINTENANCE.md) and [Content model](../docs/CONTENT_MODEL.md). +### #29 · Handoff -## Work items +Production launch is complete. Retain manual deployment and the documented rollback procedure. The primary maintainer is named; a backup maintainer and their practical update/rollback exercise remain outstanding. The IdioFid signup test is deferred, not a launch blocker or a claimed success. -| Work item | GitHub issue | -| --- | --- | -| 1. Verify the lab roster and publication attribution rules | [#22](https://github.com/behavioral-data/behavioral-data.github.io/issues/22) | -| 2. Backfill missing publications and reconcile existing metadata | [#23](https://github.com/behavioral-data/behavioral-data.github.io/issues/23) | -| 3. Verify and backfill awards and news with shared records | [#24](https://github.com/behavioral-data/behavioral-data.github.io/issues/24) | -| 4. Review original page content, recruitment, sponsors, and barebones layout | [#25](https://github.com/behavioral-data/behavioral-data.github.io/issues/25) | -| 5. Complete browser, accessibility, route, and signup checks | [#26](https://github.com/behavioral-data/behavioral-data.github.io/issues/26) | -| 6. Implement publication discovery, normalization, and deduplication | [#27](https://github.com/behavioral-data/behavioral-data.github.io/issues/27) | -| 7. Create weekly review batches, contributor intake, and monitoring | [#28](https://github.com/behavioral-data/behavioral-data.github.io/issues/28) | -| 8. Launch React on GitHub Pages and document maintainer handoff | [#29](https://github.com/behavioral-data/behavioral-data.github.io/issues/29) | +See the [maintenance runbook](../docs/MAINTENANCE.md) for operating instructions and the [pilot log](MAINTENANCE_PILOT.md) for activation and review-cycle records. -### 1. Verify the lab roster and publication attribution rules +## Deferred content -GitHub: [#22](https://github.com/behavioral-data/behavioral-data.github.io/issues/22) - -September 9 membership research: [21 usable year-level timelines](MEMBERSHIP_REVIEW.md) are recorded. Jina’s return in 2026 is confirmed; five alumni ranges are intentionally omitted at the maintainer’s request. The dates use the maintainer-requested year precision in `maintenance/membership-evidence.json`; explicit author links on the 47 legacy papers remain outstanding. - -Phase: Before launch. Dependencies: none. - -The imported roster has 21 people records plus 12 legacy alumni entries. These are historical records, not a verified current membership list. Profile publications currently use name matching. - -- [ ] Have a lab maintainer confirm current members, alumni, visitors, roles, websites, headshots, ordering, and membership dates; reconcile duplicate alumni representations. -- [ ] Record verified scholarly author IDs and aliases with source links; do not resolve identities from names alone. -- [ ] Decide whether preprints are included and how pre-joining, post-departure, and continuing-collaboration work should be attributed. -- [ ] Add explicit internal person links to reviewed publications and use those on profiles instead of relying on name matching. -- [ ] Validate the new fields and check ambiguous names, visitors, and alumni against reviewed examples. - -Done when the roster and attribution policy are approved and each profile lists the intended lab work. - -### 2. Backfill missing publications and reconcile existing metadata - -GitHub: [#23](https://github.com/behavioral-data/behavioral-data.github.io/issues/23) - -September 9 publication passes: [seven historical additions](PUBLICATION_BACKFILL_REVIEW.md) bring the local site to 66 papers, and [reconciliation of 24 existing entries](PUBLICATION_RECONCILIATION_REVIEW.md) adds 20 missing DOIs, restores complete author lists and groups five preprint/final pairs. The maintainer declined all nine remaining candidate additions/updates; existing approved entries are preserved. This completes the current review pass. The other 264 pending candidates have not been individually rejected, and exhaustive coverage is not claimed. Next planned issue: #24, awards and news. Margaret’s two papers remain verified preprints until journal records are confirmed. Publication changes were pushed as `3fcf3fb`; production deployment is still separate. - -Phase: Before launch. Dependencies: 1. - -The migrated archive contains 47 papers spanning 2014–2024. It needs a verified backfill, beginning with 2025 onward and then older omissions. - -- [ ] Reconcile publications for every verified member and relevant alumnus against authoritative author records, publisher pages, and personal bibliographies. -- [ ] Submit candidates for human review with sources, lab-author links, ordered authors, dates, venue, DOI/arXiv IDs, and publication state. -- [ ] Reconcile preprint/published versions and existing duplicates while retaining stable URLs and editorial descriptions. -- [ ] Add available PDF, code, dataset, and project links; ordinary papers must not require a local PDF or thumbnail. -- [x] Select the latest award-winning papers as homepage highlights (maintainer direction, September 9). The approved #24 pass selects the two papers with the latest verified award dates: Perceptions of Moderators and Reddit Rules and Rulers (2025). Existing prose is preserved; the backfill is approved and published. - -Done when an agreed bibliography has been reconciled, omissions or conflicts are recorded, and approved papers appear consistently in the archive and profiles. - -### 3. Verify and backfill awards and news with shared records - -GitHub: [#24](https://github.com/behavioral-data/behavioral-data.github.io/issues/24) - -Phase: Before launch. Dependencies: 1, 2. - -The [awards review](AWARDS_NEWS_REVIEW.md) and [expanded audit](AWARDS_AUDIT.md) are published on the website: 69 honors total, including 59 additional verified records. All 35 maintainer exclusions remain excluded; 15 candidates are deferred for missing dates, source access or attribution. Yasaman is linked to GLOBEM. The homepage order is Latest news, People awards, then Paper awards. People highlights include the latest two honors plus Ashish’s ACM and William Chan dissertation awards. The 2026 news item covers Jina’s return; the Ken/xAI item was removed at the maintainer’s request. Review records retain exact sources, decisions and public award IDs. No additional paper awards were eligible. Source-access gaps remain documented for 26 publisher attempts and Twitter/X timelines. - -Homepage highlight selection is part of this step: after verifying the awards, choose the latest award-winning papers. This resolves the deferred highlight work from #23. - -- [ ] Collect missing paper awards, individual honors, and lab news from conference/award organizations, UW announcements, or member-submitted evidence. -- [x] Add structured award records with exact title, awarding body, date, recipients, optional paper link, and source URL. -- [x] Review the original award fields and news entries; migrate without changing their meaning or duplicating announcements. -- [x] Render approved awards consistently on relevant paper/profile pages and the news/awards view from shared records. -- [ ] Require approval for new wording; do not generate promotional summaries or infer awards from citations. - -Done when the lab approves the initial backfill and editing one award updates all associated views. - -### 4. Review original page content, recruitment, sponsors, and barebones layout - -GitHub: [#25](https://github.com/behavioral-data/behavioral-data.github.io/issues/25) - -Phase: Before launch. Dependencies: none. - -The React draft intentionally uses original site prose and logos. Some original claims are old, including recruiting availability and research themes. Research, pictures, and about-website routes currently have only titles. - -- [ ] Ask the lab to verify the existing overview, postdoc document, PhD guidance, affiliation, and seven sponsor entries. -- [ ] Remove or explicitly approve corrections to stale claims; add no new prose or taglines without approval. -- [ ] Decide whether empty routes should remain, be hidden, or redirect; retain necessary template attribution in repository documentation. -- [ ] Add an owner and review/expiry date for opportunities and other time-sensitive content. -- [ ] Confirm page order, original logo variants, highlight selection, and which archive sections belong on the homepage. - -Done when the lab has approved the minimal content and navigation and no unverified current opening is advertised. - -### 5. Complete browser, accessibility, route, and signup checks - -GitHub: [#26](https://github.com/behavioral-data/behavioral-data.github.io/issues/26) - -Phase: Before launch. Dependencies: 4. - -Production builds, content validation, unit tests, and an internal exported-link check pass locally. Comprehensive browser and integration QA is still pending. - -- [ ] Exercise desktop/mobile layouts, original logos, keyboard navigation, focus, contrast, headings, alt text, and zoom in the built-in browser. -- [ ] Check publication search, combined filters, reset/empty states, profiles, awards, and missing optional assets. -- [ ] Build a legacy URL inventory from the original site and verify every required page/download. Include /team/, /publications/, /allnews/, /vacancies, /idiofid/, /aboutwebsite.html, and linked PDFs; add redirects or exported aliases for gaps. -- [ ] Check canonical URLs, sitemap, robots, favicon, social/search metadata, and 404 behavior on a static Pages-like server. -- [ ] Confirm ownership of the IdioFid Google Apps Script endpoint and coordinate one authorized test signup; verify the response without storing addresses in the repository. -- [ ] Add durable automated checks for actual regressions found, especially URL preservation and content relationships. - -Done when launch-critical routes and interactions pass, the signup flow is verified, and remaining nonblocking defects are recorded. - -### 6. Implement publication discovery, normalization, and deduplication - -GitHub: [#27](https://github.com/behavioral-data/behavioral-data.github.io/issues/27) - -Phase: Maintenance pilot. Dependencies: 1, 2. - -scripts/prepare_publication.py currently prepares a local proposal from one Crossref DOI. It does not discover papers or edit approved content. - -- [ ] Choose one primary scholarly provider after checking current access, coverage, limits, and costs; query verified author IDs. -- [ ] Implement paginated incremental retrieval with lookback, periodic reconciliation, caching, retries, and a request budget. -- [ ] Normalize source IDs and metadata; use exact IDs for deduplication and send fuzzy matches or version conflicts to review. -- [ ] Store candidates and provenance separately from approved content. Preserve manual corrections, rejected candidates, and deferrals across runs. -- [ ] Flag withdrawals, corrections, missing source records, and changed metadata for review; never silently delete approved papers. -- [ ] Test repeat runs, same-name researchers, preprint-to-publication transitions, source failures, and partial results. - -Done when fixture and live pilot runs produce evidence-backed candidates, repeat runs produce no duplicate changes, and no candidate publishes automatically. - -### 7. Create weekly review batches, contributor intake, and monitoring - -GitHub: [#28](https://github.com/behavioral-data/behavioral-data.github.io/issues/28) - -Phase: Maintenance pilot. Dependencies: 3, 6. - -The agreed policy is one weekly batch for human review before publication. No scheduled discovery or review automation is enabled yet. - -- [ ] Add a simple member submission path for DOI/URL, award evidence, and profile corrections; GitHub issue forms are sufficient initially. -- [ ] Prepare one review pull request per weekly batch with additions, changed fields, source links, matched people, and conflicts; update an existing batch instead of duplicating it. -- [ ] Support approve/edit/reject/defer and retain those decisions on subsequent imports; keep private reviewer notes and signup addresses outside the public repo. -- [ ] Run content checks and provide a preview/artifact. Publish only after a maintainer approves and merges. -- [ ] Assign primary and backup reviewers and select a lab-owned scheduler and notification destination. -- [ ] Track last successful fetch, review, and deploy; detect missed runs independently and notify on actionable failures or overdue review, staying quiet on no-change runs. -- [ ] Run at least two weekly review cycles and record missed papers, false matches, duplicates, failure recovery, and reviewer time. - -Done when the pilot demonstrates reliable collection and human-reviewed publication, with a documented operating owner. Automatic publication remains out of scope. - -### 8. Launch React on GitHub Pages and document maintainer handoff - -GitHub: [#29](https://github.com/behavioral-data/behavioral-data.github.io/issues/29) - -Phase: Launch. Dependencies: 1, 2, 3, 4, 5. - -The migration exports a static Next.js/React site. The existing live site remains on its old deployment; the new Pages workflow is manual-only. - -- [ ] Open and review the migration PR; run CI from a clean checkout with the documented Node version and validate the exported artifact. -- [ ] Confirm the intended production branch/domain and record a known-good rollback revision and deployment procedure. -- [ ] Obtain lab approval for the production switch, coordinate merging with changing Pages Source to GitHub Actions, and run the first React deployment. -- [ ] Verify production routes, PDFs, assets, canonical domain, and signup behavior; confirm the rollback procedure is usable. -- [ ] Enable deployment on approved merges only after the initial switch is verified, if agreed. -- [ ] Give a primary and backup CS PhD maintainer a short runbook covering content edits, preview, validation, deployment, rollback, dependencies, and lab-owned credentials. - -Done when the approved React site is live and a second maintainer can make and roll back an update. The maintenance pilot can follow launch; do not imply that launch alone enables automatic discovery. +The five omitted alumni year ranges, the 15 unresolved award candidates, and documented source-access gaps remain deferred. The approved historical bibliography is preserved even where the newer candidate policy would require an exception. Discovery labels are screening aids, not evidence of complete coverage. diff --git a/app/globals.css b/app/globals.css index 760ba0f..b1fe409 100644 --- a/app/globals.css +++ b/app/globals.css @@ -114,6 +114,7 @@ h3 { border-right: var(--divider-width) solid var(--divider-color); display: flex; flex-direction: column; + overflow-y: auto; background: white; z-index: 5; } diff --git a/app/layout.jsx b/app/layout.jsx index 3b651fc..2f5011a 100644 --- a/app/layout.jsx +++ b/app/layout.jsx @@ -50,13 +50,15 @@ export default function RootLayout({ children }) {

University of Washington
- Paul G. Allen School + Allen School

Seattle, WA
-
{children}
+
+ {children} +