Files

113 lines
5.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# W1-017 migration
This increment reorganizes source, tests, records and documentation without
adding dependencies, services, source coverage or qualification rules.
## Before and after
Previously, application scripts, tests, fixtures, documents and the pipeline were
all at the root beside `runs/`. They now have the following destinations:
| Previous path | Current path |
| --- | --- |
| `discovery.py` | `src/opportunity_intelligence/collectors/usac.py` |
| `lrs_discovery.py` | `src/opportunity_intelligence/collectors/lrs.py` |
| `qualify_lrs.py` | `src/opportunity_intelligence/qualification/lrs.py` |
| `discover_test.py` | `tests/test_usac.py` |
| `discover_dates_test.py` | `tests/test_usac_dates.py` |
| `lrs_test.py` | `tests/test_lrs.py` |
| `qualify_lrs_test.py` | `tests/test_qualification.py` |
| `lrs-sample.html`, `lrs-listing-sample.html` | `tests/fixtures/` |
| `opportunities.json` | `data/opportunities.json` |
| `inspect_lrs.py` | `tools/inspect_lrs.py` |
| `LRS.md`, `QUALIFICATION.md` | `docs/` |
| original `README.md` | archived as `docs/SPRINT0.md` |
| `lrs-descriptions.json` | `runs/2026-09-17/lrs-inspection/lrs-descriptions.json` |
All original root files were also copied into `runs/2026-09-17/w1-017/before/`
before edits, since this workspace has no Git metadata. No historical run file
was moved or removed. Byte hashes for the 107 existing run files are retained in
`runs/2026-09-17/w1-017/historical-hashes.json`.
## Compatibility
Use `python w1.py usac`, `python w1.py lrs`, and `python w1.py qualify` instead of
the old root script names. Existing source-specific CLI options remain supported.
Use `python -m unittest discover -s tests -v` instead of old test-module names.
The diagnostic command is `python tools/inspect_lrs.py`.
No compatibility copies of the reviewed pipeline are left at the root. Code uses
`opportunity_intelligence.paths` to locate the canonical file independent of cwd.
For direct module use, add `src/` to PYTHONPATH; the root runner and test bootstrap
already do this without installation. Documentation assumes a source checkout,
not an installed wheel. No third-party build or runtime dependencies were added.
Tests now use immutable copies of saved input under `tests/fixtures/`, rather
than depending on the live pipeline or on historical directories being writable.
Fixture provenance remains in the copied LRS manifest and original run snapshots.
Qualification output must be byte-equivalent for `brief.md`, `shortlist.json`
and `audit.json`. Its summary's `rules_sha256` changes because source changed;
every other summary field must agree. The rule version remains W1-016-v1.
## Readability and exceptions
Expanded compressed statements, added docstrings and explanatory comments,
replaced dense ranking/rendering expressions with named helpers, and centralized
checkout paths. Source evidence, uncertainty flags and ranking weights remain
unchanged. Original files and one-time migration helpers are archived with the
refactor evidence; archived historical code is not part of the active package.
Offline CLI replay exposed a pre-existing USAC error: plain UTF-8 decoding
rejected the BOM in the reviewed pipeline. The small correction uses utf-8-sig;
no records were rewritten. USAC's legacy same-day output overwrite behavior is
unchanged and documented; no live USAC execution was performed over history.
`git status --short` and `git rev-parse --show-toplevel` reported that this is not
a Git repository. No Git initialization or commit was performed.
## Verification
```powershell
python -m unittest discover -s tests -v
python tools/verify_refactor.py
```
The second command creates a new `runs/2026-09-17/w1-017/verification/` directory
and refuses to overwrite it. It runs the documented entry points, replays all
87 LRS details and both USAC fixtures against archived implementations, compares
qualification artifacts and verifies the reviewed pipeline plus every original
run hash. Logs and actual elapsed machine time are in its `report.json` and
`command-*.txt`. For routine repeat checks after that one-time verification,
use the unittest command; it creates temporary outputs and is repeatable.
No fresh network validation is claimed for this structural increment. Human
working time is not measured. Completion timing and final test results are
reported separately from the historical LRS live-run timing.
## Completed verification
The final verification command exited 0. Its suite ran **23 tests**, preserving
all 20 prior regression cases and adding three refactor-specific checks for
USAC CLI output isolation, complete LRS HTTP-response replay, and original brief
bytes. The final suite reported 1.794 seconds; the verification process measured
3.875 seconds including command checks and comparisons.
- Both USAC fixtures match the original parser results.
- All 87 LRS detail extractions and index discovery match the original collector.
- LRS CLI offline replay collects 87 jobs: 84 new and 3 pipeline matches.
- Qualification remains 84 input, 47 relevant, 12 shortlisted, 35 deferred;
exclusions remain 9 clearly unrelated and 28 outside scope.
- Brief, shortlist and audit bytes match the final W1-016 artifacts exactly.
- All 107 pre-existing run files remain at their original paths with matching
SHA-256 hashes.
- Pipeline bytes match the original hash:
`b68aea9436f835375d4f08a46f09fcc06a13da9280a0de7f7faed63913247e00`.
- Final Git status still reports no Git repository; no commit was created.
See [verification/report.json](../runs/2026-09-17/w1-017/verification/report.json)
for command exit codes, timings and preserved logs. Measured implementation
wall-clock interval was approximately 24 minutes (16:59:5117:23:43 UTC), including
tool/approval waits; this is not a measure of human labor or CPU time. No new
external dependencies or spending were introduced. W1-017 stops here.