Add NNS upstream sync and fidelity automation - #5
Merged
Conversation
Make NNS-python the final downstream integration, parity, packaging, and release-readiness layer in the NNS supply chain: OVVO-Financial/NNS -> OVVO-Financial/NNS-core -> OVVO-Financial/NNS-python Adds machine-readable sync provenance and the automation that enforces the two upstream truth paths (native C++ via accepted NNS-core snapshots; public Python API behavior via live/cached R NNS at the recorded R commit): - sync/nns_source.json: machine-readable sync manifest (R commit/version/src tree hash, core commit, vendored paths, parity cache path) - sync/r_api_map.json: maps upstream R files to Python modules, parity tests, and cache scopes - docs/sync_contract.md, docs/sync_status.md: sync contract and status docs - scripts/sync_nns_core_snapshot.py: vendor accepted NNS-core into extern/ - scripts/sync_r_nns_snapshot.py: vendor exact R NNS snapshot + tarball - scripts/plan_r_api_parity_review.py: decide affected modules/tests/cache from changed R files (tolerant of missing/unmapped paths) - scripts/run_live_r_parity_for_changed_api.py: live-R parity runner scaffold - scripts/inspect_r_api_update.py: human-readable R API update report - .github/workflows/sync-from-nns-core.yml: receive nns-core-updated events - .github/workflows/inspect-r-api-update.yml: receive R API/version events - native-backend-ci.yml: tolerant vignette-examples gate - pyproject.toml: include /sync in sdist - tests/tools: validate manifests and the parity planning script Automation only; no runtime behavior changes.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR makes
NNS-pythonthe final downstream integration and parity layer inthe NNS sync chain:
It also enforces direct R behavior fidelity from
OVVO-Financial/NNSto Python:Adds:
sync/nns_source.jsonsync/r_api_map.jsonNNS-coresnapshotsnns-core-updatednns-r-api-or-version-updatedRules enforced:
NNS-corecommitsThis PR is automation only. It does not change runtime behavior.
Validation run locally
git diff --checkpip install -e . --force-reinstallpytest tests/toolspytest tests/invariantsNNS_R_CACHE_ONLY=1 pytest tests/paritypytest tests/parity/test_r13_smoke.pypytest tests/docs/test_vignette_examples.pyruff check .python -m build/sync)mypywas run; the two new test modules are clean. Pre-existing mypy errors inunrelated test files (unresolved
numpy/pyteststubs in this container) arenot introduced by this change.
Manifest provenance note
r_src_tree_hashis set to the git tree object hash of the vendored Rsrc/**tree (
tools/NNS/src). Ther_commitandcore_commitfields readunknownuntil populated by a real upstream
NNS/NNS-coresync event, since thoseSHAs come from the upstream repositories rather than this repo.
r_versionis13.0, taken from the vendored RDESCRIPTION.If the workflow discovers that live R parity fails, behavior is not fixed in this
automation PR. A separate parity-correction PR should record the function,
arguments, R output, Python output, first divergent intermediate, and proposed
fix.
https://claude.ai/code/session_017KnASettwNxUdYJzchRLux
Generated by Claude Code