@trohde/earos 1.3.1 → 1.4.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.
- package/README.md +13 -28
- package/assets/init/.agents/skills/earos-assess/SKILL.md +1 -0
- package/assets/init/.agents/skills/earos-assess/references/output-templates.md +2 -0
- package/assets/init/.agents/skills/earos-report/references/portfolio-template.md +6 -6
- package/assets/init/.agents/skills/earos-report/references/single-artifact-template.md +3 -3
- package/assets/init/docs/getting-started.md +4 -0
- package/assets/init/docs/onboarding/agent-assisted.md +2 -0
- package/assets/init/docs/onboarding/first-assessment.md +2 -0
- package/assets/init/docs/onboarding/governed-review.md +2 -0
- package/assets/init/docs/onboarding/overview.md +2 -0
- package/assets/init/docs/plans/2026-03-23-003-feat-excalidraw-diagrams-for-site-docs-plan.md +144 -0
- package/assets/init/docs/solutions/tools/excal-cli-excalidraw-diagrams.md +150 -0
- package/assets/init/examples/aws-event-driven-order-processing/artifact.yaml +60 -60
- package/assets/init/examples/aws-event-driven-order-processing/evaluation.yaml +19 -0
- package/assets/init/examples/example-solution-architecture.evaluation.yaml +5 -0
- package/assets/init/standard/EAROS.md +2 -0
- package/assets/init/standard/schemas/evaluation.schema.json +23 -1
- package/assets/init/templates/evaluation-record.template.yaml +1 -0
- package/dist/assets/{_basePickBy-BlC_TeV6.js → _basePickBy-HRglH9_D.js} +1 -1
- package/dist/assets/{_baseUniq-CVy7rcC1.js → _baseUniq-B-el2xiK.js} +1 -1
- package/dist/assets/{arc-Cd8wvd7z.js → arc-DCCiWvpS.js} +1 -1
- package/dist/assets/{architectureDiagram-2XIMDMQ5-D_f4_aMp.js → architectureDiagram-2XIMDMQ5-BLW1Psh0.js} +1 -1
- package/dist/assets/{blockDiagram-WCTKOSBZ-B-y6N5--.js → blockDiagram-WCTKOSBZ-76dKbaCe.js} +1 -1
- package/dist/assets/{c4Diagram-IC4MRINW-C3-v3oNT.js → c4Diagram-IC4MRINW-KvbJR2lT.js} +1 -1
- package/dist/assets/channel-CHnLOc20.js +1 -0
- package/dist/assets/{chunk-4BX2VUAB-CMPwQN83.js → chunk-4BX2VUAB-BkwFPK_x.js} +1 -1
- package/dist/assets/{chunk-55IACEB6-Bdkfhvrr.js → chunk-55IACEB6-BJPQTA4l.js} +1 -1
- package/dist/assets/{chunk-FMBD7UC4-ptKQX5uF.js → chunk-FMBD7UC4-BTOCpuFV.js} +1 -1
- package/dist/assets/{chunk-JSJVCQXG-DO0UU_OX.js → chunk-JSJVCQXG-82cdN1ai.js} +1 -1
- package/dist/assets/{chunk-KX2RTZJC-DRj2OZnD.js → chunk-KX2RTZJC-B5I2jJFP.js} +1 -1
- package/dist/assets/{chunk-NQ4KR5QH-C4Nsf7ww.js → chunk-NQ4KR5QH-DcLpiW0C.js} +1 -1
- package/dist/assets/{chunk-QZHKN3VN-B1GO0Nwy.js → chunk-QZHKN3VN-guwO7UzN.js} +1 -1
- package/dist/assets/{chunk-WL4C6EOR-lFR6fjR8.js → chunk-WL4C6EOR-D-rebYeP.js} +1 -1
- package/dist/assets/classDiagram-VBA2DB6C-DBR69_yw.js +1 -0
- package/dist/assets/classDiagram-v2-RAHNMMFH-DBR69_yw.js +1 -0
- package/dist/assets/clone-DHq7LHTD.js +1 -0
- package/dist/assets/{cose-bilkent-S5V4N54A-IpR9mVIO.js → cose-bilkent-S5V4N54A-B5vtg_ms.js} +1 -1
- package/dist/assets/{dagre-KLK3FWXG-B4YA6T7N.js → dagre-KLK3FWXG-hBk_bxjm.js} +1 -1
- package/dist/assets/{diagram-E7M64L7V-Do5l6es_.js → diagram-E7M64L7V-Bk-H_CVO.js} +1 -1
- package/dist/assets/{diagram-IFDJBPK2-D5MxfKVv.js → diagram-IFDJBPK2-BugehwKx.js} +1 -1
- package/dist/assets/{diagram-P4PSJMXO-Djr28EgW.js → diagram-P4PSJMXO-CNEv2a0x.js} +1 -1
- package/dist/assets/{erDiagram-INFDFZHY-BuM-rbCL.js → erDiagram-INFDFZHY-P0-yYcfO.js} +1 -1
- package/dist/assets/{flowDiagram-PKNHOUZH-By3WGI7Q.js → flowDiagram-PKNHOUZH-CSG3KYwj.js} +1 -1
- package/dist/assets/{ganttDiagram-A5KZAMGK-GLmBfK72.js → ganttDiagram-A5KZAMGK-B6I0izbI.js} +1 -1
- package/dist/assets/{gitGraphDiagram-K3NZZRJ6-BN0iXeIv.js → gitGraphDiagram-K3NZZRJ6-DU9SqHkb.js} +1 -1
- package/dist/assets/{graph-CDzuMtjV.js → graph-C65heg42.js} +1 -1
- package/dist/assets/{index-DoeSN_Oe.js → index-Q21gvgf4.js} +124 -124
- package/dist/assets/{infoDiagram-LFFYTUFH-C888gaFw.js → infoDiagram-LFFYTUFH-CkQ3Su5g.js} +1 -1
- package/dist/assets/{ishikawaDiagram-PHBUUO56-ChIO9DG-.js → ishikawaDiagram-PHBUUO56-CdxqubV5.js} +1 -1
- package/dist/assets/{journeyDiagram-4ABVD52K-CufMUDcs.js → journeyDiagram-4ABVD52K-OXhBQ3bn.js} +1 -1
- package/dist/assets/{kanban-definition-K7BYSVSG-BpsSVpX8.js → kanban-definition-K7BYSVSG-DP8duR41.js} +1 -1
- package/dist/assets/{layout-B8RWVBSF.js → layout-CvhKY5OS.js} +1 -1
- package/dist/assets/{linear-BJwxtq9r.js → linear-Dl7AA5z5.js} +1 -1
- package/dist/assets/{mindmap-definition-YRQLILUH-C6WPimbf.js → mindmap-definition-YRQLILUH-CRYTXa0H.js} +1 -1
- package/dist/assets/{pieDiagram-SKSYHLDU-DeCGMWf8.js → pieDiagram-SKSYHLDU-qo29I_dD.js} +1 -1
- package/dist/assets/{quadrantDiagram-337W2JSQ-D9TWaS83.js → quadrantDiagram-337W2JSQ-BJOPm7QN.js} +1 -1
- package/dist/assets/{requirementDiagram-Z7DCOOCP-DTnuXlAq.js → requirementDiagram-Z7DCOOCP-BYdv2aTu.js} +1 -1
- package/dist/assets/{sankeyDiagram-WA2Y5GQK-B2dplCgD.js → sankeyDiagram-WA2Y5GQK-C5iHU5yd.js} +1 -1
- package/dist/assets/{sequenceDiagram-2WXFIKYE-cBvgSSju.js → sequenceDiagram-2WXFIKYE-C0ED4Z5P.js} +1 -1
- package/dist/assets/{stateDiagram-RAJIS63D-Cwr7VtSX.js → stateDiagram-RAJIS63D-GLsrTY04.js} +1 -1
- package/dist/assets/stateDiagram-v2-FVOUBMTO-C5144TtB.js +1 -0
- package/dist/assets/{timeline-definition-YZTLITO2-Dkp163fK.js → timeline-definition-YZTLITO2-aqU_QdmO.js} +1 -1
- package/dist/assets/{treemap-KZPCXAKY-BUWHa5xU.js → treemap-KZPCXAKY-CWswAMrV.js} +1 -1
- package/dist/assets/{vennDiagram-LZ73GAT5-BihD66ma.js → vennDiagram-LZ73GAT5-C3b2ZyP2.js} +1 -1
- package/dist/assets/{xychartDiagram-JWTSCODW-Cw4lPbuZ.js → xychartDiagram-JWTSCODW-P0pbwSKC.js} +1 -1
- package/dist/index.html +1 -1
- package/export-docx.js +5 -2
- package/package.json +1 -1
- package/schemas/evaluation.schema.json +23 -1
- package/serve.js +1 -1
- package/utils/criterion-questions.js +100 -0
- package/dist/assets/channel-BSC0F15G.js +0 -1
- package/dist/assets/classDiagram-VBA2DB6C-BHDWMOEz.js +0 -1
- package/dist/assets/classDiagram-v2-RAHNMMFH-BHDWMOEz.js +0 -1
- package/dist/assets/clone-BdN-3iAD.js +0 -1
- package/dist/assets/stateDiagram-v2-FVOUBMTO-B59h7VTZ.js +0 -1
|
@@ -126,6 +126,10 @@
|
|
|
126
126
|
"criterion_id": {
|
|
127
127
|
"type": "string"
|
|
128
128
|
},
|
|
129
|
+
"criterion_question": {
|
|
130
|
+
"type": "string",
|
|
131
|
+
"description": "Human-readable criterion question text from the rubric. Included for self-contained readability."
|
|
132
|
+
},
|
|
129
133
|
"score": {
|
|
130
134
|
"oneOf": [
|
|
131
135
|
{
|
|
@@ -237,7 +241,25 @@
|
|
|
237
241
|
"gate_failures": {
|
|
238
242
|
"type": "array",
|
|
239
243
|
"items": {
|
|
240
|
-
"type": "object"
|
|
244
|
+
"type": "object",
|
|
245
|
+
"properties": {
|
|
246
|
+
"criterion_id": {
|
|
247
|
+
"type": "string"
|
|
248
|
+
},
|
|
249
|
+
"criterion_question": {
|
|
250
|
+
"type": "string",
|
|
251
|
+
"description": "Human-readable criterion question text from the rubric."
|
|
252
|
+
},
|
|
253
|
+
"gate_severity": {
|
|
254
|
+
"type": "string"
|
|
255
|
+
},
|
|
256
|
+
"failure_effect": {
|
|
257
|
+
"type": "string"
|
|
258
|
+
},
|
|
259
|
+
"actual_score": {
|
|
260
|
+
"type": "integer"
|
|
261
|
+
}
|
|
262
|
+
}
|
|
241
263
|
}
|
|
242
264
|
},
|
|
243
265
|
"overall_status": {
|
package/serve.js
CHANGED
|
@@ -55,7 +55,7 @@ export async function startServer(fileArg) {
|
|
|
55
55
|
process.exit(1);
|
|
56
56
|
}
|
|
57
57
|
const app = express();
|
|
58
|
-
app.use(express.json({ limit: '
|
|
58
|
+
app.use(express.json({ limit: '200mb' }));
|
|
59
59
|
app.use((_req, res, next) => {
|
|
60
60
|
res.setHeader('X-Content-Type-Options', 'nosniff');
|
|
61
61
|
res.setHeader('X-Frame-Options', 'DENY');
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Static lookup maps for criterion questions and dimension names.
|
|
3
|
+
*
|
|
4
|
+
* Used as a fallback when evaluation records do not embed `criterion_question`.
|
|
5
|
+
* Built from the rubric YAML files (core + all profiles + all overlays).
|
|
6
|
+
*/
|
|
7
|
+
// ── Criterion ID → question text ─────────────────────────────────────────────
|
|
8
|
+
export const CRITERION_QUESTIONS = {
|
|
9
|
+
// Core meta-rubric (EAROS-CORE-002) — 10 criteria
|
|
10
|
+
'STK-01': 'Does the artifact explicitly identify intended stakeholders, decision purpose, and review context?',
|
|
11
|
+
'STK-02': 'Are concerns mapped to the views or sections used in the artifact?',
|
|
12
|
+
'SCP-01': 'Does the artifact define scope, boundaries, assumptions, and exclusions?',
|
|
13
|
+
'CVP-01': 'Do the selected views and representations fit the stakeholder concerns and review purpose?',
|
|
14
|
+
'TRC-01': 'Are business drivers, objectives, principles, or requirements traceably connected to the architecture content?',
|
|
15
|
+
'CON-01': 'Are terms, structures, interfaces, and facts consistent across sections and views?',
|
|
16
|
+
'RAT-01': 'Does the artifact identify key risks, assumptions, constraints, and tradeoffs relevant to the decision?',
|
|
17
|
+
'CMP-01': 'Does the artifact show alignment to applicable architecture standards, policies, and mandatory controls?',
|
|
18
|
+
'ACT-01': 'Can delivery and governance teams act on the artifact without major reinterpretation?',
|
|
19
|
+
'MNT-01': 'Does the artifact identify ownership, update expectations, and change history or provenance?',
|
|
20
|
+
// Reference architecture (EAROS-REFARCH-001) — 9 criteria
|
|
21
|
+
'RA-VIEW-01': 'Does the reference architecture include context, functional, deployment, and data flow views?',
|
|
22
|
+
'RA-VIEW-02': 'Are architecture diagrams machine-readable or accompanied by structured element catalogs?',
|
|
23
|
+
'RA-DEC-01': 'Are key architecture decisions documented with context, options considered, and rationale?',
|
|
24
|
+
'RA-DEC-02': 'Does the reference architecture clearly define what is fixed, what is configurable, and where teams have discretion?',
|
|
25
|
+
'RA-OPS-01': 'Does the reference architecture include monitoring, alerting, scaling, and disaster recovery guidance?',
|
|
26
|
+
'RA-IMP-01': 'Does the reference architecture include infrastructure-as-code templates, API specifications, or starter kits?',
|
|
27
|
+
'RA-IMP-02': 'Does the reference architecture include a clear getting-started guide or golden path for new adopters?',
|
|
28
|
+
'RA-QA-01': 'Are quality attributes defined with measurable acceptance criteria and validation approaches?',
|
|
29
|
+
'RA-REU-01': 'Is the reference architecture version-controlled with a clear evolution roadmap?',
|
|
30
|
+
// Solution architecture (EAROS-SOL-001) — 3 criteria
|
|
31
|
+
'SOL-01': 'Does the artifact explain the chosen option and the rejected alternatives at a decision-useful level?',
|
|
32
|
+
'SOL-02': 'Are key quality attributes and non-functional requirements translated into architectural mechanisms or constraints?',
|
|
33
|
+
'SOL-03': 'Does the solution architecture describe implementation dependencies, operational ownership, and migration implications?',
|
|
34
|
+
// ADR (EAROS-ADR-001) — 3 criteria
|
|
35
|
+
'ADR-01': 'Is the decision stated as a clear, testable, singular decision rather than a vague discussion topic?',
|
|
36
|
+
'ADR-02': 'Does the ADR capture meaningful alternatives and the consequences of the chosen decision?',
|
|
37
|
+
'ADR-03': 'Can a future reader understand why the decision was made and when it should be revisited?',
|
|
38
|
+
// Capability map (EAROS-CAP-001) — 3 criteria
|
|
39
|
+
'CAP-01': 'Is the capability decomposition stable, non-overlapping, and expressed at a coherent level of abstraction?',
|
|
40
|
+
'CAP-02': 'Does the map connect capabilities to business outcomes, ownership, and investment or maturity decisions?',
|
|
41
|
+
'CAP-03': 'Can the capability map be reused over time for comparative analysis without frequent structural rework?',
|
|
42
|
+
// Roadmap (EAROS-ROAD-001) — 3 criteria
|
|
43
|
+
'RD-DEP-01': 'Are dependencies between roadmap items identified and realistic?',
|
|
44
|
+
'RD-TRN-01': 'Are intermediate states between current and target architecture defined?',
|
|
45
|
+
'RD-OWN-01': 'Do roadmap items have owners, funding linkage, and measurable milestones?',
|
|
46
|
+
// Security overlay (EAROS-OVR-SEC-001) — 1 criterion
|
|
47
|
+
'SEC-01': 'Does the artifact show material threats, required controls, and control ownership at a level suitable for the review?',
|
|
48
|
+
// Data governance overlay (EAROS-OVR-DATA-001) — 1 criterion
|
|
49
|
+
'DAT-01': 'Does the artifact define key information objects, accountability, lifecycle concerns, and material data quality or privacy implications?',
|
|
50
|
+
// Regulatory overlay (EAROS-OVR-REG-001) — 2 criteria
|
|
51
|
+
'REG-ID-01': 'Are applicable regulations and compliance requirements explicitly identified?',
|
|
52
|
+
'REG-EV-01': 'Is compliance with identified regulations demonstrated with evidence?',
|
|
53
|
+
};
|
|
54
|
+
// ── Dimension prefix → human-readable name ───────────────────────────────────
|
|
55
|
+
// Keys match the groupByDimension heuristic in AssessmentViewer:
|
|
56
|
+
// 3-char prefix → parts[0] (e.g., STK-01 → STK)
|
|
57
|
+
// longer prefix → parts[0]-parts[1] (e.g., RA-VIEW-01 → RA-VIEW)
|
|
58
|
+
export const DIMENSION_NAMES = {
|
|
59
|
+
// Core
|
|
60
|
+
STK: 'Stakeholder and purpose fit',
|
|
61
|
+
SCP: 'Scope and boundary clarity',
|
|
62
|
+
CVP: 'Concern coverage and viewpoint appropriateness',
|
|
63
|
+
TRC: 'Traceability to drivers, requirements, and principles',
|
|
64
|
+
CON: 'Internal consistency and integrity',
|
|
65
|
+
RAT: 'Risks, assumptions, constraints, and tradeoffs',
|
|
66
|
+
CMP: 'Standards and policy compliance',
|
|
67
|
+
ACT: 'Actionability and implementation relevance',
|
|
68
|
+
MNT: 'Artifact maintainability and stewardship',
|
|
69
|
+
// Reference architecture
|
|
70
|
+
'RA-VIEW': 'Architecture views and completeness',
|
|
71
|
+
'RA-DEC': 'Prescriptiveness and decision guidance',
|
|
72
|
+
'RA-OPS': 'Operational readiness',
|
|
73
|
+
'RA-IMP': 'Implementation actionability',
|
|
74
|
+
'RA-QA': 'Quality attribute specification',
|
|
75
|
+
'RA-REU': 'Reusability and evolution',
|
|
76
|
+
// Solution architecture
|
|
77
|
+
SOL: 'Solution optioning and rationale',
|
|
78
|
+
// ADR
|
|
79
|
+
ADR: 'Decision clarity',
|
|
80
|
+
// Capability map
|
|
81
|
+
CAP: 'Decomposition quality',
|
|
82
|
+
// Roadmap
|
|
83
|
+
'RD-DEP': 'Dependency realism',
|
|
84
|
+
'RD-TRN': 'Transition-state clarity',
|
|
85
|
+
'RD-OWN': 'Ownership and measurability',
|
|
86
|
+
// Overlays
|
|
87
|
+
SEC: 'Threat, control, and ownership treatment',
|
|
88
|
+
DAT: 'Information treatment and accountability',
|
|
89
|
+
'REG-ID': 'Regulatory identification',
|
|
90
|
+
'REG-EV': 'Compliance evidence',
|
|
91
|
+
};
|
|
92
|
+
// ── Helper ───────────────────────────────────────────────────────────────────
|
|
93
|
+
/**
|
|
94
|
+
* Returns the human-readable question for a criterion ID.
|
|
95
|
+
* Prefers the embedded `criterion_question` from the evaluation record;
|
|
96
|
+
* falls back to the static lookup.
|
|
97
|
+
*/
|
|
98
|
+
export function getCriterionQuestion(criterionId, embedded) {
|
|
99
|
+
return embedded || CRITERION_QUESTIONS[criterionId] || '';
|
|
100
|
+
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{aq as o,ar as n}from"./index-DoeSN_Oe.js";const t=(r,a)=>o.lang.round(n.parse(r)[a]);export{t as c};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as a,c as s,a as e,C as t}from"./chunk-WL4C6EOR-lFR6fjR8.js";import{_ as i}from"./index-DoeSN_Oe.js";import"./chunk-FMBD7UC4-ptKQX5uF.js";import"./chunk-JSJVCQXG-DO0UU_OX.js";import"./chunk-55IACEB6-Bdkfhvrr.js";import"./chunk-KX2RTZJC-DRj2OZnD.js";var u={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{u as diagram};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as a,c as s,a as e,C as t}from"./chunk-WL4C6EOR-lFR6fjR8.js";import{_ as i}from"./index-DoeSN_Oe.js";import"./chunk-FMBD7UC4-ptKQX5uF.js";import"./chunk-JSJVCQXG-DO0UU_OX.js";import"./chunk-55IACEB6-Bdkfhvrr.js";import"./chunk-KX2RTZJC-DRj2OZnD.js";var u={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{u as diagram};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{b as r}from"./_baseUniq-CVy7rcC1.js";var e=4;function a(o){return r(o,e)}export{a as c};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as t,b as r,a,S as s}from"./chunk-NQ4KR5QH-C4Nsf7ww.js";import{_ as i}from"./index-DoeSN_Oe.js";import"./chunk-55IACEB6-Bdkfhvrr.js";import"./chunk-KX2RTZJC-DRj2OZnD.js";var l={parser:a,get db(){return new s(2)},renderer:r,styles:t,init:i(e=>{e.state||(e.state={}),e.state.arrowMarkerAbsolute=e.arrowMarkerAbsolute},"init")};export{l as diagram};
|