@@ -470,6 +470,85 @@ _bk_transform_breakdown_for_qws_demo() {
470470 ' {sections: $sections, overlaps: $overlaps}'
471471}
472472
473+ _bk_collect_breakdown_package_issues () {
474+ local breakdown_json=" $1 "
475+
476+ if [[ -z " $breakdown_json " || " $breakdown_json " == " null" ]]; then
477+ echo " []"
478+ return 0
479+ fi
480+
481+ echo " $breakdown_json " | jq -c '
482+ [
483+ ((.sections // [])
484+ | map(
485+ {
486+ item_kind: "section",
487+ item_name: .name,
488+ scaling_method: (.scaling_method // ""),
489+ package_status: (.package_applicability.status // ""),
490+ missing_inputs: (.package_applicability.missing_inputs // [])
491+ }
492+ )),
493+ ((.overlaps // [])
494+ | map(
495+ {
496+ item_kind: "overlap",
497+ item_name: (.sections | join(",")),
498+ scaling_method: (.scaling_method // ""),
499+ package_status: (.package_applicability.status // ""),
500+ missing_inputs: (.package_applicability.missing_inputs // [])
501+ }
502+ ))
503+ ] | add
504+ '
505+ }
506+
507+ _bk_set_top_level_applicability_from_breakdowns () {
508+ local issues_json=" $1 "
509+ local has_not_applicable
510+ local has_fallback
511+ local aggregated_missing_inputs
512+
513+ has_not_applicable=$( echo " $issues_json " | jq -r '
514+ any(
515+ (.scaling_method == "unresolved-package")
516+ or (.package_status == "not_applicable")
517+ )
518+ ' )
519+
520+ has_fallback=$( echo " $issues_json " | jq -r '
521+ any(.package_status == "fallback")
522+ ' )
523+
524+ aggregated_missing_inputs=$( echo " $issues_json " | jq -c '
525+ [
526+ .[]
527+ | select((.missing_inputs | length) > 0)
528+ | .missing_inputs[]
529+ ] | unique
530+ ' )
531+
532+ if [[ " $has_not_applicable " == " true" ]]; then
533+ bk_estimation_set_applicability \
534+ " not_applicable" \
535+ " " \
536+ " $aggregated_missing_inputs " \
537+ ' ["provide-missing-section-inputs-or-enable-compatible-fallback"]'
538+ return 0
539+ fi
540+
541+ if [[ " $has_fallback " == " true" ]]; then
542+ bk_estimation_set_applicability \
543+ " partially_applicable" \
544+ " " \
545+ " $aggregated_missing_inputs "
546+ return 0
547+ fi
548+
549+ bk_estimation_set_applicability " applicable"
550+ }
551+
473552bk_estimation_package_run () {
474553 local baseline_system=" ${BK_ESTIMATION_BASELINE_SYSTEM:- Fugaku} "
475554 local baseline_exp=" ${BK_ESTIMATION_BASELINE_EXP:- CASE0} "
@@ -483,6 +562,7 @@ bk_estimation_package_run() {
483562 local logp_package_name=" trace_collective_logp"
484563 local breakdown_template
485564 local baseline_breakdown
565+ local applicability_issues_json
486566
487567 est_future_bench_system=" $est_system "
488568 est_future_bench_fom=" $est_fom "
@@ -524,6 +604,12 @@ bk_estimation_package_run() {
524604 est_future_target_nodes=" $future_target_nodes "
525605 est_future_scaling_method=" $model_name "
526606
607+ applicability_issues_json=$( jq -cn \
608+ --argjson current " $( _bk_collect_breakdown_package_issues " $est_current_fom_breakdown " ) " \
609+ --argjson future " $( _bk_collect_breakdown_package_issues " $est_future_fom_breakdown " ) " \
610+ ' $current + $future' )
611+ _bk_set_top_level_applicability_from_breakdowns " $applicability_issues_json "
612+
527613 est_measurement_json=$( jq -cn '
528614 {
529615 tool: "application-section-timer",
0 commit comments