@windyroad/architect 0.14.0 → 0.14.1-preview.516
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.
|
@@ -36,10 +36,17 @@
|
|
|
36
36
|
# Exported functions:
|
|
37
37
|
# emit_stderr_advisory <skill> <field> <value> <source> [reversibility]
|
|
38
38
|
# derive_kebab_slug <description> [max_tokens=8]
|
|
39
|
-
# lexical_classify_two_sided <text> <side_a_patterns_var> <side_b_patterns_var>
|
|
40
39
|
# risk_policy_matrix_lookup <text> <impact_high> <impact_mod> <impact_low>
|
|
41
40
|
# <likelihood_high> <likelihood_med> <likelihood_low>
|
|
42
41
|
#
|
|
42
|
+
# RETIRED 2026-06-02 (P287): lexical_classify_two_sided was the two-sided
|
|
43
|
+
# binary classifier used exclusively by capture-problem Step 1.5 Type
|
|
44
|
+
# classification (technical vs user-business). With the type axis retired
|
|
45
|
+
# per twice-confirmed user direction, the function has no remaining
|
|
46
|
+
# consumer and was removed. The slug + advisory + matrix helpers stay —
|
|
47
|
+
# they serve manage-incident severity, manage-problem priority, and
|
|
48
|
+
# create-adr title derivation.
|
|
49
|
+
#
|
|
43
50
|
# @adr ADR-002 (Monorepo per-plugin packages — architecture context for ADR-017)
|
|
44
51
|
# @adr ADR-017 (Shared code duplicated into per-package lib/ kept in sync)
|
|
45
52
|
# @adr ADR-044 (Decision-Delegation Contract — derive-first framework boundary)
|
|
@@ -105,60 +112,6 @@ derive_kebab_slug() {
|
|
|
105
112
|
| paste -sd '-' -
|
|
106
113
|
}
|
|
107
114
|
|
|
108
|
-
# ---------------------------------------------------------------------------
|
|
109
|
-
# lexical_classify_two_sided — two-sided binary lexical classifier.
|
|
110
|
-
#
|
|
111
|
-
# Used by capture-problem Step 1.5 Type classification (technical vs
|
|
112
|
-
# user-business). Callers pass description text plus two regex pattern
|
|
113
|
-
# arrays (by name); helper counts hits per side and echoes one of:
|
|
114
|
-
#
|
|
115
|
-
# SIDE_A_UNAMBIGUOUS|<matched signals (comma-separated)>
|
|
116
|
-
# ≥1 side-A signal hit AND 0 side-B signals hit.
|
|
117
|
-
# SIDE_B_UNAMBIGUOUS|<matched signals (comma-separated)>
|
|
118
|
-
# 0 side-A signals hit AND ≥1 side-B signal hit.
|
|
119
|
-
# AMBIGUOUS|<a=N b=N>
|
|
120
|
-
# Mixed (both sides matched) OR zero (neither side matched).
|
|
121
|
-
#
|
|
122
|
-
# Caller is responsible for:
|
|
123
|
-
# - Mapping SIDE_A/SIDE_B to its domain values (e.g. technical / user-business).
|
|
124
|
-
# - Calling emit_stderr_advisory on the unambiguous path.
|
|
125
|
-
# - Firing AskUserQuestion on the AMBIGUOUS path (ADR-044 category-5 taste fallback).
|
|
126
|
-
# ---------------------------------------------------------------------------
|
|
127
|
-
lexical_classify_two_sided() {
|
|
128
|
-
local description="$1"
|
|
129
|
-
local -n _side_a_patterns_ref="$2"
|
|
130
|
-
local -n _side_b_patterns_ref="$3"
|
|
131
|
-
local a_hits=()
|
|
132
|
-
local b_hits=()
|
|
133
|
-
local pattern
|
|
134
|
-
|
|
135
|
-
for pattern in "${_side_a_patterns_ref[@]}"; do
|
|
136
|
-
if printf '%s' "$description" | grep -qiE "$pattern" 2>/dev/null; then
|
|
137
|
-
a_hits+=("$pattern")
|
|
138
|
-
fi
|
|
139
|
-
done
|
|
140
|
-
for pattern in "${_side_b_patterns_ref[@]}"; do
|
|
141
|
-
if printf '%s' "$description" | grep -qiE "$pattern" 2>/dev/null; then
|
|
142
|
-
b_hits+=("$pattern")
|
|
143
|
-
fi
|
|
144
|
-
done
|
|
145
|
-
|
|
146
|
-
local a_count="${#a_hits[@]}"
|
|
147
|
-
local b_count="${#b_hits[@]}"
|
|
148
|
-
|
|
149
|
-
if (( a_count >= 1 && b_count == 0 )); then
|
|
150
|
-
local joined
|
|
151
|
-
joined=$(IFS=,; echo "${a_hits[*]}")
|
|
152
|
-
printf 'SIDE_A_UNAMBIGUOUS|%s\n' "$joined"
|
|
153
|
-
elif (( a_count == 0 && b_count >= 1 )); then
|
|
154
|
-
local joined
|
|
155
|
-
joined=$(IFS=,; echo "${b_hits[*]}")
|
|
156
|
-
printf 'SIDE_B_UNAMBIGUOUS|%s\n' "$joined"
|
|
157
|
-
else
|
|
158
|
-
printf 'AMBIGUOUS|a=%d b=%d\n' "$a_count" "$b_count"
|
|
159
|
-
fi
|
|
160
|
-
}
|
|
161
|
-
|
|
162
115
|
# ---------------------------------------------------------------------------
|
|
163
116
|
# risk_policy_matrix_lookup — RISK-POLICY.md Impact × Likelihood lookup.
|
|
164
117
|
#
|