feature/initial-capture-tooling #1

Merged
Xeplosion merged 16 commits from feature/initial-capture-tooling into dev 2026-08-26 23:56:04 +00:00
Owner

What changed and why

Here's the filled template — since there's no tracked issue number for this work, I left that section noting it, but swap in a real number if one exists.
What changed and why

Introduces the initial capture tooling for the Provider Offering Dataset: the JSON Schema (v2.3) providers must conform to, a bootstrap pipeline that generates skeleton capture files from the project's tracking spreadsheets, and the supporting docs and CI gates.

Specifically:

Schema v2.3 (schema/provider-schema-v2.3.json) — discrete and parametric product lines, all three pricing-rate models (linear/piecewise/tiered) including irregular step ranges, ratio/table couplings, add-ons, promotions, cart and interval-discount witnesses, and every feature block. Enforces mode separation, the absent/none/null convention, and a bidirectional currency rule (USD ⇔ null fx_conversion_id). Validated against a reference file (docs/hexanode-example.json).
capture_tools.bootstrap — reads DATA_Providers, REF_Sources, and FORM_Retrieval_Responses (joined on Source_Id) via the Sheets API and generates one PRV-NNNN.wip.json skeleton per provider, prefilled with everything the sheets know and deliberately-invalid placeholders for everything they don't — so the schema-validation report is a per-provider fill-out checklist.
capture_tools.validate — the .wip.json / .json promotion contract: skeletons are exempt from schema validation, completed files (renamed, no .wip) are enforced strictly. This is what the CI gate checks on every push.
utils.sheets_api / utils.drive_api — general-purpose Google API helper libraries (official google-api-python-client, ADC auth), shared with the future reviews-analysis work.
.forgejo/workflows/ — ci-python.yml (format/lint/test on push and PR), validate-captures.yml (schema gate on completed captures), bootstrap.yml (one-click skeleton generation for non-technical contributors, pushing results to a review branch).
docs/capture-guide.md and docs/bootstrap-guide.md — how to hand-fill a capture file, and how to set up/run/troubleshoot the bootstrap tool respectively.

No tracked issue for this work yet — this PR establishes the tooling baseline itself. (Replace with Closes #N if one gets filed before merge.)

How to test

  1. pip install -e ".[dev]"
  2. ruff format --check . && ruff check . && pytest -q — expect 63 passing, no lint/format issues
  3. capture-validate --dir docs --schema schema/provider-schema-v2.3.json — confirms the reference example (hexanode-example.json) validates cleanly
  4. With a service-account key configured (GOOGLE_APPLICATION_CREDENTIALS) and both tracking sheets shared to it: capture-bootstrap — confirms live-sheet generation produces skeletons with a ~5-item fill-out checklist per provider (not 7 — currency and product lines are the only genuine manual items)
  5. From the Forgejo UI: Actions → "Bootstrap provider files" → Run workflow — confirms the one-click path works for a non-technical user with zero local setup

Checklist

  • [x ] Tests added or updated
  • [x ] Docs updated if behaviour changed
  • [x ] No unrelated changes included
  • [x ] PR is focused on one thing

Release notes

Adds the initial provider capture schema (v2.3) and tooling — sheet-driven skeleton generation, schema validation gates, and setup docs — for the Provider Offering Dataset.

## What changed and why <!-- Describe the change and the motivation behind it. Link to any relevant background. --> Here's the filled template — since there's no tracked issue number for this work, I left that section noting it, but swap in a real number if one exists. What changed and why Introduces the initial capture tooling for the Provider Offering Dataset: the JSON Schema (v2.3) providers must conform to, a bootstrap pipeline that generates skeleton capture files from the project's tracking spreadsheets, and the supporting docs and CI gates. Specifically: Schema v2.3 (schema/provider-schema-v2.3.json) — discrete and parametric product lines, all three pricing-rate models (linear/piecewise/tiered) including irregular step ranges, ratio/table couplings, add-ons, promotions, cart and interval-discount witnesses, and every feature block. Enforces mode separation, the absent/none/null convention, and a bidirectional currency rule (USD ⇔ null fx_conversion_id). Validated against a reference file (docs/hexanode-example.json). capture_tools.bootstrap — reads DATA_Providers, REF_Sources, and FORM_Retrieval_Responses (joined on Source_Id) via the Sheets API and generates one PRV-NNNN.wip.json skeleton per provider, prefilled with everything the sheets know and deliberately-invalid placeholders for everything they don't — so the schema-validation report is a per-provider fill-out checklist. capture_tools.validate — the .wip.json / .json promotion contract: skeletons are exempt from schema validation, completed files (renamed, no .wip) are enforced strictly. This is what the CI gate checks on every push. utils.sheets_api / utils.drive_api — general-purpose Google API helper libraries (official google-api-python-client, ADC auth), shared with the future reviews-analysis work. .forgejo/workflows/ — ci-python.yml (format/lint/test on push and PR), validate-captures.yml (schema gate on completed captures), bootstrap.yml (one-click skeleton generation for non-technical contributors, pushing results to a review branch). docs/capture-guide.md and docs/bootstrap-guide.md — how to hand-fill a capture file, and how to set up/run/troubleshoot the bootstrap tool respectively. ## Related issues <!-- Link issues this closes or relates to. "Closes #N" will auto-close on merge. --> No tracked issue for this work yet — this PR establishes the tooling baseline itself. (Replace with Closes #N if one gets filed before merge.) ## How to test <!-- Steps a reviewer can follow to verify this works correctly. --> 1. pip install -e ".[dev]" 2. ruff format --check . && ruff check . && pytest -q — expect 63 passing, no lint/format issues 3. capture-validate --dir docs --schema schema/provider-schema-v2.3.json — confirms the reference example (hexanode-example.json) validates cleanly 4. With a service-account key configured (GOOGLE_APPLICATION_CREDENTIALS) and both tracking sheets shared to it: capture-bootstrap — confirms live-sheet generation produces skeletons with a ~5-item fill-out checklist per provider (not 7 — currency and product lines are the only genuine manual items) 5. From the Forgejo UI: Actions → "Bootstrap provider files" → Run workflow — confirms the one-click path works for a non-technical user with zero local setup ## Checklist - [x ] Tests added or updated - [x ] Docs updated if behaviour changed - [x ] No unrelated changes included - [x ] PR is focused on one thing ## Release notes <!-- One-line summary for the changelog, or "none" if this shouldn't appear in release notes --> Adds the initial provider capture schema (v2.3) and tooling — sheet-driven skeleton generation, schema validation gates, and setup docs — for the Provider Offering Dataset.
feat: added increased functionality for the Goolge API utilities.
Some checks failed
Validate capture files / validate (push) Failing after 6s
3b792fa90d
feat: source researcher and capture_datetime from REF_Sources and FORM_Retrieval_Responses.
All checks were successful
Validate capture files / validate (push) Successful in 8s
eb13857a6b
fix: source provider.name from Provider_Name column instead of leaving it a placeholder.
All checks were successful
Validate capture files / validate (push) Successful in 6s
fce71765dc
docs: add bootstrap tool guide.
All checks were successful
Validate capture files / validate (push) Successful in 7s
a228a11693
fix: added missing name update to the bootstrap Python file.
All checks were successful
Validate capture files / validate (push) Successful in 7s
de5c52d984
fix: added fixed wip files with provider.name field.
All checks were successful
Validate capture files / validate (push) Successful in 7s
0de5daaf23
chore: normalize line endings to LF and add .gitattributes.
All checks were successful
Validate capture files / validate (push) Successful in 7s
58aa3c8e63
ci: add format/lint/test check on push and pull request.
Some checks failed
CI / format (push) Successful in 12s
Validate capture files / validate (push) Successful in 7s
CI / format (pull_request) Successful in 6s
Validate capture files / validate (pull_request) Successful in 7s
CI / test (push) Has been cancelled
CI / test (pull_request) Has been cancelled
30899de525
Xeplosion deleted branch feature/initial-capture-tooling 2026-08-26 23:56:04 +00:00
Sign in to join this conversation.
No reviewers
XeplosionGames/Owners
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
XeplosionGames/minecraft-provider-analysis!1
No description provided.