Skip to content

Commit 34749eb

Browse files
committed
docs: update SESSION_RESUME.md — 1283 passing, 0 failing
1 parent a4b0c8d commit 34749eb

File tree

1 file changed

+46
-55
lines changed

1 file changed

+46
-55
lines changed

SESSION_RESUME.md

Lines changed: 46 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -1,71 +1,58 @@
11
# Session Resume Guide — BDD Testing & Confluent Compatibility
22

3-
**Last Updated:** 2026-02-13
3+
**Last Updated:** 2026-02-14
44
**Branch:** `feature/testing`
55
**Base Branch:** `main`
66

77
---
88

9-
## Current State — EXHAUSTIVE BDD TESTING IN PROGRESS
9+
## Current State — ALL NON-PENDING BDD TESTS PASS
1010

11-
**1292 total BDD scenarios** across 67+ feature files.
12-
- **1257 passing** (memory backend, in-process)
13-
- **35 tagged `@pending-impl`** (tests for unimplemented features, excluded from CI)
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)
1414

1515
### Phase Progress
1616

1717
| Phase | Status | Scenarios Added | Details |
1818
|-------|--------|-----------------|---------|
19-
| Phase 1: API BDD Tests | COMPLETE | 102 (88 pass, 14 pending) | Sections 1-13, 19-21 |
20-
| Phase 2: Avro & Parsing BDD | COMPLETE | 86 (81 pass, 5 pending) | Sections 22-25, 32-34 |
21-
| Phase 3: Protobuf Diff Tests | COMPLETE | 43 (29 pass, 14 pending) | Section 31 data-driven |
22-
| Phase 4-5: JSON Schema Diff | COMPLETE | 251 (244 pass, 7 pending) | Sections 27-29 data-driven |
23-
| Phase 6: JSON Schema Validation | COMPLETE | 40 (35 pass, 5 pending) | Section 30 reader/writer pairs |
24-
| Phase 7: Feature Implementation | IN PROGRESS || JSON Schema checker enhanced |
19+
| Phase 1: API BDD Tests | COMPLETE | 102 | Sections 1-13, 19-21 |
20+
| Phase 2: Avro & Parsing BDD | COMPLETE | 86 | Sections 22-25, 32-34 |
21+
| Phase 3: Protobuf Diff Tests | COMPLETE | 43 | Section 31 data-driven |
22+
| Phase 4-5: JSON Schema Diff | COMPLETE | 251 | Sections 27-29 data-driven |
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 |
2525
| Phase 8: Feature BDD Tests | NOT STARTED || Tests for Phase 7 features |
2626

27-
### JSON Schema Checker Enhancement (Phase 4/7)
28-
29-
Major expansion of `internal/compatibility/jsonschema/checker.go` (~360 → ~1430 lines):
30-
31-
- **$ref resolution** — Resolves local `#/definitions/` and `#/$defs/` references
32-
- **Implicit type detection** — Object/array by keywords without explicit `"type"`
33-
- **String constraints** — minLength, maxLength, pattern
34-
- **Numeric constraints** — minimum, maximum, exclusiveMin/Max, multipleOf
35-
- **Composition** — oneOf/anyOf/allOf with recursive subschema checking
36-
- **Dependencies** — dependentRequired, dependentSchemas (Draft-2020)
37-
- **Tuple items** — items-as-array (Draft-07), prefixItems (Draft-2020)
38-
- **Items as boolean** — Draft-2020 `items: true → false`
39-
- **Const compatibility** — Value change detection
40-
- **Property count** — maxProperties, minProperties
41-
- **Not schema** — not keyword changes
42-
- **patternProperties** — Covering pattern detection for removed properties
43-
- **Boolean property schemas**`true`/`false` property handling
44-
- **Closed vs open model** — Correct property addition semantics
45-
46-
### Remaining 35 `@pending-impl` Failures (by category)
47-
48-
| Category | Count | Files | Details |
49-
|----------|-------|-------|---------|
50-
| Protobuf imports | 7 | protobuf_diff | google.proto not found |
51-
| Protobuf checker | 6 | protobuf_diff | required fields, oneof, field labels |
52-
| JSON Schema validation | 5 | jsonschema_validation | Record evolution, transitive chains |
53-
| Config/Mode errors | 5 | config_exhaustive, mode_exhaustive | Error codes 40408/40409 |
54-
| Avro gaps | 4 | avro_exhaustive | Aliases, transitive modes |
55-
| Deletion | 3 | deletion_exhaustive | Soft-delete query, config cleanup |
56-
| Pagination | 3 | pagination_exhaustive | offset/limit params |
57-
| Error handling | 1 | error_handling_exhaustive | Version 0 validation |
58-
| Schema parsing | 1 | schema_parsing_exhaustive | Avro alias compat |
59-
60-
### Files Modified (checker enhancement)
61-
62-
| File | Change |
63-
|------|--------|
64-
| `internal/compatibility/jsonschema/checker.go` | +1200 lines — 13 new check categories |
65-
| `internal/compatibility/jsonschema/checker_test.go` | Updated 4 unit tests for Confluent semantics |
66-
| `tests/bdd/steps/schema_steps.go` | Added variable-resolved assertion steps |
67-
| `tests/bdd/bdd_test.go` | Added `~@pending-impl` to all tag filters |
68-
| `tests/bdd/features/*.feature` | Removed @pending-impl from 77 now-passing scenarios |
27+
### Key Fixes This Session
28+
29+
1. **API error codes**: 40408 (subject config not found), 40409 (subject mode not found)
30+
2. **Deletion behaviors**: `deleted=true` for GetVersion, config/mode cleanup on delete
31+
3. **Pagination**: offset/limit for versions, schema IDs, subject IDs
32+
4. **FORWARD_TRANSITIVE**: Fixed test data (verified against Confluent v8.1.1)
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
35+
36+
### Remaining 23 `@pending-impl` Scenarios
37+
38+
| Category | Count | Details |
39+
|----------|-------|---------|
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 |
44+
45+
### Checker Enhancements
46+
47+
**JSON Schema** (`internal/compatibility/jsonschema/checker.go`, ~1430 lines):
48+
- 13 new check categories matching Confluent's JsonSchemaDiff
49+
- $ref resolution, composition, dependencies, constraints, open/closed model
50+
51+
**Protobuf** (`internal/compatibility/protobuf/checker.go`, ~660 lines):
52+
- Required field removal detection (proto2)
53+
- Field-to-oneof: FIELD_MOVED_TO_EXISTING_ONEOF = incompatible
54+
- Real vs synthetic oneof distinction (proto3 optional)
55+
- Optional→repeated: only compatible for string/bytes/message
6956

7057
### Test Data Files
7158

@@ -89,8 +76,12 @@ Source document: `CONFLUENT-bdd-test-scenarios.md` (~555 scenarios across 35 sec
8976

9077
```bash
9178
# In-process (fast, memory backend)
92-
go test -tags bdd -v -count=1 -timeout 15m ./tests/bdd/...
79+
BDD_BACKEND=memory go test -tags bdd -v -count=1 -timeout 15m ./tests/bdd/...
9380

9481
# Including pending-impl scenarios (to see what fails)
95-
BDD_TAGS="~@operational" go test -tags bdd -v -count=1 -timeout 15m ./tests/bdd/...
82+
BDD_BACKEND=memory BDD_TAGS="~@operational" go test -tags bdd -v -count=1 -timeout 15m ./tests/bdd/...
83+
84+
# Against Confluent
85+
podman compose -f tests/bdd/docker-compose.confluent.yml up -d --wait
86+
BDD_BACKEND=confluent BDD_REGISTRY_URL=http://localhost:18081 go test -tags bdd -v -count=1 -timeout 25m ./tests/bdd/...
9687
```

0 commit comments

Comments
 (0)