@rse/ase 0.9.20 → 0.9.21

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.
package/package.json CHANGED
@@ -6,7 +6,7 @@
6
6
  "homepage": "http://github.com/rse/ase",
7
7
  "repository": { "url": "git+https://github.com/rse/ase.git", "type": "git" },
8
8
  "bugs": { "url": "http://github.com/rse/ase/issues" },
9
- "version": "0.9.20",
9
+ "version": "0.9.21",
10
10
  "license": "GPL-3.0-only",
11
11
  "author": {
12
12
  "name": "Dr. Ralf S. Engelschall",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ase",
3
- "version": "0.9.20",
3
+ "version": "0.9.21",
4
4
  "description": "Agentic Software Engineering (ASE)",
5
5
  "keywords": [ "agentic", "software", "engineering" ],
6
6
  "homepage": "https://ase.tools",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ase",
3
- "version": "0.9.20",
3
+ "version": "0.9.21",
4
4
  "description": "Agentic Software Engineering (ASE)",
5
5
  "keywords": [ "agentic", "software", "engineering" ],
6
6
  "homepage": "https://ase.tools",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ase",
3
- "version": "0.9.20",
3
+ "version": "0.9.21",
4
4
  "description": "Agentic Software Engineering (ASE)",
5
5
  "keywords": [ "agentic", "software", "engineering" ],
6
6
  "homepage": "https://ase.tools",
@@ -9,10 +9,11 @@ and the "how" of the Software Engineering project.
9
9
 
10
10
  Each **Artifact** of the **Artifact Set**
11
11
  **Architecture (ARCH)** is stored under
12
- `docs/arch/ARCH-<artifact-no/>-<artifact-id/>-<artifact-slug/>.md`,
13
- relative to the project root directory, with <artifact-no/> being the
14
- zero-padded, two-digit sequence number of the **Artifact** (starting at
15
- `01`) according to the order of the **Artifact** list below, and with
12
+ `<basedir/>/ARCH-<artifact-no/>-<artifact-id/>-<artifact-slug/>.md`,
13
+ relative to the project root directory, with <basedir/> being the
14
+ `project.artifact.arch.basedir` config variable, <artifact-no/> being
15
+ the zero-padded, two-digit sequence number of the **Artifact** (starting
16
+ at `01`) according to the order of the **Artifact** list below, and with
16
17
  <artifact-slug/> being derived from <artifact-name/> (see below) by
17
18
  Pascal-casing each word (upper-casing its first letter) and using `-`
18
19
  characters instead of spaces (e.g. `Context-View`).
@@ -74,6 +75,12 @@ distinct **Artifact**s (listed under their <artifact-name/> and their
74
75
  The major decisions related to the architecture, each recording the
75
76
  forces at play, the chosen response, and the reasoning that justifies it.
76
77
 
78
+ 10. **Technology Stack (TS)**:
79
+ The concrete technology products the solution is built upon, organized
80
+ by tier and lifecycle phase, recording for each component its chosen
81
+ product, its purpose, and the alternatives that were considered but not
82
+ chosen.
83
+
77
84
  The **Artifact**s have the following cross-references:
78
85
 
79
86
  ```text
@@ -89,6 +96,8 @@ ARCH-08-QP Quality Perspectives ──(affects)─► ARCH-02-FV Functionalit
89
96
  ARCH-08-QP Quality Perspectives ──(affects)─► ARCH-06-DP Deployment View
90
97
  ARCH-09-DR Decision Record ──(affects)─► ARCH-02-FV Functionality View
91
98
  ARCH-09-DR Decision Record ──(affects)─► ARCH-06-DP Deployment View
99
+ ARCH-10-TS Technology Stack ──(realizes)─► ARCH-02-FV Functionality View
100
+ ARCH-10-TS Technology Stack ──(realizes)─► ARCH-06-DP Deployment View
92
101
  ```
93
102
 
94
103
  Context View (CV)
@@ -897,3 +906,262 @@ forces at play, the chosen response, and the reasoning that justifies it.
897
906
  - **Rejected alternatives when the rejection is non-obvious.** If
898
907
  you considered GraphQL and picked REST for subtle reasons, record it -
899
908
  otherwise someone will suggest GraphQL again in six months.
909
+
910
+ Technology Stack (TS)
911
+ ---------------------
912
+
913
+ The concrete technology products the solution is built upon, organized by
914
+ tier and lifecycle phase, recording for each component its chosen product,
915
+ its purpose, and the alternatives that were considered but not chosen.
916
+
917
+ - Format:
918
+
919
+ <format>
920
+
921
+ # ARCHITECTURE: TECHNOLOGY STACK (ARCH-TS)
922
+
923
+ ✳ Created: **<timestamp-created/>**
924
+ ✎ Modified: **<timestamp-modified/>**
925
+
926
+ <arch-ts-component/>
927
+ <arch-ts-component/>
928
+ [...]
929
+
930
+ </format>
931
+
932
+ - <arch-ts-component/> format:
933
+
934
+ <format>
935
+
936
+ ## COMPONENT: <arch-ts-component-name/> <a id="ARCH-TS-<arch-ts-component-id/>"></a>
937
+
938
+ - When: <arch-ts-component-when/>
939
+ - Tier: <arch-ts-component-tier/>
940
+ - Coverage: <arch-ts-component-coverage/>
941
+ - Product: <arch-ts-component-product/>
942
+ - Realizes: <arch-ts-component-element/>[, ...]
943
+ - Alternatives: <arch-ts-component-alternative/>[, ...]
944
+
945
+ <arch-ts-component-description/>,
946
+ **BECAUSE** <arch-ts-component-rationale/>.
947
+
948
+ </format>
949
+
950
+ - <arch-ts-component/> details:
951
+
952
+ - <arch-ts-component-id/>: per-artifact unique "slug" of always 1-3
953
+ lower-cased words (concatenated with "-" characters and
954
+ in total not longer than 30 characters), derived from
955
+ <arch-ts-component-name/>.
956
+
957
+ - <arch-ts-component-name/> is a short (2-5 word) summary of the
958
+ technology component (e.g. `UI Framework`, `Web Server`, `Relational
959
+ Database`).
960
+
961
+ - <arch-ts-component-when/> is the lifecycle phase in which the
962
+ component is relevant, one of:
963
+
964
+ - `Build-Time`: Used during development, compilation, or packaging.
965
+ - `Run-Time`: Used while the solution executes in production.
966
+
967
+ - <arch-ts-component-tier/> is the architectural tier the component
968
+ belongs to, one of:
969
+
970
+ - `Client`: Runs on the client side (e.g. browser, desktop, mobile).
971
+ - `Server`: Runs on the server side (e.g. backend, application, API).
972
+
973
+ - <arch-ts-component-coverage/> is either one or more of the
974
+ *Client Aspects* or one or more of the *Server Aspects* defined
975
+ below. The general goal is to achieve a maximum coverage of all
976
+ aspects per <arch-ts-component-tier/> with the minimum total
977
+ number of <arch-ts-component-product/>.
978
+
979
+ - <arch-ts-component-product/> is the concrete product, library, or
980
+ framework chosen for this component (e.g. `VueJS`, `Node.js`,
981
+ `PostgreSQL`).
982
+
983
+ - <arch-ts-component-element/> is an `ARCH-FV-<arch-fv-component-id/>`
984
+ or `ARCH-DP-<arch-dp-node-id/>` reference to the functional element
985
+ or deployment node this product realizes.
986
+
987
+ - <arch-ts-component-alternative/> is a product that would also fit
988
+ this component but was not chosen (e.g. `React`, `Svelte`).
989
+
990
+ - <arch-ts-component-description/> is a concise paragraph (1-3
991
+ sentences) of prose describing how the product is used within the
992
+ solution and how it fits into the overall technology stack.
993
+
994
+ - <arch-ts-component-rationale/> is the 1-sentence rationale ("why")
995
+ for choosing this product over the alternatives.
996
+
997
+ - In case the element reference is not present, the
998
+ entire `- Realizes:` bullet point is omitted.
999
+
1000
+ - In case no alternatives were considered, the
1001
+ entire `- Alternatives:` bullet point is omitted.
1002
+
1003
+ - In case the rationale is not present, the
1004
+ entire `, **BECAUSE** [...]` clause is omitted.
1005
+
1006
+ - The known *Client Aspects* which usually have to covered (at least for
1007
+ clients in a Rich-Client architecture):
1008
+
1009
+ - **Interface Theme**:
1010
+ Style Reset, Shape, Color, Gradient, Shadow, Font, Icon.
1011
+
1012
+ - **Interface Widgets**:
1013
+ Icon, Label, Text Paragraph, Image, Form, Text-Field, Text-Area,
1014
+ Date Picker, Toggle, Radio Button, Checkbox, Select List, Slider,
1015
+ Progress Bar, Hyperlink, Popup Menu, Dropdown Menu, Toolbar, Tooltip,
1016
+ Tab, Pill, Breadcrumb, Pagination, Badge, Alert, Panel, Modal, Table,
1017
+ Scrollbar, Carousel.
1018
+
1019
+ - **Interface Layouting**:
1020
+ Responsive Design, Media Query, Frame, Grid, Padding, Border,
1021
+ Margin, Alignment, Force, Magnetism.
1022
+
1023
+ - **Interface Effects**:
1024
+ Transition, Transformation, Keyframes, Easing Function, Sound
1025
+ Effect, Physics.
1026
+
1027
+ - **Interface Interactions**:
1028
+ Mouse, Keyboard, Touchscreen, Gesture, Clipboard, Drag & Drop.
1029
+
1030
+ - **Interface States**:
1031
+ Rendered, Enabled, Visible, Focused, Warning, Error, Floating.
1032
+
1033
+ - **Interface Mask**:
1034
+ Markup Loading, Markup Generation, Virtual DOM, Text, Bitmaps,
1035
+ Vectors, 2D/3D Canvas, Accessibility.
1036
+
1037
+ - **Interface Internationalization**:
1038
+ Text Internationalization (I18N).
1039
+
1040
+ - **Data Conversion**:
1041
+ Value Formatting, Value Parsing, Localization (L10N).
1042
+
1043
+ - **Data Binding**:
1044
+ Reactive, Observer, Unidirectional, Bidirectional, Incremental.
1045
+
1046
+ - **Presentation Model**:
1047
+ Parameter Value, Command Value, State Value, Data Value, Event
1048
+ Value, Value Validation, Presentation Logic.
1049
+
1050
+ - **Dialog Navigation**:
1051
+ Deep Linking, Routing, Dialog Flow.
1052
+
1053
+ - **Dialog Automation**:
1054
+ Dialog Macros, Click-Through, Smoke Testing.
1055
+
1056
+ - **Dialog Communication**:
1057
+ Service, Event, Model, Socket, Hooks.
1058
+
1059
+ - **Dialog Life-Cycle**:
1060
+ Component States, Component State Transitions.
1061
+
1062
+ - **Dialog Structure**:
1063
+ Component, Model/View/Controller Roles, Hierarchical Composition.
1064
+
1065
+ - **State Persistence**:
1066
+ Local Storage, Cookies, Caching.
1067
+
1068
+ - **Business Model**:
1069
+ Entity, Field, Relationship, Universally Unique Identifiers (UUID).
1070
+
1071
+ - **Use-Case Authorization**:
1072
+ User Experience, Dialog Restriction, User, Group, Role, Use-Case,
1073
+ Data, Access.
1074
+
1075
+ - **Client Networking**:
1076
+ Request/Response, Synchronization, Push, Pull, Pulled-Push,
1077
+ REST, GraphQL, Authentication, Session.
1078
+
1079
+ - **Environment Detection**:
1080
+ Runtime Detection, Feature Detection.
1081
+
1082
+ - The known *Server Aspects* which usually have to covered (at least for
1083
+ servers, sometimes called Thin-Servers, in a Rich-Client architecture):
1084
+
1085
+ - **Environment Detection**:
1086
+ Detect the run-time environment, like underlying operating
1087
+ system, execution platform, network topology, feature toggles, etc.
1088
+
1089
+ - **Argument Parsing**:
1090
+ Parse options and arguments of the Command-Line Interface (CLI)
1091
+ to bootstrap application parameters.
1092
+
1093
+ - **Configuration Parsing**:
1094
+ Load and parse directives from configuration file to bootstrap
1095
+ application parameters.
1096
+
1097
+ - **Process Daemonizing**:
1098
+ Detach from the startup terminal and host process in order to run
1099
+ fully independently.
1100
+
1101
+ - **Process Management**:
1102
+ (Pre-)fork child processes and/or threads of execution and monitor
1103
+ and control them during the life-cycle of the application.
1104
+
1105
+ - **Component Management**:
1106
+ Structure the code into components, instantiate them under run-time
1107
+ and manage them in a stateful component life-cycle.
1108
+
1109
+ - **Component Communication**:
1110
+ Provide inter-component communication mechanisms like events, hooks,
1111
+ registry, etc.
1112
+
1113
+ - **Server Networking**:
1114
+ Listen to network sockets, accept connections and manage
1115
+ request/response and message communication.
1116
+
1117
+ - **Peer Information**:
1118
+ Determine unique identification and add-on information about the
1119
+ client peer.
1120
+
1121
+ - **Session Handling**:
1122
+ Manage secured per-connection sessions to keep state between
1123
+ communication requests and/or client sessions.
1124
+
1125
+ - **User Authentication**:
1126
+ Determine and validate the unique identity of the user communicating
1127
+ over the current network connection.
1128
+
1129
+ - **Request Validation**:
1130
+ Validate the syntactical and semantical compliance of the requests
1131
+ and sanitize the requests.
1132
+
1133
+ - **Request Processing**:
1134
+ Process the request by dispatching execution according to the
1135
+ provided request and determined context information.
1136
+
1137
+ - **Role Authorization**:
1138
+ Determine whether the role of the current user is allowed to execute
1139
+ the current request.
1140
+
1141
+ - **Client Networking**:
1142
+ Provide mechanisms to connect to peers over the network and perform
1143
+ request/response and/or publish/subscribe communication.
1144
+
1145
+ - **Task Scheduling**:
1146
+ Schedule and execute recurring tasks independent of regular I/O
1147
+ operations.
1148
+
1149
+ - **Execution Tracing**:
1150
+ Provide mechanisms for tracing the execution by logging event and
1151
+ measurement information at certain points of interest.
1152
+
1153
+ - **Database Access**:
1154
+ Map in-memory domain entities onto data store dependent persistent
1155
+ data structure.
1156
+
1157
+ - **Database Connectivity**:
1158
+ Locally or remotely connect the database access layer to the
1159
+ underlying data store.
1160
+
1161
+ - **Database Schema**:
1162
+ Create, update or downgrade the data schema inside the underlying
1163
+ data store.
1164
+
1165
+ - **Database Bootstrapping**:
1166
+ Create, update or downgrade both mandatory bootstrapping and optional
1167
+ domain-specific data inside the underlying data store.
@@ -9,10 +9,11 @@ and the "what" of the Software Engineering project.
9
9
 
10
10
  Each **Artifact** of the **Artifact Set**
11
11
  **Specification (SPEC)** is stored under
12
- `docs/spec/SPEC-<artifact-no/>-<artifact-id/>-<artifact-slug/>.md`,
13
- relative to the project root directory, with <artifact-no/> being the
14
- zero-padded, two-digit sequence number of the **Artifact** (starting at
15
- `01`) according to the order of the **Artifact** list below, and with
12
+ `<basedir/>/SPEC-<artifact-no/>-<artifact-id/>-<artifact-slug/>.md`,
13
+ relative to the project root directory, with <basedir/> being the
14
+ `project.artifact.spec.basedir` config variable, <artifact-no/> being
15
+ the zero-padded, two-digit sequence number of the **Artifact** (starting
16
+ at `01`) according to the order of the **Artifact** list below, and with
16
17
  <artifact-slug/> being derived from <artifact-name/> (see below) by
17
18
  Pascal-casing each word (upper-casing its first letter) and using `-`
18
19
  characters instead of spaces (e.g. `Customer-Journey`).
@@ -6,7 +6,7 @@
6
6
  "homepage": "http://github.com/rse/ase",
7
7
  "repository": { "url": "git+https://github.com/rse/ase.git", "type": "git" },
8
8
  "bugs": { "url": "http://github.com/rse/ase/issues" },
9
- "version": "0.9.20",
9
+ "version": "0.9.21",
10
10
  "license": "GPL-3.0-only",
11
11
  "author": {
12
12
  "name": "Dr. Ralf S. Engelschall",