@rosenfan/matrix 0.1.1 → 0.1.2

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 (37) hide show
  1. package/.claude/skills/matrix/SKILL.md +62 -21
  2. package/.claude/skills/matrix/agents/openai.yaml +4 -4
  3. package/.claude/skills/matrix/scripts/matrix_claude.py +11 -166
  4. package/.claude/skills/matrix/scripts/matrix_state.py +60 -114
  5. package/.claude/skills/matrix-archive/SKILL.md +33 -26
  6. package/.claude/skills/matrix-build/SKILL.md +26 -39
  7. package/.claude/skills/matrix-claude/SKILL.md +22 -22
  8. package/.claude/skills/matrix-design/SKILL.md +28 -29
  9. package/.claude/skills/matrix-hotfix/SKILL.md +8 -8
  10. package/.claude/skills/matrix-open/SKILL.md +17 -20
  11. package/.claude/skills/matrix-status/SKILL.md +4 -3
  12. package/.claude/skills/matrix-tweak/SKILL.md +8 -8
  13. package/.claude/skills/matrix-verify/SKILL.md +18 -29
  14. package/LICENSE +21 -21
  15. package/README.md +255 -242
  16. package/README.zh-CN.md +254 -242
  17. package/assets/skills-zh-CN/matrix/SKILL.md +57 -5
  18. package/assets/skills-zh-CN/matrix-archive/SKILL.md +23 -2
  19. package/assets/skills-zh-CN/matrix-build/SKILL.md +26 -2
  20. package/assets/skills-zh-CN/matrix-claude/SKILL.md +12 -11
  21. package/assets/skills-zh-CN/matrix-design/SKILL.md +16 -11
  22. package/assets/skills-zh-CN/matrix-hotfix/SKILL.md +8 -8
  23. package/assets/skills-zh-CN/matrix-open/SKILL.md +16 -11
  24. package/assets/skills-zh-CN/matrix-status/SKILL.md +12 -11
  25. package/assets/skills-zh-CN/matrix-tweak/SKILL.md +8 -8
  26. package/assets/skills-zh-CN/matrix-verify/SKILL.md +22 -8
  27. package/bin/matrix.js +15 -15
  28. package/package.json +56 -56
  29. package/src/catalog.js +85 -80
  30. package/src/cli.js +116 -111
  31. package/src/distribution.js +216 -152
  32. package/src/installer.js +45 -45
  33. package/src/matt.js +45 -45
  34. package/src/messages.js +33 -33
  35. package/src/ui.js +89 -89
  36. package/src/workflow-transaction.js +622 -0
  37. package/src/workflow.js +547 -74
@@ -5,45 +5,45 @@ description: Export a frozen Matrix design as a bounded Claude Code task package
5
5
 
6
6
  # Matrix Claude Handoff
7
7
 
8
- This is an optional Matrix sidecar, not a Matrix phase. It must not call `transition`, `archive`, or write `matrix.yaml`, `run-state.json`, or `events.jsonl`.
8
+ This is an optional Matrix sidecar, not a Matrix phase. It must not call `transition`, `archive`, or write `matrix.yaml` or `events.jsonl`.
9
9
 
10
10
  ## When to Use
11
11
 
12
12
  Use `$matrix-claude` when:
13
- - The design phase guard has passed (design is frozen)
13
+ - The active change is in Build and the Design -> Build transition has approved the contract
14
14
  - You want Claude Code (instead of Codex) to implement the design
15
15
  - You need a bounded task package with all implementation details
16
16
 
17
17
  ## Preconditions
18
18
 
19
- The exporter performs this read-only check before writing anything:
19
+ The exporter performs this read-only check before writing anything:
20
20
 
21
- ```powershell
22
- matrix workflow guard design
23
- ```
24
-
25
- If `matrix` is genuinely absent from PATH, use the bundled runtime from the installed root Matrix Skill. Do not fall back when the primary command starts and returns an error.
21
+ ```powershell
22
+ matrix workflow guard build
23
+ ```
26
24
 
27
- If the design guard fails, stop and return to `$matrix-design`. The exporter reads the active change's `proposal.md`, `design.md`, and `plan.md`; it does not invent missing facts.
25
+ If `matrix` is genuinely absent from PATH, use the bundled runtime from the installed root Matrix Skill. Do not fall back when the primary command starts and returns an error.
26
+
27
+ If the build guard reports `CONTRACT_CHANGED` or `CONTRACT_UNAPPROVED`, return to `$matrix-design` and approve a new contract through Build. The exporter reads the approved bytes of `proposal.md`, `design.md`, and `plan.md`; it does not invent missing facts.
28
28
 
29
29
  ## Export
30
30
 
31
- Treat explicit invocation of `$matrix-claude` as the user's choice of Claude Code as the implementation actor. Generate the package with the deterministic exporter; it refuses a missing design guard and does not alter Matrix state.
31
+ Treat explicit invocation of `$matrix-claude` as the user's choice of Claude Code as the implementation actor. Generate the package with the deterministic exporter; it refuses a non-matching approved contract and does not alter Matrix state.
32
+
33
+ ```powershell
34
+ # Generic project: only exports a Matrix artifact.
35
+ matrix workflow export --task-id <ID> --target generic
32
36
 
33
- ```powershell
34
- # Generic project: only exports a Matrix artifact.
35
- matrix workflow export --task-id <ID> --target generic
36
-
37
- # FnSec: exports its formal task package. Add --apply-fnsec-board only when
38
- # active.md is NO_ACTIVE_OBJECTIVE; an existing task is never overwritten.
39
- matrix workflow export --task-id <ID> --target fnsec --apply-fnsec-board
40
- ```
37
+ # FnSec: exports its formal task package. Add --apply-fnsec-board only when
38
+ # active.md is NO_ACTIVE_OBJECTIVE; an existing task is never overwritten.
39
+ matrix workflow export --task-id <ID> --target fnsec --apply-fnsec-board
40
+ ```
41
41
 
42
42
  ## Task Package Contents
43
43
 
44
44
  The exported package (`artifacts/claude-task.md`) contains everything Claude Code needs to implement and produce evidence for `$matrix-verify`:
45
45
 
46
- 1. **Task ID and execution actor**: Claude Code
46
+ 1. **Task ID, execution actor, and approved contract hash**: Claude Code and the exact approved snapshot
47
47
  2. **Objective and acceptance criteria** — copied from `proposal.md`
48
48
  3. **In-scope and out-of-scope boundaries** — from `proposal.md`
49
49
  4. **Frozen design decisions** — from `design.md` (Decisions, Boundaries, Test seams)
@@ -76,12 +76,12 @@ After Claude Code completes and evidence is present:
76
76
 
77
77
  1. Run build guard to verify evidence:
78
78
  ```powershell
79
- matrix workflow guard build
79
+ matrix workflow guard build
80
80
  ```
81
81
 
82
82
  2. If guard passes, transition to verify:
83
83
  ```powershell
84
- matrix workflow transition verify
84
+ matrix workflow transition verify
85
85
  ```
86
86
 
87
87
  3. Enter `$matrix-verify` to继续验证流程
@@ -91,6 +91,6 @@ If the build guard fails, return to Claude Code to补充 missing evidence.
91
91
  ## Important Notes
92
92
 
93
93
  - This sidecar does NOT change Matrix phase, workflow, or guard result
94
- - The Matrix state remains in `design` phase until explicitly transitioned
94
+ - The Matrix state remains in `build` phase; export itself does not advance it
95
95
  - Claude Code must produce evidence that satisfies the build guard conditions
96
96
  - After successful transition to verify, the normal verify流程 continues
@@ -5,35 +5,35 @@ description: Design and freeze the active Matrix change before implementation. U
5
5
 
6
6
  # Matrix Design
7
7
 
8
- Read the active proposal. Write `artifacts/design.md` with `## Decisions`, `## Boundaries`, `## Test seams`, and `## Risks`; write `artifacts/plan.md` with `## Steps`, `## Validation`, and `## Stop conditions`.
9
-
10
- ## Skills to Use (Recommended Order)
11
-
12
- 1. **`domain-modeling`** — First, establish or refine the domain vocabulary. Update `CONTEXT.md` with any new terms from the proposal. This ensures all subsequent design work uses consistent language.
13
-
14
- 2. **`research`** — If the design requires investigating external APIs, documentation, or specifications, spawn a background research agent. It will investigate primary sources and write findings to a Markdown file.
15
-
16
- 3. **`wayfinder`** — For complex codebases, use this to explore and understand existing module structure, seams, and dependencies before making design decisions.
17
-
18
- 4. **`prototype`** — When a design question needs empirical validation (e.g., "does this state model feel right?" or "what should this UI look like?"), build a throwaway prototype. Two modes:
19
- - **Logic prototype**: interactive terminal app to test state machines
20
- - **UI prototype**: multiple UI variations on a single route
21
-
22
- 5. **`codebase-design`** — Finally, define module boundaries, interfaces, and test seams. Use its "design-it-twice" pattern to explore alternative approaches before committing.
8
+ Run `matrix workflow inspect`, read the active proposal and frozen `orchestration`, then write `artifacts/design.md` with `## Decisions`, `## Boundaries`, `## Test seams`, and `## Risks`; write `artifacts/plan.md` with `## Steps`, `## Validation`, and `## Stop conditions`.
9
+
10
+ ## Prim
11
+
12
+ Use Matrix's own capability to investigate the repository and design the change.
13
+
14
+ ## Arch
15
+
16
+ Invoke only capabilities whose task-fact trigger is proven:
17
+
18
+ - `domain-modeling` for unclear vocabulary, invariants, or architectural decisions;
19
+ - `research` when required external facts cannot be established from the repository;
20
+ - `wayfinder` when module ownership or dependency seams are unknown;
21
+ - `prototype` when a material design decision needs disposable empirical evidence;
22
+ - `codebase-design` when a deep-module, interface, or test-seam decision remains.
23
+
24
+ Order follows actual dependencies; never run a fixed companion sequence. Announce each invocation and reason. A correctly installed capability gets at most one same-capability Matrix fallback; installation-integrity failure stops the phase.
25
+
26
+ Long-lived domain, ADR, or research artifacts follow repository conventions, and material conclusions must be synchronized into the canonical design or plan. Prototypes default to an OS temporary directory unless the approved design promotes a project path. Companion output cannot own Matrix state or create a competing plan.
23
27
 
24
28
  ## Process
25
29
 
26
- 1. Start with `domain-modeling` to ground the vocabulary
27
- 2. Use `research` for external dependencies (runs in background)
28
- 3. Use `wayfinder` to explore complex existing code
29
- 4. Use `prototype` to validate key design questions
30
- 5. Use `codebase-design` to finalize module boundaries
31
- 6. Confirm material architecture choices with the user before freezing
32
- 7. Run the guard
33
- 8. If guard passes, ask the user to choose implementation method:
30
+ 1. Establish repository facts and resolve only triggered design questions.
31
+ 2. Write and synchronize the canonical Matrix design and plan.
32
+ 3. Confirm material architecture choices with the user before freezing.
33
+ 4. Run the guard, then choose the implementation actor.
34
34
 
35
35
  ```powershell
36
- matrix workflow guard design
36
+ matrix workflow guard design
37
37
  ```
38
38
 
39
39
  ## Implementation Decision Point
@@ -45,22 +45,21 @@ After the design guard passes, the user chooses:
45
45
  Run transition and enter `$matrix-build`:
46
46
 
47
47
  ```powershell
48
- matrix workflow transition build
48
+ matrix workflow transition build
49
49
  ```
50
50
 
51
51
  Then enter `$matrix-build` to implement directly in this session.
52
52
 
53
53
  ### Option B: Use Claude Code for implementation
54
54
 
55
- Run `$matrix-claude` to export the frozen design as a bounded task package. This:
56
- - Does NOT change Matrix phase or state
55
+ First approve the frozen contract by transitioning to Build, then run `$matrix-claude` to export a bounded task package. This:
56
+ - Does not change the Build phase or state beyond the preceding transition
57
57
  - Creates `artifacts/claude-task.md` with all implementation details
58
58
  - Includes acceptance criteria, test seams, and required commands
59
59
 
60
- After Claude Code completes and returns results, run the transition and enter `$matrix-verify`:
60
+ After Claude Code completes and returns results, run the Build guard and enter `$matrix-verify`:
61
61
 
62
62
  ```powershell
63
- matrix workflow transition build
64
63
  matrix workflow guard build
65
64
  matrix workflow transition verify
66
65
  ```
@@ -1,8 +1,8 @@
1
- ---
2
- name: matrix-hotfix
3
- description: Run a constrained Matrix workflow for a reproducible small bug. Use for a bug fix that has no material architecture, API, schema, or multi-module coordination impact.
4
- ---
5
-
6
- # Matrix Hotfix
7
-
8
- Start through `$matrix` with workflow `hotfix`, then use `diagnosing-bugs` to establish a red-capable feedback loop before changing code. Write the compact proposal, then continue through Matrix gates. If the bug requires architecture change, a new public API, schema work, or broad coordination, pause and ask whether to upgrade to full `$matrix`.
1
+ ---
2
+ name: matrix-hotfix
3
+ description: Run a constrained Matrix workflow for a reproducible small bug. Use for a bug fix that has no material architecture, API, schema, or multi-module coordination impact.
4
+ ---
5
+
6
+ # Matrix Hotfix
7
+
8
+ Start through `$matrix` with workflow `hotfix` and preserve its frozen Prim or Arch orchestration. Prim diagnoses directly. Arch invokes `diagnosing-bugs` only when an actual failure exists and root cause is not established. Write the compact proposal, continue through the normal Matrix gates, and keep all companion output subordinate to Matrix artifacts and state. If the bug requires architecture change, a new public API, schema work, or broad coordination, use controlled Return and upgrade the work to a full Matrix change.
@@ -5,29 +5,26 @@ description: Open or resume the Matrix open phase by clarifying a development re
5
5
 
6
6
  # Matrix Open
7
7
 
8
- Read the active Matrix change with `matrix workflow inspect`. Produce `artifacts/proposal.md` containing exactly these substantive sections: `## Goal`, `## Scope`, `## Non-goals`, `## Acceptance`, and `## Risks`.
9
-
10
- ## Skills to Use
11
-
12
- For a **full workflow**, use `grill-with-docs` to resolve ambiguity before writing the proposal. This skill automatically:
13
-
14
- 1. Runs a `/grilling` session to stress-test the plan through relentless Q&A
15
- 2. Invokes `/domain-modeling` to establish shared vocabulary
16
- 3. Creates or updates `CONTEXT.md` with domain terms
17
- 4. Creates ADRs (Architecture Decision Records) for significant decisions
18
-
19
- For **hotfix/tweak**, use `grilling` directly (without docs) — keep it concise but preserve acceptance criteria.
8
+ Run `matrix workflow inspect`, read the active change and its frozen `orchestration`, then produce `artifacts/proposal.md` containing exactly these substantive sections: `## Goal`, `## Scope`, `## Non-goals`, `## Acceptance`, and `## Risks`.
9
+
10
+ ## Prim
11
+
12
+ Use Matrix's own capability to clarify the request and write the proposal.
13
+
14
+ ## Arch
15
+
16
+ Invoke `grilling` only when material ambiguity remains or the user asks to stress-test the request. Invoke `domain-modeling` only when domain vocabulary, invariants, or an architectural decision is unclear. Announce the capability and reason before invoking it; selecting Arch already authorizes triggered capabilities.
17
+
18
+ Companion output is evidence for the Matrix proposal. It must not create another workflow, proposal, confirmation state, or phase transition. If a correctly installed capability fails, perform at most one Matrix-owned fallback for that same capability and record the failure and evidence. Installation-integrity failures require `matrix init --with-mattpocock` and are not eligible for fallback.
20
19
 
21
20
  ## Process
22
21
 
23
- 1. Run `grill-with-docs` (or `grilling` for hotfix/tweak)
24
- 2. Write `proposal.md` with all required sections
25
- 3. Ask the user to confirm when scope or risk is material
26
- 4. Run the guard
27
- 5. If guard passes, run transition to advance to design phase
28
- 6. **Then enter `$matrix-design` to continue the workflow**
22
+ 1. Resolve only ambiguities required by the active workflow.
23
+ 2. Write the canonical proposal and synchronize material companion conclusions into it.
24
+ 3. Ask the user to confirm when scope or risk is material.
25
+ 4. Run the guard and transition, then enter `$matrix-design`.
29
26
 
30
27
  ```powershell
31
- matrix workflow guard open
32
- matrix workflow transition design
28
+ matrix workflow guard open
29
+ matrix workflow transition design
33
30
  ```
@@ -9,6 +9,7 @@ Run the same Matrix state kernel used by the main entry and every phase Skill:
9
9
 
10
10
  ```powershell
11
11
  matrix workflow inspect
12
- ```
13
-
14
- Report the returned change id, workflow, phase, guard result, and `next_skill`. Do not infer status from conversation history and do not modify state. If the guard is failing, name the missing evidence and direct the user to the current phase Skill.
12
+ matrix workflow doctor
13
+ ```
14
+
15
+ Report the returned change id, workflow, frozen `orchestration`, phase, guard result, `next_skill`, Workflow health, unfinished transactions, available strategies, and exact recovery commands. If Arch integrity fails, identify the affected platform/Skill facts and report `matrix init --with-mattpocock`; do not reinterpret the change as Prim. Both commands are read-only. Do not infer status from conversation history, run `--repair`, or modify state. If the guard is failing, name the missing evidence and direct the user to the current phase Skill.
@@ -1,8 +1,8 @@
1
- ---
2
- name: matrix-tweak
3
- description: Run a lightweight Matrix workflow for a bounded small development change. Use for a small request with no schema, public API, architecture, or cross-module coordination impact.
4
- ---
5
-
6
- # Matrix Tweak
7
-
8
- Start through `$matrix` with workflow `tweak`. Keep proposal and design concise, but still define acceptance criteria and test seams. Upgrade to full `$matrix` when the change crosses module, API, schema, or architecture boundaries.
1
+ ---
2
+ name: matrix-tweak
3
+ description: Run a lightweight Matrix workflow for a bounded small development change. Use for a small request with no schema, public API, architecture, or cross-module coordination impact.
4
+ ---
5
+
6
+ # Matrix Tweak
7
+
8
+ Start through `$matrix` with workflow `tweak` and preserve its frozen Prim or Arch orchestration. Keep proposal and design concise, but still define acceptance criteria and test seams. Arch invokes only capabilities whose normal task-fact triggers are present; shortcut workflows do not gain a fixed companion sequence or weaker evidence requirements. Use controlled Return and upgrade to full Matrix when the change crosses module, API, schema, or architecture boundaries.
@@ -27,30 +27,22 @@ Before starting verification, ensure:
27
27
 
28
28
  If these are missing (e.g., Claude Code didn't produce complete evidence), return to `$matrix-build` or ask Claude Code to补充.
29
29
 
30
- ## Skills to Use
31
-
32
- ### Primary: `code-review`
33
-
34
- Use the `code-review` skill to perform a two-axis review of the diff:
35
-
36
- 1. **Standards axis** — Does the code conform to this repo's documented coding standards? Includes a "smell baseline" (Fowler code smells) even when no standards are documented.
37
-
38
- 2. **Spec axis** — Does the code faithfully implement the originating issue/PRD/spec? Checks for:
39
- - Missing or partial requirements
40
- - Scope creep (behavior not asked for)
41
- - Wrong implementations of required behavior
42
-
43
- Both axes run as parallel sub-agents and report separately. Record findings under `## Review evidence` in `artifacts/verification.md`.
44
-
45
- ### Optional: `improve-codebase-architecture`
46
-
47
- After verification passes, if the change touched modules that could be deepened, use `improve-codebase-architecture` to scan for shallow-module opportunities. This is advisory — skip it for simple changes or when time is constrained.
30
+ ## Orchestration
31
+
32
+ Run `matrix workflow inspect` and read the frozen mode.
33
+
34
+ - **Prim**: Matrix performs the Standards and Spec review itself.
35
+ - **Arch**: invoke `code-review` to produce both review axes; announce the invocation and reason.
36
+
37
+ Review findings are inputs to Matrix Verify; a companion cannot decide the phase outcome, broaden approved architecture, transition, or archive. Do not invoke post-review architecture wrappers. A correctly installed review capability gets at most one same-capability Matrix fallback; installation-integrity failure stops verification.
48
38
 
49
39
  ## Failure Handling
50
40
 
51
- If verification or review fails:
52
- - If the issue is in the implementation → **return to `$matrix-build`** or ask Claude Code to fix
53
- - If the issue is in the plan/design → return to `$matrix-design`
41
+ If verification or review fails:
42
+ - If the issue is in the implementation, run `matrix workflow return build --reason verification-failed`, then enter `$matrix-build` or ask Claude Code to fix.
43
+ - If the issue is in the acceptance criteria or design, run `matrix workflow return design --reason acceptance-or-design-gap`, then enter `$matrix-design`.
44
+
45
+ Both Return paths rotate the current `verification.md` into revisioned evidence history. Do not copy stale conclusions back into the new current evidence.
54
46
 
55
47
  If documents or public behavior changed, record the required synchronization work before the guard.
56
48
 
@@ -59,17 +51,14 @@ If documents or public behavior changed, record the required synchronization wor
59
51
  1. Check that `artifacts/verification.md` exists with `## Build evidence`
60
52
  2. Run the plan's acceptance commands (from `plan.md` `## Validation` section)
61
53
  3. Record test output under `## Test evidence`
62
- 4. Load `code-review` skill
63
- 5. Run both axes (Standards + Spec) in parallel
54
+ 4. Produce both Standards and Spec review axes through the selected orchestration mode
64
55
  6. Record findings under `## Review evidence`
65
- 7. Optionally run `improve-codebase-architecture`
66
- 8. Run the guard
67
- 9. If guard passes, run transition to advance to archive phase
68
- 10. **Then enter `$matrix-archive` to continue the workflow**
56
+ 7. Run the guard
57
+ 8. If it passes, transition to archive and enter `$matrix-archive`
69
58
 
70
59
  ```powershell
71
- matrix workflow guard verify
72
- matrix workflow transition archive
60
+ matrix workflow guard verify
61
+ matrix workflow transition archive
73
62
  ```
74
63
 
75
64
  ## Evidence Requirements
package/LICENSE CHANGED
@@ -1,21 +1,21 @@
1
- MIT License
2
-
3
- Copyright (c) 2026 Rosen
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Rosen
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.