Add 52 public API operations, archive retrieval, and four live adapters - #4
Open
kvkenyon wants to merge 2 commits into
Open
Add 52 public API operations, archive retrieval, and four live adapters#4kvkenyon wants to merge 2 commits into
kvkenyon wants to merge 2 commits into
Conversation
This was referenced Sep 6, 2026
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 adds 52 source-backed Public Reports operations through reusable product/artifact discovery and generation, bringing typed installed-wheel retrieval to 56 unique paths of 243. It also adds four public rolling dashboard adapters, RT annual-file iteration, public archive/bundle metadata, and a seven-column Resource DME CSV decoder. Existing legacy imports, signatures, defaults, models, exceptions and DataFrame behavior are unchanged; the three legacy runtime files are byte-identical to audit base
d1daad25df42d3fff41f88b907d99ef325b970e0.Stacked on PR #3 (
feat/public-rt-load,12d60654632ce5c47543ef5f3410ec55972c8471). Do not merge as part of this task.Exact coverage and evidence
docs/evidence/installed-registry-index.json: 56 generated/installed unique paths; 57 current requests across 56 paths and 56 oldest-first requests across 56 paths. The new 52-path batch contributes 104 one-row requests. Every entry contains public receipt hashes/URLs/times and installed-module evidence.Captain-authorized Public API authentication occurred. No restricted request, paid access, secret copying, forecaster computation, historical bulk extraction, no-mistakes run, or merge occurred. Offline import/generation/tests need no credentials. The ignored mode-0600
.envis not committed.Primary sources: ERCOT Public Reports OpenAPI, public product root, and the per-source ERCOT URLs/receipts checked into
docs/evidence/. Generation reads pinned local projections only and never refreshes the legacy generated file from a moving URL.Validation
Passed in the working tree:
Full suite: 1259 passed, 1 skipped. Real installed-wheel PEP 561 proof: 510 legacy methods, 1,334 legacy row fields, 56 current endpoint/product facades, 498 current row fields, 847 filter fields, live/archive/metadata APIs, and 64 invalid uses rejected. Legacy diff empty; credential file ignored.
Concurrent follow-up work stays uncommitted. Final PR-specific validation used the staged snapshot below, after installing
openpyxl==3.1.5in both separate test environments:git checkout-index --all --prefix=/tmp/tinyercot-pr4-check.fjDuNo/ cd /tmp/tinyercot-pr4-check.fjDuNo /tmp/tinyercot-locked-wheel/bin/python -m pytest -q /tmp/tinyercot-typing-proof.fbtIin/venv/bin/python -m pytest -q /tmp/tinyercot-typing-proof.fbtIin/venv/bin/python -m ruff check tools tinyercot/catalog.py tinyercot/public tests /tmp/tinyercot-typing-proof.fbtIin/venv/bin/python -m ruff format --check tools tinyercot/catalog.py tinyercot/public tests /tmp/tinyercot-typing-proof.fbtIin/venv/bin/python tools/generate_client.py --check /tmp/tinyercot-typing-proof.fbtIin/venv/bin/python tools/generate_public.py --checkPython 3.11.14 and 3.14.0: 1259 passed, 1 skipped each. Lint passed; 62 files formatted; both generators reproduced pinned output. Source/fixture inventories were checked independently. Public Python documentation was reviewed for Google-style argument, result, lifecycle and failure contracts.
docs/public-metadata-task-note.mdrecords exact installed probe commands, source limits, and next active batches.docs/api-archive-installed-task-note.mdrecords the bounded bundle failure. No live requests were repeated merely to assemble the receipt index. Next stacked work expands the already captured renewable/load/RUC batch and continuing public disclosure, archive, and live coverage.CI follow-up: the first run caught stale fixed counts in standalone
tests/wheel_smoke.pyafter generation/tests/lint/build passed. It now reconciles installed coverage with the installed registry.uv run ruff check tests/wheel_smoke.py,/tmp/tinyercot-typing-proof.fbtIin/venv/bin/python -I tests/wheel_smoke.py, and/tmp/tinyercot-locked-wheel/bin/python -I tests/wheel_smoke.pypassed. Only validation/docs changed in this follow-up.