Skip to content

Working PR for ADR-191: Refactor DVC pipeline into proper OOP design patterns#202

Draft
jodavis wants to merge 11 commits into
mainfrom
feature/ADR-191-oop-ml-pipeline
Draft

Working PR for ADR-191: Refactor DVC pipeline into proper OOP design patterns#202
jodavis wants to merge 11 commits into
mainfrom
feature/ADR-191-oop-ml-pipeline

Conversation

@jodavis
Copy link
Copy Markdown
Owner

@jodavis jodavis commented May 29, 2026

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 29, 2026

Test Results

401 tests  ±0   401 ✅ ±0   1m 59s ⏱️ -46s
  5 suites ±0     0 💤 ±0 
  5 files   ±0     0 ❌ ±0 

Results for commit b835493. ± Comparison against base commit b877808.

This pull request removes 3 and adds 2 tests. Note that renamed tests count towards both.
,False)
AdaptiveRemote.Services.ProgrammaticSettings.PersistSettingsTests ‑ PersistSettings_Set_ValidatesKeyNameAsync (Hello
AdaptiveRemote.Services.ProgrammaticSettings.PersistSettingsTests ‑ PersistSettings_Set_ValidatesValueAsync (Invalid
AdaptiveRemote.Services.ProgrammaticSettings.PersistSettingsTests ‑ PersistSettings_Set_ValidatesKeyNameAsync (Hello
,False)
AdaptiveRemote.Services.ProgrammaticSettings.PersistSettingsTests ‑ PersistSettings_Set_ValidatesValueAsync (Invalid
,False)

♻️ This comment has been updated with latest results.

@jodavis
Copy link
Copy Markdown
Owner Author

jodavis commented May 30, 2026

@copilot rebase this PR branch on main so it gets the latest fixes. Make sure scripts/validate passes with no warnings, errors, or test failures.

Copy link
Copy Markdown
Contributor

Copilot AI commented May 30, 2026

@jodavis I'm unable to start working on this because of repository rules that prevent me from pushing to the branch:

  • Changes must be made through a pull request due to repository rules

See the documentation for more details.

Copilot AI and others added 8 commits May 30, 2026 13:08
- Add EnableWindowsTargeting=true to WPF and Console E2E host projects
  so they build on Linux without WPF SDK installed
- Fix PersistSettingsTests to use a custom controlled env var instead of
  %LocalAppData%, which doesn't expand on Linux, causing InputSettingsPath
  and ResolvedSettingsPath to be identical and conflicting Moq setups
…core/

- sample.py: Sample(ABC), SampleWithPath(Sample,ABC), TextSample, AudioSample,
  SampleSpectrogram, SampleTokens dataclasses with all spec fields.
- manifest.py: Manifest[S] generic with O(1) by_id/by_content_hash lookups;
  ManifestStore.read() dispatches on sample_type; write() emits version-1 JSON.
  TextSample JSON omits path/parent_content_hash/applied_values; Spectrogram and
  Tokens JSON omits applied_values and includes parent_id per spec.
- pyproject.toml: minimal pytest config so plain `pytest` from ml/ works.
- Ambiguity resolutions: mutable dataclasses (no frozen=True); seed not a default
  field (callers pass seed=0 explicitly, matching spec's "PhraseVariator sets seed=0").

https://claude.ai/code/session_01DLVaMxWuhm75L3YaMdVTFT
1. Manifest.__init__: raise ValueError on duplicate sample ids (UUIDs must
   be unique); keep first occurrence for duplicate content_hash (documented
   contract — deterministic stages can produce identical hashes).

2. ManifestStore.read(): use data.get("sample_type") and raise ValueError
   explicitly when the key is absent, matching the defensive pattern used
   for "version".

3. ManifestStore.write(): validate that all samples share the same type
   before writing; a mixed-type Manifest would produce a JSON file whose
   sample_type header mismatches later entries, causing read() to KeyError.

Adds four new tests covering each guard.

https://claude.ai/code/session_01DLVaMxWuhm75L3YaMdVTFT
TextSample now derives its id from content_hash via __post_init__,
so callers no longer pass id= explicitly. This means two TextSamples
with the same content always share the same id, enforcing the
deduplication invariant at the type level.

Update ManifestStore._deserialise to omit id= when constructing
TextSample, and update tests to match: duplicate-id and
duplicate-content-hash tests now use AudioSample (where id and
content_hash are independent) to exercise those code paths.

https://claude.ai/code/session_01DLVaMxWuhm75L3YaMdVTFT
…-sample-class-hierarchy-and

ADR-221: Implement Sample class hierarchy and ManifestStore with JSON round-trip serialisation
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants