Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
121 commits
Select commit Hold shift + click to select a range
ec09d47
chore: ignore local worktrees
vshekar Jul 28, 2026
fea45fa
feat: add namespace lifecycle primitives
vshekar Jul 28, 2026
a6a3520
feat: add namespace domain model
vshekar Jul 28, 2026
9c1a86e
feat: migrate campaign data to namespaces
vshekar Jul 28, 2026
d9a1071
feat: scope provenance entities by namespace
vshekar Jul 28, 2026
7d8d72a
feat: query within namespace context
vshekar Jul 28, 2026
9c701c4
feat: freeze referenced provenance aggregates
vshekar Jul 28, 2026
acb7b2c
feat: copy frozen resources by namespace
vshekar Jul 28, 2026
2b91a12
feat: replace campaigns with namespaces
vshekar Jul 28, 2026
38ad077
feat: define authentication and scope contracts
vshekar Jul 28, 2026
a75a757
feat: authenticate requests with API key
vshekar Jul 28, 2026
0235dd3
feat: compile namespace authorization grants
vshekar Jul 28, 2026
6c7bb3d
feat: load authorization snapshot generations
vshekar Jul 28, 2026
0457c00
feat: authorize namespace operations
vshekar Jul 28, 2026
843c7f9
style: modernize auth source type check
vshekar Jul 28, 2026
f86ab70
feat: add secure request context and audit
vshekar Jul 28, 2026
da892a5
feat: enforce namespace policy in GraphQL
vshekar Jul 28, 2026
ae75422
feat: authenticate namespace GraphQL client
vshekar Jul 28, 2026
41ab642
feat: add request-scoped command spine
vshekar Jul 28, 2026
a5087d8
feat: add idempotent audited commands
vshekar Jul 28, 2026
f595930
style: satisfy command infrastructure lint
vshekar Jul 28, 2026
b133c4c
feat: expose namespace write commands
vshekar Jul 28, 2026
3ff2713
feat: write process templates atomically
vshekar Jul 28, 2026
45d627d
feat: write resource templates atomically
vshekar Jul 31, 2026
05754d7
fix: preserve resource template update atomicity
vshekar Jul 31, 2026
e2265ca
feat: add resource copy-on-write API
vshekar Jul 31, 2026
4db1e95
fix: preserve resource copy metadata
vshekar Jul 31, 2026
aba3322
feat: write process runs through commands
vshekar Jul 31, 2026
117e25e
refactor: submit builders as aggregate commands
vshekar Jul 31, 2026
11414b5
fix: preserve resource builder properties
vshekar Jul 31, 2026
9617590
feat: add namespace REST client
vshekar Jul 31, 2026
96c0b8e
fix: align namespace client delegation
vshekar Jul 31, 2026
52d768c
feat: route remote writes through REST
vshekar Aug 1, 2026
16aac38
style: format command implementation files
vshekar Aug 1, 2026
a7af6da
style: preserve process run lint suppression
vshekar Aug 1, 2026
8e33371
Merge rest API implementation
vshekar Aug 1, 2026
2c605a1
fix: align process-templates and resource-templates rest endpoint wit…
vshekar Aug 7, 2026
270f9c3
Remove mkdocs
vshekar Aug 7, 2026
8900408
Add great-docs
vshekar Aug 7, 2026
5cbd3ff
Add diataxis structure
vshekar Aug 7, 2026
a90765a
feat(client): add shared connection state
vshekar Aug 8, 2026
24a89f9
feat(client): return root factory views
vshekar Aug 8, 2026
a54ce97
feat(client): add scoped recap views
vshekar Aug 8, 2026
75882af
feat(client): resolve scoped namespaces
vshekar Aug 8, 2026
d22218d
refactor(client): infer namespace scope
vshekar Aug 8, 2026
79d3d05
refactor(client): remove namespace facade
vshekar Aug 8, 2026
0cf8d4b
docs: update namespace client guidance
vshekar Aug 8, 2026
da37ad4
test(client): migrate scoped query callers
vshekar Aug 8, 2026
2b7abc1
test(client): migrate resource copy callers
vshekar Aug 8, 2026
bc5ee2d
fix(client): route scoped remote builders
vshekar Aug 8, 2026
d9740b0
test(migration): expect empty root namespace
vshekar Aug 8, 2026
0323aa6
fix(migration): default helper to root namespace
vshekar Aug 8, 2026
e3e6b87
fix(migration): preserve root namespace paths
vshekar Aug 8, 2026
e645546
test(migration): verify legacy namespace ownership
vshekar Aug 8, 2026
e341f55
test(migration): restore namespace ownership checks
vshekar Aug 8, 2026
847b477
test(client): verify root builder scope
vshekar Aug 8, 2026
32fd1ae
test(client): isolate root builder database
vshekar Aug 8, 2026
f258282
Fixes to namespace handling and relaed tests
vshekar Aug 10, 2026
670d1b4
Add docstrings to API
vshekar Aug 10, 2026
f1ff9d9
Moved great-docs documentation to diataxis
vshekar Aug 10, 2026
267f2ab
Fixes to namespace creation
vshekar Aug 10, 2026
e6814d8
Combined local and remote backend commands
vshekar Aug 13, 2026
f6499c7
Update docs with single user info
vshekar Aug 13, 2026
91fd23c
test: split performance pytest task
vshekar Aug 13, 2026
3ab83d8
test(performance): mark SQL budget regressions
vshekar Aug 13, 2026
acaa87f
test: remove namespace test duplication
vshekar Aug 13, 2026
7d83895
test: replace brittle path guards
vshekar Aug 13, 2026
5d8e76a
fix(tests): remove unused inspect import
vshekar Aug 13, 2026
9bb4b91
test(rest): parametrize error cases
vshekar Aug 13, 2026
153e855
test(rest): centralize REST fixtures
vshekar Aug 13, 2026
a9d0b0b
Removed smoke tests, using focused ones instead
vshekar Aug 13, 2026
49d3aa2
test: add isolated seed database fixtures
vshekar Aug 13, 2026
f3068fe
test: add composite integration seed
vshekar Aug 13, 2026
1b085a8
test: align GraphQL scope expectation
vshekar Aug 13, 2026
1991a19
test: reuse parity integration seed
vshekar Aug 13, 2026
e3a371a
fix(tests): use public parity client scope
vshekar Aug 13, 2026
e091af2
test: route GraphQL tests through seed copies
vshekar Aug 13, 2026
0171b60
test: isolate standard client fixtures
vshekar Aug 13, 2026
1909f5d
Updated client to interact with a single API regardless of whether lo…
vshekar Aug 13, 2026
23cd79c
Fix rest routes and add missing tests for rest
vshekar Aug 13, 2026
59a1ebd
Added command registry that can be used by local and rest client
vshekar Aug 14, 2026
2f91a0a
feat: unify public error categories
vshekar Aug 14, 2026
4fe2fdd
feat: add shared HTTP transport
vshekar Aug 14, 2026
c450ca0
fix: harden shared HTTP transport
vshekar Aug 14, 2026
964e2d8
fix: harden transport header ownership
vshekar Aug 14, 2026
4e29e19
refactor: route REST through shared transport
vshekar Aug 14, 2026
e0d62aa
fix: close REST migration review gaps
vshekar Aug 14, 2026
7f60586
feat: publish safe GraphQL error codes
vshekar Aug 14, 2026
c78c840
refactor: route GraphQL through shared transport
vshekar Aug 14, 2026
6089302
fix(graphql): harden error protocol handling
vshekar Aug 14, 2026
b375a68
refactor: share remote HTTP connection
vshekar Aug 14, 2026
db00ff9
Added standard errors for all clients
vshekar Aug 14, 2026
8d6584a
refactor: route queries through REST
vshekar Aug 19, 2026
b2e8cc0
feat: unify canonical entity models
vshekar Aug 19, 2026
f6c9414
refactor: consolidate hydration caches
vshekar Aug 19, 2026
0b1b1d9
feat: add query exporter extension
vshekar Aug 19, 2026
55af350
docs: document REST query architecture
vshekar Aug 19, 2026
e651c11
test: cover canonical identity merges
vshekar Aug 19, 2026
b792bfb
fix(db): add process run lineage migration
vshekar Aug 19, 2026
f048b55
test(commands): cover process run copy route
vshekar Aug 19, 2026
133847b
test(identity): preserve repeated array values
vshekar Aug 19, 2026
61ef50a
test: remove obsolete legacy checks
vshekar Aug 19, 2026
3ad36ec
refactor: Added a NamespaceContext class to encapsulate namespace id …
vshekar Aug 31, 2026
af37b9d
feat: finalize bumps the revision of process_run and activates associ…
vshekar Aug 31, 2026
e8cf2dd
Add existing child to a resource
vshekar Aug 31, 2026
2d6c7ff
feat: add builder transaction state
vshekar Sep 1, 2026
e0cca29
feat: preserve builder provisional ids
vshekar Sep 1, 2026
32cc79b
fix: stabilize reused builder ids
vshekar Sep 1, 2026
985f336
feat: defer template builder commits
vshekar Sep 1, 2026
4882b69
feat: defer resource builder commits
vshekar Sep 1, 2026
20ade28
fix: resolve resource builder review findings
vshekar Sep 1, 2026
5e29042
fix: guard unloaded resource parents
vshekar Sep 1, 2026
1f74014
fix: close resource builder review gaps
vshekar Sep 1, 2026
724ade4
fix: defer process run lifecycle commits
vshekar Sep 1, 2026
f9b78b5
fix: preserve process run draft baseline
vshekar Sep 1, 2026
ded416b
refactor: normalize builder commit lifecycle
vshekar Sep 1, 2026
4623a4f
fix: close builder review gaps
vshekar Sep 1, 2026
6742e68
fix: add_child in resource builder
vshekar Sep 5, 2026
fb8bc93
Documentation corrections
vshekar Sep 16, 2026
cda37b5
Update pyproject and pixi
vshekar Sep 16, 2026
2d0188b
Added doc build workflow
vshekar Sep 16, 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
110 changes: 110 additions & 0 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
name: CI Docs

on:
push:
branches:
- main
pull_request:

jobs:
build-docs:
name: "Build Docs"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0 # Full history for accurate page timestamps

- uses: actions/setup-python@v6
with:
python-version: "3.11"

- name: Install package and dependencies
run: |
python -m pip install --upgrade pip
python -m pip install -e ".[dev]"
python -m pip install great-docs

- name: Set up Quarto
uses: quarto-dev/quarto-actions/setup@v2

- name: Build docs
run: great-docs build

- name: Save docs artifact
uses: actions/upload-artifact@v7
with:
name: docs-html
path: great-docs/_site
include-hidden-files: true

- name: Upload build timings
uses: actions/upload-artifact@v7
with:
name: build-timings
path: great-docs/_site/build-timings.json

publish-docs:
name: "Publish Docs"
runs-on: ubuntu-latest
needs: "build-docs"
if: github.ref == 'refs/heads/main'
permissions:
pages: write
id-token: write
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- uses: actions/download-artifact@v7
with:
name: docs-html
path: great-docs/_site

- name: Upload Pages artifact
uses: actions/upload-pages-artifact@v5
with:
path: great-docs/_site
include-hidden-files: true

- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v5

preview-docs:
name: "Preview Docs"
runs-on: ubuntu-latest
needs: "build-docs"
if: github.event_name == 'pull_request'
permissions:
deployments: write
pull-requests: write
steps:
- uses: actions/download-artifact@v7
with:
name: docs-html
path: great-docs/_site

# Start deployment
- name: Configure pull release name
if: ${{ github.event_name == 'pull_request' }}
run: |
echo "RELEASE_NAME=pr-${{ github.event.number }}" >> $GITHUB_ENV

- name: Configure branch release name
if: ${{ github.event_name != 'pull_request' }}
run: |
# use branch name, but replace slashes. E.g. feat/a -> feat-a
echo "RELEASE_NAME=${GITHUB_REF_NAME//\//-}" >> $GITHUB_ENV

# Deploy
- name: Create Github Deployment
uses: bobheadxi/deployments@v1
id: deployment
if: ${{ !github.event.pull_request.head.repo.fork }}
with:
step: start
token: ${{ secrets.GITHUB_TOKEN }}
env: ${{ env.RELEASE_NAME }}
ref: ${{ github.head_ref }}
logs: "https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}"
7 changes: 4 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -143,9 +143,6 @@ venv.bak/
# Rope project settings
.ropeproject

# mkdocs documentation
/site

# mypy
.mypy_cache/
.dmypy.json
Expand Down Expand Up @@ -178,6 +175,10 @@ cython_debug/

# Built docs
site/
great-docs/

# Git worktrees
.worktrees/

# MacOS
.DS_Store
Expand Down
24 changes: 10 additions & 14 deletions CONTRIBUTING.rst
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ Types of Contributions
Report Bugs
~~~~~~~~~~~

Report bugs at https://github.com/vshekar/recap/issues.
Report bugs at https://github.com/NSLS2/recap/issues.

If you are reporting a bug, please include:

Expand Down Expand Up @@ -42,7 +42,7 @@ or even on the web in blog posts, articles, and such.
Submit Feedback
~~~~~~~~~~~~~~~

The best way to send feedback is to file an issue at https://github.com/vshekar/recap/issues.
The best way to send feedback is to file an issue at https://github.com/NSLS2/recap/issues.

If you are proposing a feature:

Expand All @@ -61,25 +61,22 @@ Ready to contribute? Here's how to set up `pyrecap` for local development.

$ git clone git@github.com:your_name_here/recap.git

3. Install your local copy into a virtualenv. Assuming you have virtualenvwrapper installed, this is how you set up your fork for local development::
3. Install the development environment with Pixi::

$ mkvirtualenv recap
$ cd recap/
$ python setup.py develop
$ pixi install -e dev

4. Create a branch for local development::

$ git checkout -b name-of-your-bugfix-or-feature

Now you can make your changes locally.

5. When you're done making changes, check that your changes pass flake8 and the tests, including testing other Python versions with tox::
5. When you're done making changes, run linting and tests::

$ flake8 recap tests
$ python setup.py test
$ tox
$ pixi run -e dev lint
$ pixi run -e dev test
$ pixi run -e dev test-all

To get flake8 and tox, just pip install them into your virtualenv.

6. Commit your changes and push your branch to GitHub::

Expand All @@ -98,6 +95,5 @@ Before you submit a pull request, check that it meets these guidelines:
2. If the pull request adds functionality, the docs should be updated. Put
your new functionality into a function with a docstring, and add the
feature to the list in README.md.
3. The pull request should work for Python 2.7, 3.3, 3.4, 3.5 and for PyPy. Check
https://travis-ci.org/vshekar/recap/pull_requests
and make sure that the tests pass for all supported Python versions.
3. The pull request should support Python 3.10 through 3.13. Run the configured
test suite before submitting it.
Loading
Loading