@plot-pm/board 0.14.2 → 0.14.3

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/plot-plan-meta.sh CHANGED
@@ -440,19 +440,35 @@ function reset_state() {
440
440
  delete changelog; n_changelog = 0; changelog_seen = 0; cl_open = 0
441
441
  }
442
442
  function emit_record( fmt, praw, palt_raw, traw, title, sprint, story, assignee, review, impl, design, approved, delivered, issue, issue2, i, j, v, is_dup, out, sorted_b, sorted_p, sorted_i, nb, np, ni, num_issues, str_issues, n_num_i, n_str_i, issue_is_str) {
443
- if (fm_status != "" || fm_phase != "") {
444
- fmt = "frontmatter"
445
- praw = (fm_status != "") ? fm_status : fm_phase
446
- palt_raw = (fm_status != "" && fm_phase != "") ? fm_phase : ""
447
- traw = fm_type
448
- } else if (canon_state != "" || canon_phase != "") {
443
+ # THE PHASE IS READ FROM THE FIELD PLOT WRITES. A canonical `State:`/`Phase:`
444
+ # outranks front matter, because every lifecycle script writes the canonical
445
+ # body and none writes front matter: `plot-approve.sh` holds zero front-matter
446
+ # references, and the five in `plot-deliver.sh` all REFUSE the case rather
447
+ # than write it. A plan carrying both therefore reported a value no transition
448
+ # had ever touched - measured 2026-09-17, an approval wrote `State: Approved`,
449
+ # the parser answered `draft`, and the scan dispatched nothing.
450
+ #
451
+ # `phase_alt` carries the loser, so the disagreement stays readable - that is
452
+ # the field the delivery gate in `plot-deliver.sh` reads.
453
+ #
454
+ # THE PRECEDENCE MOVES FOR THE FIELDS PLOT OWNS, NOT FOR EVERY FIELD. The
455
+ # board-facing fields below, `design_raw` among them, keep front-matter-wins:
456
+ # no lifecycle script writes any of them, so neither record is more current.
457
+ if (canon_state != "" || canon_phase != "") {
449
458
  # `State:` is primary and `Phase:` the alternate, exactly as front matter
450
459
  # reads `status:` over `phase:`. A file carrying both reports the
451
- # disagreement rather than hiding it.
460
+ # disagreement rather than hiding it, and front matter joins that alternate
461
+ # when the canonical body answered first.
452
462
  fmt = "canonical"
453
463
  praw = (canon_state != "") ? canon_state : canon_phase
454
464
  palt_raw = (canon_state != "" && canon_phase != "") ? canon_phase : ""
465
+ if (palt_raw == "") palt_raw = (fm_status != "") ? fm_status : fm_phase
455
466
  traw = canon_type
467
+ } else if (fm_status != "" || fm_phase != "") {
468
+ fmt = "frontmatter"
469
+ praw = (fm_status != "") ? fm_status : fm_phase
470
+ palt_raw = (fm_status != "" && fm_phase != "") ? fm_phase : ""
471
+ traw = fm_type
456
472
  } else {
457
473
  fmt = "none"; praw = ""; palt_raw = ""; traw = ""
458
474
  }