{
"$schema": "../../node_modules/nx/schemas/project-schema.json",
"name": "onetaskgraph-github-projects",
"projectType": "library",
"tags": ["lang:rust", "layer:plugin", "live:github-projects", "coverage:uninstrumented"],
"//": "implicitDependencies mirror this crate's Cargo dependencies; scripts/check-nx-graph.sh fails when the two disagree. llmlint: ignore-file[external_service_suite_stays_out_of_the_affected_tier] JSON has no comment to scope this to `test`, whose live tests reach a real API; affected selection is the edge they sit behind, so they run only when this crate changed. llmlint: ignore-file[expensive_tests_stay_behind_their_own_edge] JSON has no comment to scope this to `coverage`: the line floor is one report over every crate's instrumented run, so workspace:coverage runs this crate's whether or not the change reached it. `test` still selects by the graph.",
"implicitDependencies": [
"onetaskgraph-github-live",
"onetaskgraph-live",
"onetaskgraph-plugin-api"
],
"namedInputs": {
"cargoInputs": [
{
"runtime": "node scripts/nx-cargo-closure.mjs --crate onetaskgraph-github-projects"
}
]
},
"targets": {
"bootstrap": {
"executor": "nx:run-commands",
"options": {
"command": "cargo fetch --locked"
},
"//": "Uncached: it reaches the network and writes to the shared cargo registry outside the workspace, so no input in the tree describes its result."
},
"check": {
"executor": "nx:noop"
},
"format": {
"executor": "nx:run-commands",
"options": {
"command": "cargo fmt -p onetaskgraph-github-projects"
},
"cache": false,
"//": "Uncached: it rewrites the tree in place, so replaying a cached result would be a no-op that silently leaves the tree unformatted."
},
"format-check": {
"executor": "nx:run-commands",
"options": {
"command": "cargo fmt -p onetaskgraph-github-projects -- --check"
}
},
"lint": {
"executor": "nx:run-commands",
"options": {
"command": "cargo clippy --quiet -p onetaskgraph-github-projects --all-targets --all-features --locked -- -D warnings"
}
},
"typecheck": {
"executor": "nx:run-commands",
"options": {
"command": "cargo check --quiet -p onetaskgraph-github-projects --all-targets --all-features --locked"
}
},
"test": {
"executor": "nx:run-commands",
"options": {
"commands": [
"bash scripts/live-crate-test.sh onetaskgraph-github-projects live real_projects_v2_contract_writes_and_leaves_no_residue",
"bash scripts/check-live-decline.sh onetaskgraph-github-projects",
"bash scripts/check-budget-decline.sh"
],
"parallel": false
},
"//": "The live journey is one of the tests the first command runs; the second drives it through skipped, declined and expected-but-absent without a credential, and the third follows a budget decline through to the check going red, which a test asserting a panic cannot show. Serial: both re-run the binary the first builds. The env inputs are the cache key's, because this target's result is not a function of the files — a replay of an uncredentialed run would otherwise stand in for a credentialed one and the live tests would not run while the target reported green. `coverage` takes none of them: scripts/rust-coverage.sh clears the credentials first, which is what keeps one run to one live session. docs/metadata.md is an input because `unprojectable_fields_tests` reads its list of the fields a `metadata_fields` entry may not name, so an edit to that list alone has to select this crate and re-run the guard rather than replay a cached pass.",
"inputs": [
"versionFreeNpm",
"{workspaceRoot}/.tool-versions",
"default",
"^default",
"{workspaceRoot}/scripts/check-live-decline.sh",
"{workspaceRoot}/scripts/check-budget-decline.sh",
"{workspaceRoot}/docs/metadata.md",
{
"env": "GH_PROJECTS_TOKEN"
},
{
"env": "GH_PROJECTS_OWNER"
},
{
"env": "GH_PROJECTS_NUMBER"
},
{
"env": "GH_PROJECTS_REPOSITORY"
},
{
"env": "ONETASKGRAPH_LIVE_REQUIRED"
},
{
"env": "GITHUB_ACTIONS"
},
{
"env": "GITHUB_RUN_ID"
},
{
"env": "GITHUB_RUN_ATTEMPT"
},
{
"env": "GITHUB_LIVE_SELECTION"
},
{
"env": "GITHUB_LIVE_SESSION_ID"
},
{
"env": "GITHUB_LIVE_SESSION_DIR"
},
{
"env": "GITHUB_LIVE_SOURCE_REVISION"
},
"{workspaceRoot}/scripts/live-crate-test.sh",
{
"env": "ONETASKGRAPH_TESTS_UNDER_COVERAGE"
},
{
"runtime": "node -p process.platform"
}
],
"outputs": [
"{workspaceRoot}/target/debug/telemetry/github-live-session/*/main.json",
"{workspaceRoot}/target/debug/telemetry/github-live-session/*/assets.json"
]
},
"coverage": {
"executor": "nx:run-commands",
"options": {
"command": "bash scripts/rust-coverage.sh --build-only onetaskgraph-github-projects --test plugin --test live"
},
"cache": false,
"//": "Its suite runs every case uninstrumented, in `test`, and contributes no line coverage (AGENTS.md records why). This builds instrumented, and runs none of, the two test binaries onetaskgraph-github-projects-e2e's measured entry-point pairs run from target/llvm-cov-target: `plugin`, which holds the GitHub double, and `live`, the entry points. scripts/check-coverage-enforced.sh holds the tag, this target and workspace:coverage's dependency list to one another.",
"inputs": [
"default",
"^coverageDependency",
"coverageUnit",
"{workspaceRoot}/.tool-versions",
{
"runtime": "node scripts/coverage-read-digest.mjs --unit onetaskgraph-github-projects"
}
]
}
}
}