businesslens 0.8.0 → 0.10.0

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 (121) hide show
  1. package/CHANGELOG.md +160 -2
  2. package/README.md +9 -8
  3. package/dist/cli.js +1320 -230
  4. package/dist/{logo-Bmv9IEAA.js → logo-ByUBSRUb.js} +1 -1
  5. package/dist/logo.js +1 -1
  6. package/dist/{portable-D2Rj2CNS.d.ts → portable-DLmp7hXK.d.ts} +543 -129
  7. package/dist/{portable-CftE4zWs.js → portable-DmgFo37G.js} +585 -98
  8. package/dist/{report-digest--J16_c08.js → report-digest-BtjFf-4A.js} +1 -1
  9. package/dist/report-digest.d.ts +1 -1
  10. package/dist/report-digest.js +2 -2
  11. package/dist/report.d.ts +3 -3
  12. package/dist/report.js +2 -2
  13. package/dist/viewer/200.html +1 -1
  14. package/dist/viewer/404.html +1 -1
  15. package/dist/viewer/_nuxt/CcApCzJy.js +34 -0
  16. package/dist/viewer/_nuxt/{BCK3bAyi.js → CeE3421Y.js} +1 -1
  17. package/dist/viewer/_nuxt/{45uNmsQO.js → CmwFmk8h.js} +11 -11
  18. package/dist/viewer/_nuxt/{CWdMyG9_.js → DQ3ZnyMB.js} +1 -1
  19. package/dist/viewer/_nuxt/builds/latest.json +1 -1
  20. package/dist/viewer/_nuxt/builds/meta/a896fe5d-32c4-4d9c-88fa-db55d6ddb2ae.json +1 -0
  21. package/dist/viewer/_nuxt/entry.DsWXLqBw.css +1 -0
  22. package/dist/viewer/_nuxt/index.BeuARo3I.css +1 -0
  23. package/dist/viewer/index.html +1 -1
  24. package/docs/business-rules.md +324 -35
  25. package/docs/capabilities.md +168 -37
  26. package/docs/ci.md +4 -2
  27. package/docs/cli-contribute.md +3 -3
  28. package/docs/cli-export.md +6 -5
  29. package/docs/cli-install.md +11 -2
  30. package/docs/cli-lint.md +15 -7
  31. package/docs/cli-open.md +2 -2
  32. package/docs/cli-pull.md +26 -1
  33. package/docs/domains.md +31 -15
  34. package/docs/entities.md +442 -0
  35. package/docs/experiences.md +44 -23
  36. package/docs/from-a-blueprint.md +3 -3
  37. package/docs/from-an-idea.md +1 -1
  38. package/docs/index.md +1 -1
  39. package/docs/installation.md +10 -2
  40. package/docs/interfaces.md +48 -18
  41. package/docs/journeys.md +71 -17
  42. package/docs/product-model.md +136 -28
  43. package/docs/product.md +3 -0
  44. package/docs/references.md +30 -20
  45. package/docs/screens.md +48 -7
  46. package/docs/skill-businesslens-ideate.md +18 -1
  47. package/docs/skill-businesslens-map.md +12 -2
  48. package/docs/skill-businesslens-verify.md +3 -3
  49. package/docs/with-sdd.md +3 -3
  50. package/layers/nuxt/report-viewer/README.md +35 -17
  51. package/layers/nuxt/report-viewer/app/assets/report-viewer.css +49 -3
  52. package/layers/nuxt/report-viewer/app/components/BlrConnections.vue +72 -54
  53. package/layers/nuxt/report-viewer/app/components/BlrContextPlace.vue +9 -9
  54. package/layers/nuxt/report-viewer/app/components/BlrContexts.vue +4 -4
  55. package/layers/nuxt/report-viewer/app/components/BlrCoverageBadge.vue +26 -0
  56. package/layers/nuxt/report-viewer/app/components/BlrEntityLifecycle.vue +199 -0
  57. package/layers/nuxt/report-viewer/app/components/BlrEntityMark.vue +85 -0
  58. package/layers/nuxt/report-viewer/app/components/BlrFlowCanvas.vue +42 -9
  59. package/layers/nuxt/report-viewer/app/components/BlrFlowGroup.vue +5 -5
  60. package/layers/nuxt/report-viewer/app/components/BlrFlowLabel.vue +3 -3
  61. package/layers/nuxt/report-viewer/app/components/BlrFlowNode.vue +12 -12
  62. package/layers/nuxt/report-viewer/app/components/BlrFlowRoutedEdge.vue +135 -0
  63. package/layers/nuxt/report-viewer/app/components/BlrFlowSelfEdge.vue +105 -0
  64. package/layers/nuxt/report-viewer/app/components/BlrFlowState.vue +112 -0
  65. package/layers/nuxt/report-viewer/app/components/BlrKind.vue +19 -19
  66. package/layers/nuxt/report-viewer/app/components/BlrLinks.vue +14 -14
  67. package/layers/nuxt/report-viewer/app/components/BlrOverview.vue +37 -35
  68. package/layers/nuxt/report-viewer/app/components/BlrPageBlock.vue +24 -20
  69. package/layers/nuxt/report-viewer/app/components/BlrProductTopology.vue +44 -43
  70. package/layers/nuxt/report-viewer/app/components/BlrRail.vue +10 -10
  71. package/layers/nuxt/report-viewer/app/components/BlrReferenceIcon.vue +23 -0
  72. package/layers/nuxt/report-viewer/app/components/BlrRefs.vue +3 -13
  73. package/layers/nuxt/report-viewer/app/components/BlrReportShell.vue +380 -275
  74. package/layers/nuxt/report-viewer/app/components/BlrReportTools.vue +85 -0
  75. package/layers/nuxt/report-viewer/app/components/{BlrEntityBody.vue → BlrResourceBody.vue} +409 -74
  76. package/layers/nuxt/report-viewer/app/components/{BlrEntityCard.vue → BlrResourceCard.vue} +35 -35
  77. package/layers/nuxt/report-viewer/app/components/{BlrEntityPage.vue → BlrResourcePage.vue} +54 -20
  78. package/layers/nuxt/report-viewer/app/components/BlrScenarios.vue +13 -13
  79. package/layers/nuxt/report-viewer/app/components/BlrSearchPalette.vue +15 -15
  80. package/layers/nuxt/report-viewer/app/components/BlrStepContext.vue +3 -3
  81. package/layers/nuxt/report-viewer/app/components/BlrStepEntity.vue +107 -0
  82. package/layers/nuxt/report-viewer/app/components/BlrTerm.vue +213 -0
  83. package/layers/nuxt/report-viewer/app/components/BlrTermDefinition.vue +122 -0
  84. package/layers/nuxt/report-viewer/app/components/BlrVocabulary.vue +440 -0
  85. package/layers/nuxt/report-viewer/app/components/BusinessLensReportViewer.vue +17 -6
  86. package/layers/nuxt/report-viewer/app/composables/useTooltips.ts +34 -0
  87. package/layers/nuxt/report-viewer/app/composables/useVocabularyPanel.ts +27 -0
  88. package/layers/nuxt/report-viewer/app/utils/entityLifecycle.ts +192 -0
  89. package/layers/nuxt/report-viewer/app/utils/flowGraph.ts +154 -113
  90. package/layers/nuxt/report-viewer/app/utils/pageSections.ts +47 -30
  91. package/layers/nuxt/report-viewer/app/utils/productTopologyFilters.ts +13 -13
  92. package/layers/nuxt/report-viewer/app/utils/productTopologyGraphs.ts +147 -63
  93. package/layers/nuxt/report-viewer/app/utils/productTopologyLayout.ts +2 -2
  94. package/layers/nuxt/report-viewer/app/utils/productTopologyViews.ts +35 -9
  95. package/layers/nuxt/report-viewer/app/utils/reportPalette.ts +1 -1
  96. package/layers/nuxt/report-viewer/app/utils/reportWorkspace.ts +748 -138
  97. package/layers/nuxt/report-viewer/app/utils/{entityCards.ts → resourceCards.ts} +77 -53
  98. package/layers/nuxt/report-viewer/app/utils/{entityDocs.ts → resourceDocs.ts} +10 -7
  99. package/layers/nuxt/report-viewer/app/utils/resourceFacets.ts +226 -0
  100. package/layers/nuxt/report-viewer/app/utils/resourceFacts.ts +149 -0
  101. package/layers/nuxt/report-viewer/app/utils/vocabulary.generated.ts +105 -0
  102. package/layers/nuxt/report-viewer/app/utils/vocabulary.ts +158 -0
  103. package/layers/nuxt/report-viewer/nuxt.config.ts +11 -3
  104. package/package.json +5 -2
  105. package/skills/businesslens-ideate/SKILL.md +60 -11
  106. package/skills/businesslens-ideate/references/format.md +245 -69
  107. package/skills/businesslens-ideate/references/planning-rubric.md +28 -13
  108. package/skills/businesslens-map/SKILL.md +127 -19
  109. package/skills/businesslens-map/references/format.md +245 -69
  110. package/skills/businesslens-map/references/mapping-rubric.md +96 -18
  111. package/skills/businesslens-verify/SKILL.md +46 -13
  112. package/skills/businesslens-verify/references/build-handoff.md +1 -1
  113. package/skills/businesslens-verify/references/format.md +246 -70
  114. package/dist/viewer/_nuxt/B62M9XwM.js +0 -34
  115. package/dist/viewer/_nuxt/builds/meta/64c42d86-c8d2-45a2-b130-53ab6b26c14b.json +0 -1
  116. package/dist/viewer/_nuxt/entry.CLPavHBc.css +0 -1
  117. package/dist/viewer/_nuxt/index.DsK0G5y5.css +0 -1
  118. package/docs/actors.md +0 -91
  119. package/layers/nuxt/report-viewer/app/components/BlrActorType.vue +0 -74
  120. package/layers/nuxt/report-viewer/app/utils/entityFacets.ts +0 -215
  121. package/layers/nuxt/report-viewer/app/utils/entityFacts.ts +0 -129
package/CHANGELOG.md CHANGED
@@ -5,7 +5,164 @@ All notable changes to this project are documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
- ## [Unreleased]
8
+ ## [0.10.0] - 2026-09-06
9
+
10
+ ### Added
11
+
12
+ - Inline term definitions and a searchable Vocabulary panel for reports and docs.
13
+ - Option to hide the tooltips that explain terms, with the preference remembered.
14
+
15
+ ### Changed
16
+
17
+ - Refined report header controls, icons, coverage badges, and documentation.
18
+
19
+ ### Fixed
20
+
21
+ - Improved breadcrumb and definition-button accessibility.
22
+
23
+ ## [0.9.0] - 2026-09-04
24
+
25
+ ### Added
26
+
27
+ - **Entity — one resource type for every thing the Product keeps or reasons
28
+ about.** Identity, not storage, is the test. An Entity carries named facts,
29
+ optional states, and relations in product language; implementation types,
30
+ keys, indexes, join records, and regenerable representations stay out.
31
+ - **Entity relations state both ends.** `one-to-one`, `one-to-many`, and
32
+ `many-to-many` read from the declaring Entity to its target; the inverse is
33
+ derived so two files cannot disagree. Entity pages and the *What it keeps*
34
+ topology view render the product's own relationship graph.
35
+ - **Business Rules can express authorization.** An Entity target selects an
36
+ operation, facts, states, and optional Contexts. `permits` grants name
37
+ actors, a related Entity path, self, unattended work, or configuration, with
38
+ optional fact and state conditions. `lint` rejects Steps and Screens that no
39
+ applicable grant can permit, without claiming runtime authorization has been
40
+ proved.
41
+ - **A Scenario Step says what it does to the Product's things.** Every Step
42
+ carries `entities: []` or entries shaped as
43
+ `{ entity, as, effect, from, to }`, where `effect` is
44
+ `creates|changes|removes|reads`. Lifecycles and reverse edges are composed
45
+ from acceptance Steps rather than authored a second time.
46
+ - **Unattended Scenarios.** A first condition Step may state
47
+ `unattended: true` for schedules, expiry, retry, and other Product-owned
48
+ behavior with no Actor.
49
+ - `agent` joins the Interface types, and an Interface may own shared Screens
50
+ beside its Experiences. A shared Screen is inside every Experience of its
51
+ Interface: a Capability it exposes must be available in each, a Step on it is
52
+ inside a Capability's availability only when every Experience is, and that
53
+ Step counts as Scenario coverage for each.
54
+ - **A Domain states what its Boundary excludes**, in the authored folder and on
55
+ the wire.
56
+ - **The Product Report renders every Entity edge.** Entities have a rail entry,
57
+ collection, page, search results, facts, relations, composed lifecycle, and
58
+ topology presence. An Entity with States reads its lifecycle as a state
59
+ machine on its own tab, with each selecting Rule's grants in full. Scenario
60
+ Steps show what they create, change, remove, or read; Journey outcomes
61
+ summarize what they leave behind; Rules read their grants as sentences.
62
+ - **`spec/rejected.md`** — shapes designed far enough to be costed and then
63
+ chosen against, so the same argument is not had twice. It binds nothing and
64
+ takes rejections and deferrals only: never a plan, a status, or a file
65
+ reference. Entries are appended, so reopening a decision means a superseding
66
+ entry rather than an edit. It carries what a format or report change most
67
+ often re-proposes — tags and free-form metadata, a glossary resource type,
68
+ typed facts, `actors/` as its own collection, permission on a Capability
69
+ target, `transitions` on the Entity, the permission algebra's discarded
70
+ spellings, and Blueprint provenance.
71
+ - BusinessLens now keeps a reviewed Product Model of itself. The Content Feed
72
+ Reader Blueprint and golden Fixture Shop were expanded to exercise Entities,
73
+ relations, lifecycles, unattended behavior, and permission Rules.
74
+
75
+ ### Changed
76
+
77
+ - **Folder schema 8 and Product Report v13 are the only accepted contracts.**
78
+ Historical reports are refused rather than migrated. The report SDK exports
79
+ `ProductReportV13Schema`, `ProductReportV13`, the unversioned current
80
+ aliases, Entity/fact/relation types, Step effect types, and grant types.
81
+ - **A Capability no longer declares Entities and an Entity no longer declares
82
+ transitions.** Scenario Steps are the single source of truth for what happens
83
+ to the things the Product keeps.
84
+ - `## Information kept` is a list of uniquely named facts, so a Rule can govern
85
+ one fact exactly. `## Product states` is retired.
86
+ - Behavioral ids are verb-noun and reuse vocabulary the model already declares.
87
+ Entity, Domain, and Business Rule ids do not begin with a verb. The linter
88
+ derives these naming findings rather than asking an author to judge them.
89
+ - Whether an Interface needs Experiences, and whether it divides, is derived
90
+ rather than judged: audiences are disjoint when no available Capability
91
+ bridges them, with the counterpart exception for symmetric platform pairs.
92
+ Interface entry-point keys may name the Interface's type or another Interface
93
+ from which it is reached.
94
+ - A Business Rule governs at least two behaviors or an independent Context, and
95
+ a Domain states what its Boundary excludes. Both are now linted.
96
+ - **The installer decides ownership by its manifest alone.** A directory that
97
+ merely names a skill and mentions BusinessLens is somebody else's; retired
98
+ skills are removed only when the manifest recorded them; every harness is
99
+ checked before any is written, so a refusal leaves nothing changed. This is
100
+ visible on upgrade: an installation made before the marker existed carries no
101
+ proof it is ours, so `install` and `update` refuse it with *Refusing to
102
+ overwrite … Pass `--force`*. One `--force` re-adopts it, and every later run
103
+ is marked.
104
+ - `businesslens-map`, `businesslens-ideate`, and the authoring branches of
105
+ `businesslens-verify` settle undetermined boundary, granularity, naming, and
106
+ acceptance calls in rounds before writing. They attach the evidence they read
107
+ and surface remaining judgment calls explicitly; ideate's proposed delta ends
108
+ with a `Judgment calls` section, as map's already did.
109
+ - `businesslens-verify` re-derives findings from the current model and
110
+ repository, verifies Entity facts, states, relations, composed transitions,
111
+ Step effects, and Rule grants, and never persists a workflow ledger.
112
+ - The docs define each resource type on its owning page. Actor guidance moved
113
+ into Entities, Capability and Journey pages own their Scenario fields,
114
+ Business Rules owns permission semantics, and the catalog transport — the
115
+ report media type and its `version` parameter — is written where a catalog
116
+ operator reads it.
117
+ - The open page tab lives in the URL (`t`), so a Lifecycle or Scenarios tab
118
+ survives a refresh and can be linked.
119
+ - **The design record under `plans/` is retired; the constraints it carried
120
+ moved into the registers that govern them.** `AGENTS.md` gains *How format
121
+ decisions are judged* — the shipped agent as the standard a rule must meet,
122
+ the ranked quality axes, empirical double-authoring, descriptive and
123
+ generative use judged equally, and the pull-request diff as the binding human
124
+ surface. Its report viewer standards gain four rendering rules and the
125
+ four-row test for making a section render as more than prose.
126
+
127
+ ### Removed
128
+
129
+ - **`actors/` is no longer a collection, and Actor is no longer a resource
130
+ type.** A person or system that acts is an Entity with
131
+ `kind: person|system` and `acts: external|internal`. Actor remains a role.
132
+
133
+ ### Fixed
134
+
135
+ - **`blueprint pull` asks for the report version it can read, and refuses
136
+ another.** The Accept header is derived from the schema's major, and a
137
+ catalog answering with a different `version` parameter is refused before the
138
+ body is parsed. A report of another schema version, from a catalog or a file,
139
+ is refused in one sentence naming both versions instead of a Zod issue dump.
140
+ - **`blueprint open` and `pull` keep the author's coverage prose.** Only
141
+ `method` is rewritten, as the report contract says; the note that
142
+ implementation alignment has not been verified here now lives in `method`
143
+ with the other origin claim, and `limitations` and `rationale` come through
144
+ exactly as authored.
145
+ - **An Experience's `interfaceIds` is exactly the Interface its id names.**
146
+ Expansion files an Experience by its qualified id, so a list saying anything
147
+ else was a second encoding of containment — a report could validate under one
148
+ Interface and expand under another.
149
+ - The stable viewer keeps the current page and its filters through a recompile,
150
+ so `businesslens view` can stay open while the model is edited.
151
+ - The packed Nuxt Layer consumer, viewer documentation, and package manifest
152
+ stay aligned with the current report major; generated Layer `node_modules`
153
+ are excluded from the npm tarball; and `check-repo` pins both registers and
154
+ the CLI header to the report schema's major, so the version cannot go stale
155
+ in prose the way it once did in code.
156
+
157
+ ### Security
158
+
159
+ - **The installer follows no name it did not write.** The installation manifest
160
+ is read out of the target repository, which BusinessLens treats as untrusted,
161
+ and every name it records reaches a recursive remove. A `skills` entry that is
162
+ not a plain directory name now invalidates the marker, a recorded name this
163
+ Product could not have written is left alone, and every removal must resolve
164
+ to a direct child of the skills directory — so a crafted manifest can no
165
+ longer point `install` at a directory outside it.
9
166
 
10
167
  ## [0.8.0] - 2026-08-25
11
168
 
@@ -554,7 +711,8 @@ Initial public launch of the repository.
554
711
  `docs/format.md`.
555
712
  - Claude plugin manifest and marketplace entry.
556
713
 
557
- [Unreleased]: https://github.com/businesslens/pdd/compare/v0.8.0...HEAD
714
+ [0.10.0]: https://github.com/businesslens/pdd/compare/v0.9.0...v0.10.0
715
+ [0.9.0]: https://github.com/businesslens/pdd/compare/v0.8.0...v0.9.0
558
716
  [0.8.0]: https://github.com/businesslens/pdd/compare/v0.7.2...v0.8.0
559
717
  [0.7.2]: https://github.com/businesslens/pdd/compare/v0.7.1...v0.7.2
560
718
  [0.7.1]: https://github.com/businesslens/pdd/compare/v0.7.0...v0.7.1
package/README.md CHANGED
@@ -6,7 +6,8 @@
6
6
 
7
7
  **Product-Driven Development for coding agents.** BusinessLens keeps intended
8
8
  product behavior in a Git-tracked `.businesslens/` Product Model: who the
9
- product serves, what they accomplish, and which rules must remain true.
9
+ product serves, what they accomplish, what it keeps and what changes it, and
10
+ which rules must remain true, including who may act.
10
11
 
11
12
  The model is Markdown, reviewable in pull requests, and useful without a hosted
12
13
  service. `businesslens lint` checks its structure. The `businesslens-verify`
@@ -17,7 +18,7 @@ resolution loop.
17
18
  .businesslens/
18
19
  ├── README.md
19
20
  ├── product.md # or product/product.md beside logo.svg
20
- ├── actors/<id>.md # or <id>/actor.md with assets
21
+ ├── entities/<id>.md # or <id>/entity.md with assets; the ones that act carry kind and acts
21
22
  ├── interfaces/<id>.md # or <id>/interface.md with screens/ or experiences/
22
23
  ├── domains/<id>.md # or <id>/domain.md with assets; optional collection
23
24
  ├── capabilities/<id>.md # or <id>/capability.md with scenarios/ or assets
@@ -26,8 +27,8 @@ resolution loop.
26
27
  └── coverage.md
27
28
  ```
28
29
 
29
- Leaf entities stay compact as `<id>.md`. An entity expands to
30
- `<id>/<type>.md` only when it needs a namespace for assets or child entities.
30
+ Leaf resources stay compact as `<id>.md`. A resource expands to
31
+ `<id>/<type>.md` only when it needs a namespace for assets or child resources.
31
32
 
32
33
  ## Getting started
33
34
 
@@ -93,7 +94,7 @@ Catalog contribution stays in the CLI; there is no contribution skill.
93
94
  ## Product Model semantics
94
95
 
95
96
  - `references` optionally attach intent, implementation, or context artifacts
96
- to any semantic entity. They are navigation and supporting material, not
97
+ to any semantic resource. They are navigation and supporting material, not
97
98
  proof or verification receipts.
98
99
  - `coverage.status` describes model breadth: `draft` while the model itself is
99
100
  under review, `partial` with known unmapped areas, and `complete` when the
@@ -108,7 +109,7 @@ Catalog contribution stays in the CLI; there is no contribution skill.
108
109
  `domain:`; every other Domain relation is derived.
109
110
  - Screens are optional platform-neutral product views, nested in the Interface
110
111
  or Experience that contains them. Their path supplies their place. Product
111
- assets sit beside the entity they describe; anything
112
+ assets sit beside the resource they describe; anything
112
113
  under `implementation/` describes this realization and stays home.
113
114
  - `lint` checks format, required content, relationships, Reference grammar, and
114
115
  tracked code-reference paths. `verify` checks meaning against current code.
@@ -123,12 +124,12 @@ Use these sources in this order:
123
124
  1. Read the [Product Model overview](./docs/product-model.md) for the mental
124
125
  model and relationship overview.
125
126
  2. Use [`spec/format.md`](./spec/format.md) as the normative contract for the
126
- authored `.businesslens/` files. It defines every entity, file shape,
127
+ authored `.businesslens/` files. It defines every resource type, file shape,
127
128
  relation, and semantic boundary, and changes before parser or linter
128
129
  behavior changes. Its companion [`spec/report.md`](./spec/report.md) is the
129
130
  contract for the serialized Product Report, its portable projection, and
130
131
  expansion.
131
- 3. Use the individual entity pages under [`docs/`](./docs/) for approachable
132
+ 3. Use the individual resource type pages under [`docs/`](./docs/) for approachable
132
133
  explanations, examples, and the relevant `lint` findings. They restate the
133
134
  format contract and must not introduce a second definition.
134
135
  4. Follow [`src/core/model.ts`](./src/core/model.ts),