scitex-agentic-journal 0.1.0a0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- scitex_agentic_journal-0.1.0a0/.claude/scheduled_tasks.lock +1 -0
- scitex_agentic_journal-0.1.0a0/.env.example +16 -0
- scitex_agentic_journal-0.1.0a0/.github/workflows/cla.yml +33 -0
- scitex_agentic_journal-0.1.0a0/.github/workflows/pr-ci.yml +134 -0
- scitex_agentic_journal-0.1.0a0/.github/workflows/release-ci.yml +100 -0
- scitex_agentic_journal-0.1.0a0/.gitignore +19 -0
- scitex_agentic_journal-0.1.0a0/.scitex/dev/cli-audit-dict.yaml +18 -0
- scitex_agentic_journal-0.1.0a0/CHANGELOG.md +147 -0
- scitex_agentic_journal-0.1.0a0/CLA.md +71 -0
- scitex_agentic_journal-0.1.0a0/CONTRIBUTING.md +53 -0
- scitex_agentic_journal-0.1.0a0/LICENSE +661 -0
- scitex_agentic_journal-0.1.0a0/PKG-INFO +310 -0
- scitex_agentic_journal-0.1.0a0/README.md +258 -0
- scitex_agentic_journal-0.1.0a0/docs/dev/m4-hub-app-wiring.md +149 -0
- scitex_agentic_journal-0.1.0a0/examples/01_gate1_orcid_resolve.sh +22 -0
- scitex_agentic_journal-0.1.0a0/examples/02_gate1_code_repo_clone.sh +25 -0
- scitex_agentic_journal-0.1.0a0/examples/README.md +125 -0
- scitex_agentic_journal-0.1.0a0/pyproject.toml +126 -0
- scitex_agentic_journal-0.1.0a0/setup.cfg +4 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/__init__.py +57 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/__main__.py +13 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_cli/__init__.py +439 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_cli/_decide.py +69 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_cli/_hub_manifest.py +103 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_cli/_publish.py +168 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_cli/_review.py +97 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_cli/_skills.py +278 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_cli/_submit.py +64 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_decide/__init__.py +61 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_decide/_engine.py +286 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_decide/_load_review.py +148 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_decide/_persist.py +134 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_decide/_rules.py +172 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_decide/_types.py +95 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_decide/rules/__init__.py +12 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_decide/rules/v1.yaml +70 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_django/__init__.py +38 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_django/_leaf.py +244 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_django/_manifest.py +54 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_django/apps.py +34 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_django/handlers.py +44 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_django/manifest.json +17 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_django/urls.py +48 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_django/views.py +108 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_gate1/__init__.py +52 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_gate1/_clew_dag.py +321 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_gate1/_code_repo.py +230 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_gate1/_errors.py +44 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_gate1/_orcid.py +226 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_hub_app_publisher/__init__.py +69 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_hub_app_publisher/_derive_wrapper_manifest.py +132 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_hub_app_publisher/_manifest.py +110 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_hub_app_publisher/_resolver_adapter.py +150 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_mcp/__init__.py +49 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_mcp/_audit.py +95 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_mcp/_scopes.py +61 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_mcp/_server.py +68 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_mcp/_tools.py +151 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_orcid/__init__.py +42 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_orcid/_client.py +104 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_orcid/_link.py +92 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_ports/__init__.py +64 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_ports/_clew.py +70 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_ports/_hub.py +45 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_ports/_live_paper.py +60 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_ports/_scheduler.py +44 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_ports/_ui.py +42 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_ports/_writer.py +53 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_publish/__init__.py +96 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_publish/_crossref.py +34 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_publish/_handoff.py +182 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_publish/_internal.py +83 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_publish/_jalc.py +32 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_publish/_live_paper_proxy.py +52 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_publish/_load_records.py +252 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_publish/_mint.py +214 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_publish/_persist.py +128 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_publish/_select.py +43 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_publish/_types.py +65 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_publish/_zenodo.py +223 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_re_review_badge/__init__.py +57 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_re_review_badge/_resolver.py +210 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_re_review_badge/_types.py +77 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_review/__init__.py +75 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_review/_adapters.py +64 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_review/_load_gate1.py +103 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_review/_local_adapter.py +149 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_review/_persist.py +148 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_review/_qwen_adapter.py +46 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_review/_rubric.py +92 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_review/_runner.py +128 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_review/_types.py +170 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_review/prompts/__init__.py +11 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_review/prompts/v1/__init__.py +7 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_review/prompts/v1/claim_verify.md +37 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_review/prompts/v1/methodology.md +50 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_review/prompts/v1/novelty.md +44 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_review/prompts/v1/reproducibility.md +44 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_skills/scitex-agentic-journal/01_installation.md +73 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_skills/scitex-agentic-journal/02_quick-start.md +86 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_skills/scitex-agentic-journal/03_python-api.md +140 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_skills/scitex-agentic-journal/04_cli-reference.md +98 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_skills/scitex-agentic-journal/10_overview.md +90 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_skills/scitex-agentic-journal/11_submission-bundle.md +78 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_skills/scitex-agentic-journal/12_gate1-checks.md +76 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_skills/scitex-agentic-journal/13_review-and-decision.md +88 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_skills/scitex-agentic-journal/14_publish-handoff.md +88 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_skills/scitex-agentic-journal/15_python-api-detailed.md +141 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_skills/scitex-agentic-journal/20_env-vars.md +53 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_skills/scitex-agentic-journal/30_django-and-hub.md +89 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_skills/scitex-agentic-journal/31_mcp-and-agents.md +118 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_skills/scitex-agentic-journal/SKILL.md +79 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_submit/__init__.py +45 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_submit/_loader.py +134 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_submit/_orchestrate.py +127 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_submit/_persist.py +128 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal/_submit/_types.py +48 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal.egg-info/PKG-INFO +310 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal.egg-info/SOURCES.txt +183 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal.egg-info/dependency_links.txt +1 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal.egg-info/entry_points.txt +2 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal.egg-info/requires.txt +26 -0
- scitex_agentic_journal-0.1.0a0/src/scitex_agentic_journal.egg-info/top_level.txt +1 -0
- scitex_agentic_journal-0.1.0a0/tests/__init__.py +0 -0
- scitex_agentic_journal-0.1.0a0/tests/_django_test_urls.py +14 -0
- scitex_agentic_journal-0.1.0a0/tests/examples/__init__.py +0 -0
- scitex_agentic_journal-0.1.0a0/tests/examples/test_01_gate1_orcid_resolve.py +108 -0
- scitex_agentic_journal-0.1.0a0/tests/examples/test_02_gate1_code_repo_clone.py +126 -0
- scitex_agentic_journal-0.1.0a0/tests/integration/__init__.py +0 -0
- scitex_agentic_journal-0.1.0a0/tests/integration/test_cross_package_imports.py +48 -0
- scitex_agentic_journal-0.1.0a0/tests/integration/test_pipeline_end_to_end.py +286 -0
- scitex_agentic_journal-0.1.0a0/tests/scitex_agentic_journal/__init__.py +6 -0
- scitex_agentic_journal-0.1.0a0/tests/scitex_agentic_journal/_cli/__init__.py +0 -0
- scitex_agentic_journal-0.1.0a0/tests/scitex_agentic_journal/_cli/test__decide.py +215 -0
- scitex_agentic_journal-0.1.0a0/tests/scitex_agentic_journal/_cli/test__hub_manifest.py +247 -0
- scitex_agentic_journal-0.1.0a0/tests/scitex_agentic_journal/_cli/test__publish.py +344 -0
- scitex_agentic_journal-0.1.0a0/tests/scitex_agentic_journal/_cli/test__review.py +167 -0
- scitex_agentic_journal-0.1.0a0/tests/scitex_agentic_journal/_cli/test__skills.py +235 -0
- scitex_agentic_journal-0.1.0a0/tests/scitex_agentic_journal/_cli/test__submit.py +123 -0
- scitex_agentic_journal-0.1.0a0/tests/scitex_agentic_journal/_decide/__init__.py +0 -0
- scitex_agentic_journal-0.1.0a0/tests/scitex_agentic_journal/_decide/test__engine.py +327 -0
- scitex_agentic_journal-0.1.0a0/tests/scitex_agentic_journal/_decide/test__load_review.py +159 -0
- scitex_agentic_journal-0.1.0a0/tests/scitex_agentic_journal/_decide/test__persist.py +150 -0
- scitex_agentic_journal-0.1.0a0/tests/scitex_agentic_journal/_decide/test__rules.py +114 -0
- scitex_agentic_journal-0.1.0a0/tests/scitex_agentic_journal/_django/__init__.py +0 -0
- scitex_agentic_journal-0.1.0a0/tests/scitex_agentic_journal/_django/test__leaf.py +106 -0
- scitex_agentic_journal-0.1.0a0/tests/scitex_agentic_journal/_django/test__manifest.py +238 -0
- scitex_agentic_journal-0.1.0a0/tests/scitex_agentic_journal/_gate1/__init__.py +0 -0
- scitex_agentic_journal-0.1.0a0/tests/scitex_agentic_journal/_gate1/_fixtures/orcid_0000-0001-2345-6789_record_minimal.json +12 -0
- scitex_agentic_journal-0.1.0a0/tests/scitex_agentic_journal/_gate1/_fixtures/orcid_0000-0002-1825-0097_record.json +14 -0
- scitex_agentic_journal-0.1.0a0/tests/scitex_agentic_journal/_gate1/_fixtures/orcid_0000-0002-1825-0097_record_garbled.json +4 -0
- scitex_agentic_journal-0.1.0a0/tests/scitex_agentic_journal/_gate1/test__clew_dag.py +549 -0
- scitex_agentic_journal-0.1.0a0/tests/scitex_agentic_journal/_gate1/test__code_repo.py +381 -0
- scitex_agentic_journal-0.1.0a0/tests/scitex_agentic_journal/_gate1/test__orcid.py +388 -0
- scitex_agentic_journal-0.1.0a0/tests/scitex_agentic_journal/_hub_app_publisher/__init__.py +1 -0
- scitex_agentic_journal-0.1.0a0/tests/scitex_agentic_journal/_hub_app_publisher/test__derive_wrapper_manifest.py +257 -0
- scitex_agentic_journal-0.1.0a0/tests/scitex_agentic_journal/_hub_app_publisher/test__manifest.py +189 -0
- scitex_agentic_journal-0.1.0a0/tests/scitex_agentic_journal/_hub_app_publisher/test__resolver_adapter.py +298 -0
- scitex_agentic_journal-0.1.0a0/tests/scitex_agentic_journal/_mcp/__init__.py +0 -0
- scitex_agentic_journal-0.1.0a0/tests/scitex_agentic_journal/_mcp/test__tools.py +221 -0
- scitex_agentic_journal-0.1.0a0/tests/scitex_agentic_journal/_orcid/__init__.py +0 -0
- scitex_agentic_journal-0.1.0a0/tests/scitex_agentic_journal/_orcid/test__link.py +245 -0
- scitex_agentic_journal-0.1.0a0/tests/scitex_agentic_journal/_ports/__init__.py +0 -0
- scitex_agentic_journal-0.1.0a0/tests/scitex_agentic_journal/_ports/test__hub.py +273 -0
- scitex_agentic_journal-0.1.0a0/tests/scitex_agentic_journal/_publish/__init__.py +0 -0
- scitex_agentic_journal-0.1.0a0/tests/scitex_agentic_journal/_publish/test__handoff.py +380 -0
- scitex_agentic_journal-0.1.0a0/tests/scitex_agentic_journal/_publish/test__load_records.py +333 -0
- scitex_agentic_journal-0.1.0a0/tests/scitex_agentic_journal/_publish/test__mint.py +234 -0
- scitex_agentic_journal-0.1.0a0/tests/scitex_agentic_journal/_publish/test__persist.py +173 -0
- scitex_agentic_journal-0.1.0a0/tests/scitex_agentic_journal/_publish/test__select.py +264 -0
- scitex_agentic_journal-0.1.0a0/tests/scitex_agentic_journal/_publish/test__zenodo_sandbox.py +153 -0
- scitex_agentic_journal-0.1.0a0/tests/scitex_agentic_journal/_re_review_badge/__init__.py +1 -0
- scitex_agentic_journal-0.1.0a0/tests/scitex_agentic_journal/_re_review_badge/test__resolver.py +336 -0
- scitex_agentic_journal-0.1.0a0/tests/scitex_agentic_journal/_re_review_badge/test__resolver_branches.py +372 -0
- scitex_agentic_journal-0.1.0a0/tests/scitex_agentic_journal/_re_review_badge/test__types.py +110 -0
- scitex_agentic_journal-0.1.0a0/tests/scitex_agentic_journal/_review/__init__.py +0 -0
- scitex_agentic_journal-0.1.0a0/tests/scitex_agentic_journal/_review/test__adapters.py +82 -0
- scitex_agentic_journal-0.1.0a0/tests/scitex_agentic_journal/_review/test__load_gate1.py +152 -0
- scitex_agentic_journal-0.1.0a0/tests/scitex_agentic_journal/_review/test__local_adapter.py +94 -0
- scitex_agentic_journal-0.1.0a0/tests/scitex_agentic_journal/_review/test__persist.py +121 -0
- scitex_agentic_journal-0.1.0a0/tests/scitex_agentic_journal/_review/test__runner.py +294 -0
- scitex_agentic_journal-0.1.0a0/tests/scitex_agentic_journal/_submit/__init__.py +0 -0
- scitex_agentic_journal-0.1.0a0/tests/scitex_agentic_journal/_submit/test__loader.py +214 -0
- scitex_agentic_journal-0.1.0a0/tests/scitex_agentic_journal/_submit/test__orchestrate.py +142 -0
- scitex_agentic_journal-0.1.0a0/tests/scitex_agentic_journal/_submit/test__persist.py +153 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"sessionId":"8b9f6dd8-9ead-4985-837a-88a4fd926d38","pid":31,"procStart":"11843348","acquiredAt":1781336370538}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# scitex-agentic-journal — example environment.
|
|
2
|
+
#
|
|
3
|
+
# Copy to `.env` (or export inline) and edit the values you actually
|
|
4
|
+
# need. Lines beginning with `#` are documentation only; this file is
|
|
5
|
+
# checked into git, the real `.env` is not.
|
|
6
|
+
#
|
|
7
|
+
# The package itself reads no env vars at runtime today; the SCITEX_*
|
|
8
|
+
# vars below are scaffold knobs read by the CLI and the (not-yet-shipped)
|
|
9
|
+
# Gate-1 orchestrator. They are documented here so the PS-129 audit
|
|
10
|
+
# rule can confirm every `SCITEX_AGENTIC_JOURNAL_*` token referenced in
|
|
11
|
+
# `src/` has a discoverable description.
|
|
12
|
+
|
|
13
|
+
# Path to an alternate YAML config for the CLI / orchestrator. When
|
|
14
|
+
# unset, the CLI falls back to `./config.yaml`, then to
|
|
15
|
+
# `~/.scitex/agentic-journal/config.yaml`.
|
|
16
|
+
# SCITEX_AGENTIC_JOURNAL_CONFIG=/abs/path/to/config.yaml
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
name: CLA Assistant
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
issue_comment:
|
|
5
|
+
types: [created]
|
|
6
|
+
pull_request_target:
|
|
7
|
+
types: [opened, closed, synchronize]
|
|
8
|
+
|
|
9
|
+
permissions:
|
|
10
|
+
actions: write
|
|
11
|
+
contents: write
|
|
12
|
+
pull-requests: write
|
|
13
|
+
statuses: write
|
|
14
|
+
|
|
15
|
+
jobs:
|
|
16
|
+
CLAssistant:
|
|
17
|
+
runs-on: ubuntu-latest
|
|
18
|
+
steps:
|
|
19
|
+
- name: CLA Assistant
|
|
20
|
+
uses: contributor-assistant/github-action@v2.6.1
|
|
21
|
+
env:
|
|
22
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
23
|
+
PERSONAL_ACCESS_TOKEN: ${{ secrets.GH_PERSONAL_ACCESS_TOKEN }}
|
|
24
|
+
with:
|
|
25
|
+
path-to-signatures: "signatures/cla.json"
|
|
26
|
+
path-to-document: "https://github.com/ywatanabe1989/scitex-agentic-journal/blob/main/CLA.md"
|
|
27
|
+
branch: "cla-signatures"
|
|
28
|
+
allowlist: bot*,ywatanabe1989
|
|
29
|
+
custom-allsigned-prcomment: |
|
|
30
|
+
Thank you for signing the SciTeX CLA. Your contribution can now be reviewed.
|
|
31
|
+
custom-notsigned-prcomment: |
|
|
32
|
+
Please sign the [SciTeX CLA](https://github.com/ywatanabe1989/scitex-agentic-journal/blob/main/CLA.md) before your contribution can be merged.
|
|
33
|
+
Comment `I have read and agree to the SciTeX CLA.` to sign.
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
name: pr-ci
|
|
2
|
+
|
|
3
|
+
# Consolidated PR-only CI gate. Runs the per-PR validation suite as a
|
|
4
|
+
# single workflow so the cancel-in-progress concurrency group, path
|
|
5
|
+
# filters, and uv cache apply uniformly. Post-merge validation lives
|
|
6
|
+
# in release-ci.yml.
|
|
7
|
+
#
|
|
8
|
+
# L1 concurrency — cancel superseded PR runs.
|
|
9
|
+
# L3 path filters — skip docs/skills/examples/markdown-only PRs.
|
|
10
|
+
# L4 conditional matrix — full ["3.11", "3.12", "3.13"] on PR (this trigger).
|
|
11
|
+
# L5a uv-managed Python (`uv python install` + `uv venv --python`) so the
|
|
12
|
+
# matrix leg is not bound to the runner's system Python.
|
|
13
|
+
# L5b .venv/bin on PATH (and explicit `.venv/bin/python` for clarity) so
|
|
14
|
+
# console scripts resolve without needing `uv run`.
|
|
15
|
+
|
|
16
|
+
on:
|
|
17
|
+
pull_request:
|
|
18
|
+
branches: [main, develop]
|
|
19
|
+
paths-ignore:
|
|
20
|
+
- 'docs/**'
|
|
21
|
+
- '_skills/**'
|
|
22
|
+
- 'examples/**'
|
|
23
|
+
- '**.md'
|
|
24
|
+
- 'CHANGELOG.*'
|
|
25
|
+
- '.github/CODEOWNERS'
|
|
26
|
+
- '.github/ISSUE_TEMPLATE/**'
|
|
27
|
+
workflow_dispatch:
|
|
28
|
+
|
|
29
|
+
concurrency:
|
|
30
|
+
group: ${{ github.workflow }}-${{ github.ref }}
|
|
31
|
+
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
|
|
32
|
+
|
|
33
|
+
jobs:
|
|
34
|
+
import-smoke:
|
|
35
|
+
name: import-smoke-on-ubuntu-py3-12
|
|
36
|
+
runs-on: ubuntu-latest
|
|
37
|
+
steps:
|
|
38
|
+
- uses: actions/checkout@v4
|
|
39
|
+
- name: Install uv
|
|
40
|
+
uses: astral-sh/setup-uv@v3
|
|
41
|
+
with:
|
|
42
|
+
enable-cache: true
|
|
43
|
+
cache-dependency-glob: pyproject.toml
|
|
44
|
+
- name: Set up Python 3.12 (uv-managed)
|
|
45
|
+
run: uv python install 3.12
|
|
46
|
+
- name: Install (no extras) in uv venv
|
|
47
|
+
run: |
|
|
48
|
+
uv venv --python 3.12 .venv
|
|
49
|
+
uv pip install --python .venv/bin/python -e .
|
|
50
|
+
- name: Import smoke
|
|
51
|
+
run: .venv/bin/python -c "import scitex_agentic_journal; print(getattr(scitex_agentic_journal, '__version__', 'unversioned'))"
|
|
52
|
+
- name: smoke scitex-agentic-journal --help
|
|
53
|
+
run: .venv/bin/scitex-agentic-journal --help
|
|
54
|
+
dep-hygiene-smoke:
|
|
55
|
+
name: dep-hygiene-smoke
|
|
56
|
+
runs-on: ubuntu-latest
|
|
57
|
+
steps:
|
|
58
|
+
- uses: actions/checkout@v4
|
|
59
|
+
- name: Install uv
|
|
60
|
+
uses: astral-sh/setup-uv@v3
|
|
61
|
+
with:
|
|
62
|
+
enable-cache: true
|
|
63
|
+
cache-dependency-glob: pyproject.toml
|
|
64
|
+
- name: Set up Python 3.11 (uv-managed)
|
|
65
|
+
run: uv python install 3.11
|
|
66
|
+
- name: Bare install (no extras) in uv venv
|
|
67
|
+
run: |
|
|
68
|
+
uv venv --python 3.11 .venv
|
|
69
|
+
uv pip install --python .venv/bin/python .
|
|
70
|
+
- name: Import package
|
|
71
|
+
run: .venv/bin/python -c "import scitex_agentic_journal; print(scitex_agentic_journal.__name__)"
|
|
72
|
+
|
|
73
|
+
tests:
|
|
74
|
+
name: pytest-matrix-on-ubuntu-py${{ matrix.python-version }}
|
|
75
|
+
runs-on: ubuntu-latest
|
|
76
|
+
strategy:
|
|
77
|
+
fail-fast: false
|
|
78
|
+
matrix:
|
|
79
|
+
python-version: ${{ github.event_name == 'pull_request' && fromJson('["3.11", "3.12", "3.13"]') || fromJson('["3.12"]') }}
|
|
80
|
+
steps:
|
|
81
|
+
- uses: actions/checkout@v4
|
|
82
|
+
- name: Install uv
|
|
83
|
+
uses: astral-sh/setup-uv@v3
|
|
84
|
+
with:
|
|
85
|
+
enable-cache: true
|
|
86
|
+
cache-dependency-glob: pyproject.toml
|
|
87
|
+
- name: Set up Python ${{ matrix.python-version }} (uv-managed)
|
|
88
|
+
run: uv python install ${{ matrix.python-version }}
|
|
89
|
+
- name: Create uv venv on this matrix Python
|
|
90
|
+
run: uv venv --python ${{ matrix.python-version }} .venv
|
|
91
|
+
- name: Install dependencies
|
|
92
|
+
# Fallback chain: prefer [all,dev] so optional-dep code paths
|
|
93
|
+
# get exercised. Falls back to [dev] then plain editable so a
|
|
94
|
+
# packaging hiccup doesn't strand CI.
|
|
95
|
+
run: |
|
|
96
|
+
uv pip install --python .venv/bin/python -e ".[all,dev]" \
|
|
97
|
+
|| uv pip install --python .venv/bin/python -e ".[dev]" \
|
|
98
|
+
|| uv pip install --python .venv/bin/python -e .
|
|
99
|
+
- name: Run tests
|
|
100
|
+
# PATH prepend so any test that subprocess-calls a console script
|
|
101
|
+
# finds it in .venv/bin/.
|
|
102
|
+
run: |
|
|
103
|
+
export PATH="$PWD/.venv/bin:$PATH"
|
|
104
|
+
.venv/bin/pytest tests/ --cov=src/scitex_agentic_journal --cov-report=xml --cov-report=term
|
|
105
|
+
- name: Upload coverage to Codecov
|
|
106
|
+
if: always() && matrix.python-version == '3.12'
|
|
107
|
+
uses: codecov/codecov-action@v5
|
|
108
|
+
with:
|
|
109
|
+
token: ${{ secrets.CODECOV_TOKEN }}
|
|
110
|
+
files: ./coverage.xml
|
|
111
|
+
fail_ci_if_error: false
|
|
112
|
+
|
|
113
|
+
audit:
|
|
114
|
+
name: audit
|
|
115
|
+
runs-on: ubuntu-latest
|
|
116
|
+
timeout-minutes: 20
|
|
117
|
+
steps:
|
|
118
|
+
- uses: actions/checkout@v4
|
|
119
|
+
- name: Install uv
|
|
120
|
+
uses: astral-sh/setup-uv@v3
|
|
121
|
+
with:
|
|
122
|
+
enable-cache: true
|
|
123
|
+
cache-dependency-glob: pyproject.toml
|
|
124
|
+
- name: Set up Python 3.12 (uv-managed)
|
|
125
|
+
run: uv python install 3.12
|
|
126
|
+
- name: Install package + audit tooling
|
|
127
|
+
run: |
|
|
128
|
+
uv venv --python 3.12 .venv
|
|
129
|
+
uv pip install --python .venv/bin/python -e ".[dev]"
|
|
130
|
+
uv pip install --python .venv/bin/python "scitex-dev[cli-audit]"
|
|
131
|
+
- name: Run scitex-dev ecosystem audit-all
|
|
132
|
+
run: |
|
|
133
|
+
export PATH="$PWD/.venv/bin:$PATH"
|
|
134
|
+
scitex-dev ecosystem audit-all scitex-agentic-journal --no-version-check
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
name: release-ci
|
|
2
|
+
|
|
3
|
+
# Post-merge validation gate. Runs on push to protected branches
|
|
4
|
+
# (main, develop) and as the canonical scheduled run. Always uses the
|
|
5
|
+
# FULL pytest matrix — no conditional skipping — so the protected-branch
|
|
6
|
+
# history is exercised on every supported Python.
|
|
7
|
+
#
|
|
8
|
+
# L1 concurrency — coalesce overlapping pushes on the same branch.
|
|
9
|
+
# L5a uv-managed Python (`uv python install` + `uv venv --python`) so each
|
|
10
|
+
# matrix leg pins its interpreter independently of the runner.
|
|
11
|
+
# L5b .venv/bin on PATH so console scripts resolve without `uv run`.
|
|
12
|
+
|
|
13
|
+
on:
|
|
14
|
+
push:
|
|
15
|
+
branches: [main, develop]
|
|
16
|
+
schedule:
|
|
17
|
+
- cron: "0 7 * * *" # nightly 07:00 UTC
|
|
18
|
+
workflow_dispatch:
|
|
19
|
+
|
|
20
|
+
concurrency:
|
|
21
|
+
group: ${{ github.workflow }}-${{ github.ref }}
|
|
22
|
+
cancel-in-progress: false
|
|
23
|
+
|
|
24
|
+
jobs:
|
|
25
|
+
tests:
|
|
26
|
+
name: pytest-matrix-on-ubuntu-py${{ matrix.python-version }}
|
|
27
|
+
runs-on: ubuntu-latest
|
|
28
|
+
strategy:
|
|
29
|
+
fail-fast: false
|
|
30
|
+
matrix:
|
|
31
|
+
python-version: ["3.11", "3.12", "3.13"]
|
|
32
|
+
steps:
|
|
33
|
+
- uses: actions/checkout@v4
|
|
34
|
+
- name: Install uv
|
|
35
|
+
uses: astral-sh/setup-uv@v3
|
|
36
|
+
with:
|
|
37
|
+
enable-cache: true
|
|
38
|
+
cache-dependency-glob: pyproject.toml
|
|
39
|
+
- name: Set up Python ${{ matrix.python-version }} (uv-managed)
|
|
40
|
+
run: uv python install ${{ matrix.python-version }}
|
|
41
|
+
- name: Create uv venv on this matrix Python
|
|
42
|
+
run: uv venv --python ${{ matrix.python-version }} .venv
|
|
43
|
+
- name: Install dependencies
|
|
44
|
+
run: |
|
|
45
|
+
uv pip install --python .venv/bin/python -e ".[all,dev]" \
|
|
46
|
+
|| uv pip install --python .venv/bin/python -e ".[dev]" \
|
|
47
|
+
|| uv pip install --python .venv/bin/python -e .
|
|
48
|
+
- name: Run tests
|
|
49
|
+
run: |
|
|
50
|
+
export PATH="$PWD/.venv/bin:$PATH"
|
|
51
|
+
.venv/bin/pytest tests/ --cov=src/scitex_agentic_journal --cov-report=xml --cov-report=term
|
|
52
|
+
- name: Upload coverage to Codecov
|
|
53
|
+
if: always() && matrix.python-version == '3.12'
|
|
54
|
+
uses: codecov/codecov-action@v5
|
|
55
|
+
with:
|
|
56
|
+
token: ${{ secrets.CODECOV_TOKEN }}
|
|
57
|
+
files: ./coverage.xml
|
|
58
|
+
fail_ci_if_error: false
|
|
59
|
+
|
|
60
|
+
import-smoke:
|
|
61
|
+
name: import-smoke-on-ubuntu-py3-12
|
|
62
|
+
runs-on: ubuntu-latest
|
|
63
|
+
steps:
|
|
64
|
+
- uses: actions/checkout@v4
|
|
65
|
+
- name: Install uv
|
|
66
|
+
uses: astral-sh/setup-uv@v3
|
|
67
|
+
with:
|
|
68
|
+
enable-cache: true
|
|
69
|
+
cache-dependency-glob: pyproject.toml
|
|
70
|
+
- name: Set up Python 3.12 (uv-managed)
|
|
71
|
+
run: uv python install 3.12
|
|
72
|
+
- name: Install (no extras) in uv venv
|
|
73
|
+
run: |
|
|
74
|
+
uv venv --python 3.12 .venv
|
|
75
|
+
uv pip install --python .venv/bin/python -e .
|
|
76
|
+
- name: Import smoke
|
|
77
|
+
run: .venv/bin/python -c "import scitex_agentic_journal; print(getattr(scitex_agentic_journal, '__version__', 'unversioned'))"
|
|
78
|
+
|
|
79
|
+
audit:
|
|
80
|
+
name: audit
|
|
81
|
+
runs-on: ubuntu-latest
|
|
82
|
+
timeout-minutes: 20
|
|
83
|
+
steps:
|
|
84
|
+
- uses: actions/checkout@v4
|
|
85
|
+
- name: Install uv
|
|
86
|
+
uses: astral-sh/setup-uv@v3
|
|
87
|
+
with:
|
|
88
|
+
enable-cache: true
|
|
89
|
+
cache-dependency-glob: pyproject.toml
|
|
90
|
+
- name: Set up Python 3.12 (uv-managed)
|
|
91
|
+
run: uv python install 3.12
|
|
92
|
+
- name: Install package + audit tooling
|
|
93
|
+
run: |
|
|
94
|
+
uv venv --python 3.12 .venv
|
|
95
|
+
uv pip install --python .venv/bin/python -e ".[dev]"
|
|
96
|
+
uv pip install --python .venv/bin/python "scitex-dev[cli-audit]"
|
|
97
|
+
- name: Run scitex-dev ecosystem audit-all
|
|
98
|
+
run: |
|
|
99
|
+
export PATH="$PWD/.venv/bin:$PATH"
|
|
100
|
+
scitex-dev ecosystem audit-all scitex-agentic-journal --no-version-check
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Project-local overrides for scitex-dev's CLI audit dictionary.
|
|
2
|
+
#
|
|
3
|
+
# Tokens listed here override the default noun/verb classification
|
|
4
|
+
# the auditor derives from CATALOG / moby. See
|
|
5
|
+
# `scitex_dev._cli.audit._summary._audit:_load_custom_dict`.
|
|
6
|
+
|
|
7
|
+
# Verbs that don't need a sibling — the CLI verb at the top level is
|
|
8
|
+
# a complete (intransitive) action.
|
|
9
|
+
intransitive_verbs:
|
|
10
|
+
# `scitex-agentic-journal hub-manifest` is the agentic-journal
|
|
11
|
+
# mirror of scitex-live-paper's `hub-manifest` Click verb (PR #45).
|
|
12
|
+
# The verb is intransitive: the action is "emit the wrapper manifest
|
|
13
|
+
# JSON to stdout"; the verb name reads as a noun ("hub manifest") in
|
|
14
|
+
# the bare token-classifier sense, but the action it performs is a
|
|
15
|
+
# complete unit (no object needed; redirect to `> manifest.json` is
|
|
16
|
+
# the canonical use). Mirrors what live-paper already ships
|
|
17
|
+
# cross-package.
|
|
18
|
+
- hub-manifest
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to `scitex-agentic-journal` are documented in this file.
|
|
4
|
+
|
|
5
|
+
## [Unreleased]
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
- Leaf `_django` demo surface (aj-leaf-django): `_django/_leaf.py`
|
|
9
|
+
(Django-free helpers: real-FS archive list, deterministic mock
|
|
10
|
+
validator panel, browse/share payloads, HTML payload via the
|
|
11
|
+
live-paper ports contract — no core fork) + `dashboard/` route
|
|
12
|
+
(`decision_dashboard()` verdict→badge-status rows + counts for
|
|
13
|
+
the Monday demo). Placeholder/503 contracts kept. Tests:
|
|
14
|
+
`tests/scitex_agentic_journal/_django/test__leaf.py` (10 tests).
|
|
15
|
+
- M5 publish hand-off (#9 → PR #27): `_publish.publish_submission`,
|
|
16
|
+
`_publish.LocalFilesystemLivePaperPort` (default in-process port that
|
|
17
|
+
writes the Live Paper bundle envelope to
|
|
18
|
+
`<home>/published/<submission_id>/bundle.json`),
|
|
19
|
+
`_publish.RemoteLivePaperPortStub` (NotImplementedError stub for the
|
|
20
|
+
future HTTP/MCP port), `_publish.load_submission_records` +
|
|
21
|
+
`PublishLoadError` (refuses to publish unless gate1/review/decision/
|
|
22
|
+
persistent_id are all on disk and the decision verdict is `accept`).
|
|
23
|
+
CLI: `scitex-agentic-journal publish <submission-id>` with the
|
|
24
|
+
audit-§6 mutating-verb flags `--dry-run` / `--yes`. Prints
|
|
25
|
+
`PUBLISHED submission_id=... viewer_url=... persistent_id=...` on
|
|
26
|
+
success.
|
|
27
|
+
- M4 persistent-ID minting (#8 → PR #26): `_publish.mint_for_submission`
|
|
28
|
+
+ `MintLoadError` (orchestrates a mint over a persisted Gate-1
|
|
29
|
+
record), `_publish.persist_persistent_id` + `PersistedPersistentId`
|
|
30
|
+
(drops `persistent_id.json` next to `gate1.json` / `review.json` /
|
|
31
|
+
`decision.json`). `_publish._zenodo.ZenodoSandboxStub` now mints
|
|
32
|
+
against the real `sandbox.zenodo.org` REST API over real HTTP — token
|
|
33
|
+
from `SCITEX_AJ_ZENODO_SANDBOX_TOKEN`. `ZenodoStub` (production)
|
|
34
|
+
shares the same HTTP code path against `zenodo.org` when
|
|
35
|
+
`SCITEX_AJ_ZENODO_TOKEN` is set; both raise loud `RuntimeError` on
|
|
36
|
+
missing token or non-2xx response (no silent fallback). The opt-in
|
|
37
|
+
network test exercises the sandbox round-trip when
|
|
38
|
+
`SCITEX_RUN_NETWORK_TESTS=1` + `SCITEX_AJ_ZENODO_SANDBOX_TOKEN` are
|
|
39
|
+
both present.
|
|
40
|
+
- M3 editorial decision engine (#7 → PR #28): `_decide.DecisionEngine`
|
|
41
|
+
produces `accept | revise | reject` over the immutable
|
|
42
|
+
`ReviewRecord` from M2. Rules-set is versioned + auditable
|
|
43
|
+
(`_decide/rules/v1.yaml`, bundled via
|
|
44
|
+
`[tool.setuptools.package-data]`) — no silent thresholds in code.
|
|
45
|
+
Every rule emits a `RuleHit` (both pass and fail) so the persisted
|
|
46
|
+
`decision.json` proves which rules passed alongside which failed.
|
|
47
|
+
Verdict precedence: first failing reject rule wins reject; otherwise
|
|
48
|
+
first failing revise rule wins revise; otherwise accept.
|
|
49
|
+
`_decide.persist_decision` + `PersistedDecision` drop
|
|
50
|
+
`decision.json` next to `gate1.json` / `review.json`. CLI:
|
|
51
|
+
`scitex-agentic-journal decide <submission-id>` prints
|
|
52
|
+
`DECISION submission_id=... verdict=... rules_version=... content_hash=...`.
|
|
53
|
+
- M2 reviewer-agent harness (#6 → PR #25): `_review.ReviewRunner` runs
|
|
54
|
+
all four ARA sub-reports (reproducibility, claim verify, novelty,
|
|
55
|
+
methodology) against one submission in rubric order via a pluggable
|
|
56
|
+
`ReviewerAdapter` protocol. Ships `LocalDeterministicAdapter` (the
|
|
57
|
+
in-memory dev/test adapter) and `QwenAdapterStub` (NotImplementedError
|
|
58
|
+
placeholder until the live endpoint is wired). `_review.persist_review`
|
|
59
|
+
+ `PersistedReview` write `review.json` (sha256 content_hash +
|
|
60
|
+
`written_at_utc`) next to `gate1.json`. CLI:
|
|
61
|
+
`scitex-agentic-journal review <submission-id> [--adapter local]
|
|
62
|
+
[--prompts-version v1]` prints `REVIEW DONE submission_id=...
|
|
63
|
+
adapter=... content_hash=...`.
|
|
64
|
+
- M1 CLI orchestrator (#5 → PR #24): `_submit.run_gate1` runs the three
|
|
65
|
+
Gate-1 checks (ORCID → code-repo → Clew DAG) in declared order and
|
|
66
|
+
short-circuits on the first failure with a structured `Gate1Failure`
|
|
67
|
+
wrapping the underlying `GateFailure`. `_submit.persist_verdict` +
|
|
68
|
+
`PersistedSubmission` mint a sortable, opaque submission id
|
|
69
|
+
(`sub_YYYY_MM_DD_<6-hex>`) and drop `gate1.json` under
|
|
70
|
+
`$SCITEX_AGENTIC_JOURNAL_HOME/submissions/<id>/`. CLI:
|
|
71
|
+
`scitex-agentic-journal submit <bundle-dir>` prints
|
|
72
|
+
`GATE-1 PASS submission_id=...` on success and one structured
|
|
73
|
+
`GATE-1 FAIL [<check>]: <reason> -- <detail>` line on failure.
|
|
74
|
+
- M1.3 Clew-DAG verification (#4 → PR #21): `_gate1.verify_clew_dag`
|
|
75
|
+
shells out to the real `clew claim verify` binary against the
|
|
76
|
+
bundled DAG and returns a `ClewVerification` recording the green /
|
|
77
|
+
red claim ids and total claim count. Loud `GateFailure` when no
|
|
78
|
+
green claim is present, when `clew` is missing from PATH, or when
|
|
79
|
+
the DAG directory is malformed. Opt-in real test gated on
|
|
80
|
+
`SCITEX_RUN_CLEW_TESTS=1` + `clew` on PATH.
|
|
81
|
+
|
|
82
|
+
- `_gate1.clone_code_repo(repo_url, destination, *, depth=1, ref=None,
|
|
83
|
+
timeout_s=60.0)` — second slice of the M1 submission gate. Shells out
|
|
84
|
+
to the real system `git` binary to shallow-clone the author's code
|
|
85
|
+
repository. Loud structured `GateFailure` on empty URL, missing `git`
|
|
86
|
+
binary, pre-existing destination, clone failure (exit code + stderr
|
|
87
|
+
excerpt), or timeout. On any failure the partially-populated
|
|
88
|
+
destination is removed.
|
|
89
|
+
- `_gate1.cloned_code_repo(repo_url, ...)` — context-manager helper that
|
|
90
|
+
clones into a tempdir and cleans up on exit, so the CLI orchestrator
|
|
91
|
+
(issue #5) does not have to manage tempdirs itself.
|
|
92
|
+
- `_gate1.ClonedRepo` dataclass exposing `repo_url`, `path`,
|
|
93
|
+
`head_commit`, `head_subject` so downstream gates can identify what
|
|
94
|
+
was reviewed without re-cloning.
|
|
95
|
+
- `tests/test_gate1_code_repo.py` — hermetic test suite that builds a
|
|
96
|
+
real local bare git repo with one real commit and clones via a
|
|
97
|
+
`file://` URL. Real `git` binary, real subprocess, real disk; no
|
|
98
|
+
`subprocess` patching, no respx/responses replay (STX-NM001-003 /
|
|
99
|
+
PA-306 compliant). One opt-in `@pytest.mark.network` test clones
|
|
100
|
+
`github.com/octocat/Hello-World` when `SCITEX_RUN_NETWORK_TESTS=1`.
|
|
101
|
+
- `scitex_agentic_journal._gate1` package — first slice of the M1 submission
|
|
102
|
+
gate. Public surface: `GateFailure` (structured failure exception),
|
|
103
|
+
`verify_orcid(orcid_id, *, session=None, base_url=...)`, `OrcidRecord`,
|
|
104
|
+
and `ORCID_PUB_API_BASE` constant.
|
|
105
|
+
- `verify_orcid` resolves an ORCID iD against the public ORCID v3.0 API
|
|
106
|
+
via real HTTP (`requests`). Accepts bare iDs and any `orcid.org` /
|
|
107
|
+
`sandbox.orcid.org` URL form. Verifies the ISO 7064 MOD 11-2 check
|
|
108
|
+
digit before any network call. Loud, structured `GateFailure` on
|
|
109
|
+
malformed iD / bad checksum / 404 / non-2xx / non-JSON body /
|
|
110
|
+
unfamiliar record shape / network unreachable. No silent fallbacks,
|
|
111
|
+
no mocks.
|
|
112
|
+
- `tests/test_gate1_orcid.py` — hermetic test suite that spins up a real
|
|
113
|
+
local stdlib `http.server` on an ephemeral port and exercises
|
|
114
|
+
`verify_orcid` over real TCP via the `base_url` config seam (no
|
|
115
|
+
monkey-patching, no respx/responses replay library — STX-NM001-003 /
|
|
116
|
+
PA-306 compliant). One opt-in `@pytest.mark.network` test hits the
|
|
117
|
+
real `pub.orcid.org` when `SCITEX_RUN_NETWORK_TESTS=1`.
|
|
118
|
+
- `pyproject.toml`: register the `network` pytest marker.
|
|
119
|
+
- README "What it is" section spelling out the AI-agent-driven peer-review /
|
|
120
|
+
copy-edit / publication-readiness role, and an explicit "MVP loop"
|
|
121
|
+
(submit → agent review → decision → publish) section that maps to the
|
|
122
|
+
initial GitHub issues.
|
|
123
|
+
- README "Full pipeline (design target)" section with a 4-gate flow
|
|
124
|
+
(structural gate → AI review → editorial decision → persistent ID) so the
|
|
125
|
+
MVP loop and the long-term target are no longer collapsed.
|
|
126
|
+
- Roadmap expanded from 5 to 7 milestones (M1–M7) with an explicit editorial
|
|
127
|
+
decision engine (M3), persistent ID stage (M4), Live Paper hand-off (M5),
|
|
128
|
+
reviewer dashboard (M6) and MCP server (M7).
|
|
129
|
+
- `scitex-scholar` added to the dependency direction diagram as the source of
|
|
130
|
+
novelty / literature triangulation.
|
|
131
|
+
- GitHub Actions CI workflow (`.github/workflows/ci.yml`) running `pytest` on
|
|
132
|
+
Python 3.10 / 3.11 / 3.12 for `push` and `pull_request` against `main` and
|
|
133
|
+
`develop`.
|
|
134
|
+
- `pyproject.toml`: `license-files`, extra keywords (`agentic-review`,
|
|
135
|
+
`peer-review`, `reproducibility`), extra classifiers
|
|
136
|
+
(`Framework :: Django`, information analysis, LaTeX), and a `Changelog`
|
|
137
|
+
project URL.
|
|
138
|
+
|
|
139
|
+
## [0.1.0-alpha] — 2026-06-12
|
|
140
|
+
|
|
141
|
+
### Added
|
|
142
|
+
- Initial scaffold with purpose + 5-milestone roadmap.
|
|
143
|
+
- README pipeline diagram (submit -> ORCID+code+DAG gate -> AI review -> persistent ID -> Live Paper).
|
|
144
|
+
- Dependency direction documented: consumer of `scitex-clew` (claim model owner), emits to `scitex-live-paper`.
|
|
145
|
+
- `pyproject.toml` with `scitex-dev`, `scitex-ui`, `django`, `click`, `requests`, `pyyaml` runtime deps.
|
|
146
|
+
- Package skeleton at `src/scitex_agentic_journal/` with version export.
|
|
147
|
+
- Smoke test.
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# SciTeX Contributor License Agreement (CLA)
|
|
2
|
+
|
|
3
|
+
Thank you for your interest in contributing to `scitex-agentic-journal`,
|
|
4
|
+
part of the [SciTeX](https://scitex.ai) ecosystem owned by Yusuke
|
|
5
|
+
Watanabe / 株式会社 SciTeX (in formation).
|
|
6
|
+
|
|
7
|
+
By making a contribution to this project (a commit, a pull request, a
|
|
8
|
+
patch, a code review fix-up, an issue with proposed wording, a
|
|
9
|
+
documentation change, etc.) you agree to the following terms for that
|
|
10
|
+
contribution.
|
|
11
|
+
|
|
12
|
+
## 1. Definitions
|
|
13
|
+
|
|
14
|
+
- **You** (or **Your**) means the individual or legal entity submitting
|
|
15
|
+
a Contribution.
|
|
16
|
+
- **Contribution** means any work of authorship — including any
|
|
17
|
+
modification or addition to existing work — that is intentionally
|
|
18
|
+
submitted by You to the project for inclusion in the project.
|
|
19
|
+
- **Project** means `scitex-agentic-journal` and the surrounding SciTeX
|
|
20
|
+
ecosystem maintained by Yusuke Watanabe / 株式会社 SciTeX.
|
|
21
|
+
|
|
22
|
+
## 2. Grant of Copyright License
|
|
23
|
+
|
|
24
|
+
You grant to the Project and to recipients of software distributed by
|
|
25
|
+
the Project a perpetual, worldwide, non-exclusive, no-charge,
|
|
26
|
+
royalty-free, irrevocable copyright license to reproduce, prepare
|
|
27
|
+
derivative works of, publicly display, publicly perform, sublicense and
|
|
28
|
+
distribute Your Contribution and such derivative works under the
|
|
29
|
+
license used by the Project at the time of inclusion
|
|
30
|
+
([AGPL-3.0-only](LICENSE)) as well as under any subsequent license the
|
|
31
|
+
Project's maintainer adopts for the Project.
|
|
32
|
+
|
|
33
|
+
## 3. Grant of Patent License
|
|
34
|
+
|
|
35
|
+
You grant to the Project and to recipients of software distributed by
|
|
36
|
+
the Project a perpetual, worldwide, non-exclusive, no-charge,
|
|
37
|
+
royalty-free, irrevocable patent license under the patent claims
|
|
38
|
+
licensable by You that are necessarily infringed by Your Contribution
|
|
39
|
+
alone or by combination of Your Contribution with the Project.
|
|
40
|
+
|
|
41
|
+
## 4. You Are the Author
|
|
42
|
+
|
|
43
|
+
You represent that:
|
|
44
|
+
|
|
45
|
+
- Each Contribution is Your original creation, or You have sufficient
|
|
46
|
+
rights to grant the licenses in §2 and §3.
|
|
47
|
+
- If Your employer has rights to intellectual property You create that
|
|
48
|
+
includes Your Contributions, You have received permission to make
|
|
49
|
+
Contributions on behalf of that employer, or Your employer has
|
|
50
|
+
waived such rights.
|
|
51
|
+
- You are aware that the Project may treat unsigned Contributions as
|
|
52
|
+
not received under this CLA and may decline to merge them.
|
|
53
|
+
|
|
54
|
+
## 5. Signing
|
|
55
|
+
|
|
56
|
+
By commenting on the relevant pull request
|
|
57
|
+
|
|
58
|
+
> `I have read and agree to the SciTeX CLA.`
|
|
59
|
+
|
|
60
|
+
You signify acceptance of this CLA for that Contribution and all future
|
|
61
|
+
Contributions to this Project. The CLA bot
|
|
62
|
+
(`contributor-assistant/github-action`) records your acceptance.
|
|
63
|
+
|
|
64
|
+
## 6. No Warranty
|
|
65
|
+
|
|
66
|
+
You provide Your Contributions on an "AS IS" basis, without warranties
|
|
67
|
+
or conditions of any kind, express or implied.
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
Questions: open an issue or email `contact@scitex.ai`.
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# Contributing to `scitex-agentic-journal`
|
|
2
|
+
|
|
3
|
+
Thank you for your interest. This document is the short form. The
|
|
4
|
+
long form lives in the [SciTeX ecosystem guidelines](https://scitex.ai).
|
|
5
|
+
|
|
6
|
+
## Quick rules
|
|
7
|
+
|
|
8
|
+
1. **One task = one PR off `develop`.** Open the PR against `develop`,
|
|
9
|
+
not `main`. CI must be green before merge.
|
|
10
|
+
2. **No mocks.** Production paths use real collaborators (real HTTP,
|
|
11
|
+
real `git`, real subprocess). Hermetic CI is achieved with real
|
|
12
|
+
local fixtures (stdlib `http.server`, real on-disk repos), never
|
|
13
|
+
with `respx` / `responses` / `unittest.mock` replay libraries.
|
|
14
|
+
See `STX-NM001-003` / `PA-306` in the SciTeX no-mocks discipline.
|
|
15
|
+
3. **No silent fallbacks.** Every failure path raises a structured
|
|
16
|
+
`GateFailure` (or similar) with `reason` + `detail`.
|
|
17
|
+
4. **Sign the [CLA](CLA.md).** A bot will check on PR open.
|
|
18
|
+
5. **No `Co-Authored-By` trailer** from automated agents.
|
|
19
|
+
6. **No `--no-verify`, no force-push** to protected branches.
|
|
20
|
+
|
|
21
|
+
## Local development
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
git clone https://github.com/ywatanabe1989/scitex-agentic-journal.git
|
|
25
|
+
cd scitex-agentic-journal
|
|
26
|
+
pip install -e ".[dev]"
|
|
27
|
+
pytest tests/
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
To exercise the opt-in real-network tests:
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
SCITEX_RUN_NETWORK_TESTS=1 pytest tests/ -m network
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Submitting a change
|
|
37
|
+
|
|
38
|
+
1. Branch off `develop`: `git checkout -b feat/your-thing develop`.
|
|
39
|
+
2. Implement + add tests.
|
|
40
|
+
3. Update `CHANGELOG.md` under `## [Unreleased]`.
|
|
41
|
+
4. Push, open a PR against `develop`, wait for CI.
|
|
42
|
+
5. Self-merge (squash) once CI is green and the CLA bot is happy.
|
|
43
|
+
|
|
44
|
+
## What gets reviewed
|
|
45
|
+
|
|
46
|
+
- Architecture fit (consumes Clew, emits Live Paper; we do not invent
|
|
47
|
+
new claim models here).
|
|
48
|
+
- No mocks in production paths.
|
|
49
|
+
- Real errors with guidance, not silent fallbacks.
|
|
50
|
+
- Tests describe behaviour, not implementation.
|
|
51
|
+
|
|
52
|
+
Questions: open an issue, or reach the maintainers via
|
|
53
|
+
`contact@scitex.ai`.
|