aw-spec-cli 0.1.18 → 0.1.20

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.
Files changed (77) hide show
  1. package/assets/.appweaver/DESIGN-FORMAT.md +63 -31
  2. package/assets/.appweaver/orchestrator/modules/delta-plan.orch.yaml +62 -14
  3. package/assets/.appweaver/orchestrator/modules/delta-spec.orch.yaml +10 -6
  4. package/assets/.appweaver/orchestrator/modules/lane-gate.orch.yaml +9 -1
  5. package/assets/.appweaver/orchestrator/modules/tech-select.orch.yaml +21 -0
  6. package/assets/.appweaver/orchestrator/orchestrator.py +23 -1
  7. package/assets/.appweaver/orchestrator/rev-templates/delta-design-template.skeleton.md +1 -1
  8. package/assets/.appweaver/orchestrator/rev-templates/design-template.skeleton.md +22 -13
  9. package/assets/.appweaver/orchestrator/rev-templates/ui-delta-design-template.skeleton.md +1 -1
  10. package/assets/.appweaver/orchestrator/rev-templates/ui-design-template.skeleton.md +6 -4
  11. package/assets/.appweaver/orchestrator/workflows/aw-spec-adopt.orch.yaml +399 -131
  12. package/assets/.appweaver/orchestrator/workflows/aw-spec-analyze-plan-delta.orch.yaml +1 -1
  13. package/assets/.appweaver/orchestrator/workflows/aw-spec-analyze-plan.orch.yaml +199 -38
  14. package/assets/.appweaver/orchestrator/workflows/aw-spec-analyze-slice-delta.orch.yaml +1 -1
  15. package/assets/.appweaver/orchestrator/workflows/aw-spec-analyze-slice.orch.yaml +159 -25
  16. package/assets/.appweaver/orchestrator/workflows/aw-spec-build.orch.yaml +20 -9
  17. package/assets/.appweaver/orchestrator/workflows/aw-spec-characterize.orch.yaml +1 -1
  18. package/assets/.appweaver/orchestrator/workflows/aw-spec-close-delta.orch.yaml +183 -40
  19. package/assets/.appweaver/orchestrator/workflows/aw-spec-deploy.orch.yaml +1 -1
  20. package/assets/.appweaver/orchestrator/workflows/aw-spec-finalize-delta.orch.yaml +311 -36
  21. package/assets/.appweaver/orchestrator/workflows/aw-spec-implement.orch.yaml +221 -40
  22. package/assets/.appweaver/orchestrator/workflows/aw-spec-inventory.orch.yaml +217 -174
  23. package/assets/.appweaver/orchestrator/workflows/aw-spec-onboard.orch.yaml +494 -109
  24. package/assets/.appweaver/orchestrator/workflows/aw-spec-parity.orch.yaml +1 -1
  25. package/assets/.appweaver/orchestrator/workflows/aw-spec-plan.orch.yaml +83 -18
  26. package/assets/.appweaver/orchestrator/workflows/aw-spec-recall-delta.orch.yaml +319 -0
  27. package/assets/.appweaver/orchestrator/workflows/aw-spec-run.orch.yaml +1 -1
  28. package/assets/.appweaver/orchestrator/workflows/aw-spec-select-feature.orch.yaml +29 -23
  29. package/assets/.appweaver/orchestrator/workflows/aw-spec-specify.orch.yaml +143 -34
  30. package/assets/.appweaver/scripts/bash/aw-inventory.sh +15 -0
  31. package/assets/.appweaver/scripts/bash/aw-spec-actions.sh +878 -51
  32. package/assets/.appweaver/scripts/bash/aw-xref.sh +3 -0
  33. package/assets/.appweaver/scripts/bash/common.sh +28 -1
  34. package/assets/.appweaver/scripts/powershell/aw-inventory.ps1 +15 -0
  35. package/assets/.appweaver/scripts/powershell/aw-spec-actions.ps1 +868 -51
  36. package/assets/.appweaver/scripts/powershell/aw-xref.ps1 +3 -0
  37. package/assets/.appweaver/scripts/python/aw-inventory.py +1832 -65
  38. package/assets/.appweaver/scripts/python/aw-xref.py +500 -81
  39. package/assets/.appweaver/templates/delta-design-template.md +1 -1
  40. package/assets/.appweaver/templates/delta-domain-model-template.md +1 -1
  41. package/assets/.appweaver/templates/delta-spec-template.md +4 -3
  42. package/assets/.appweaver/templates/design-template.md +56 -40
  43. package/assets/.appweaver/templates/okf-concept-template.md +11 -1
  44. package/assets/.appweaver/templates/proposed-inventory-template.md +127 -0
  45. package/assets/.appweaver/templates/source-map-template.md +5 -3
  46. package/assets/.appweaver/templates/spec-template.md +24 -21
  47. package/assets/.appweaver/templates/ui-delta-design-template.md +1 -1
  48. package/assets/.appweaver/templates/ui-design-template.md +11 -7
  49. package/assets/foundations/dotnet/ModularMonolith/ModularMonolith.pack.txt +4489 -361
  50. package/assets/foundations/dotnet/VerticalSlice/VerticalSlice.pack.txt +2274 -125
  51. package/assets/guardrails/domain/healthcare/auditing.domain.md +3 -3
  52. package/assets/guardrails/domain/pharma/auditing.domain.md +3 -3
  53. package/assets/guardrails/technology/dotnet-webapi/api-versioning.md +1 -1
  54. package/assets/guardrails/technology/dotnet-webapi/auditing.md +1 -1
  55. package/assets/guardrails/technology/dotnet-webapi/authorization.md +1 -1
  56. package/assets/guardrails/technology/dotnet-webapi/clean-architecture.md +1 -1
  57. package/assets/guardrails/technology/dotnet-webapi/cqrs.md +1 -1
  58. package/assets/guardrails/technology/dotnet-webapi/data-classification.md +1 -1
  59. package/assets/guardrails/technology/dotnet-webapi/eventing.md +1 -1
  60. package/assets/guardrails/technology/dotnet-webapi/folder-structure.md +1 -1
  61. package/assets/guardrails/technology/dotnet-webapi/modular-monolith.md +1 -1
  62. package/assets/guardrails/technology/dotnet-webapi/persistence.md +1 -1
  63. package/assets/guardrails/technology/dotnet-webapi/vertical-slices.md +1 -1
  64. package/assets/guardrails/technology/dotnet-webapi/zero-trust.md +1 -1
  65. package/assets/guardrails/technology/nextjs/accessibility-implementation.md +1 -1
  66. package/assets/guardrails/technology/nextjs/api-integration.dotnet-webapi.md +1 -1
  67. package/assets/guardrails/technology/nextjs/api-integration.java-spring.md +1 -1
  68. package/assets/guardrails/technology/nextjs/auth-session.md +1 -1
  69. package/assets/guardrails/technology/nextjs/component-architecture.md +1 -1
  70. package/assets/guardrails/technology/nextjs/design-system.md +1 -1
  71. package/assets/guardrails/technology/nextjs/error-handling.md +1 -1
  72. package/assets/guardrails/technology/nextjs/forms-and-validation.md +1 -1
  73. package/assets/guardrails/technology/nextjs/i18n.md +1 -1
  74. package/assets/guardrails/technology/nextjs/performance-budgets.md +1 -1
  75. package/assets/guardrails/technology/nextjs/routing-navigation.md +1 -1
  76. package/assets/guardrails/technology/nextjs/state-management.md +1 -1
  77. package/package.json +1 -1
@@ -10,6 +10,9 @@
10
10
  # aw-xref.sh concept-upsert --aggregate X [--source-files a,b,c] [--description D] [--origin ...] [--root DIR]
11
11
  # aw-xref.sh concept-overview --aggregate X (--text PROSE | --text-file F) [--root DIR]
12
12
  # aw-xref.sh concept-paths --aggregate X | --feature-dir <dir> [--root DIR] [--bundle knowledge]
13
+ # aw-xref.sh feature-aggregates --feature-dir <dir> [--root DIR]
14
+ # (the aggregate(s) a feature acts on: its spec's Acts-on line,
15
+ # then the boundary map, then the feature name itself)
13
16
  set -euo pipefail
14
17
  DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
15
18
  exec python3 "$DIR/../python/aw-xref.py" "$@"
@@ -26,17 +26,44 @@ find_specify_root() {
26
26
 
27
27
  # Get repository root, prioritizing .appweaver directory
28
28
  # This prevents using a parent repository when aw-spec is initialized in a subdirectory
29
+ #
30
+ # A `[` or `]` ANYWHERE IN THE ROOT REFUSES THE RUN, in both shells. Those two characters
31
+ # are a wildcard character class to PowerShell's `-Path` family and to a shell/Python
32
+ # glob, so under such a root a path test answers about a DIFFERENT path — `…/a[b]/x` is
33
+ # looked up as `…/ab/x` — and an enumeration quietly returns nothing. The kit resolves
34
+ # hundreds of paths against this root, and the failure mode is not an error but a wrong
35
+ # answer: a gate that finds no delta reports a clean tree, and a merge that finds no
36
+ # section merges nothing and says it succeeded.
37
+ #
38
+ # The per-call fixes are in (glob.escape on every pattern's directory here; -LiteralPath
39
+ # throughout the PowerShell twin), and they cover every site the kit resolves through a
40
+ # pattern. What they cannot cover is the ~150 plain existence tests, and a half-guarded
41
+ # root is worse than a refused one because it looks like it works. So the root itself is
42
+ # the gate, checked once, naming the path.
43
+ _reject_bracketed_root() {
44
+ case "$1" in
45
+ *'['*|*']'*)
46
+ echo "aw-spec: this repository's path contains '[' or ']' — $1" >&2
47
+ echo "aw-spec: those characters are a wildcard character class to the path APIs this kit uses (PowerShell -Path, shell and Python globs), so file lookups would silently resolve to a different path or to nothing at all, and a gate that finds nothing reports success. Move or rename the checkout so no directory in its path contains a square bracket, then re-run." >&2
48
+ return 1 ;;
49
+ esac
50
+ return 0
51
+ }
52
+
29
53
  get_repo_root() {
30
54
  # First, look for .appweaver directory (aw-spec's own marker)
31
55
  local specify_root
32
56
  if specify_root=$(find_specify_root); then
57
+ _reject_bracketed_root "$specify_root" || exit 1
33
58
  echo "$specify_root"
34
59
  return
35
60
  fi
36
61
 
37
62
  # Final fallback to script location
38
63
  local script_dir="$(CDPATH="" cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
39
- (cd "$script_dir/../../.." && pwd)
64
+ local fallback_root; fallback_root=$(cd "$script_dir/../../.." && pwd)
65
+ _reject_bracketed_root "$fallback_root" || exit 1
66
+ echo "$fallback_root"
40
67
  }
41
68
 
42
69
  # FEATURE RESOLUTION IS SINGLE-CHANNEL: `.appweaver/feature.json`, written by
@@ -10,6 +10,21 @@
10
10
  # [--service-root <p>] [--ui-root <p>] (the declared lane paths:
11
11
  # backend signals come from outside the UI subtree, frontend
12
12
  # signals from inside it, so neither carries the other's files)
13
+ # aw-inventory.ps1 propose [--root <dir>] [--service-root <p>] [--ui-root <p>]
14
+ # [--strategy structure|reference|persistence] [--out <md>] [--map <json>]
15
+ # (Pass A+B+C: writes the editable specs/proposed-inventory.md
16
+ # and the machine map onboard reads)
17
+ # aw-inventory.ps1 apply [--root <dir>] [--proposal <md>] [--map <json>]
18
+ # (validates the operator's edits to the proposal and
19
+ # regenerates the machine map; reports the row it cannot resolve)
20
+ # aw-inventory.ps1 scaffold-context --context <Name> [--root <dir>] [--map <json>]
21
+ # (creates specs/<Context>/<Feature>/ for every feature the map
22
+ # assigns to that context — directories only, no documents)
23
+ # aw-inventory.ps1 concept --bundle <dir> --aggregate <Name>
24
+ # aw-inventory.ps1 list-aggregates --bundle <dir> [--context <Name>] [--root <dir>] [--map <json>]
25
+ # (--context drops concepts stamped with a DIFFERENT bounded
26
+ # context; unstamped concepts are always kept. `pickable` offers
27
+ # each concept as the features the map puts on it)
13
28
  # aw-inventory.ps1 validate --bundle <dir> [--repo-root <dir>]
14
29
  $ErrorActionPreference = "Stop"
15
30
  $core = Join-Path $PSScriptRoot "..\python\aw-inventory.py"