Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
4612722
Reproduce upstream Psychoinformatics site
leej3 Aug 6, 2026
a553741
Add Pixi-controlled upstream preview tasks
leej3 Aug 10, 2026
3978b54
Wire local SHACL Vue editor preview
leej3 Aug 10, 2026
b7fdbc3
Track SHACL Vue deployment compatibility commit
leej3 Aug 10, 2026
fb3c4c6
Add full recursive submodule checkout task
leej3 Aug 10, 2026
66b2fe4
Run the upstream editor against a local service stack
leej3 Aug 10, 2026
a35040d
Use leej3 mirrors for recursive submodules
leej3 Aug 10, 2026
3d95038
Make pixi serve start the complete local deployment
leej3 Aug 10, 2026
6e8516b
docs: record commit message preferences
leej3 Aug 10, 2026
5b8380a
docs: refine formatting preferences
leej3 Aug 10, 2026
59e6229
build: add Pixi-controlled Snapper hook
leej3 Aug 10, 2026
85b7f0e
style: normalize Markdown with Snapper
leej3 Aug 10, 2026
1746416
build: finalize reproducible local trial runtime
leej3 Aug 11, 2026
7920ded
docs: clarify the CURIE-only schema contract
leej3 Aug 11, 2026
b141b17
docs(clean-migration): record the upstream ancestry exception
leej3 Aug 11, 2026
e12b965
build(clean-migration): add deterministic CON projection
leej3 Aug 11, 2026
05d779a
feat(stack): isolate CON and upstream collections
leej3 Aug 11, 2026
f54cf5f
chore(submodules): pin the clean migration site
leej3 Aug 11, 2026
ca2b3c4
docs: start the full CON migration
leej3 Aug 11, 2026
4428a36
build(full-migration): generalize the CON contracts
leej3 Aug 11, 2026
7ce44a2
chore(submodules): pin the full CON migration site
leej3 Aug 11, 2026
dd496d5
docs: start milestone 3
leej3 Aug 12, 2026
eb46fb9
build(deps): pin the static editor runtime
leej3 Aug 12, 2026
be4fcb6
feat(preview): add static Pages editing
leej3 Aug 12, 2026
b1ed0c9
feat(zotero): pin public publication ingestion
leej3 Aug 12, 2026
bd0bc2c
fix(preview): harden editor reproducibility
leej3 Aug 12, 2026
526054b
chore(submodules): pin the Milestone 3 site
leej3 Aug 12, 2026
6b2f779
fix(preview): canonicalize editor RDF
leej3 Aug 12, 2026
2957a35
fix(ci): use the accepted Pixi version syntax
leej3 Aug 12, 2026
80ac1fa
fix(preview): reset generated editor plugins
leej3 Aug 12, 2026
67ae3b8
fix(ci): hydrate preservation refs in Pages builds
leej3 Aug 12, 2026
f6841f1
chore(submodules): refresh the hosted site snapshot
leej3 Aug 12, 2026
0027199
fix(ci): make annex hydration pristine-run safe
leej3 Aug 12, 2026
dd6e93d
chore(submodules): refresh the hosted site digest
leej3 Aug 12, 2026
b7cc0a3
fix(ci): preserve the audited Pages artifact
leej3 Aug 12, 2026
5359a7d
docs(milestone): open the Milestone 3 review
leej3 Aug 12, 2026
7a3b359
test(build): lock the CON image override contract
leej3 Aug 12, 2026
5bca07e
chore(submodules): pin the portable CON artifact
leej3 Aug 12, 2026
a910461
docs(milestone): record the portable preview evidence
leej3 Aug 12, 2026
adf608d
test(content): cover the poster preview shortcode
leej3 Aug 12, 2026
b1ca3a9
fix(build): reject CON link prefetching
leej3 Aug 12, 2026
075b9ed
chore(submodules): pin the poster-safe CON artifact
leej3 Aug 12, 2026
0df9ed8
docs(milestone): record the poster-safe review build
leej3 Aug 12, 2026
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
4 changes: 4 additions & 0 deletions .githooks/pre-commit
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
#!/usr/bin/env bash
set -euo pipefail

exec pixi run pre-commit run --hook-stage pre-commit "$@"
104 changes: 104 additions & 0 deletions .github/workflows/con-pages-preview.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
name: CON Pages preview

on:
pull_request:
branches:
- main
push:
branches:
- main
- codex/milestone-3
workflow_dispatch:
inputs:
deploy:
description: Deploy this exact ref to the github-pages environment
required: true
default: false
type: boolean

permissions:
contents: read

jobs:
build:
name: Build the backend-free CON artifact
runs-on: ubuntu-24.04
timeout-minutes: 45
permissions:
contents: read
concurrency:
group: con-pages-build-${{ github.ref }}
cancel-in-progress: true

steps:
- name: Check out the pinned recursive source tree
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
fetch-depth: 0
persist-credentials: false
submodules: recursive

- name: Verify the accepted clean-migration checkpoints
shell: bash
run: |
set -euo pipefail
readonly parent_checkpoint=f54cf5fdb2b5ae4bf03fe6939246316fd9ec818d
readonly site_checkpoint=a122e506de9e4a13473edbe8d74a950d74032a16
readonly checkpoint_ref=refs/remotes/origin/codex/clean-migration

git fetch --no-tags --no-recurse-submodules origin \
refs/heads/codex/clean-migration:${checkpoint_ref}
test "$(git rev-parse "${checkpoint_ref}")" = "${parent_checkpoint}"

git -C submodules/centerforopenneuroscience.org fetch \
--no-tags --no-recurse-submodules origin \
refs/heads/codex/clean-migration:${checkpoint_ref}
test "$(git -C submodules/centerforopenneuroscience.org \
rev-parse "${checkpoint_ref}")" = "${site_checkpoint}"

- name: Install the locked Pixi environment
uses: prefix-dev/setup-pixi@f00437f565399d418b0acc85936d12c1fb668347 # v0.10.1
with:
cache: true
cache-write: ${{ github.event_name != 'pull_request' }}
locked: true
pixi-version: v0.73.0

- name: Run focused contracts
run: pixi run test-pages

- name: Build twice and exercise the static editor
run: pixi run test-pages-browser

- name: Upload the reviewed static artifact
uses: actions/upload-pages-artifact@fc324d3547104276b827a68afc52ff2a11cc49c9 # v5.0.0
with:
include-hidden-files: true
path: build/pages-preview/orinoco-lite-dev

deploy:
name: Deploy the reviewed Pages artifact
needs: build
if: >-
github.event_name == 'push' ||
(github.event_name == 'workflow_dispatch' && inputs.deploy)
runs-on: ubuntu-24.04
timeout-minutes: 10
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
permissions:
contents: read
id-token: write
pages: write
concurrency:
group: con-pages-deployment
cancel-in-progress: true

steps:
- name: Configure the Pages deployment
uses: actions/configure-pages@45bfe0192ca1faeb007ade9deae92b16b8254a0d # v6.0.0

- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@cd2ce8fcbc39b97be8ca5fce6e763baed58fa128 # v5.0.0
101 changes: 101 additions & 0 deletions .github/workflows/upstream-pages-trial.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
name: Upstream Psychoinformatics Pages trial

on:
workflow_dispatch:

permissions:
contents: read

concurrency:
group: upstream-psychoinformatics-pages
cancel-in-progress: true

jobs:
build-and-deploy:
runs-on: ubuntu-24.04
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
permissions:
contents: read
pages: write
id-token: write

steps:
- name: Check out the coordination branch
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1

- name: Check out the pinned upstream site only
run: |
git submodule sync -- submodules/www-from-model
git submodule update --init --depth 1 -- submodules/www-from-model
git -C submodules/www-from-model config core.worktree \
"${GITHUB_WORKSPACE}/submodules/www-from-model"
git -C submodules/www-from-model submodule update --init --depth 1 -- themes/congo

- name: Install uv
uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
with:
version: 0.12.1
enable-cache: false

- name: Install git-annex
run: uv tool install git-annex==10.20260717

- name: Hydrate upstream annexed assets
run: |
git -C submodules/www-from-model fetch --depth 1 \
origin \
+010ca44f751d2ab60b9d4ad58c5931d1804e3c9e:refs/remotes/origin/git-annex
git -C submodules/www-from-model remote add upstream \
https://hub.psychoinformatics.de/www/www-from-model.git
git -C submodules/www-from-model fetch --depth 1 \
upstream \
+010ca44f751d2ab60b9d4ad58c5931d1804e3c9e:refs/remotes/upstream/git-annex
git -C submodules/www-from-model config --add annex.private true
git -C submodules/www-from-model annex init
git -C submodules/www-from-model annex get .
test -z "$(git -C submodules/www-from-model annex find --not --in=here)"

- name: Install Hugo Extended
uses: peaceiris/actions-hugo@2752ce1d29631191ea3f27c23495fa06139a5b78 # v3.2.1
with:
hugo-version: 0.154.5
extended: true

- name: Read the Pages deployment URL
id: pages
uses: actions/configure-pages@45bfe0192ca1faeb007ade9deae92b16b8254a0d # v6.0.0

- name: Build the unmodified upstream source
env:
BASE_URL: ${{ steps.pages.outputs.base_url }}
run: |
hugo \
--minify \
--source submodules/www-from-model \
--destination "${RUNNER_TEMP}/upstream-site" \
--baseURL "${BASE_URL%/}/"

- name: Adapt and audit the generated Pages artifact
env:
BASE_PATH: ${{ steps.pages.outputs.base_path }}
run: |
python3 tools/adapt_upstream_pages.py \
"${RUNNER_TEMP}/upstream-site" \
--base-path "${BASE_PATH:-/}"
python3 tools/adapt_upstream_pages.py \
"${RUNNER_TEMP}/upstream-site" \
--base-path "${BASE_PATH:-/}" \
--check-only
test -f "${RUNNER_TEMP}/upstream-site/index.html"
test -f "${RUNNER_TEMP}/upstream-site/graph.json"

- name: Upload the Pages artifact
uses: actions/upload-pages-artifact@fc324d3547104276b827a68afc52ff2a11cc49c9 # v5.0.0
with:
path: ${{ runner.temp }}/upstream-site

- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@cd2ce8fcbc39b97be8ca5fce6e763baed58fa128 # v5.0.0
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
# Local deployment output and credentials.
/build/
/dist/
/node_modules/
*.env
!.env.example
__pycache__/
*.py[cod]
54 changes: 27 additions & 27 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -1,96 +1,96 @@
[submodule "submodules/artwork"]
path = submodules/artwork
url = https://hub.psychoinformatics.de/orinoco/artwork.git
url = https://github.com/leej3/artwork.git
branch = main
[submodule "submodules/bids-things"]
path = submodules/bids-things
url = https://hub.psychoinformatics.de/orinoco/bids-things.git
url = https://github.com/leej3/bids-things.git
branch = main
[submodule "submodules/centerforopenneuroscience.org"]
path = submodules/centerforopenneuroscience.org
url = https://github.com/con/centerforopenneuroscience.org.git
branch = master
url = https://github.com/leej3/centerforopenneuroscience.org.git
branch = orinoco-lite
[submodule "submodules/curatee-kit"]
path = submodules/curatee-kit
url = https://hub.psychoinformatics.de/orinoco/curatee-kit.git
url = https://github.com/leej3/curatee-kit.git
branch = main
[submodule "submodules/dump-research-info"]
path = submodules/dump-research-info
url = https://github.com/con/dump-research-info.git
branch = agent/git-native-con-metadata
[submodule "submodules/dump-things-pyclient"]
path = submodules/dump-things-pyclient
url = https://hub.psychoinformatics.de/orinoco/dump-things-pyclient.git
url = https://github.com/leej3/dump-things-pyclient.git
branch = master
[submodule "submodules/dump-things-service"]
path = submodules/dump-things-service
url = https://hub.psychoinformatics.de/orinoco/dump-things-service.git
url = https://github.com/leej3/dump-things-service.git
branch = master
[submodule "submodules/dump-things-service-mirror"]
path = submodules/dump-things-service-mirror
url = https://hub.psychoinformatics.de/orinoco/dump-things-service-mirror.git
url = https://github.com/leej3/dump-things-service-mirror.git
branch = master
[submodule "submodules/find-things"]
path = submodules/find-things
url = https://hub.psychoinformatics.de/orinoco/find-things.git
url = https://github.com/leej3/find-things.git
branch = main
[submodule "submodules/flatson"]
path = submodules/flatson
url = https://hub.psychoinformatics.de/orinoco/flatson.git
url = https://github.com/leej3/flatson.git
branch = main
[submodule "submodules/flatson-js"]
path = submodules/flatson-js
url = https://hub.psychoinformatics.de/orinoco/flatson-js.git
url = https://github.com/leej3/flatson-js.git
branch = main
[submodule "submodules/flatsonpy"]
path = submodules/flatsonpy
url = https://hub.psychoinformatics.de/orinoco/flatsonpy.git
url = https://github.com/leej3/flatsonpy.git
branch = main
[submodule "submodules/flow"]
path = submodules/flow
url = https://hub.psychoinformatics.de/orinoco/flow.git
url = https://github.com/leej3/flow.git
branch = main
[submodule "submodules/psyinf-pool-files-public"]
path = submodules/psyinf-pool-files-public
url = https://hub.psychoinformatics.de/orinoco/psyinf-pool-files-public.git
url = https://github.com/leej3/psyinf-pool-files-public.git
branch = main
[submodule "submodules/query-things"]
path = submodules/query-things
url = https://hub.psychoinformatics.de/orinoco/query-things.git
url = https://github.com/leej3/query-things.git
branch = main
[submodule "submodules/research-information-ui-assets"]
path = submodules/research-information-ui-assets
url = https://hub.psychoinformatics.de/orinoco/research-information-ui-assets.git
url = https://github.com/leej3/research-information-ui-assets.git
branch = main
[submodule "submodules/shacl-tulip"]
path = submodules/shacl-tulip
url = https://hub.psychoinformatics.de/orinoco/shacl-tulip.git
branch = main
[submodule "submodules/shacl-vue"]
path = submodules/shacl-vue
url = https://hub.psychoinformatics.de/orinoco/shacl-vue.git
url = https://github.com/leej3/shacl-tulip.git
branch = main
[submodule "submodules/some-things"]
path = submodules/some-things
url = https://hub.psychoinformatics.de/orinoco/some-things.git
url = https://github.com/leej3/some-things.git
branch = main
[submodule "submodules/things-enrichment-tools"]
path = submodules/things-enrichment-tools
url = https://hub.psychoinformatics.de/orinoco/things-enrichment-tools.git
url = https://github.com/leej3/things-enrichment-tools.git
branch = main
[submodule "submodules/things-graph-renderer"]
path = submodules/things-graph-renderer
url = https://hub.psychoinformatics.de/orinoco/things-graph-renderer.git
url = https://github.com/leej3/things-graph-renderer.git
branch = main
[submodule "submodules/things-schemas"]
path = submodules/things-schemas
url = https://hub.psychoinformatics.de/orinoco/things-schemas.git
url = https://github.com/leej3/things-schemas.git
branch = main
[submodule "submodules/tools"]
path = submodules/tools
url = https://hub.psychoinformatics.de/orinoco/tools.git
url = https://github.com/leej3/tools.git
branch = main
[submodule "submodules/www-from-model"]
path = submodules/www-from-model
url = https://hub.psychoinformatics.de/www/www-from-model.git
url = https://github.com/leej3/www-from-model.git
branch = main
[submodule "submodules/pool.psychoinformatics.de-ui"]
path = submodules/pool.psychoinformatics.de-ui
url = https://github.com/leej3/pool.psychoinformatics.de-ui.git
branch = codex/local-deployment
8 changes: 8 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
repos:
- repo: local
hooks:
- id: snapper
name: snapper semantic line breaks
entry: snapper --in-place
language: system
files: '\.(md|markdown|rst|txt)$'
Loading