Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
24 changes: 24 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,5 +31,29 @@ jobs:
node-version: 22
cache: pnpm

- id: example-versions
name: Read fixed example dependencies
run: |
node --input-type=module <<'JS'
import {readFileSync, appendFileSync} from 'node:fs';
const {components} = JSON.parse(readFileSync('data/reference/versions.json'));
appendFileSync(process.env.GITHUB_OUTPUT, `cpp_ref=${components['netft-cpp'].sourceCommit}\npynetft_version=${components.pyNetFT.version}\n`);
JS

- name: Obtain the fixed C++ SDK for examples
uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4
with:
repository: netft/netft-cpp
ref: ${{ steps.example-versions.outputs.cpp_ref }}
path: .dependencies/netft-cpp
persist-credentials: false

- uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
with:
python-version: '3.12'

- name: Install the fixed Python package for examples
run: python3 -m pip install 'pynetft==${{ steps.example-versions.outputs.pynetft_version }}'

- run: pnpm install --frozen-lockfile
- run: pnpm check
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -24,3 +24,5 @@ Thumbs.db

# Local development plans
.superpowers/

.dependencies/
1 change: 1 addition & 0 deletions .markdownlint-cli2.jsonc
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
"**/*.mdx",
"!node_modules/**",
"!build/**",
"!.dependencies/**",
"!.superpowers/**",
],
}
10 changes: 10 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,3 +30,13 @@ Tests should cover data contracts, validators, generated routes, links, and othe
Keep each pull request focused. Explain the reader-facing outcome, source repositories checked, validation run, and any accessibility or deployment impact.

By contributing authored content under `docs/`, you agree to license that contribution under [Creative Commons Attribution 4.0 International](LICENSE-DOCS). Contributions to code, examples, tests, configuration, scripts, and site tooling are licensed under the [Apache License 2.0](LICENSE). Do not submit third-party material unless its terms permit inclusion and its original license is preserved.

## Example dependencies

Example checks are required by default: `NETFT_CPP_ROOT` must point to SDK headers (the default is `.dependencies/netft-cpp`), and `PYTHON` must import the version of pynetft in `data/reference/versions.json`. CI obtains the fixed SDK commit and Python release explicitly. `pnpm check:examples --allow-missing` is a local opt-in for working on prose without installed dependencies; skipped checks are not passes. Imports load the Python example without invoking `main()` or contacting hardware.

## Reference provenance

`pnpm update:references -- --cpp PATH --python PATH --cli PATH --ros PATH` requires clean checkouts whose origin, HEAD, exact tag and project version match `data/reference/versions.json`. CLI extraction consumes `--schema` and also verifies executable version, commit and clean-source identity; point `NETFT_CLI_EXECUTABLE` at the matching build. Older CLI releases without this interface cannot regenerate their CLI manifest with the new extractor. Their existing published reference remains pinned to its real release commit.

To review an unreleased candidate, copy the versions file to a temporary file, set each entry's `publication` and `sourceTag` to `unreleased`, set `sourceCommit` to its exact clean checkout HEAD, and use a `sourceUrl` ending in `/tree/<commit>`. Set `NETFT_REFERENCE_VERSIONS` and `NETFT_REFERENCE_OUTPUT` to the temporary metadata file and an existing temporary directory. Review generated candidates before explicitly replacing published references; do not label candidate code as a released tag.
25 changes: 15 additions & 10 deletions data/ecosystem.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,12 @@
"audience": "Operators and automation",
"docsPath": "tutorials/cli/inspect-and-validate",
"repository": "https://github.com/netft/netft-cli",
"stableVersion": "0.2.1",
"version": "0.3.0",
"platforms": ["Linux", "macOS", "Windows"],
"installMethods": ["release", "source"],
"documentationOwner": "netft-docs",
"priority": 1
"priority": 1,
"releaseChannel": "stable"
},
{
"id": "netft-viewer",
Expand All @@ -25,11 +26,12 @@
"audience": "Lab and field users",
"docsPath": "tutorials/viewer/connect-and-inspect",
"repository": "https://github.com/netft/netft-viewer",
"stableVersion": "0.1.1",
"version": "0.2.1",
"platforms": ["Linux", "macOS", "Windows"],
"installMethods": ["release", "source"],
"documentationOwner": "netft-docs",
"priority": 2
"priority": 2,
"releaseChannel": "development"
}
]
},
Expand All @@ -45,11 +47,12 @@
"audience": "C++ developers",
"docsPath": "tutorials/sdks/cpp",
"repository": "https://github.com/netft/netft-cpp",
"stableVersion": "0.3.3",
"version": "0.3.4",
"platforms": ["Linux", "macOS", "Windows"],
"installMethods": ["source"],
"documentationOwner": "netft-docs",
"priority": 1
"priority": 1,
"releaseChannel": "stable"
},
{
"id": "pynetft",
Expand All @@ -58,11 +61,12 @@
"audience": "Python developers",
"docsPath": "tutorials/sdks/python",
"repository": "https://github.com/netft/pyNetFT",
"stableVersion": "2.1.1",
"version": "2.1.2",
"platforms": ["Linux", "macOS", "Windows"],
"installMethods": ["PyPI", "source"],
"documentationOwner": "netft-docs",
"priority": 2
"priority": 2,
"releaseChannel": "stable"
}
]
},
Expand All @@ -78,11 +82,12 @@
"audience": "Robotics developers",
"docsPath": "tutorials/ros/standalone",
"repository": "https://github.com/netft/ros-netft",
"stableVersion": "0.3.3",
"version": "0.4.0",
"platforms": ["Linux"],
"installMethods": ["ROS", "source"],
"documentationOwner": "netft-docs",
"priority": 1
"priority": 1,
"releaseChannel": "stable"
}
]
}
Expand Down
Loading
Loading