@finbheara/archive-client 0.9.0 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -87,6 +87,7 @@ c.features; // [{ feature: "dancers", state: "full" | "missing", missing: [...
87
87
  | `feises`, `comps` | `feises.find`, `feises.series`, `comps.*`, `registrations.resolve` | 265 |
88
88
  | `comps.dance` | the `dance` a comp of `comps.*` carries: null, never refused, without it | 270 |
89
89
  | `results.stream`, `majors.stream` | `results.stream`, `results.entries` | 255 |
90
+ | `results.printed_age` | the `printed_age` a row of `results.stream` and `results.entries` carries: null, never refused, without it | 271 |
90
91
  | `feises.dates` | `feises.dates` | 245 |
91
92
  | `dancers.records` | `dancers.records` | 215 |
92
93
  | `dancers.years` | `dancers.years` | 245 |
@@ -220,8 +221,9 @@ const r = await rel.dancers.resolve({
220
221
  });
221
222
  r.arm; // "unique" | "ambiguous" | "none"
222
223
  r.candidates; // [{ dancer_id, display, scope, score, evidence: { nameLevel, age, school, population, region }, prints, ... }]
223
- r.excluded; // the candidates a contradiction set aside (why: "age" | "population" | "region")
224
- r.preferred; // NON-BINDING: { dancer_id, why } where the school (else the region) singles one out; never moves arm
224
+ r.excluded; // the candidates a contradiction set aside (why: "age" | "population" | "region" | "school")
225
+ r.preferred; // NON-BINDING: { dancer_id, why } where the school (else the region, else recent rows) singles one out
226
+ r.initials; // an initials-only name with a school: { open, heldByDanceUp, refuted: [{ dancer_id, why, fact }], year }
225
227
  r.unlinked; // rows printing a matched name that the release linked to no dancer
226
228
 
227
229
  await rel.dancers.search({ surname: "Quellan" }); // or { like: "a* quellan" }, or { name }
@@ -271,6 +273,28 @@ for a caller to weigh, and `arm` stays as counted. A `lineage` match ranks with
271
273
  each singles out neither. The `score` orders candidates and is no
272
274
  probability.
273
275
 
276
+ AN INITIALS-ONLY NAME (`Butler, A`, every given field one letter) with a school the release
277
+ resolves is narrowed by the evidence the question itself carries, where more than one candidate
278
+ is left. A candidate is REFUTED only by a hard fact (`r.initials.refuted`, each with its `fact` in
279
+ words):
280
+
281
+ - `school`: every school row of the dancer up to the asked year reads to a school id (an id
282
+ followed through the redirects, a print read by `rel.schools`), and none of them is the asked
283
+ school or a school its line had joined by that year (lineage edges dated in or before the asked
284
+ year). A dancer with no school row, or a print no school reads, is unknown and never refuted. A
285
+ dancer that ever danced for the asked school's line is never refuted by the school.
286
+ - `age`: the birth window misses the asked band even with one band's dance-up (`DANCE_UP_YEARS`
287
+ of `@finbheara/domain/age`: a dancer may enter the band one year older than the dancer's own). A
288
+ candidate the age set aside that the dance-up holds stays open (`r.initials.heldByDanceUp`).
289
+ - `population`, `region`: the contradictions above.
290
+
291
+ `r.initials.open` is every candidate no hard fact refutes. The arm is `unique` ONLY where exactly
292
+ one candidate is open and the age did not set it aside: the candidates the school refuted then
293
+ move to `excluded` (`why: "school"`). Otherwise the arm stays `ambiguous` with every candidate,
294
+ and where the school and the region single out no one, `preferred` names the only open candidate
295
+ with a row in the asked year or the year before. A full given name is never narrowed this way: two
296
+ full given names that differ are two names, and the school only orders them.
297
+
274
298
  THE REGIONAL OIREACHTAS (`oireachtas: { region, year? }`). A dancer enters one
275
299
  residence-qualifying regional Oireachtas a year. Two regionals in one year are two dancers, the
276
300
  overseas entry excepted. The release already applies that rule to each dancer-year it publishes:
@@ -365,11 +389,15 @@ competition beside its own fields: `competition`, `event`, `year`, `tier`, `comp
365
389
  `date_printed`, `source`, `round`, and at a feis its `feis_id`, `feis_date_lo` and
366
390
  `feis_date_hi`. Its own: `address`, `section`, `card`, `place`, `place_printed`, `tie`,
367
391
  `relative_place`, `atts`, `withdrawn`, `qualifier`, `name_printed`, `name`, `school_printed`,
368
- `school_loc`, `school_id`, `dancer_id`, `dancer_scope`, `yob`, `yob_printed`, `points_printed`,
369
- `platform_dancer_id`, `primary_source`, and its key in the release, `file` and `line` (one
392
+ `school_loc`, `school_id`, `dancer_id`, `dancer_scope`, `yob`, `yob_printed`, `printed_age`,
393
+ `points_printed`, `platform_dancer_id`, `primary_source`, and its key in the release, `file` and `line` (one
370
394
  `(file, line)` is one row, where an `address` may carry one row per section). Rows come in the
371
395
  release's own order, a competition's rows together.
372
396
 
397
+ `printed_age` is the dancer's own age as the row printed it (`9`), verbatim, null where the row
398
+ printed none. It is a print, never a reading of a birth year. A release older than the column
399
+ answers null for every row, and `rel.capability("results.printed_age")` says which.
400
+
373
401
  The scopes: `majors` reads the majors (tiers T1 to T3), `transcribed` the transcribed rows of
374
402
  every tier, `platform` every row a results platform published, `all` every row.
375
403