Marc-André Bombeck
8db21ab718
fix(jobs): persist bounded success outcomes
2026-07-29 15:50:42 +02:00
Marc-André Bombeck
b41b32d472
feat(i18n): complete v1.34.1 locale reconciliation
2026-07-29 15:11:40 +02:00
Marc-André Bombeck
5bc213c5b8
test(01-21): type guarded progress mock calls
...
- declare the updateMany mock argument tuple
- assert the guarded write exists before inspection
2026-07-29 15:04:08 +02:00
Marc-André Bombeck
104a058096
style(workouts): format pulse enrichment
2026-07-29 14:58:46 +02:00
Marc-André Bombeck
5ec1a3836f
feat(01-21): add fair Google sync outcomes
...
- finish workout and low-cost resources before dense metrics
- report bounded terminal outcomes and invalidate workout caches
2026-07-29 14:58:40 +02:00
Marc-André Bombeck
d2f6bf33eb
fix(workouts): sanitize WHOOP zone enrichment
2026-07-29 14:58:24 +02:00
Marc-André Bombeck
89fefce7ac
test(workouts): separate pulse aggregates from curves
2026-07-29 14:57:42 +02:00
Marc-André Bombeck
43cce08012
fix(workouts): share enriched canonical detail data
2026-07-29 14:56:59 +02:00
Marc-André Bombeck
635e9b64c5
fix(workouts): enrich canonical WHOOP aggregates
2026-07-29 14:55:11 +02:00
Marc-André Bombeck
1cb0f7dd6a
test(workouts): pin WHOOP aggregate enrichment
2026-07-29 14:53:59 +02:00
Marc-André Bombeck
c3ffc43335
refactor(01-22): reuse Google cohort concurrency limit
...
- preserve the shared Google Health poll fan-out width
2026-07-29 14:53:22 +02:00
Marc-André Bombeck
6a3861122c
feat(01-22): publish truthful cohort outcomes
...
- fold complete partial failed parked and skipped user verdicts
- bound serialized job facts to a privacy-safe scalar allowlist
- preserve provider retry isolation and reminder queue completion
2026-07-29 14:50:30 +02:00
Marc-André Bombeck
5cfcb69ef2
feat(01-21): add guarded Google sync progress
...
- persist one bounded owner-scoped current-run envelope
- reject stale writers and materialize interrupted runs safely
2026-07-29 14:49:12 +02:00
Marc-André Bombeck
addd6b7000
fix(01-19): avoid phantom ECG failure counts
...
- increment archive-level failures only for discovered ECG artifacts
2026-07-29 14:47:47 +02:00
Marc-André Bombeck
a686c7200b
feat(01-19): persist Apple Health ECG recordings
...
- encrypt and upsert stable content-addressed ECG recordings transactionally
- keep XML imports successful while ECG members fail with scalar counters
2026-07-29 14:45:40 +02:00
Marc-André Bombeck
f06137c0db
feat(01-19): add bounded Apple Health ECG parsing
...
- validate ZIP paths, compression metadata, and actual decompressed bytes
- normalize ECG CSV descriptors and bounded microvolt samples
2026-07-29 14:42:18 +02:00
Marc-André Bombeck
efe203212a
fix(01-20): classify safe assessment outcomes
...
- add a discriminated generated and fallback contract
- screen derived prose and expose retryable cache policy
2026-07-29 14:36:29 +02:00
Marc-André Bombeck
0ae9165aae
refactor(01-18): format occurrence identity changes
...
- apply repository formatting to reminder and scheduling updates
- preserve verified occurrence behavior without semantic changes
2026-07-29 14:36:21 +02:00
Marc-André Bombeck
840e47fda5
fix(01-18): preserve authoritative rolling due in consumers
...
- expose the canonical due schedule identity from the shared list read
- prevent passed local windows from rebinding a prior overdue occurrence
2026-07-29 14:35:23 +02:00
Marc-André Bombeck
2de9bccf9d
fix(01-18): retain rolling occurrence through due band
...
- preserve prior rolling identity independently of local-day flooring
- scope exact resolution by schedule and era while advancing resolved grids
- include open rolling slots for display without widening compliance bands
2026-07-29 14:33:17 +02:00
Marc-André Bombeck
c0af97ce46
fix(01-18): preserve reminder occurrence across midnight
...
- select active canonical recurrence slots instead of rebuilding from tick day
- scope intake suppression and dedup metadata to the occurrence local date
2026-07-29 14:30:23 +02:00
Marc-André Bombeck
690c4aeb5a
test(01-14): add failing truthful cohort contracts
...
- distinguish complete partial failed parked skipped and clean-zero outcomes
- require bounded privacy-safe scalar serialization and retry codes
2026-07-29 14:26:26 +02:00
Marc-André Bombeck
958b0e10d9
fix(01-11): keep reminder fixture type-safe
...
- mutate the inferred schedule fixture without widening nullable fields
- preserve the cross-midnight RED expectation unchanged
2026-07-29 14:24:00 +02:00
Marc-André Bombeck
6cc3de8248
test(01-12): add failing Apple ECG import contracts
...
- pin bounded path-safe archive and parser behavior
- require encrypted idempotent fail-soft persistence and WHOOP regressions
2026-07-29 14:20:56 +02:00
Marc-André Bombeck
d5f473d672
test(01-11): specify rolling weekly overdue identity
...
- pin the prior-day Mounjaro occurrence across local midnight and DST
- cover resolution state, band end, schedule siblings, and era isolation
2026-07-29 14:19:03 +02:00
Marc-André Bombeck
d8e52b831d
test(01-13): add red Google sync progress contracts
...
- pin workout-first fairness and bounded resource outcomes
- require owner-scoped race-safe current-run progress in PostgreSQL
2026-07-29 14:18:20 +02:00
Marc-André Bombeck
81893ac972
test(01-11): reproduce cross-midnight reminder identity bug
...
- pin prior-day occurrence lookup across timezone and DST boundaries
- prove real worker dedup and distinct next-dose behavior with PostgreSQL
2026-07-29 14:15:48 +02:00
Marc-André Bombeck
f95da50ba0
fix(01-07): enforce exact Nightscout origins
...
- move private-host authority to the server-owned exact-origin policy
- preserve stable redacted policy failures through connect and sync
2026-07-29 13:57:07 +02:00
Marc-André Bombeck
89c83510d4
feat(01-08): bind passkey enrollment to fresh cookie proof
...
- require an existing-factor proof before issuing registration options
- atomically claim session-bound challenges before credential persistence
2026-07-29 13:52:22 +02:00
Marc-André Bombeck
db08f6c175
fix(01-05): serialize MCP refresh families
...
- lock and rotate refresh families inside one database transaction
- revoke CAS losers and insert successors before commit
- sign refresh artifacts only after committed state
2026-07-29 13:50:14 +02:00
Marc-André Bombeck
a177869609
fix(01-07): classify embedded IPv4 destinations
...
- Normalize IPv6 literals before transition-prefix inspection
- Reject mapped, compatible, 6to4, and NAT64 private embeddings
- Share the verdict with pinned public and operator dispatchers
2026-07-29 13:49:49 +02:00
Marc-André Bombeck
36cb64c840
test(01-02): exercise DNS transition cases past fetch port guard
...
- replace blocked port 9 with non-blocked test port 8089
- preserve pre-connect ENOTFOUND assertions for all transition forms
2026-07-29 13:49:46 +02:00
Marc-André Bombeck
20a6731c8b
fix(01-05): enforce MCP health read scope
...
- require health:read or wildcard for MCP read capability
- reject insufficient scopes before downstream gates and server construction
2026-07-29 13:47:46 +02:00
Marc-André Bombeck
338dbe6c1f
fix(01-06): purge owned PWA caches on session end
...
- delete current and legacy HealthLog static page and data caches
- preserve unrelated CacheStorage namespaces during activation and logout
- keep IndexedDB query-cache removal in the session-end boundary
2026-07-29 13:46:15 +02:00
Marc-André Bombeck
51f5f43957
test(01-01): preserve explicit transaction contract
...
- keep the red transaction-client call aligned with the planned signature
- isolate the concurrent documentation commit from MCP test content
2026-07-29 13:43:27 +02:00
Marc-André Bombeck
cc8567d82f
docs(01-02): complete PWA and SSRF red contracts plan
...
- document expected cache-isolation and transition-form failures
- record preserved public and redirect behavior
- capture atomic task commits and verification evidence
2026-07-29 13:42:30 +02:00
Marc-André Bombeck
38501f6574
test(01-01): specify transactional refresh rotation
...
- require one transaction for rotation and successor insertion
- pin CAS-loss revocation and insertion rollback semantics
2026-07-29 13:40:03 +02:00
Marc-André Bombeck
e25080b214
test(01-02): add red DNS-pinned SSRF contracts
...
- refuse standard embedded-private IPv6 resolver answers pre-connect
- preserve public IPv6 to IPv4 fallback connectivity
- prove followed redirects repeat the pinned DNS verdict
2026-07-29 13:39:52 +02:00
Marc-André Bombeck
14f451093e
test(01-04): pin Nightscout egress enforcement
...
- Deny user-authorized and mismatched private origins before network access
- Preserve exact operator-private and public positive flows
- Require stable redacted policy reasons through sync boundaries
2026-07-29 13:39:06 +02:00
Marc-André Bombeck
6c0f47acad
test(01-01): pin MCP read scope boundaries
...
- cover health read and wildcard positive capability paths
- reject unrelated scopes before server registration and database reads
2026-07-29 13:38:41 +02:00
Marc-André Bombeck
fb533147d3
test(01-02): add red IPv6 transition classifier matrix
...
- cover mapped compatible 6to4 and NAT64 private embeddings
- exercise both literal URL and raw DNS address verdicts
- preserve public IPv4 native IPv6 and transition forms
2026-07-29 13:38:11 +02:00
Marc-André Bombeck
3a813b51bd
test(01-02): add red PWA cache isolation contracts
...
- exercise signed-in service-worker install at CacheStorage boundary
- require data-free offline navigation and immutable public assets
- require current and legacy session cache cleanup
2026-07-29 13:37:20 +02:00
Marc-André Bombeck
668f85a58d
test(01-04): specify exact Nightscout origin policy
...
- Parse canonical server-owned private origins
- Reject malformed and non-exact trust grants
- Preserve public and approved-private positive contracts
2026-07-29 13:36:46 +02:00
Marc-André Bombeck
1d784c6367
fix(analytics,ci): merge health-score meta annotations, migrate integration tests, remove dead exports, raise bundle budget
2026-07-28 23:02:00 +02:00
Marc-André Bombeck
2bab06e323
feat(medications): resolve each dose slot's own window duration
2026-07-28 21:26:53 +02:00
Marc-André Bombeck
7b8fb98e48
feat(analytics): replace health score with reference composite
2026-07-28 21:12:05 +02:00
Marc-André Bombeck
3aff2c16db
fix(insights): scope generation guard to prompt fields, clear cache on restore
2026-07-28 21:11:43 +02:00
Marc-André Bombeck
c91558f18f
feat(analytics): replace health score with reference composite
2026-07-28 21:10:15 +02:00
Marc-André Bombeck
87544af2cd
Fix medication reminder slot attribution
2026-07-28 21:06:07 +02:00
Marc-André Bombeck
666a85d311
feat(insights): persist correlation patterns
2026-07-28 14:01:11 +02:00