Draft: draft-ietf-quic-qpack

Commentary: Acting on suggestion . 
 Thank you , this greatly improves clarity . 
 Technically , all reviews request rather than require . Those are good suggestions , though . 
 Incorporated , though the parenthetical reads even more awkwardly now . Suggestions on improving that ( or consensus to drop it ) are welcome . 
 This review suggests changes , not " requires " them .
Paragraph (version A):
A dynamic table entry is considered blocking and cannot be evicted
until its insertion has been acknowledged and there are no
outstanding unacknowledged references to the entry.  In particular, a
dynamic table entry that has never been referenced can still be
blocking.
Paragraph (version A):
An encoder MUST NOT insert an entry into the dynamic table (or
duplicate an existing entry) if doing so would evict a blocking
entry.  In order to avoid this, an encoder that uses the dynamic
table has to keep track of blocking entries.
Paragraph (version A):
A blocking entry is unrelated to a blocked stream, see blocked-
streams.
Paragraph (version B):
Inserting entries into the dynamic table might not be possible if the
table contains entries which cannot be evicted.
Paragraph (version B):
A dynamic table entry cannot be evicted immediately after insertion,
even if it has never been referenced.  Once the insertion of a
dynamic table entry has been acknowledged and there are no
outstanding unacknowledged references to the entry, the entry becomes
evictable.
Paragraph (version B):
If the dynamic table does not contain enough room for a new entry
without evicting other entries, and the entries which would be
evicted are not evictable, the encoder MUST NOT insert that entry
into the dynamic table (including duplicates of existing entries).
In order to avoid this, an encoder that uses the dynamic table has to
keep track of whether each entry is currently evictable or not.
Paragraph (version A):
The Header Acknowledgement and Stream Cancellation instructions
permit the encoder to remove references to entries in the dynamic
table.  When an entry with absolute index lower than the Known
Received Count has zero references, then it is no longer considered
blocking (see blocked-insertion).
Paragraph (version B):
The Header Acknowledgement and Stream Cancellation instructions
permit the encoder to remove references to entries in the dynamic
table.  When an entry with absolute index lower than the Known
Received Count has zero references, then it is considered evictable
(see blocked-insertion).
Paragraph (version A):
Before a new entry is added to the dynamic table, entries are evicted
from the end of the dynamic table until the size of the dynamic table
is less than or equal to (table capacity - size of new entry).  The
encoder MUST NOT cause a blocking dynamic table entry to be evicted
(see blocked-insertion).  The new entry is then added to the table.
It is an error if the encoder attempts to add an entry that is larger
than the dynamic table capacity; the decoder MUST treat this as a
connection error of type "HTTP_QPACK_ENCODER_STREAM_ERROR".
Paragraph (version B):
Before a new entry is added to the dynamic table, entries are evicted
from the end of the dynamic table until the size of the dynamic table
is less than or equal to (table capacity - size of new entry).  The
encoder MUST NOT cause a dynamic table entry to be evicted unless
that entry is evictable (see blocked-insertion).  The new entry is
then added to the table.  It is an error if the encoder attempts to
add an entry that is larger than the dynamic table capacity; the
decoder MUST treat this as a connection error of type
"HTTP_QPACK_ENCODER_STREAM_ERROR".
Paragraph (version A):
Reducing the dynamic table capacity can cause entries to be evicted
(see eviction).  This MUST NOT cause the eviction of blocking entries
(see blocked-insertion).  Changing the capacity of the dynamic table
is not acknowledged as this instruction does not insert an entry.
Paragraph (version B):
Reducing the dynamic table capacity can cause entries to be evicted
(see eviction).  This MUST NOT cause the eviction of entries which
are not evictable (see blocked-insertion).  Changing the capacity of
the dynamic table is not acknowledged as this instruction does not
insert an entry.