@windyroad/architect 0.22.1-preview.1173 → 0.22.2-preview.1178

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.
@@ -123,5 +123,5 @@
123
123
  }
124
124
  },
125
125
  "name": "wr-architect",
126
- "version": "0.22.1"
126
+ "version": "0.22.2"
127
127
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wr-architect",
3
- "version": "0.22.1",
3
+ "version": "0.22.2",
4
4
  "description": "Architecture decision enforcement for AI coding agents",
5
5
  "author": {
6
6
  "name": "Windy Road Technology",
@@ -29,17 +29,22 @@ case "$SUBAGENT" in
29
29
  # Parse verdict from agent output text (no temp file needed).
30
30
  # Anchored to the canonical heading shape from
31
31
  # packages/architect/agents/agent.md "How to Report"
32
- # (`**Architecture Review: PASS**` / `**Architecture Review: ISSUES FOUND**`).
32
+ # (`**Architecture Review: PASS**` / `## Architecture Review: PASS`, and
33
+ # their ISSUES FOUND / NEEDS DIRECTION equivalents).
33
34
  # Tolerates optional `> ` blockquote prefix + leading whitespace.
34
- # Anchored match (not substring) prevents P181 false-positive FAIL when
35
- # body prose narratively references the ISSUES FOUND verdict.
35
+ # Anchored matches prevent P181 narrative false positives. Exactly one
36
+ # canonical verdict on the first nonblank line is required so examples
37
+ # and conflicting output fail closed.
36
38
  AGENT_OUTPUT=$(_get_tool_output)
37
- VERDICT=""
38
- if echo "$AGENT_OUTPUT" | grep -qE '^[[:space:]]*>?[[:space:]]*\*\*Architecture Review: PASS\*\*'; then
39
- VERDICT="PASS"
40
- elif echo "$AGENT_OUTPUT" | grep -qE '^[[:space:]]*>?[[:space:]]*\*\*Architecture Review: ISSUES FOUND\*\*'; then
41
- VERDICT="FAIL"
42
- fi
39
+ _architect_verdicts() {
40
+ sed -nE \
41
+ -e 's/^[[:space:]]*>?[[:space:]]*\*\*Architecture Review: (PASS|ISSUES FOUND|NEEDS DIRECTION)\*\*[[:space:]]*$/\1/p' \
42
+ -e 's/^[[:space:]]*>?[[:space:]]*##[[:space:]]+Architecture Review: (PASS|ISSUES FOUND|NEEDS DIRECTION)[[:space:]]*$/\1/p'
43
+ }
44
+ VERDICT=$(printf '%s\n' "$AGENT_OUTPUT" | _architect_verdicts)
45
+ FIRST_VERDICT=$(printf '%s\n' "$AGENT_OUTPUT" | awk 'NF { print; exit }' | _architect_verdicts)
46
+ [ "$FIRST_VERDICT" = "$VERDICT" ] || VERDICT=""
47
+ [ "$VERDICT" = "ISSUES FOUND" ] && VERDICT="FAIL"
43
48
 
44
49
  # Substance-aware drift hash + atomic verdict-write (ADR-009 amendment
45
50
  # 2026-06-06). The marker + hash file are written as an atomic pair via
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@windyroad/architect",
3
- "version": "0.22.1-preview.1173",
3
+ "version": "0.22.2-preview.1178",
4
4
  "description": "Architecture decision enforcement for AI coding agents",
5
5
  "bin": {
6
6
  "windyroad-architect": "./bin/install.mjs"