-
Notifications
You must be signed in to change notification settings - Fork 0
Add sync resilience edge-case tests (empty tracker response, per-item parse failure) #91
Copy link
Copy link
Open
Labels
area:engineRust core/CLI: crates/core, crates/cli.Rust core/CLI: crates/core, crates/cli.area:testsUnit, integration, and e2e test suites.Unit, integration, and e2e test suites.complexity:sonnetMedium scope; may span multiple files or require iteration.Medium scope; may span multiple files or require iteration.priority:lowNice to have; backlog.Nice to have; backlog.priority:mediumMeaningful improvement; normal queue.Meaningful improvement; normal queue.status:refinedAgent-refined (acceptance criteria + proposed complexity); awaiting a human's go.Agent-refined (acceptance criteria + proposed complexity); awaiting a human's go.type:tech-debtKnown shortcut to repay; reduces future friction.Known shortcut to repay; reduces future friction.
Description
Metadata
Metadata
Assignees
Labels
area:engineRust core/CLI: crates/core, crates/cli.Rust core/CLI: crates/core, crates/cli.area:testsUnit, integration, and e2e test suites.Unit, integration, and e2e test suites.complexity:sonnetMedium scope; may span multiple files or require iteration.Medium scope; may span multiple files or require iteration.priority:lowNice to have; backlog.Nice to have; backlog.priority:mediumMeaningful improvement; normal queue.Meaningful improvement; normal queue.status:refinedAgent-refined (acceptance criteria + proposed complexity); awaiting a human's go.Agent-refined (acceptance criteria + proposed complexity); awaiting a human's go.type:tech-debtKnown shortcut to repay; reduces future friction.Known shortcut to repay; reduces future friction.
Summary
The synchronization logic in
crates/core/src/sync.rsneeds to be hardened against common API inconsistencies encountered when pulling issue data from external trackers. Currently, while the core divergence rule is well-tested for successful syncs, the handling of empty response sets or mixed batches containing malformed records is brittle and could lead to runtime panics or silent failures in production. This update will implement full resilience checks, ensuring that a zero-result page or a partially bad payload causes graceful logging and continuation without disrupting the board synchronization process.Acceptance criteria
{"issues": []}). No divergence events should be logged, and no errors/panics should occur.Out of scope
This refinement does not change how data is retrieved (i.e., it relies on
jsonpath.rsfor path resolution); it only changes how the already-parsed list of records is consumed and reconciled withinsync.rs. It also explicitly excludes implementing schema validation beyond what is covered by the existing type checks.Files in scope
crates/core/src/sync.rs(Primary implementation location)crates/core/tests/e2e.rs(New test fixtures required to validate mixed-content and empty cases)