Hoops Card DB

2016-17 Revolution

Base set 
150 cards · checklist
Parallels 
21 · 7 on the base set
Released 
February 1, 2017

licensed (NBA)

  • G-001 CHANNEL DECLINED ON ALL 21 PARALLEL ROWS: channel=UNKNOWN with channel_basis EMPTY on all seven base-set tiers (Astro, Fractal, Galactic, Infinite, Cosmic, Sunburst, Futura) and all fourteen insert-scope tiers. No source consulted states a trade channel, a region or a box SKU for any tier of this release. cardboardconnection's product page carries no channel or exclusivity statement at all - it was asked the question directly and the answer was that nothing is present (https://www.cardboardconnection.com/2016-17-panini-revolution-basketball). The ONLY distribution evidence found anywhere is PRODUCT-LEVEL and first-party: Panini's own blog renders "five cards per pack, eight packs per box, eight boxes per inner case and two inner cases per master case" and "Set to hit hobby shops across North America in early February" (https://blog.paniniamerica.net/panini-america-offers-detailed-first-look-at-2016-17-revolution-basketball-gallery/). That is a pack/box configuration plus a shipping statement for the PRODUCT; under CAV-010 a named channel value asserts EXCLUSIVITY to that channel, and EXTRACTION_SPEC 2.3 records six rows being rejected for exactly the temptation to inherit a product-level hobby note onto tiers it does not cover. So nothing was written onto any row, and note that migrations/003_parallels.sql enforces (channel = 'UNKNOWN') = (channel_basis IS NULL), which makes channel=hobby with basis=unsupported illegal rather than merely weak. RESOLVING THIS needs a per-tier distribution statement: a Panini sell sheet, or retailer copy naming a tier and a channel together.
  • G-002 base_print_run=unnumbered carries basis=assumed, NOT sourced, and the distinction is the whole point of the field. No source states in words that 2016-17 Panini Revolution base cards carry no serial number. What exists is strong indirect evidence: not one of the 150 rows of parent sid 140756 renders a serial token on any endpoint (https://www.tcdb.com/Checklist.cfm/sid/140756/2016-17-Panini-Revolution?PageIndex=1, the same page under &sort=0, ?PageIndex=2, and Gallery.cfm tiles for 11-20, 81-100 and 131-140), while three sibling sids in the 146273-146300 block render SN100, SN75 and SN25 on all 150 of their own rows through the identical request shape. EXTRACTION_SPEC 2.1 is explicit that this shape is "assumed" and that an agent should not talk itself into "sourced". RESOLVING THIS needs a first-party or editorial sentence stating the base cards are unnumbered.
  • G-003 NO FLOOR IS CLAIMED FOR THE revolution LINE AND NONE MAY BE INFERRED FROM THE SEASONS PRESENT. 2016-17 is NOT this line's floor. The 2017-18 scope memo recorded tcdb sid 140756 as the missing release sitting below the catalogue; the 2016-17 scope memo section 3a and section 6(2) corrected that by locating a 2015-16 Panini Revolution at sid 119583 in tcdb's own 2015-16 season index. This build adds an INDEPENDENT FIRST-PARTY POSITIVE STATEMENT, which is the form the Studio lesson requires rather than an argument from absence: Panini's own blog, published 2016-11-17, says "Last year's Galactic parallel chase continues this season with seven new parallels" (https://blog.paniniamerica.net/panini-america-offers-detailed-first-look-at-2016-17-revolution-basketball-gallery/) - a manufacturer statement in words that a prior Revolution season exists beneath this one. DEPTH BELOW 2015-16 WAS NOT CHASED and is unmeasured: the 2016-17 memo records revolution as absent from tcdb's 2014-15 index, and per the Studio lesson that absence is NOT a floor and must not be recorded as one. Nothing in this release should be read as closing the line.
  • G-004 DERIVED parallel_family: THE ORDERED FAMILIES LIST IN pipeline/fix_schema.py HAS NO PATTERN FOR "Futura", SO family_of("Futura") FALLS THROUGH TO "other". The derived value "other" was written on all three Futura rows in this release (the base-set tier and the Autographs and Rookie Autographs tiers) because CAV-039 and this build's brief both forbid an agent adding a pattern to fix_schema.py. The corpus-wide check CAV-019 demands was run before reporting: ZERO existing rows in any of the 225 other release directories carry a parallel_name containing "Futura", so this is the first time the name reaches the corpus and nothing existing is affected. Futura is a real base-parallel tier of this line in 2016-17, named by tcdb, by cardboardconnection and by sportscardchecklist, and it does not exist as a base tier in 2017-18 or 2018-19, which is why the list never needed it. A SECOND, LATENT observation from the same check, reported rather than acted on: ("Infinite","Infinite") sits at list index 69 and ("Finite","Finite") at index 128, so the shorter pattern is a substring of the longer one - the Pink/Ink, Cosmo/Cosmos and Metallic/Meta shape - and it is currently SAFE only because of relative position. family_of was run over every parallel_name in the corpus: all 21 existing "Infinite" rows and the four colour-prefixed variants derive correctly, so nothing is live. RESOLVING THIS is an owner decision about whether Futura earns a family and whether the Infinite/Finite adjacency should be given an explicit guard.
  • G-005 SOURCE_CONFIDENCE CONVENTION DIVERGES FROM revolution-bkb-2017-18 ON THE IDENTICAL EVIDENCE SHAPE, AND THE DIVERGENCE IS DELIBERATE. Nine rows here carry source_confidence=single where the sibling season wrote multi: the four unnumbered base tiers (Astro, Fractal, Galactic, Infinite) and the five unnumbered insert-scope Galactic tiers. In both seasons the evidence is the same: tcdb renders no serial token on any row of the tier, and cardboardconnection's parallel line names the tier with no #/N figure while giving a figure for its siblings. revolution-bkb-2017-18 counted that omission as independent corroboration and wrote multi on all of its unnumbered tiers. EXTRACTION_SPEC 2.1 says an editorial checklist OMITTING a figure is not a statement of fact, and this build's brief restates it, so single was written here. The pattern IS discriminative and is recorded in each row's visual_notes; it is simply not a second statement of the value. CONSEQUENCE, stated plainly: two adjacent seasons of one line now answer "how many sources support this unnumbered tier?" differently on identical evidence, and nothing on either row tells a reader which convention it is under. A repair pass should settle the convention across the line rather than per season; this row exists so the divergence is repairable rather than invisible.
  • G-006 scope_ambiguous IS FILLED SYMMETRICALLY HERE AND IS NOT SYMMETRIC IN revolution-bkb-2017-18. CAV-006 and EXTRACTION_SPEC 2.3 define scope_ambiguous=yes as "this parallel's NAME also exists in another scope in this release", which is a symmetric relation. In this release Cosmic, Galactic, Futura and Kaleido each appear in more than one scope, so every row carrying one of those four names is marked yes, INCLUDING the base-set rows, whose scope_ambiguous_scopes list the insert sets involved. revolution-bkb-2017-18 marks its base-set rows no while its set-scope rows list "Base Set" among their ambiguous scopes, which cannot both be right. revolution-bkb-2018-19 is symmetric and uses the string "base set" for the base scope, and this build follows 2018-19. Note a second, purely cosmetic divergence inside the corpus that someone should settle: prizm-bkb-2018-19 writes the list as "set:Name; set:Name" while both revolution seasons write bare names, so a consumer parsing scope_ambiguous_scopes has two formats to handle.
  • G-007 A THIRD-LINEAGE UNIT DISAGREEMENT ON THE BASE RUN, RECORDED RATHER THAN RESOLVED, AND NO TIER FILE WAS WRITTEN. tcdb files the base run as ONE set of 150 (sid 140756, "Total Cards: 150", and 150 rows enumerated contiguously 1-150). cardboardconnection states "150 cards." for one base set (https://www.cardboardconnection.com/2016-17-panini-revolution-basketball). sportscardchecklist instead decomposes the same run into "2016-17 Panini Revolution (100 Cards)" plus "2016-17 Panini Revolution Rookies (50 Cards)", and decomposes each of the seven parallel tiers the same way, e.g. "2016-17 Panini Revolution Astro (100 Cards)" plus "2016-17 Panini Revolution Rookies - Astro (50 Cards)" (https://www.sportscardchecklist.com/sport-basketball/year-2016-17/index-panini-revolution/trading-card-checklists-and-product-information). The two readings sum to the same 150 and the 1-100 / 101-150 boundary is real - it is exactly where the RC flag column switches on. NO base_card_tiers.csv WAS WRITTEN, for three reasons: base_print_run is uniform rather than varies-by-tier, so the file is not required; no source states any per-tier print run, channel or other tier-level fact, so every column of such a file beyond the range would be UNKNOWN; and CAV-043 shows that a card_tier string that does not match a tier_name exactly loads tier_id NULL and gates green, so writing a tier file on my own structural reading would add risk without adding a sourced fact. RESOLVING THIS needs a source that treats the veteran and rookie halves as named tiers of one set rather than as two products.
  • G-008 THE Inserts.cfm NOTES COLUMN CARRIES ZERO INFORMATION ON THIS PARENT, AND THE BOTH-DIRECTIONS SPLIT TEST IS UNRUNNABLE RATHER THAN MERELY FAILED. Measured per section on https://www.tcdb.com/Inserts.cfm/sid/140756/2016-17-Panini-Revolution: the Parallel Sets section renders 7 of 7 cells as image-completion percentages ("29.3% of images added", "11.0% of images added" and so on) with ZERO blanks and zero serial statements in any format; the Insert Sets section renders 17 of 21 as percentages and 4 blank (By the Numbers, Revolutionaries, Rookie Revolution, Star-Gazing), and those blanks sit beside percentages rather than beside annotations, so a blank carries no discriminative meaning. Every print run in this release therefore came from a per-sid row-level token sweep on Checklist.cfm with Gallery.cfm top-ups, at a measured cost of about 34 fetches. This is the CAV-036 modal state reproducing on an eighth 2016-17 parent and it is recorded so that the next Revolution season is budgeted without assuming the column pays. The sibling season was deliberately NOT used to calibrate the column, per CAV-036 as extended 2026-09-29, which makes the adjacent season an anti-source for it.
  • G-009 beckett.com IS STILL UNREACHABLE AND A DIRECTLY RELEVANT ARTICLE IS BEHIND IT, SO THIS RELEASE HAS ONE FEWER INDEPENDENT STRUCTURAL LINEAGE THAN ITS CITATIONS SUGGEST. A web search surfaced "2016-17 Panini Revolution Basketball Parallels and How to Spot Them" at https://www.beckett.com/news/2016-17-panini-revolution-basketball-parallels-and-how-to-spot-them/ - by its title the single most on-point third-party source for this release's parallel ladder and the likeliest place a per-tier channel statement would live. The URL returns HTTP 302 to https://maintenance.beckett.com/ and no content, reproducing CAV-033 on a 2016-17 URL on 2026-09-30. The title is cited here AS A TITLE ONLY; the page was never opened and nothing was inferred from it. Consequence: the independent lineages actually used are tcdb, cardboardconnection, sportscardchecklist and blog.paniniamerica.net, and the two editorial aggregators among them are plausibly one lineage per CAV-037 as corrected. RE-OPEN THIS when beckett.com returns.
  • G-010 TWO BASE ROWS SIT OUT OF THE OTHERWISE STRICTLY ALPHABETICAL ORDERING AND ARE WRITTEN EXACTLY AS RENDERED. The 1-100 veteran block and the 101-150 rookie block are each ordered by surname, with two exceptions. Card 12 is Justise Winslow, between 11 Devin Booker and 13 Jimmy Butler, where a surname between Booker and Butler belongs; confirmed on a second differently-varied fetch, https://www.tcdb.com/Gallery.cfm/sid/140756/2016-17-Panini-Revolution?PageIndex=2&sort=0. Card 134 is Ron Baker, between 133 Georgios Papagiannis and 135 Marshall Plumlee; confirmed on https://www.tcdb.com/Gallery.cfm/sid/140756/2016-17-Panini-Revolution?PageIndex=14&sort=0. Both are plausible as late additions to a checklist that was otherwise alphabetised - Baker went undrafted in 2016 and Winslow is a 2015-16 rookie sitting in the veteran block - but NO source states that, so nothing was inferred, nothing was moved and nothing was renumbered. Recorded because an out-of-order row is the shape an agent is trained to distrust, and here it survived a second endpoint on both endpoints' terms. RESOLVING THIS needs a Panini checklist or a marketplace listing showing the printed number beside either player.
  • G-011 THE TWO AUTOGRAPH SETS CARRY NON-CONTIGUOUS ORDINAL CARD NUMBERS AND NO MARKETPLACE CORROBORATION WAS ATTEMPTED. Autographs renders 29 rows numbered 1-35 with 5, 7, 10, 11, 23 and 32 absent; Rookie Autographs renders 13 rows numbered 1-15 with 7 and 11 absent. In both cases the rendered row count equals the header exactly (29 and 13) and cardboardconnection and sportscardchecklist independently agree on both counts, so the SET SIZES are settled. The CARD NUMBERS are not: bare ordinals on an autograph set are the documented renumbering smell, and CHASE_CHECKLIST_SPEC is explicit that a sequence with holes proves nothing either way and that only a marketplace listing title showing what is printed on the card settles it. That check belongs to the chase/insert pass and was NOT run here - card-level checklists are out of scope for this spec. No insert_cards.csv was written. NOTE FOR THAT PASS: the identical hole pattern appears on all four autograph parallel pages (Futura and Kaleido on both sets), so the parallel-page test will come back inconclusive and marketplace evidence will be needed. 2016-17 is the Simmons/Ingram/Hield/Brown rookie year, so the raw material exists.
  • G-012 A FETCH SELF-CONTRADICTED INSIDE ONE RESPONSE ON A LOAD-BEARING SERIAL QUESTION, AND THE SUMMARY LINE WAS THE WRONG HALF. Asked for the distinct flag-token set of https://www.tcdb.com/Checklist.cfm/sid/146294/2016-17-Panini-Revolution-Rookie-Revolution-Cosmic, one response answered "FLAG COLUMN EMPTY ON EVERY ROW" and then, two questions later in the same response, quoted "1 Dario Saric SN100" and "28 Damian Jones SN100" off the same page. Taking the summary line would have written unnumbered/no on a provably /100 tier. Settled by a SECOND differently-slugged fetch of the same sid, which returned all 28 rows each reading SN100, and by cardboardconnection stating "Cosmic #/100" for that insert set. Recorded as a fresh instance of the documented failure mode: take the substantive clause, never the summary line, and count every list yourself. No value in this release rests on a summary line.
  • G-013 rookie_flag RESTS ON A POSITIVE DISCRIMINATIVE SPLIT, NOT ON A SOURCE STATING NON-ROOKIE STATUS. Cards 101-150 carry the literal token "RC" on every row of https://www.tcdb.com/Checklist.cfm/sid/140756/2016-17-Panini-Revolution?PageIndex=2 and on Gallery.cfm tiles 131-140, so rookie_flag=yes on those 50 is sourced from the token. Cards 1-100 carry NO flag token on three differently-varied fetches, and rookie_flag=no is written off the split rather than off any statement that those players are not rookies - the same renderer emits RC for one block of the same sid and nothing for the other, which is the strongest form of the test, but it is still an absence. CAV-003 notes that most Panini checklist sources do not print RC designations at all. A consumer wanting a sourced non-rookie claim for 1-100 does not have one here.
  • G-014 SID ENUMERATION IS COMPLETE AND BOUNDED, AND THE UPPER BOUNDARY IS A CROSS-SPORT TRAP WORTH RECORDING. The child block is 146273-146300 = 28 sids, which reconciles exactly against tcdb's own sectioning of https://www.tcdb.com/Inserts.cfm/sid/140756/2016-17-Panini-Revolution (7 Parallel Sets rows + 21 Insert Sets rows, my own count of the enumerated rows in each section, both agreeing with their section headings). BOTH BOUNDARIES WERE PROVED by ViewSet.cfm probes rather than assumed: 146272 renders "2017 Topps - Code Cards", a foreign baseball product, and 146301 renders "2016 Panini Black Gold - Holo Gold" with "Total Cards: 81", a 2016 Panini FOOTBALL set. Neither probe rendered tcdb's home page, which is the documented signature of a non-existent sid. The 146301 hazard is the same shape as the 2016 Panini Encased - Gold trap the 2016-17 scope memo records one sid above Prestige: a sweep upward from this block lands on a page that reads as a plausible Panini basketball release. "Black Gold" is a real Panini line and a 2016-17 Panini Black Gold Collegiate product exists in the same season, so the trap is name-plausible as well as sid-adjacent; it has no reference/brands.csv row, which is the one respect in which it is milder than the Encased trap. The parent sid 140756 sits 5,517 sids below its nearest child, making it 5 of 5 parents measured this season that are far from their children. The numeric gaps inside the listing were not probed because there are none - the block is contiguous.
  • G-015 Errors.cfm ON THE PARENT RETURNED SILENCE AND NOTHING WAS CONCLUDED FROM IT. https://www.tcdb.com/Errors.cfm/sid/140756/2016-17-Panini-Revolution renders a section headed "Errors / Variations" with an empty table and the sentence "No errors or variations have been added for this set yet." Per CAV-020 that sentence is returned identically on sets that provably DO carry UER rows, so it discriminates nothing and is recorded here as a fetch performed rather than as evidence. CONSEQUENCE, stated as CAV-020 requires: this release's clean base run - 150 rows, 1-150, no duplicate number, no letter-suffixed number seen on any endpoint - rests on the contiguous enumeration and on the proved end of the listing, NOT on Errors.cfm. The claim that no variation set exists for this release is UNSUPPORTED rather than disproved: a b-suffixed variation layer renders as rows a base-run enumeration is not designed to surface, and Gallery.cfm strips the b suffix. RE-OPEN THIS if a variation layer is ever found for 2016-17 Revolution.
  • G-016 SERIAL-TOKEN VARIABILITY: 0 OF 21 TIERS VARIABLE, WITH DENOMINATORS, AND THE SEASON'S TWO STANDING GENERALISATIONS BOTH HELD. Every tier in this release had its DISTINCT serial-token set enumerated over EVERY row rather than sampled. Base scope: 7 tiers x 150 rows = 1,050 rows read, every tier returning a single-element token set or an empty one - Astro, Fractal, Galactic and Infinite empty on all 150; Cosmic SN100 on all 150; Sunburst SN75 on all 150; Futura SN25 on all 150. Set scope: 14 tiers, 306 rows read (29+29+13+13 autograph-parallel rows and 20+20+16+16+28+28+12+12+24+24 insert-parallel rows), every tier uniform. TOTAL 1,356 of 1,356 rows read, 0 of 21 tiers per-card variable. "Nothing at the 1/1 end varies" held: both Kaleido tiers are SN1 on 29 of 29 and 13 of 13 rows. "Variability lives in the middle" is not supported here either - the /100, /75 and /25 tiers are uniform across their full rosters. This release therefore cost NO instance of the CAV-041 base-scope expressiveness gap: no tier had to be deleted and none was written UNKNOWN. Recorded as a denominator for the season tally, and NOT as a rate to carry onto any other product - this is one mid-tier product with a pattern-name colour ladder and no memorabilia sets at all.

If you know a source that answers one of these, tell us — name the question's label and where to look.

Draft — sourced but not independently verified. How this catalogue is built