|
8 | 8 |
|
9 | 9 | ## Current State — ALL NON-PENDING BDD TESTS PASS |
10 | 10 |
|
11 | | -**1283 passing BDD scenarios** (0 failures) across 67+ feature files. |
12 | | -- **1283 passing** (memory backend, in-process) |
13 | | -- **23 tagged `@pending-impl`** (tests for unimplemented features, excluded from CI) |
| 11 | +**1298 passing BDD scenarios** (0 failures) across 67+ feature files. |
| 12 | +- **1298 passing** (memory backend, in-process) |
| 13 | +- **7 tagged `@pending-impl`** (Protobuf import resolution, excluded from CI) |
14 | 14 |
|
15 | 15 | ### Phase Progress |
16 | 16 |
|
|
21 | 21 | | Phase 3: Protobuf Diff Tests | COMPLETE | 43 | Section 31 data-driven | |
22 | 22 | | Phase 4-5: JSON Schema Diff | COMPLETE | 251 | Sections 27-29 data-driven | |
23 | 23 | | Phase 6: JSON Schema Validation | COMPLETE | 40 | Section 30 reader/writer pairs | |
24 | | -| Phase 7: Feature Implementation | IN PROGRESS | — | JSON Schema + Protobuf checkers enhanced | |
| 24 | +| Phase 7: Feature Implementation | COMPLETE | — | All checkers enhanced, aliases, fingerprint fix | |
25 | 25 | | Phase 8: Feature BDD Tests | NOT STARTED | — | Tests for Phase 7 features | |
26 | 26 |
|
27 | | -### Key Fixes This Session |
| 27 | +### Key Fixes (All Sessions) |
28 | 28 |
|
29 | 29 | 1. **API error codes**: 40408 (subject config not found), 40409 (subject mode not found) |
30 | 30 | 2. **Deletion behaviors**: `deleted=true` for GetVersion, config/mode cleanup on delete |
31 | 31 | 3. **Pagination**: offset/limit for versions, schema IDs, subject IDs |
32 | 32 | 4. **FORWARD_TRANSITIVE**: Fixed test data (verified against Confluent v8.1.1) |
33 | 33 | 5. **Protobuf checker**: Required field removal, oneof moves (existing vs new), optional→repeated for length-delimited types, synthetic oneof handling |
34 | | -6. **All @pending-impl tags removed** from tests that now pass |
| 34 | +6. **Avro fingerprint**: Include `default` in field fingerprint so schemas differing only in defaults are treated as distinct (fixes BACKWARD_TRANSITIVE/FULL_TRANSITIVE dedup bypass) |
| 35 | +7. **Avro aliases**: Field and record alias matching for backward-compatible renaming |
| 36 | +8. **JSON Schema test corrections**: Verified against Confluent — adding property to open content model IS incompatible (PROPERTY_ADDED_TO_OPEN_CONTENT_MODEL); closed model allows new properties |
35 | 37 |
|
36 | | -### Remaining 23 `@pending-impl` Scenarios |
| 38 | +### Remaining 7 `@pending-impl` Scenarios |
37 | 39 |
|
38 | 40 | | Category | Count | Details | |
39 | 41 | |----------|-------|---------| |
40 | | -| Protobuf imports | 13 | Proto import resolution (google.proto, custom imports) | |
41 | | -| JSON Schema validation | 5 | Record evolution, union compat, transitive chains | |
42 | | -| Avro gaps | 4 | Aliases (field/record), transitive mode dedup issue | |
43 | | -| Schema parsing | 1 | Avro alias compatibility in parsing | |
| 42 | +| Protobuf imports | 7 | Proto import resolution (`import "google.proto"`, custom imports) — fails at parse: `file not found: google.proto` | |
44 | 43 |
|
45 | 44 | ### Checker Enhancements |
46 | 45 |
|
| 46 | +**Avro** (`internal/compatibility/avro/checker.go`): |
| 47 | +- Field alias matching: reader field aliases checked against writer fields |
| 48 | +- Record alias matching: reader/writer aliases compared for name compatibility |
| 49 | + |
47 | 50 | **JSON Schema** (`internal/compatibility/jsonschema/checker.go`, ~1430 lines): |
48 | 51 | - 13 new check categories matching Confluent's JsonSchemaDiff |
49 | 52 | - $ref resolution, composition, dependencies, constraints, open/closed model |
|
54 | 57 | - Real vs synthetic oneof distinction (proto3 optional) |
55 | 58 | - Optional→repeated: only compatible for string/bytes/message |
56 | 59 |
|
| 60 | +**Avro Parser** (`internal/schema/avro/parser.go`): |
| 61 | +- Field fingerprint now includes `default` values to prevent dedup bypass |
| 62 | + |
57 | 63 | ### Test Data Files |
58 | 64 |
|
59 | 65 | | File | Cases | Source | |
|
0 commit comments