Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

KIP index

All KIPs the codebase references, split honestly: implemented, partial, or deliberate non-goal.

KIP numbers are how Kafka names its own evolution, which makes them the natural vocabulary for the question every evaluator asks: which Kafka do I actually get? This index answers in three buckets, and the split is source-verified, not aspirational: implemented means the behaviour ships and is exercised by tests or the shell-tool suite; partial pages lead with what's missing; non-goals get a rationale in Non-goals, not silence. Wire-facing KIPs also appear per key in the generated API matrix's KIPs column. The scope is Apache Kafka 3.7, with one deliberate post-3.7 exception: DescribeCluster v2 (KIP-1073) is served, because kaas has a real fenced broker state and no other way to report it — see KIP-700.

Three corrections relative to earlier planning documents, all found by source-verifying during the book build: KIP-516, KIP-32, KIP-58, and KIP-354 are partial, not implemented. Topic IDs are minted but not propagated to the wire (KIP-516); LogAppendTime and timestamp lookup don't exist (KIP-32); and the two compaction knobs (KIP-58, KIP-354) remain config plumbing without an enforcing compactor — though the delete-policy retention cleaner now runs (gh #250).

Implemented (14)

KIPWhat it iskaas page
KIP-13Per-broker client quotas (byte-rate throttling)KIP-13
KIP-98Exactly-once: idempotent producer + transactionsKIP-98
KIP-107DeleteRecords admin API (key 21)KIP-107
KIP-195CreatePartitions admin API (key 37)KIP-195
KIP-255SASL/OAUTHBEARER — OIDC JWTs validated against the issuer's JWKSKIP-255
KIP-290Prefixed ACL resource patternsKIP-290
KIP-339IncrementalAlterConfigs (key 44)KIP-339
KIP-360Producer epoch bump on re-initializationKIP-360
KIP-371mTLS principal mapping (ssl.principal.mapping.rules)KIP-371
KIP-447EOS v2: producer-scalable transactional offsetsKIP-447
KIP-482Flexible versions + tagged fieldsKIP-482
KIP-546Client-quota admin APIs (keys 48/49)KIP-546
KIP-700DescribeCluster admin API (key 60)KIP-700
KIP-800Join/leave reason stringsKIP-800

Partial (10)

Each page leads with the "what's missing" block — these are the book's credibility test.

KIPLandedMissingkaas page
KIP-32CreateTime timestamps round-trip byte-identically; batch MaxTimestamp tracked per segmentLogAppendTime entirely; timestamp→offset ListOffsets lookup ((-1,-1) sentinel)KIP-32
KIP-58min.compaction.lag.ms config plumbing (CR → .config.json → DescribeConfigs)the compactor that would enforce it; the delete-policy retention cleaner does runKIP-58
KIP-101segment filenames carry the leader epochleader-epoch cache + lookup (offset_for_leader_epoch returns the (-1,-1) sentinel); wire key 23 unregisteredKIP-101
KIP-219throttle_time_ms computed (debt-carry) and returnedthe broker never mutes the channel after responding — throttling relies on client cooperationKIP-219
KIP-345group.instance.id plumbed through join/sync; static members survive the eviction sweepFENCED_INSTANCE_ID fencing of duplicate static membersKIP-345
KIP-354delete.retention.ms config plumbingtombstone-expiry enforcement (same missing compactor); upstream's max.compaction.lag.ms doesn't exist anywhereKIP-354
KIP-368re-auth on a live connection; session_lifetime_ms advertised + deadline enforced on oauth listeners; same-principal guarda broker-wide connections.max.reauth.ms for SCRAM/PLAIN sessions; disconnect (vs in-band 58) past the deadlineKIP-368
KIP-394MEMBER_ID_REQUIRED error code definedthe v4+ two-step join handshake — join() still takes the legacy assign-inline pathKIP-394
KIP-516operator mints Status.TopicID (v4 UUID, never rotated)broker-side wire propagation — the production topic watch inserts the all-zero sentinel, so Metadata serves nil topic IDsKIP-516
KIP-554wire keys 50/51 served — describe answers from the live credential store, alter rotates via the KafkaUser CRSCRAM-SHA-256 (kaas is SHA-512-only); wire-side credential deletion (refused — the lifecycle stays on the CR)KIP-554

Deliberate non-goals (8)

Rationale for each in Non-goals.

KIPWhat it isWhy not
KIP-48Delegation tokensno token-based auth surface; SCRAM/mTLS cover the deployment model
KIP-227Incremental fetch sessionsstateless by contract: SessionID=0 on every response
KIP-405Tiered storagedeferred, not refused — the NFS substrate is already a near-tier
KIP-664Describe/ListTransactions toolingfollow-up; slot files are directly inspectable meanwhile
KIP-714Client metrics pushout of scope for the preview line
KIP-848Next-gen consumer rebalance protocolpost-3.7
KIP-932Share groups (queues)Kafka 4.0+
KIP-1071Streams rebalance protocolpost-3.7

Implementation notes (for contributors)

The missing compactor behind the KIP-58 and KIP-354 rows is tracked as gh #158 — which now covers only the compactor: size- and time-based retention are wired and enforced by the RetentionCleaner (gh #250). The corrections in the note above come from the 2026-07-19 source sweep, recorded on the affected KIP pages.