aw-spec-cli 0.1.15 → 0.1.17

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 (69) hide show
  1. package/assets/.appweaver/DESIGN-FORMAT.md +18 -18
  2. package/assets/.appweaver/ORCH-DIALECT.md +1 -3
  3. package/assets/.appweaver/RULE-PARTITION.md +29 -13
  4. package/assets/.appweaver/STACK-PROFILES.md +10 -9
  5. package/assets/.appweaver/orchestrator/.state/smoke.state.json +32 -0
  6. package/assets/.appweaver/orchestrator/AGENT-PROFILE.md +4 -1
  7. package/assets/.appweaver/orchestrator/modules/delta-plan.orch.yaml +251 -0
  8. package/assets/.appweaver/orchestrator/modules/delta-spec.orch.yaml +104 -35
  9. package/assets/.appweaver/orchestrator/orchestrator.py +5 -4
  10. package/assets/.appweaver/orchestrator/rev-templates/delta-design-template.skeleton.md +94 -36
  11. package/assets/.appweaver/orchestrator/rev-templates/design-template.skeleton.md +1 -1
  12. package/assets/.appweaver/orchestrator/rev-templates/domain-model-template.skeleton.md +115 -0
  13. package/assets/.appweaver/orchestrator/rev-templates/domain-rule-bindings.skeleton.md +2 -9
  14. package/assets/.appweaver/orchestrator/rev-templates/tech-rule-bindings.skeleton.md +16 -40
  15. package/assets/.appweaver/orchestrator/rev-templates/ui-delta-design-template.skeleton.md +38 -17
  16. package/assets/.appweaver/orchestrator/rev-templates/ui-design-template.skeleton.md +8 -8
  17. package/assets/.appweaver/orchestrator/workflows/aw-spec-adopt.orch.yaml +10 -11
  18. package/assets/.appweaver/orchestrator/workflows/aw-spec-analyze-plan-delta.orch.yaml +673 -0
  19. package/assets/.appweaver/orchestrator/workflows/aw-spec-analyze-plan.orch.yaml +535 -0
  20. package/assets/.appweaver/orchestrator/workflows/aw-spec-analyze-slice-delta.orch.yaml +643 -0
  21. package/assets/.appweaver/orchestrator/workflows/aw-spec-analyze-slice.orch.yaml +78 -626
  22. package/assets/.appweaver/orchestrator/workflows/aw-spec-build.orch.yaml +4 -4
  23. package/assets/.appweaver/orchestrator/workflows/aw-spec-characterize.orch.yaml +7 -7
  24. package/assets/.appweaver/orchestrator/workflows/aw-spec-close-delta.orch.yaml +16 -14
  25. package/assets/.appweaver/orchestrator/workflows/aw-spec-constitution.orch.yaml +2 -2
  26. package/assets/.appweaver/orchestrator/workflows/aw-spec-finalize-delta.orch.yaml +243 -144
  27. package/assets/.appweaver/orchestrator/workflows/aw-spec-implement.orch.yaml +882 -464
  28. package/assets/.appweaver/orchestrator/workflows/aw-spec-inventory.orch.yaml +4 -4
  29. package/assets/.appweaver/orchestrator/workflows/aw-spec-onboard.orch.yaml +32 -91
  30. package/assets/.appweaver/orchestrator/workflows/aw-spec-parity.orch.yaml +2 -2
  31. package/assets/.appweaver/orchestrator/workflows/aw-spec-plan.orch.yaml +832 -477
  32. package/assets/.appweaver/orchestrator/workflows/aw-spec-run.orch.yaml +2 -2
  33. package/assets/.appweaver/orchestrator/workflows/aw-spec-select-bounded-context.orch.yaml +132 -0
  34. package/assets/.appweaver/orchestrator/workflows/aw-spec-select-feature.orch.yaml +38 -5
  35. package/assets/.appweaver/orchestrator/workflows/aw-spec-select-stack.orch.yaml +3 -3
  36. package/assets/.appweaver/orchestrator/workflows/aw-spec-specify.orch.yaml +271 -892
  37. package/assets/.appweaver/scripts/bash/aw-spec-actions.sh +1096 -2911
  38. package/assets/.appweaver/scripts/bash/aw-xref.sh +1 -2
  39. package/assets/.appweaver/scripts/bash/common.sh +47 -0
  40. package/assets/.appweaver/scripts/powershell/aw-spec-actions.ps1 +936 -2766
  41. package/assets/.appweaver/scripts/powershell/aw-xref.ps1 +1 -2
  42. package/assets/.appweaver/scripts/python/aw-payload-parity.py +174 -0
  43. package/assets/.appweaver/scripts/python/aw-stack.py +6 -2
  44. package/assets/.appweaver/scripts/python/aw-xref.py +185 -292
  45. package/assets/.appweaver/templates/constitution-ui-template.md +1 -1
  46. package/assets/.appweaver/templates/delta-design-template.md +120 -30
  47. package/assets/.appweaver/templates/delta-domain-model-template.md +81 -0
  48. package/assets/.appweaver/templates/delta-spec-template.md +43 -17
  49. package/assets/.appweaver/templates/design-template.md +68 -98
  50. package/assets/.appweaver/templates/domain-model-template.md +130 -0
  51. package/assets/.appweaver/templates/okf-concept-template.md +2 -2
  52. package/assets/.appweaver/templates/source-map-template.md +3 -3
  53. package/assets/.appweaver/templates/spec-template.md +100 -122
  54. package/assets/.appweaver/templates/ui-delta-design-template.md +159 -0
  55. package/assets/.appweaver/templates/ui-design-template.md +46 -75
  56. package/assets/guardrails/projects/dotnet-default-project/domain-rule-bindings.md +7 -18
  57. package/assets/guardrails/projects/dotnet-default-project/tech-rule-bindings.md +34 -39
  58. package/assets/guardrails/requirement-spec.txt +2 -2
  59. package/assets/guardrails/technology/dotnet-webapi/testing.md +1 -1
  60. package/package.json +1 -1
  61. package/assets/.appweaver/orchestrator/modules/delta-design.orch.yaml +0 -105
  62. package/assets/.appweaver/orchestrator/workflows/aw-spec-analyze-delta-design.orch.yaml +0 -251
  63. package/assets/.appweaver/orchestrator/workflows/aw-spec-analyze-design.orch.yaml +0 -749
  64. package/assets/.appweaver/orchestrator/workflows/aw-spec-implement-delta.orch.yaml +0 -253
  65. package/assets/.appweaver/orchestrator/workflows/aw-spec-implement-ui.orch.yaml +0 -540
  66. package/assets/.appweaver/orchestrator/workflows/aw-spec-plan-ui.orch.yaml +0 -597
  67. package/assets/.appweaver/orchestrator/workflows/aw-spec-story-plan.orch.yaml +0 -945
  68. package/assets/.appweaver/orchestrator/workflows/aw-spec-sync-stories.orch.yaml +0 -1040
  69. package/assets/.appweaver/templates/story-template.md +0 -147
@@ -6,7 +6,7 @@
6
6
  # and emit an aggregate-organized OKF v0.1 knowledge bundle + a migration
7
7
  # backlog. Each candidate aggregate is a future specs/<Feature>/ vertical slice —
8
8
  # this bundle is the BASE the forward brownfield steps read to reverse-engineer
9
- # spec.md + design.md per slice.
9
+ # spec.md + backend-plan.md per slice.
10
10
  #
11
11
  # INVENTORY → adopt → (fidelity) → characterize → [ forward pipeline ] ← you are here
12
12
  #
@@ -17,14 +17,14 @@
17
17
  # 2. an ENRICHMENT agent that turns that substrate into the OKF bundle,
18
18
  # organized BY AGGREGATE ROOT, then a conformance gate (validate_okf.py).
19
19
  #
20
- # It does NOT author spec.md / design.md (that is /appweaver adopt per slice)
20
+ # It does NOT author spec.md / backend-plan.md (that is /appweaver adopt per slice)
21
21
  # and does NOT touch source code — all writes stay inside the bundle dir.
22
22
  #
23
23
  # Launch: /appweaver inventory [strategy] [focus/scope hints]
24
24
  # =============================================================================
25
25
 
26
26
  name: aw-spec-inventory
27
- description: Scan a brownfield codebase and produce an aggregate-organized OKF v0.1 knowledge bundle plus a migration backlog — the base for reverse-engineering spec.md + design.md per aggregate/vertical slice. Deterministic scan + enrichment agent + conformance gate; never modifies source.
27
+ description: Scan a brownfield codebase and produce an aggregate-organized OKF v0.1 knowledge bundle plus a migration backlog — the base for reverse-engineering spec.md + backend-plan.md per aggregate/vertical slice. Deterministic scan + enrichment agent + conformance gate; never modifies source.
28
28
  version: 1.1.0
29
29
  agent_agnostic: true
30
30
  dialect: aw-spec.orchestrator/v1
@@ -235,4 +235,4 @@ outputs:
235
235
  aggregate_count: "{{aggregate_count}}"
236
236
  concepts: "{{concepts}}"
237
237
  warnings: "{{okf_warnings}}"
238
- next: "Review {{bundle_dir}} (start with architecture/overview.md and migration-backlog.md). Then adopt a slice: /appweaver adopt <Aggregate> reverse-engineers its spec.md + design.md from the bundle, and the forward pipeline carries it from there."
238
+ next: "Review {{bundle_dir}} (start with architecture/overview.md and migration-backlog.md). Then adopt a slice: /appweaver adopt <Aggregate> reverse-engineers its spec.md + backend-plan.md from the bundle, and the forward pipeline carries it from there."
@@ -22,7 +22,7 @@
22
22
  # each with the slice's own evidence (BR-/CN-/DC-/IC- ids) when that feature is
23
23
  # developed — the "created here, updated when taking each slice" contract.
24
24
  #
25
- # ONBOARD → adopt <Feature> (JIT) → specify → design → analyze-delta-design → implement-delta → build → finalize-delta → analyze-slice → close-delta ← you are here
25
+ # ONBOARD → adopt <Feature> (JIT) → specify → plan → analyze-plan-delta → implement → build → analyze-slice-delta → finalize-delta → analyze-slice → close-delta ← you are here
26
26
  #
27
27
  # Establishing the PROJECT-scoped constitution here (whole-repo vantage) — not from a
28
28
  # single adopted slice — is deliberate: it keeps governance project-scoped from day
@@ -76,9 +76,10 @@
76
76
  # service pair is reverse-engineered from the service code. The lane is governed by a
77
77
  # different constitution half and implemented by different commands, so it gets its own
78
78
  # design document rather than a section inside the service design; the only thing that
79
- # crosses between them is the design contract. Their consumers (⌛ ui-design,
80
- # ui-implement) are not built yet — the templates are written now because the
81
- # whole-repo evidence for them exists exactly once, at onboard.
79
+ # crosses between them is the design contract. Their consumers are the FRONTEND LANES
80
+ # of `plan` and `implement` — one command each, covering both lanes — and the templates
81
+ # are written here because the whole-repo evidence for them exists exactly once, at
82
+ # onboard.
82
83
  # RUN /appweaver select-stack FIRST. It is the first command of the brownfield
83
84
  # sequence and this workflow REFUSES to run without it, because it needs to be told three
84
85
  # things before it can start: which lanes this project has, where each lane's source is,
@@ -844,9 +845,9 @@ workflow:
844
845
  - { path: "{{bundle_dir}}/architecture/frontend.md", optional: true } # SECONDARY (shallow): the OKF as-built frontend note — corroborate, don't rely on alone
845
846
  - id: author_ui
846
847
  action: agent_author
847
- tools: Read # EVIDENCE = THE UI CODE ITSELF; the inventory inlines the file LISTS, not the files
848
848
  condition: "{{ui_lane}} == true"
849
849
  include_standards: false
850
+ tools: Read # EVIDENCE = THE UI CODE ITSELF; the inventory inlines the file LISTS, not the files
850
851
  output_target: { type: file, path: "{{constitution_ui_file}}" }
851
852
  task: |
852
853
  Scaffold the USER EXPERIENCE constitution — the FRONTEND LANE's half (the target
@@ -1191,10 +1192,10 @@ workflow:
1191
1192
  nothing):
1192
1193
  - `## /aw-spec-specify` — EXACTLY ONE bullet: `service/domain-modelling.md`, the modelling methodology. NEVER an architecture / persistence / codegen / security file here — specify is the domain phase and any technology rule under this heading breaks its domain purity. Omit the heading only if you did not write domain-modelling.md.
1193
1194
  - `## /aw-spec-plan` — the as-built architecture / cross-cutting rules the design author mediates the spec against.
1194
- - `## /aw-spec-implement` — the code-generation / convention set the generator builds against (from design.md).
1195
- - `## /aw-spec-implement-delta` — the same code-generation set, scoped to a change's delta-design.
1195
+ - `## /aw-spec-implement` — the code-generation / convention set the SERVICE lane's generator builds against (from backend-plan.md).
1196
+ - `## /aw-spec-implement-delta` — the same set for the service lane on the DELTA path. `implement` is one command that keys this heading when it is generating a change's delta plan and the one above when it is generating the master, so a project that wants the same rules on both paths repeats them here.
1196
1197
  - `## /aw-spec-build` — the layering + convention rules the compile-fixer respects.
1197
- - `## /aw-spec-analyze-slice` — the conformance rules the spec↔code gate validates against.
1198
+ - `## /aw-spec-analyze-slice` — the conformance rules the design↔code gate validates against.
1198
1199
  - `## /aw-spec-adopt` — the technical reference set the reversed design mediates against (a subset of design's).
1199
1200
  - `## /aw-spec-constitution` — the standards a later `/appweaver constitution` re-ratifies the TECHNICAL half from. You authored that half from code evidence before these files existed; this heading is what makes a re-run author from THIS project's rules rather than from an empty set. Ratifiable standards only, no worked `examples/` sample, no domain file.
1200
1201
  - `## /aw-spec-run` — the runtime / execution conventions the app-run step honors (add ONLY if the code evidences a runtime/hosting concern file; NOT data-migration — migration is the deferred later phase).
@@ -1316,33 +1317,22 @@ workflow:
1316
1317
 
1317
1318
  WIRE THE MAP — EDIT guardrails/projects/{{domain_slug}}/tech-rule-bindings.md IN PLACE.
1318
1319
  It already exists and carries the technical headings you wrote; PRESERVE all of them
1319
- byte-for-byte. Add THREE headings, in this order, after the last technical heading and
1320
- BEFORE the closing quick-reference table, then their three rows in that table (same
1321
- format as the existing rows). Every bullet is a workspace-relative path
1322
- `- guardrails/projects/{{domain_slug}}/frontend/<file>` naming a file you JUST
1323
- GENERATED — never a greenfield rule, never a service-lane file, never an example.
1324
- Precede each heading with a short HTML comment saying what that phase loads and why.
1325
- 1. `## /aw-spec-ui-constitution` — the RATIFIABLE lane standards,
1326
- `frontend/ui-constitution.md` FIRST. Say in its comment that the heading is also
1320
+ byte-for-byte. Make exactly two additions:
1321
+ 1. A `## /aw-spec-ui-constitution` section, placed after the last technical heading
1322
+ and BEFORE the closing quick-reference table. Bullet ONLY the frontend files you
1323
+ just generated, `frontend/ui-constitution.md` first, each as a workspace-relative
1324
+ path `- guardrails/projects/{{domain_slug}}/frontend/<file>`. Ratifiable lane
1325
+ standards only — no domain file, no technical file, no example. Precede them with
1326
+ a short HTML comment saying what this half ratifies and that the heading is also
1327
1327
  the authoritative signal that the project has a frontend lane.
1328
- 2. `## /aw-spec-plan-ui` — the DESIGN set /appweaver plan-ui works from when it
1329
- authors or conforms frontend-plan.md: the generated files covering composition,
1330
- routing/navigation, client state, interaction states, forms, accessibility,
1331
- internationalization and performance — whichever of those you actually wrote.
1332
- 3. `## /aw-spec-implement-ui` — the CODE-GENERATION set /appweaver implement-ui
1333
- builds against: conventions, the client/service pairing, styling/design system,
1334
- forms, accessibility, internationalization, performance and UI testing — again,
1335
- whichever you actually wrote.
1336
- THE TWO PHASE SETS OVERLAP ON PURPOSE. A concern like forms, accessibility, i18n or
1337
- performance carries a DESIGN half and an IMPLEMENT half of one rule — the design decides
1338
- the states, affordances and targets; implement realises them. Map such a file under BOTH
1339
- headings. A rule read by only one phase loses the pairing, and the half that goes unread
1340
- is the half that goes unbuilt.
1341
- MAP ONLY WHAT YOU GENERATED. A heading with no matching generated file is omitted
1342
- entirely rather than bulleted with a path that does not exist — an absent heading
1343
- soft-continues, a broken bullet is reported as missing on every later run.
1344
- Do NOT add `## /aw-spec-characterize` or `## /aw-spec-parity`: characterize is
1345
- opt-on-touch and parity belongs to the deferred migration phase.
1328
+ 2. Its row in the quick-reference table, in the same format as the existing rows.
1329
+ Do NOT add `## /aw-spec-plan-ui` or `## /aw-spec-implement-ui` — the frontend lane's
1330
+ headings in `plan` and `implement`. ⌛ Both phases DO exist now, but those two headings
1331
+ are a different TIER from the one you just wrote: `## /aw-spec-ui-constitution` maps the
1332
+ lane's RATIFIABLE standards, and those two map its per-phase authoring and
1333
+ code-generation sets. The files above have not been separated into those tiers, and
1334
+ mapping one file under a heading of the wrong tier is what makes a generator obey a
1335
+ standard nobody ratified. Splitting them is the UI lane's own follow-up.
1346
1336
 
1347
1337
  Write ONLY inside guardrails/projects/{{domain_slug}}/ (frontend/ + the map edit); modify
1348
1338
  no source. Report the files written, the concerns you found present with the code paths
@@ -1384,55 +1374,6 @@ workflow:
1384
1374
  project as backend-only. Add the heading after the last technical one, bulleting
1385
1375
  frontend/ui-constitution.md first, then the rest of the frontend/ set.
1386
1376
 
1387
- # The lane's two PHASE headings, probed the same way and for the same reason. Ratifying
1388
- # the lane is not the same as governing it: with `## /aw-spec-ui-constitution` alone the
1389
- # generated frontend/ rules reach /appweaver constitution and NOTHING else, so plan-ui
1390
- # designs the experience from constitution.ui.md alone and implement-ui generates against
1391
- # nothing — while the rules sit on disk unreferenced. An absent heading soft-continues, so
1392
- # without these probes that gap is invisible on every run. Announce, don't stop: the files
1393
- # are written and each heading is one edit away.
1394
- - id: probe_ui_plan_wiring
1395
- action: execute_script
1396
- condition: "{{ui_lane}} == true"
1397
- on_error: continue
1398
- script: { ref: actions }
1399
- subcommand: resolve-tech
1400
- args: ["--command", "aw-spec-plan-ui"]
1401
- outputs:
1402
- - { name: ui_plan_rules, from: "$.candidates" }
1403
- - id: warn_ui_plan_wiring
1404
- action: verify_context
1405
- condition: "{{ui_lane}} == true"
1406
- require_non_empty: ui_plan_rules
1407
- on_empty: continue
1408
- on_empty_message: >
1409
- guardrails/projects/{{domain_slug}}/tech-rule-bindings.md maps nothing under
1410
- `## /aw-spec-plan-ui`, so /appweaver plan-ui will author frontend-plan.md with NO
1411
- code-derived experience rules — only constitution.ui.md — while the files this run
1412
- generated at guardrails/projects/{{domain_slug}}/frontend/ go unread. Add the heading
1413
- after `## /aw-spec-ui-constitution`, bulleting the generated composition, routing,
1414
- client-state, interaction-state, forms, accessibility, i18n and performance rules.
1415
- - id: probe_ui_impl_wiring
1416
- action: execute_script
1417
- condition: "{{ui_lane}} == true"
1418
- on_error: continue
1419
- script: { ref: actions }
1420
- subcommand: resolve-tech
1421
- args: ["--command", "aw-spec-implement-ui"]
1422
- outputs:
1423
- - { name: ui_impl_rules, from: "$.candidates" }
1424
- - id: warn_ui_impl_wiring
1425
- action: verify_context
1426
- condition: "{{ui_lane}} == true"
1427
- require_non_empty: ui_impl_rules
1428
- on_empty: continue
1429
- on_empty_message: >
1430
- guardrails/projects/{{domain_slug}}/tech-rule-bindings.md maps nothing under
1431
- `## /aw-spec-implement-ui`, so /appweaver implement-ui will generate UI code against no
1432
- code-derived conventions. Add the heading bulleting the generated conventions, service
1433
- pairing, styling, forms, accessibility, i18n, performance and UI-testing rules — the
1434
- ones that also serve the design phase belong under BOTH headings.
1435
-
1436
1377
  # ═══════════ LANE DECLARATION — read back, never written ═══════════════════════
1437
1378
  # onboard does not declare lanes. It used to: before select-stack was the first
1438
1379
  # command of this sequence, a repo could arrive here with no declaration at all, so
@@ -1677,11 +1618,11 @@ workflow:
1677
1618
  # derives from the lane's source is what goes IN those sections — the real composition
1678
1619
  # axes, the state and styling conventions, the screen vocabulary.
1679
1620
  #
1680
- # THE CONSUMERS ARE ⌛ NOT BUILT (B-14 / B-15: ui-design, ui-implement, the three-master
1681
- # merge in finalize-delta). The templates are written now anyway, and deliberately: the
1682
- # evidence for them is the whole-repo vantage that exists exactly once, at onboard, and
1683
- # resolve_template finds them by name the day those commands land. Nothing reads them
1684
- # before then, and nothing breaks for their absence in a repo that never onboarded.
1621
+ # THE CONSUMERS ARE BUILT: the frontend lane of `plan` scaffolds from this override when
1622
+ # onboard installed one (plan-scaffold reports override_active), and the frontend lane of
1623
+ # `implement` generates from the plan it produced. The templates are written HERE because
1624
+ # the evidence for them is the whole-repo vantage that exists exactly once, at onboard, and
1625
+ # nothing breaks for their absence in a repo that never onboarded.
1685
1626
  - id: ctx_ui_design_template
1686
1627
  action: build_context
1687
1628
  condition: "{{ui_lane}} == true"
@@ -1724,8 +1665,8 @@ workflow:
1724
1665
  names NO framework, router, state library, component library, design system or styling
1725
1666
  approach. That omission is deliberate and you MUST preserve it: the generated template
1726
1667
  stays technology-agnostic even though you derived it from a real stack, because the
1727
- framework binds later at ⌛ `ui-implement` from constitution.ui.md plus that command's
1728
- rule set. Describe a component by its RESPONSIBILITY, its INPUTS as field shapes, the
1668
+ framework binds later in the FRONTEND LANE of `implement`, from constitution.ui.md plus
1669
+ that lane's rule set. Describe a component by its RESPONSIBILITY, its INPUTS as field shapes, the
1729
1670
  EVENTS it raises and the STATES it can be in — never by a framework's own vocabulary.
1730
1671
 
1731
1672
  Identify the RECURRING composition convention across the lane's screens (how screens
@@ -1884,4 +1825,4 @@ outputs:
1884
1825
  ui_delta_design_template_files: "{{ui_delta_design_template_files}}"
1885
1826
  technical_validation_ok: "{{technical_ok}}"
1886
1827
  domain_validation_ok: "{{domain_ok}}"
1887
- next: "Onboarded {{project_name}}: a high-level feature map at {{bundle_dir}} + a PROVISIONAL project governance scaffold, domain {{active_domain}} ACTIVATED, and — reverse-engineered from THIS code alone — the rule tiers wired per-workflow: the DOMAIN set (guardrails/projects/{{domain_slug}}/domain/*.domain.md + domain-rule-bindings.md) always, and each LANE's set where that lane is declared. ONE HALF AND ONE RULE SET PER LANE: service_lane / ui_lane report which lanes .appweaver/stacks.json declared, and the declaration is what decided. A declared service lane gets constitution.technical.md, guardrails/projects/{{domain_slug}}/service/*.md + tech-rule-bindings.md, and the service design/delta-design template overrides; a declared UI lane gets constitution.ui.md, guardrails/projects/{{domain_slug}}/frontend/*.md mapped under ## /aw-spec-ui-constitution, and its own template pair. A lane declared (none) in select-stack gets none of it, which is the correct outcome and not an omission. LANE DECLARATION: read, never written — select-stack is its sole writer, and this run scanned the source paths it named (scanned_service_root / scanned_ui_root). The scan was SCOPED by them, so the backend substrate excludes the UI subtree and the frontend substrate is that subtree: scanned_backend_files / scanned_ui_files report each. ui_source_evidence_found false means the UI lane's declared path held nothing a scan recognises as UI, so its governance is thin — move the source path with /appweaver select-stack and re-run. The build/test/run commands on each lane are that PROFILE's defaults and may not match a legacy layout — review them, and re-run /appweaver select-stack to correct any lane. Because the domain is activated, resolve-domain + resolve-tech now route the WHOLE forward pipeline AND adopt to these code-derived rules — never another project's rules as a fallback. Code-derived design + delta-design templates are installed as the project template overrides (.appweaver/templates/overrides/) so a NEW feature is developed against the as-built architecture with NO adopt — every section derived from a NEUTRAL skeleton plus this repo's own structure, with no greenfield template in context. Where the lane exists, the SAME pair is generated for it (ui-design-template.md + ui-delta-design-template.md) from the UI source; ui-design-template.md is consumed by /appweaver adopt, which reverses a slice's design.ui.md from it wherever that slice owns part of the lane's surface; ui-delta-design-template.md still waits, since ui-design / ui-implement are not built yet. Develop an EXISTING feature just-in-time: /appweaver adopt <Feature> reverse-engineers its spec.md + design.md + source-map.md and completes that feature's OKF concept; its governance reconcile is currently HELD, so the scaffold this run wrote stays as it is. Develop a NEW feature straight through the forward pipeline (/appweaver specify → design → implement). Then drive every change through the CR delta loop (/appweaver specify → design → analyze-delta-design → implement-delta → build → finalize-delta → analyze-slice → close-delta). If a validation_ok is false, its constitution half needs a manual touch (see its Sync Impact Report)."
1828
+ next: "Onboarded {{project_name}}: a high-level feature map at {{bundle_dir}} + a PROVISIONAL project governance scaffold, domain {{active_domain}} ACTIVATED, and — reverse-engineered from THIS code alone — the rule tiers wired per-workflow: the DOMAIN set (guardrails/projects/{{domain_slug}}/domain/*.domain.md + domain-rule-bindings.md) always, and each LANE's set where that lane is declared. ONE HALF AND ONE RULE SET PER LANE: service_lane / ui_lane report which lanes .appweaver/stacks.json declared, and the declaration is what decided. A declared service lane gets constitution.technical.md, guardrails/projects/{{domain_slug}}/service/*.md + tech-rule-bindings.md, and the service design/delta-design template overrides; a declared UI lane gets constitution.ui.md, guardrails/projects/{{domain_slug}}/frontend/*.md mapped under ## /aw-spec-ui-constitution, and its own template pair. A lane declared (none) in select-stack gets none of it, which is the correct outcome and not an omission. LANE DECLARATION: read, never written — select-stack is its sole writer, and this run scanned the source paths it named (scanned_service_root / scanned_ui_root). The scan was SCOPED by them, so the backend substrate excludes the UI subtree and the frontend substrate is that subtree: scanned_backend_files / scanned_ui_files report each. ui_source_evidence_found false means the UI lane's declared path held nothing a scan recognises as UI, so its governance is thin — move the source path with /appweaver select-stack and re-run. The build/test/run commands on each lane are that PROFILE's defaults and may not match a legacy layout — review them, and re-run /appweaver select-stack to correct any lane. Because the domain is activated, resolve-domain + resolve-tech now route the WHOLE forward pipeline AND adopt to these code-derived rules — never another project's rules as a fallback. Code-derived design + delta-design templates are installed as the project template overrides (.appweaver/templates/overrides/) so a NEW feature is developed against the as-built architecture with NO adopt — every section derived from a NEUTRAL skeleton plus this repo's own structure, with no greenfield template in context. Where the lane exists, the SAME pair is generated for it (ui-design-template.md + ui-delta-design-template.md) from the UI source; ui-design-template.md is consumed by /appweaver adopt, which reverses a slice's design.ui.md from it wherever that slice owns part of the lane's surface; ui-delta-design-template.md is consumed by the frontend lane of /appweaver plan on its DELTA path, and the plan it produces is generated by the frontend lane of /appweaver implement. Develop an EXISTING feature just-in-time: /appweaver adopt <Feature> reverse-engineers its spec.md + design.md + source-map.md and completes that feature's OKF concept; its governance reconcile is currently HELD, so the scaffold this run wrote stays as it is. Develop a NEW feature straight through the forward pipeline (/appweaver specify → plan → implement). Then drive every change through the CR delta loop (/appweaver specify → plan → analyze-plan-delta → implement → build → analyze-slice-delta → finalize-delta → analyze-slice → close-delta). If a validation_ok is false, its constitution half needs a manual touch (see its Sync Impact Report)."
@@ -27,7 +27,7 @@
27
27
  # never forces a match by breaking the candidate.
28
28
  #
29
29
  # Launch: /appweaver parity [strategy] [focus/guidance]
30
- # Prereq: /appweaver adopt (spec.md + design.md + source-map.md) + a running
30
+ # Prereq: /appweaver adopt (spec.md + backend-plan.md + source-map.md) + a running
31
31
  # candidate, and the legacy system reachable.
32
32
  # =============================================================================
33
33
 
@@ -107,7 +107,7 @@ workflow:
107
107
  action: verify_context
108
108
  require_true: design_exists
109
109
  on_false: stop
110
- on_false_message: "No design.md for the current feature. Run /appweaver adopt <Aggregate> (or /appweaver design) first."
110
+ on_false_message: "No backend-plan.md for the current feature. Run /appweaver adopt <Aggregate> (or /appweaver plan) first."
111
111
 
112
112
  - id: set_source_map
113
113
  action: set