@mandors/cli 0.3.0 → 0.3.3

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 (190) hide show
  1. package/.mandor/projects/cancel-reopen/events.jsonl +18 -0
  2. package/.mandor/projects/cancel-reopen/features.jsonl +3 -0
  3. package/.mandor/projects/cancel-reopen/issues.jsonl +1 -0
  4. package/.mandor/projects/cancel-reopen/project.jsonl +11 -0
  5. package/.mandor/projects/cancel-reopen/tasks.jsonl +2 -0
  6. package/.mandor/projects/config-test/events.jsonl +4 -0
  7. package/.mandor/projects/config-test/features.jsonl +1 -0
  8. package/.mandor/projects/config-test/project.jsonl +11 -0
  9. package/.mandor/projects/config-test/schema.json +29 -0
  10. package/.mandor/projects/config-test/tasks.jsonl +1 -0
  11. package/.mandor/projects/cross-dep-1/events.jsonl +6 -0
  12. package/.mandor/projects/cross-dep-1/features.jsonl +1 -0
  13. package/.mandor/projects/cross-dep-1/issues.jsonl +0 -0
  14. package/.mandor/projects/cross-dep-1/project.jsonl +11 -0
  15. package/.mandor/projects/cross-dep-1/schema.json +29 -0
  16. package/.mandor/projects/cross-dep-1/tasks.jsonl +1 -0
  17. package/.mandor/projects/cross-dep-2/events.jsonl +5 -0
  18. package/.mandor/projects/cross-dep-2/features.jsonl +1 -0
  19. package/.mandor/projects/cross-dep-2/issues.jsonl +0 -0
  20. package/.mandor/projects/cross-dep-2/project.jsonl +11 -0
  21. package/.mandor/projects/cross-dep-2/schema.json +29 -0
  22. package/.mandor/projects/cross-dep-2/tasks.jsonl +1 -0
  23. package/.mandor/projects/cycle-test/events.jsonl +8 -0
  24. package/.mandor/projects/cycle-test/features.jsonl +1 -0
  25. package/.mandor/projects/cycle-test/issues.jsonl +0 -0
  26. package/.mandor/projects/cycle-test/project.jsonl +11 -0
  27. package/.mandor/projects/cycle-test/schema.json +29 -0
  28. package/.mandor/projects/cycle-test/tasks.jsonl +3 -0
  29. package/.mandor/projects/cycle-test-2/events.jsonl +4 -0
  30. package/.mandor/projects/cycle-test-2/features.jsonl +1 -0
  31. package/.mandor/projects/cycle-test-2/issues.jsonl +0 -0
  32. package/.mandor/projects/cycle-test-2/project.jsonl +11 -0
  33. package/.mandor/projects/cycle-test-2/schema.json +29 -0
  34. package/.mandor/projects/cycle-test-2/tasks.jsonl +1 -0
  35. package/.mandor/projects/deep-chain/events.jsonl +8 -0
  36. package/.mandor/projects/deep-chain/features.jsonl +1 -0
  37. package/.mandor/projects/deep-chain/issues.jsonl +0 -0
  38. package/.mandor/projects/deep-chain/project.jsonl +11 -0
  39. package/.mandor/projects/deep-chain/schema.json +29 -0
  40. package/.mandor/projects/deep-chain/tasks.jsonl +3 -0
  41. package/.mandor/projects/feature-chain/events.jsonl +12 -0
  42. package/.mandor/projects/feature-chain/features.jsonl +3 -0
  43. package/.mandor/projects/feature-chain/issues.jsonl +0 -0
  44. package/.mandor/projects/feature-chain/project.jsonl +11 -0
  45. package/.mandor/projects/feature-chain/schema.json +29 -0
  46. package/.mandor/projects/feature-chain/tasks.jsonl +1 -0
  47. package/.mandor/projects/feature-lock/events.jsonl +5 -0
  48. package/.mandor/projects/feature-lock/features.jsonl +1 -0
  49. package/.mandor/projects/feature-lock/issues.jsonl +0 -0
  50. package/.mandor/projects/feature-lock/project.jsonl +11 -0
  51. package/.mandor/projects/feature-lock/schema.json +29 -0
  52. package/.mandor/projects/feature-lock/tasks.jsonl +1 -0
  53. package/.mandor/projects/issue-state/events.jsonl +7 -0
  54. package/.mandor/projects/issue-state/features.jsonl +0 -0
  55. package/.mandor/projects/issue-state/issues.jsonl +2 -0
  56. package/.mandor/projects/issue-state/project.jsonl +11 -0
  57. package/.mandor/projects/issue-state/schema.json +29 -0
  58. package/.mandor/projects/issue-state/tasks.jsonl +0 -0
  59. package/.mandor/projects/issue-types/events.jsonl +19 -0
  60. package/.mandor/projects/issue-types/features.jsonl +0 -0
  61. package/.mandor/projects/issue-types/issues.jsonl +6 -0
  62. package/.mandor/projects/issue-types/project.jsonl +11 -0
  63. package/.mandor/projects/issue-types/schema.json +29 -0
  64. package/.mandor/projects/issue-types/tasks.jsonl +0 -0
  65. package/.mandor/projects/multi-chain-1/events.jsonl +6 -0
  66. package/.mandor/projects/multi-chain-1/features.jsonl +1 -0
  67. package/.mandor/projects/multi-chain-1/issues.jsonl +0 -0
  68. package/.mandor/projects/multi-chain-1/project.jsonl +11 -0
  69. package/.mandor/projects/multi-chain-1/schema.json +29 -0
  70. package/.mandor/projects/multi-chain-1/tasks.jsonl +1 -0
  71. package/.mandor/projects/multi-chain-2/events.jsonl +7 -0
  72. package/.mandor/projects/multi-chain-2/features.jsonl +1 -0
  73. package/.mandor/projects/multi-chain-2/issues.jsonl +0 -0
  74. package/.mandor/projects/multi-chain-2/project.jsonl +11 -0
  75. package/.mandor/projects/multi-chain-2/schema.json +29 -0
  76. package/.mandor/projects/multi-chain-2/tasks.jsonl +1 -0
  77. package/.mandor/projects/multi-chain-3/events.jsonl +7 -0
  78. package/.mandor/projects/multi-chain-3/features.jsonl +1 -0
  79. package/.mandor/projects/multi-chain-3/issues.jsonl +0 -0
  80. package/.mandor/projects/multi-chain-3/project.jsonl +11 -0
  81. package/.mandor/projects/multi-chain-3/schema.json +29 -0
  82. package/.mandor/projects/multi-chain-3/tasks.jsonl +1 -0
  83. package/.mandor/projects/priority-filter/events.jsonl +10 -0
  84. package/.mandor/projects/priority-filter/features.jsonl +1 -0
  85. package/.mandor/projects/priority-filter/issues.jsonl +0 -0
  86. package/.mandor/projects/priority-filter/project.jsonl +11 -0
  87. package/.mandor/projects/priority-filter/schema.json +29 -0
  88. package/.mandor/projects/priority-filter/tasks.jsonl +4 -0
  89. package/.mandor/projects/priority-test/events.jsonl +4 -0
  90. package/.mandor/projects/priority-test/features.jsonl +1 -0
  91. package/.mandor/projects/priority-test/issues.jsonl +0 -0
  92. package/.mandor/projects/priority-test/project.jsonl +11 -0
  93. package/.mandor/projects/priority-test/schema.json +29 -0
  94. package/.mandor/projects/priority-test/tasks.jsonl +1 -0
  95. package/.mandor/projects/same-only-1/events.jsonl +4 -0
  96. package/.mandor/projects/same-only-1/features.jsonl +1 -0
  97. package/.mandor/projects/same-only-1/issues.jsonl +0 -0
  98. package/.mandor/projects/same-only-1/project.jsonl +11 -0
  99. package/.mandor/projects/same-only-1/schema.json +29 -0
  100. package/.mandor/projects/same-only-1/tasks.jsonl +1 -0
  101. package/.mandor/projects/same-only-2/events.jsonl +2 -0
  102. package/.mandor/projects/same-only-2/features.jsonl +1 -0
  103. package/.mandor/projects/same-only-2/issues.jsonl +0 -0
  104. package/.mandor/projects/same-only-2/project.jsonl +11 -0
  105. package/.mandor/projects/same-only-2/schema.json +29 -0
  106. package/.mandor/projects/same-only-2/tasks.jsonl +0 -0
  107. package/.mandor/projects/scope-constraint/events.jsonl +4 -0
  108. package/.mandor/projects/scope-constraint/features.jsonl +3 -0
  109. package/.mandor/projects/scope-constraint/issues.jsonl +0 -0
  110. package/.mandor/projects/scope-constraint/project.jsonl +11 -0
  111. package/.mandor/projects/scope-constraint/schema.json +29 -0
  112. package/.mandor/projects/scope-constraint/tasks.jsonl +0 -0
  113. package/.mandor/projects/scope-test/events.jsonl +2 -0
  114. package/.mandor/projects/scope-test/features.jsonl +1 -0
  115. package/.mandor/projects/scope-test/issues.jsonl +0 -0
  116. package/.mandor/projects/scope-test/project.jsonl +11 -0
  117. package/.mandor/projects/scope-test/schema.json +29 -0
  118. package/.mandor/projects/scope-test/tasks.jsonl +0 -0
  119. package/.mandor/projects/soft-delete-test/events.jsonl +14 -0
  120. package/.mandor/projects/soft-delete-test/features.jsonl +2 -0
  121. package/.mandor/projects/soft-delete-test/issues.jsonl +0 -0
  122. package/.mandor/projects/soft-delete-test/project.jsonl +11 -0
  123. package/.mandor/projects/soft-delete-test/schema.json +29 -0
  124. package/.mandor/projects/soft-delete-test/tasks.jsonl +4 -0
  125. package/.mandor/projects/status-flow/events.jsonl +29 -0
  126. package/.mandor/projects/status-flow/features.jsonl +3 -0
  127. package/.mandor/projects/status-flow/issues.jsonl +1 -0
  128. package/.mandor/projects/status-flow/project.jsonl +11 -0
  129. package/.mandor/projects/status-flow/schema.json +29 -0
  130. package/.mandor/projects/status-flow/tasks.jsonl +5 -0
  131. package/.mandor/projects/task-field-test/events.jsonl +8 -0
  132. package/.mandor/projects/task-field-test/features.jsonl +1 -0
  133. package/.mandor/projects/task-field-test/issues.jsonl +0 -0
  134. package/.mandor/projects/task-field-test/project.jsonl +11 -0
  135. package/.mandor/projects/task-field-test/schema.json +29 -0
  136. package/.mandor/projects/task-field-test/tasks.jsonl +3 -0
  137. package/.mandor/projects/test-diamond/events.jsonl +21 -0
  138. package/.mandor/projects/test-diamond/features.jsonl +1 -0
  139. package/.mandor/projects/test-diamond/issues.jsonl +0 -0
  140. package/.mandor/projects/test-diamond/project.jsonl +11 -0
  141. package/.mandor/projects/test-diamond/schema.json +29 -0
  142. package/.mandor/projects/test-diamond/tasks.jsonl +4 -0
  143. package/.mandor/projects/test-fanin/events.jsonl +17 -0
  144. package/.mandor/projects/test-fanin/features.jsonl +1 -0
  145. package/.mandor/projects/test-fanin/issues.jsonl +0 -0
  146. package/.mandor/projects/test-fanin/project.jsonl +11 -0
  147. package/.mandor/projects/test-fanin/schema.json +29 -0
  148. package/.mandor/projects/test-fanin/tasks.jsonl +4 -0
  149. package/.mandor/projects/test-fanout/events.jsonl +18 -0
  150. package/.mandor/projects/test-fanout/features.jsonl +1 -0
  151. package/.mandor/projects/test-fanout/issues.jsonl +0 -0
  152. package/.mandor/projects/test-fanout/project.jsonl +11 -0
  153. package/.mandor/projects/test-fanout/schema.json +29 -0
  154. package/.mandor/projects/test-fanout/tasks.jsonl +5 -0
  155. package/.mandor/projects/test-linear/events.jsonl +21 -0
  156. package/.mandor/projects/test-linear/features.jsonl +1 -0
  157. package/.mandor/projects/test-linear/issues.jsonl +0 -0
  158. package/.mandor/projects/test-linear/project.jsonl +11 -0
  159. package/.mandor/projects/test-linear/schema.json +29 -0
  160. package/.mandor/projects/test-linear/tasks.jsonl +4 -0
  161. package/.mandor/workspace.json +6 -6
  162. package/README.md +591 -267
  163. package/binaries/darwin-arm64/mandor +0 -0
  164. package/binaries/darwin-arm64.tar.gz +0 -0
  165. package/{mandor → binaries/darwin-x64/mandor} +0 -0
  166. package/binaries/darwin-x64.tar.gz +0 -0
  167. package/binaries/linux-arm64/mandor +0 -0
  168. package/binaries/linux-arm64.tar.gz +0 -0
  169. package/binaries/linux-x64/mandor +0 -0
  170. package/binaries/linux-x64.tar.gz +0 -0
  171. package/binaries/mandor +0 -0
  172. package/binaries/win32-arm64/mandor.exe +0 -0
  173. package/binaries/win32-arm64.tar.gz +0 -0
  174. package/binaries/win32-x64/mandor.exe +0 -0
  175. package/binaries/win32-x64.tar.gz +0 -0
  176. package/package.json +1 -1
  177. package/testscen11/.mandor/projects/proj11/events.jsonl +38 -0
  178. package/testscen11/.mandor/projects/proj11/features.jsonl +3 -0
  179. package/testscen11/.mandor/projects/proj11/issues.jsonl +1 -0
  180. package/testscen11/.mandor/projects/proj11/project.jsonl +11 -0
  181. package/testscen11/.mandor/projects/proj11/schema.json +29 -0
  182. package/testscen11/.mandor/projects/proj11/tasks.jsonl +6 -0
  183. package/testscen11/.mandor/workspace.json +13 -0
  184. package/testscen12/.mandor/workspace.json +13 -0
  185. package/.mandor/projects/api/events.jsonl +0 -9
  186. package/.mandor/projects/api/features.jsonl +0 -1
  187. package/.mandor/projects/api/project.jsonl +0 -11
  188. package/.mandor/projects/api/tasks.jsonl +0 -2
  189. /package/.mandor/projects/{api → cancel-reopen}/schema.json +0 -0
  190. /package/.mandor/projects/{api → config-test}/issues.jsonl +0 -0
@@ -0,0 +1,29 @@
1
+ {
2
+ "version": "mandor.v1",
3
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
4
+ "rules": {
5
+ "task": {
6
+ "dependency": "same_project_only",
7
+ "cycle": "disallowed"
8
+ },
9
+ "feature": {
10
+ "dependency": "cross_project_allowed",
11
+ "cycle": "disallowed"
12
+ },
13
+ "issue": {
14
+ "dependency": "same_project_only",
15
+ "cycle": "disallowed"
16
+ },
17
+ "priority": {
18
+ "levels": [
19
+ "P0",
20
+ "P1",
21
+ "P2",
22
+ "P3",
23
+ "P4",
24
+ "P5"
25
+ ],
26
+ "default": "P3"
27
+ }
28
+ }
29
+ }
File without changes
@@ -0,0 +1,2 @@
1
+ {"layer":"project","type":"created","id":"scope-test","by":"BUDISANTOSO","ts":"2026-02-01T06:12:46.648267Z"}
2
+ {"layer":"feature","type":"created","id":"scope-test-feature-16vL","by":"BUDISANTOSO","ts":"2026-02-01T06:12:51.72955Z"}
@@ -0,0 +1 @@
1
+ {"id":"scope-test-feature-16vL","project_id":"scope-test","name":"Feature-backend","goal":"Backend feature","scope":"backend","priority":"P3","status":"draft","created_at":"2026-02-01T06:12:51.72955Z","updated_at":"2026-02-01T06:12:51.72955Z","created_by":"BUDISANTOSO","updated_by":"BUDISANTOSO"}
File without changes
@@ -0,0 +1,11 @@
1
+ {
2
+ "id": "scope-test",
3
+ "name": "Scope Test",
4
+ "goal": "Testing scope validation",
5
+ "status": "initial",
6
+ "strict": false,
7
+ "created_at": "2026-02-01T06:12:46.648267Z",
8
+ "updated_at": "2026-02-01T06:12:46.648267Z",
9
+ "created_by": "BUDISANTOSO",
10
+ "updated_by": "BUDISANTOSO"
11
+ }
@@ -0,0 +1,29 @@
1
+ {
2
+ "version": "mandor.v1",
3
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
4
+ "rules": {
5
+ "task": {
6
+ "dependency": "same_project_only",
7
+ "cycle": "disallowed"
8
+ },
9
+ "feature": {
10
+ "dependency": "cross_project_allowed",
11
+ "cycle": "disallowed"
12
+ },
13
+ "issue": {
14
+ "dependency": "same_project_only",
15
+ "cycle": "disallowed"
16
+ },
17
+ "priority": {
18
+ "levels": [
19
+ "P0",
20
+ "P1",
21
+ "P2",
22
+ "P3",
23
+ "P4",
24
+ "P5"
25
+ ],
26
+ "default": "P3"
27
+ }
28
+ }
29
+ }
File without changes
@@ -0,0 +1,14 @@
1
+ {"layer":"project","type":"created","id":"soft-delete-test","by":"BUDISANTOSO","ts":"2026-02-01T06:24:12.819109Z"}
2
+ {"layer":"feature","type":"created","id":"soft-delete-test-feature-M6sS","by":"BUDISANTOSO","ts":"2026-02-01T06:24:20.246913Z"}
3
+ {"layer":"task","type":"created","id":"soft-delete-test-feature-M6sS-task-pi21","by":"BUDISANTOSO","ts":"2026-02-01T06:24:26.920548Z"}
4
+ {"layer":"task","type":"ready","id":"soft-delete-test-feature-M6sS-task-pi21","by":"system","ts":"2026-02-01T06:24:26.920548Z"}
5
+ {"layer":"task","type":"updated","id":"soft-delete-test-feature-M6sS-task-pi21","by":"BUDISANTOSO","ts":"2026-02-01T06:24:32.878262Z","changes":["status","reason"]}
6
+ {"layer":"feature","type":"created","id":"soft-delete-test-feature-dGMz","by":"BUDISANTOSO","ts":"2026-02-01T06:25:37.459418Z"}
7
+ {"layer":"task","type":"created","id":"soft-delete-test-feature-dGMz-task-Ip3J","by":"BUDISANTOSO","ts":"2026-02-01T06:25:57.167836Z"}
8
+ {"layer":"task","type":"ready","id":"soft-delete-test-feature-dGMz-task-Ip3J","by":"system","ts":"2026-02-01T06:25:57.167836Z"}
9
+ {"layer":"task","type":"created","id":"soft-delete-test-feature-dGMz-task-ZCE2","by":"BUDISANTOSO","ts":"2026-02-01T06:25:57.191101Z"}
10
+ {"layer":"task","type":"ready","id":"soft-delete-test-feature-dGMz-task-ZCE2","by":"system","ts":"2026-02-01T06:25:57.191101Z"}
11
+ {"layer":"task","type":"created","id":"soft-delete-test-feature-dGMz-task-IQZR","by":"BUDISANTOSO","ts":"2026-02-01T06:25:57.209347Z"}
12
+ {"layer":"task","type":"ready","id":"soft-delete-test-feature-dGMz-task-IQZR","by":"system","ts":"2026-02-01T06:25:57.209347Z"}
13
+ {"layer":"feature","type":"updated","id":"soft-delete-test-feature-dGMz","by":"BUDISANTOSO","ts":"2026-02-01T06:26:10.328183Z","changes":["status","reason"]}
14
+ {"layer":"feature","type":"updated","id":"soft-delete-test-feature-dGMz","by":"BUDISANTOSO","ts":"2026-02-01T06:26:47.812259Z","changes":["status","reason"]}
@@ -0,0 +1,2 @@
1
+ {"id":"soft-delete-test-feature-M6sS","project_id":"soft-delete-test","name":"Feature-soft","goal":"Feature for soft delete test","priority":"P3","status":"draft","created_at":"2026-02-01T06:24:20.246913Z","updated_at":"2026-02-01T06:24:20.246913Z","created_by":"BUDISANTOSO","updated_by":"BUDISANTOSO"}
2
+ {"id":"soft-delete-test-feature-dGMz","project_id":"soft-delete-test","name":"F-del","goal":"Feature for deletion test","priority":"P3","status":"draft","created_at":"2026-02-01T06:25:37.459418Z","updated_at":"2026-02-01T06:26:47.812259Z","created_by":"BUDISANTOSO","updated_by":"BUDISANTOSO"}
File without changes
@@ -0,0 +1,11 @@
1
+ {
2
+ "id": "soft-delete-test",
3
+ "name": "Soft Delete Test",
4
+ "goal": "Testing soft delete semantics",
5
+ "status": "initial",
6
+ "strict": false,
7
+ "created_at": "2026-02-01T06:24:12.819109Z",
8
+ "updated_at": "2026-02-01T06:24:12.819109Z",
9
+ "created_by": "BUDISANTOSO",
10
+ "updated_by": "BUDISANTOSO"
11
+ }
@@ -0,0 +1,29 @@
1
+ {
2
+ "version": "mandor.v1",
3
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
4
+ "rules": {
5
+ "task": {
6
+ "dependency": "same_project_only",
7
+ "cycle": "disallowed"
8
+ },
9
+ "feature": {
10
+ "dependency": "cross_project_allowed",
11
+ "cycle": "disallowed"
12
+ },
13
+ "issue": {
14
+ "dependency": "same_project_only",
15
+ "cycle": "disallowed"
16
+ },
17
+ "priority": {
18
+ "levels": [
19
+ "P0",
20
+ "P1",
21
+ "P2",
22
+ "P3",
23
+ "P4",
24
+ "P5"
25
+ ],
26
+ "default": "P3"
27
+ }
28
+ }
29
+ }
@@ -0,0 +1,4 @@
1
+ {"id":"soft-delete-test-feature-M6sS-task-pi21","feature_id":"soft-delete-test-feature-M6sS","project_id":"soft-delete-test","name":"T1","goal":"Task to soft delete","priority":"P3","status":"cancelled","reason":"Testing soft delete semantics","implementation_steps":["step1","step2","step3"],"test_cases":["none"],"derivable_files":["none"],"library_needs":["none"],"created_at":"2026-02-01T06:24:26.920548Z","updated_at":"2026-02-01T06:24:32.878262Z","created_by":"BUDISANTOSO","updated_by":"BUDISANTOSO"}
2
+ {"id":"soft-delete-test-feature-dGMz-task-Ip3J","feature_id":"soft-delete-test-feature-dGMz","project_id":"soft-delete-test","name":"T-del1","goal":"Task 1","priority":"P3","status":"ready","implementation_steps":["none"],"test_cases":["none"],"derivable_files":["none"],"library_needs":["none"],"created_at":"2026-02-01T06:25:57.167836Z","updated_at":"2026-02-01T06:25:57.167836Z","created_by":"BUDISANTOSO","updated_by":"BUDISANTOSO"}
3
+ {"id":"soft-delete-test-feature-dGMz-task-ZCE2","feature_id":"soft-delete-test-feature-dGMz","project_id":"soft-delete-test","name":"T-del2","goal":"Task 2","priority":"P3","status":"ready","implementation_steps":["none"],"test_cases":["none"],"derivable_files":["none"],"library_needs":["none"],"created_at":"2026-02-01T06:25:57.191101Z","updated_at":"2026-02-01T06:25:57.191101Z","created_by":"BUDISANTOSO","updated_by":"BUDISANTOSO"}
4
+ {"id":"soft-delete-test-feature-dGMz-task-IQZR","feature_id":"soft-delete-test-feature-dGMz","project_id":"soft-delete-test","name":"T-del3","goal":"Task 3","priority":"P3","status":"ready","implementation_steps":["none"],"test_cases":["none"],"derivable_files":["none"],"library_needs":["none"],"created_at":"2026-02-01T06:25:57.209347Z","updated_at":"2026-02-01T06:25:57.209347Z","created_by":"BUDISANTOSO","updated_by":"BUDISANTOSO"}
@@ -0,0 +1,29 @@
1
+ {"layer":"project","type":"created","id":"status-flow","by":"BUDISANTOSO","ts":"2026-02-01T06:30:19.304424Z"}
2
+ {"layer":"feature","type":"created","id":"status-flow-feature-1KPS","by":"BUDISANTOSO","ts":"2026-02-01T06:30:27.030088Z"}
3
+ {"layer":"task","type":"created","id":"status-flow-feature-1KPS-task-Yenh","by":"BUDISANTOSO","ts":"2026-02-01T06:30:35.748976Z"}
4
+ {"layer":"task","type":"ready","id":"status-flow-feature-1KPS-task-Yenh","by":"system","ts":"2026-02-01T06:30:35.748976Z"}
5
+ {"layer":"task","type":"created","id":"status-flow-feature-1KPS-task-OQb8","by":"BUDISANTOSO","ts":"2026-02-01T06:30:42.996719Z"}
6
+ {"layer":"task","type":"blocked","id":"status-flow-feature-1KPS-task-OQb8","by":"system","ts":"2026-02-01T06:30:42.996719Z"}
7
+ {"layer":"task","type":"updated","id":"status-flow-feature-1KPS-task-Yenh","by":"BUDISANTOSO","ts":"2026-02-01T06:30:49.897411Z","changes":["status"]}
8
+ {"layer":"task","type":"ready","id":"status-flow-feature-1KPS-task-OQb8","by":"system","ts":"2026-02-01T06:30:49.922526Z"}
9
+ {"layer":"task","type":"updated","id":"status-flow-feature-1KPS-task-Yenh","by":"BUDISANTOSO","ts":"2026-02-01T06:30:49.92223Z","changes":["status","dependent_unblocked"]}
10
+ {"layer":"feature","type":"created","id":"status-flow-feature-ccT9","by":"BUDISANTOSO","ts":"2026-02-01T06:31:20.817331Z"}
11
+ {"layer":"feature","type":"updated","id":"status-flow-feature-1KPS","by":"BUDISANTOSO","ts":"2026-02-01T06:31:20.841132Z","changes":["status"]}
12
+ {"layer":"feature","type":"updated","id":"status-flow-feature-1KPS","by":"BUDISANTOSO","ts":"2026-02-01T06:31:20.858554Z","changes":["status"]}
13
+ {"layer":"issue","type":"created","id":"status-flow-issue-K3aD","by":"BUDISANTOSO","ts":"2026-02-01T06:31:37.068959Z"}
14
+ {"layer":"issue","type":"ready","id":"status-flow-issue-K3aD","by":"system","ts":"2026-02-01T06:31:37.068959Z"}
15
+ {"layer":"issue","type":"updated","id":"status-flow-issue-K3aD","by":"BUDISANTOSO","ts":"2026-02-01T06:31:43.169136Z","changes":["status"]}
16
+ {"layer":"issue","type":"updated","id":"status-flow-issue-K3aD","by":"BUDISANTOSO","ts":"2026-02-01T06:31:43.184426Z","changes":["status"]}
17
+ {"layer":"feature","type":"created","id":"status-flow-feature-xBaz","by":"BUDISANTOSO","ts":"2026-02-01T06:32:11.302935Z"}
18
+ {"layer":"task","type":"created","id":"status-flow-feature-xBaz-task-avF1","by":"BUDISANTOSO","ts":"2026-02-01T06:32:19.284706Z"}
19
+ {"layer":"task","type":"ready","id":"status-flow-feature-xBaz-task-avF1","by":"system","ts":"2026-02-01T06:32:19.284706Z"}
20
+ {"layer":"task","type":"created","id":"status-flow-feature-xBaz-task-ZFZh","by":"BUDISANTOSO","ts":"2026-02-01T06:32:33.213374Z"}
21
+ {"layer":"task","type":"blocked","id":"status-flow-feature-xBaz-task-ZFZh","by":"system","ts":"2026-02-01T06:32:33.213374Z"}
22
+ {"layer":"task","type":"created","id":"status-flow-feature-xBaz-task-86AB","by":"BUDISANTOSO","ts":"2026-02-01T06:32:40.276103Z"}
23
+ {"layer":"task","type":"blocked","id":"status-flow-feature-xBaz-task-86AB","by":"system","ts":"2026-02-01T06:32:40.276103Z"}
24
+ {"layer":"task","type":"updated","id":"status-flow-feature-xBaz-task-avF1","by":"BUDISANTOSO","ts":"2026-02-01T06:32:49.87046Z","changes":["status"]}
25
+ {"layer":"task","type":"ready","id":"status-flow-feature-xBaz-task-ZFZh","by":"system","ts":"2026-02-01T06:32:49.895342Z"}
26
+ {"layer":"task","type":"updated","id":"status-flow-feature-xBaz-task-avF1","by":"BUDISANTOSO","ts":"2026-02-01T06:32:49.895098Z","changes":["status","dependent_unblocked"]}
27
+ {"layer":"task","type":"updated","id":"status-flow-feature-xBaz-task-ZFZh","by":"BUDISANTOSO","ts":"2026-02-01T06:32:57.379705Z","changes":["status"]}
28
+ {"layer":"task","type":"ready","id":"status-flow-feature-xBaz-task-86AB","by":"system","ts":"2026-02-01T06:32:57.405506Z"}
29
+ {"layer":"task","type":"updated","id":"status-flow-feature-xBaz-task-ZFZh","by":"BUDISANTOSO","ts":"2026-02-01T06:32:57.405236Z","changes":["status","dependent_unblocked"]}
@@ -0,0 +1,3 @@
1
+ {"id":"status-flow-feature-ccT9","project_id":"status-flow","name":"F1-status","goal":"Feature for status flow test","priority":"P3","status":"draft","created_at":"2026-02-01T06:31:20.817331Z","updated_at":"2026-02-01T06:31:20.817331Z","created_by":"BUDISANTOSO","updated_by":"BUDISANTOSO"}
2
+ {"id":"status-flow-feature-1KPS","project_id":"status-flow","name":"F-status","goal":"Feature for status test","priority":"P3","status":"done","created_at":"2026-02-01T06:30:27.030088Z","updated_at":"2026-02-01T06:31:20.858554Z","created_by":"BUDISANTOSO","updated_by":"BUDISANTOSO"}
3
+ {"id":"status-flow-feature-xBaz","project_id":"status-flow","name":"F-unblock","goal":"Feature for unblock test","priority":"P3","status":"draft","created_at":"2026-02-01T06:32:11.302935Z","updated_at":"2026-02-01T06:32:11.302935Z","created_by":"BUDISANTOSO","updated_by":"BUDISANTOSO"}
@@ -0,0 +1 @@
1
+ {"id":"status-flow-issue-K3aD","project_id":"status-flow","name":"I-status","goal":"Issue for status flow test. Problem: None. Impact: None. Acceptance: None.","issue_type":"bug","priority":"P3","status":"resolved","affected_files":["file.js"],"affected_tests":["test.js"],"implementation_steps":["step1"],"created_at":"2026-02-01T06:31:37.068959Z","last_updated_at":"2026-02-01T06:31:43.184426Z","created_by":"BUDISANTOSO","last_updated_by":"BUDISANTOSO"}
@@ -0,0 +1,11 @@
1
+ {
2
+ "id": "status-flow",
3
+ "name": "Status Flow",
4
+ "goal": "Testing status transitions",
5
+ "status": "initial",
6
+ "strict": false,
7
+ "created_at": "2026-02-01T06:30:19.304424Z",
8
+ "updated_at": "2026-02-01T06:30:19.304424Z",
9
+ "created_by": "BUDISANTOSO",
10
+ "updated_by": "BUDISANTOSO"
11
+ }
@@ -0,0 +1,29 @@
1
+ {
2
+ "version": "mandor.v1",
3
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
4
+ "rules": {
5
+ "task": {
6
+ "dependency": "same_project_only",
7
+ "cycle": "disallowed"
8
+ },
9
+ "feature": {
10
+ "dependency": "cross_project_allowed",
11
+ "cycle": "disallowed"
12
+ },
13
+ "issue": {
14
+ "dependency": "same_project_only",
15
+ "cycle": "disallowed"
16
+ },
17
+ "priority": {
18
+ "levels": [
19
+ "P0",
20
+ "P1",
21
+ "P2",
22
+ "P3",
23
+ "P4",
24
+ "P5"
25
+ ],
26
+ "default": "P3"
27
+ }
28
+ }
29
+ }
@@ -0,0 +1,5 @@
1
+ {"id":"status-flow-feature-1KPS-task-OQb8","feature_id":"status-flow-feature-1KPS","project_id":"status-flow","name":"T2","goal":"Task 2","priority":"P3","status":"ready","depends_on":["status-flow-feature-1KPS-task-Yenh"],"implementation_steps":["none"],"test_cases":["none"],"derivable_files":["none"],"library_needs":["none"],"created_at":"2026-02-01T06:30:42.996719Z","updated_at":"2026-02-01T06:30:49.922526Z","created_by":"BUDISANTOSO","updated_by":"BUDISANTOSO"}
2
+ {"id":"status-flow-feature-1KPS-task-Yenh","feature_id":"status-flow-feature-1KPS","project_id":"status-flow","name":"T1","goal":"Task 1","priority":"P3","status":"done","implementation_steps":["none"],"test_cases":["none"],"derivable_files":["none"],"library_needs":["none"],"created_at":"2026-02-01T06:30:35.748976Z","updated_at":"2026-02-01T06:30:49.92223Z","created_by":"BUDISANTOSO","updated_by":"BUDISANTOSO"}
3
+ {"id":"status-flow-feature-xBaz-task-86AB","feature_id":"status-flow-feature-xBaz","project_id":"status-flow","name":"T-unblock3","goal":"Task 3","priority":"P3","status":"ready","depends_on":["status-flow-feature-xBaz-task-ZFZh"],"implementation_steps":["none"],"test_cases":["none"],"derivable_files":["none"],"library_needs":["none"],"created_at":"2026-02-01T06:32:40.276103Z","updated_at":"2026-02-01T06:32:57.405506Z","created_by":"BUDISANTOSO","updated_by":"BUDISANTOSO"}
4
+ {"id":"status-flow-feature-xBaz-task-avF1","feature_id":"status-flow-feature-xBaz","project_id":"status-flow","name":"T-unblock1","goal":"Task 1","priority":"P3","status":"done","implementation_steps":["none"],"test_cases":["none"],"derivable_files":["none"],"library_needs":["none"],"created_at":"2026-02-01T06:32:19.284706Z","updated_at":"2026-02-01T06:32:49.895098Z","created_by":"BUDISANTOSO","updated_by":"BUDISANTOSO"}
5
+ {"id":"status-flow-feature-xBaz-task-ZFZh","feature_id":"status-flow-feature-xBaz","project_id":"status-flow","name":"T-unblock2","goal":"Task 2","priority":"P3","status":"done","depends_on":["status-flow-feature-xBaz-task-avF1"],"implementation_steps":["none"],"test_cases":["none"],"derivable_files":["none"],"library_needs":["none"],"created_at":"2026-02-01T06:32:33.213374Z","updated_at":"2026-02-01T06:32:57.405236Z","created_by":"BUDISANTOSO","updated_by":"BUDISANTOSO"}
@@ -0,0 +1,8 @@
1
+ {"layer":"project","type":"created","id":"task-field-test","by":"BUDISANTOSO","ts":"2026-02-01T06:14:37.96708Z"}
2
+ {"layer":"feature","type":"created","id":"task-field-test-feature-YUYR","by":"BUDISANTOSO","ts":"2026-02-01T06:14:47.522551Z"}
3
+ {"layer":"task","type":"created","id":"task-field-test-feature-YUYR-task-pI6t","by":"BUDISANTOSO","ts":"2026-02-01T06:14:53.652798Z"}
4
+ {"layer":"task","type":"ready","id":"task-field-test-feature-YUYR-task-pI6t","by":"system","ts":"2026-02-01T06:14:53.652798Z"}
5
+ {"layer":"task","type":"created","id":"task-field-test-feature-YUYR-task-XTo7","by":"BUDISANTOSO","ts":"2026-02-01T06:15:29.600115Z"}
6
+ {"layer":"task","type":"ready","id":"task-field-test-feature-YUYR-task-XTo7","by":"system","ts":"2026-02-01T06:15:29.600115Z"}
7
+ {"layer":"task","type":"created","id":"task-field-test-feature-YUYR-task-Dr2K","by":"BUDISANTOSO","ts":"2026-02-01T06:16:08.201203Z"}
8
+ {"layer":"task","type":"ready","id":"task-field-test-feature-YUYR-task-Dr2K","by":"system","ts":"2026-02-01T06:16:08.201203Z"}
@@ -0,0 +1 @@
1
+ {"id":"task-field-test-feature-YUYR","project_id":"task-field-test","name":"Feature-fields","goal":"Feature for field test","priority":"P3","status":"draft","created_at":"2026-02-01T06:14:47.522551Z","updated_at":"2026-02-01T06:14:47.522551Z","created_by":"BUDISANTOSO","updated_by":"BUDISANTOSO"}
File without changes
@@ -0,0 +1,11 @@
1
+ {
2
+ "id": "task-field-test",
3
+ "name": "Task Field Test",
4
+ "goal": "Testing task field storage",
5
+ "status": "initial",
6
+ "strict": false,
7
+ "created_at": "2026-02-01T06:14:37.96708Z",
8
+ "updated_at": "2026-02-01T06:14:37.96708Z",
9
+ "created_by": "BUDISANTOSO",
10
+ "updated_by": "BUDISANTOSO"
11
+ }
@@ -0,0 +1,29 @@
1
+ {
2
+ "version": "mandor.v1",
3
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
4
+ "rules": {
5
+ "task": {
6
+ "dependency": "same_project_only",
7
+ "cycle": "disallowed"
8
+ },
9
+ "feature": {
10
+ "dependency": "cross_project_allowed",
11
+ "cycle": "disallowed"
12
+ },
13
+ "issue": {
14
+ "dependency": "same_project_only",
15
+ "cycle": "disallowed"
16
+ },
17
+ "priority": {
18
+ "levels": [
19
+ "P0",
20
+ "P1",
21
+ "P2",
22
+ "P3",
23
+ "P4",
24
+ "P5"
25
+ ],
26
+ "default": "P3"
27
+ }
28
+ }
29
+ }
@@ -0,0 +1,3 @@
1
+ {"id":"task-field-test-feature-YUYR-task-pI6t","feature_id":"task-field-test-feature-YUYR","project_id":"task-field-test","name":"Task-with-steps","goal":"Task with implementation steps","priority":"P3","status":"ready","implementation_steps":["step1","step2","step3"],"test_cases":["none"],"derivable_files":["none"],"library_needs":["none"],"created_at":"2026-02-01T06:14:53.652798Z","updated_at":"2026-02-01T06:14:53.652798Z","created_by":"BUDISANTOSO","updated_by":"BUDISANTOSO"}
2
+ {"id":"task-field-test-feature-YUYR-task-XTo7","feature_id":"task-field-test-feature-YUYR","project_id":"task-field-test","name":"Task-with-tests","goal":"Task with test cases","priority":"P3","status":"ready","implementation_steps":["none"],"test_cases":["test1","test2","test3"],"derivable_files":["none"],"library_needs":["none"],"created_at":"2026-02-01T06:15:29.600115Z","updated_at":"2026-02-01T06:15:29.600115Z","created_by":"BUDISANTOSO","updated_by":"BUDISANTOSO"}
3
+ {"id":"task-field-test-feature-YUYR-task-Dr2K","feature_id":"task-field-test-feature-YUYR","project_id":"task-field-test","name":"Task-with-metadata","goal":"Task with derivable files and libraries","priority":"P3","status":"ready","implementation_steps":["none"],"test_cases":["none"],"derivable_files":["file1.ts","file2.js"],"library_needs":["lodash","axios"],"created_at":"2026-02-01T06:16:08.201203Z","updated_at":"2026-02-01T06:16:08.201203Z","created_by":"BUDISANTOSO","updated_by":"BUDISANTOSO"}
@@ -0,0 +1,21 @@
1
+ {"layer":"project","type":"created","id":"test-diamond","by":"BUDISANTOSO","ts":"2026-02-01T06:00:25.658842Z"}
2
+ {"layer":"feature","type":"created","id":"test-diamond-feature-N3ws","by":"BUDISANTOSO","ts":"2026-02-01T06:00:30.538992Z"}
3
+ {"layer":"task","type":"created","id":"test-diamond-feature-N3ws-task-KjgK","by":"BUDISANTOSO","ts":"2026-02-01T06:00:35.655835Z"}
4
+ {"layer":"task","type":"ready","id":"test-diamond-feature-N3ws-task-KjgK","by":"system","ts":"2026-02-01T06:00:35.655835Z"}
5
+ {"layer":"task","type":"created","id":"test-diamond-feature-N3ws-task-LnAX","by":"BUDISANTOSO","ts":"2026-02-01T06:00:40.360079Z"}
6
+ {"layer":"task","type":"blocked","id":"test-diamond-feature-N3ws-task-LnAX","by":"system","ts":"2026-02-01T06:00:40.360079Z"}
7
+ {"layer":"task","type":"created","id":"test-diamond-feature-N3ws-task-sTwD","by":"BUDISANTOSO","ts":"2026-02-01T06:00:45.703658Z"}
8
+ {"layer":"task","type":"blocked","id":"test-diamond-feature-N3ws-task-sTwD","by":"system","ts":"2026-02-01T06:00:45.703658Z"}
9
+ {"layer":"task","type":"created","id":"test-diamond-feature-N3ws-task-nU5g","by":"BUDISANTOSO","ts":"2026-02-01T06:00:50.467145Z"}
10
+ {"layer":"task","type":"blocked","id":"test-diamond-feature-N3ws-task-nU5g","by":"system","ts":"2026-02-01T06:00:50.467145Z"}
11
+ {"layer":"task","type":"updated","id":"test-diamond-feature-N3ws-task-KjgK","by":"BUDISANTOSO","ts":"2026-02-01T06:01:05.340696Z","changes":["status"]}
12
+ {"layer":"task","type":"ready","id":"test-diamond-feature-N3ws-task-LnAX","by":"system","ts":"2026-02-01T06:01:05.36418Z"}
13
+ {"layer":"task","type":"ready","id":"test-diamond-feature-N3ws-task-sTwD","by":"system","ts":"2026-02-01T06:01:05.36418Z"}
14
+ {"layer":"task","type":"updated","id":"test-diamond-feature-N3ws-task-KjgK","by":"BUDISANTOSO","ts":"2026-02-01T06:01:05.36396Z","changes":["status","dependent_unblocked"]}
15
+ {"layer":"task","type":"updated","id":"test-diamond-feature-N3ws-task-LnAX","by":"BUDISANTOSO","ts":"2026-02-01T06:01:14.685168Z","changes":["status"]}
16
+ {"layer":"task","type":"updated","id":"test-diamond-feature-N3ws-task-LnAX","by":"BUDISANTOSO","ts":"2026-02-01T06:01:14.707833Z","changes":["status"]}
17
+ {"layer":"task","type":"updated","id":"test-diamond-feature-N3ws-task-sTwD","by":"BUDISANTOSO","ts":"2026-02-01T06:01:24.291564Z","changes":["status"]}
18
+ {"layer":"task","type":"ready","id":"test-diamond-feature-N3ws-task-nU5g","by":"system","ts":"2026-02-01T06:01:24.31615Z"}
19
+ {"layer":"task","type":"updated","id":"test-diamond-feature-N3ws-task-sTwD","by":"BUDISANTOSO","ts":"2026-02-01T06:01:24.315882Z","changes":["status","dependent_unblocked"]}
20
+ {"layer":"task","type":"updated","id":"test-diamond-feature-N3ws-task-nU5g","by":"BUDISANTOSO","ts":"2026-02-01T06:01:35.431952Z","changes":["status"]}
21
+ {"layer":"task","type":"updated","id":"test-diamond-feature-N3ws-task-nU5g","by":"BUDISANTOSO","ts":"2026-02-01T06:01:35.457079Z","changes":["status"]}
@@ -0,0 +1 @@
1
+ {"id":"test-diamond-feature-N3ws","project_id":"test-diamond","name":"feature-diamond","goal":"Feature for diamond test","priority":"P3","status":"draft","created_at":"2026-02-01T06:00:30.538992Z","updated_at":"2026-02-01T06:00:30.538992Z","created_by":"BUDISANTOSO","updated_by":"BUDISANTOSO"}
File without changes
@@ -0,0 +1,11 @@
1
+ {
2
+ "id": "test-diamond",
3
+ "name": "Test Diamond Pattern",
4
+ "goal": "Testing diamond dependency pattern",
5
+ "status": "initial",
6
+ "strict": false,
7
+ "created_at": "2026-02-01T06:00:25.658842Z",
8
+ "updated_at": "2026-02-01T06:00:25.658842Z",
9
+ "created_by": "BUDISANTOSO",
10
+ "updated_by": "BUDISANTOSO"
11
+ }
@@ -0,0 +1,29 @@
1
+ {
2
+ "version": "mandor.v1",
3
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
4
+ "rules": {
5
+ "task": {
6
+ "dependency": "same_project_only",
7
+ "cycle": "disallowed"
8
+ },
9
+ "feature": {
10
+ "dependency": "cross_project_allowed",
11
+ "cycle": "disallowed"
12
+ },
13
+ "issue": {
14
+ "dependency": "same_project_only",
15
+ "cycle": "disallowed"
16
+ },
17
+ "priority": {
18
+ "levels": [
19
+ "P0",
20
+ "P1",
21
+ "P2",
22
+ "P3",
23
+ "P4",
24
+ "P5"
25
+ ],
26
+ "default": "P3"
27
+ }
28
+ }
29
+ }
@@ -0,0 +1,4 @@
1
+ {"id":"test-diamond-feature-N3ws-task-KjgK","feature_id":"test-diamond-feature-N3ws","project_id":"test-diamond","name":"A","goal":"Task A","priority":"P3","status":"done","implementation_steps":["none"],"test_cases":["none"],"derivable_files":["none"],"library_needs":["none"],"created_at":"2026-02-01T06:00:35.655835Z","updated_at":"2026-02-01T06:01:05.36396Z","created_by":"BUDISANTOSO","updated_by":"BUDISANTOSO"}
2
+ {"id":"test-diamond-feature-N3ws-task-LnAX","feature_id":"test-diamond-feature-N3ws","project_id":"test-diamond","name":"B","goal":"Task B","priority":"P3","status":"done","depends_on":["test-diamond-feature-N3ws-task-KjgK"],"implementation_steps":["none"],"test_cases":["none"],"derivable_files":["none"],"library_needs":["none"],"created_at":"2026-02-01T06:00:40.360079Z","updated_at":"2026-02-01T06:01:14.707833Z","created_by":"BUDISANTOSO","updated_by":"BUDISANTOSO"}
3
+ {"id":"test-diamond-feature-N3ws-task-sTwD","feature_id":"test-diamond-feature-N3ws","project_id":"test-diamond","name":"C","goal":"Task C","priority":"P3","status":"done","depends_on":["test-diamond-feature-N3ws-task-KjgK"],"implementation_steps":["none"],"test_cases":["none"],"derivable_files":["none"],"library_needs":["none"],"created_at":"2026-02-01T06:00:45.703658Z","updated_at":"2026-02-01T06:01:24.315882Z","created_by":"BUDISANTOSO","updated_by":"BUDISANTOSO"}
4
+ {"id":"test-diamond-feature-N3ws-task-nU5g","feature_id":"test-diamond-feature-N3ws","project_id":"test-diamond","name":"D","goal":"Task D","priority":"P3","status":"done","depends_on":["test-diamond-feature-N3ws-task-LnAX","test-diamond-feature-N3ws-task-sTwD"],"implementation_steps":["none"],"test_cases":["none"],"derivable_files":["none"],"library_needs":["none"],"created_at":"2026-02-01T06:00:50.467145Z","updated_at":"2026-02-01T06:01:35.457079Z","created_by":"BUDISANTOSO","updated_by":"BUDISANTOSO"}
@@ -0,0 +1,17 @@
1
+ {"layer":"project","type":"created","id":"test-fanin","by":"BUDISANTOSO","ts":"2026-02-01T05:58:00.409806Z"}
2
+ {"layer":"feature","type":"created","id":"test-fanin-feature-2elY","by":"BUDISANTOSO","ts":"2026-02-01T05:58:05.36178Z"}
3
+ {"layer":"task","type":"created","id":"test-fanin-feature-2elY-task-1k9F","by":"BUDISANTOSO","ts":"2026-02-01T05:58:10.043007Z"}
4
+ {"layer":"task","type":"ready","id":"test-fanin-feature-2elY-task-1k9F","by":"system","ts":"2026-02-01T05:58:10.043007Z"}
5
+ {"layer":"task","type":"created","id":"test-fanin-feature-2elY-task-sNR6","by":"BUDISANTOSO","ts":"2026-02-01T05:58:15.880022Z"}
6
+ {"layer":"task","type":"ready","id":"test-fanin-feature-2elY-task-sNR6","by":"system","ts":"2026-02-01T05:58:15.880022Z"}
7
+ {"layer":"task","type":"created","id":"test-fanin-feature-2elY-task-BeRC","by":"BUDISANTOSO","ts":"2026-02-01T05:58:20.574235Z"}
8
+ {"layer":"task","type":"ready","id":"test-fanin-feature-2elY-task-BeRC","by":"system","ts":"2026-02-01T05:58:20.574235Z"}
9
+ {"layer":"task","type":"created","id":"test-fanin-feature-2elY-task-ZfWu","by":"BUDISANTOSO","ts":"2026-02-01T05:58:27.331136Z"}
10
+ {"layer":"task","type":"blocked","id":"test-fanin-feature-2elY-task-ZfWu","by":"system","ts":"2026-02-01T05:58:27.331136Z"}
11
+ {"layer":"task","type":"updated","id":"test-fanin-feature-2elY-task-1k9F","by":"BUDISANTOSO","ts":"2026-02-01T05:58:37.036412Z","changes":["status"]}
12
+ {"layer":"task","type":"updated","id":"test-fanin-feature-2elY-task-1k9F","by":"BUDISANTOSO","ts":"2026-02-01T05:58:37.060027Z","changes":["status"]}
13
+ {"layer":"task","type":"updated","id":"test-fanin-feature-2elY-task-sNR6","by":"BUDISANTOSO","ts":"2026-02-01T05:58:47.618653Z","changes":["status"]}
14
+ {"layer":"task","type":"updated","id":"test-fanin-feature-2elY-task-sNR6","by":"BUDISANTOSO","ts":"2026-02-01T05:58:47.642995Z","changes":["status"]}
15
+ {"layer":"task","type":"updated","id":"test-fanin-feature-2elY-task-BeRC","by":"BUDISANTOSO","ts":"2026-02-01T05:58:57.092866Z","changes":["status"]}
16
+ {"layer":"task","type":"ready","id":"test-fanin-feature-2elY-task-ZfWu","by":"system","ts":"2026-02-01T05:58:57.120372Z"}
17
+ {"layer":"task","type":"updated","id":"test-fanin-feature-2elY-task-BeRC","by":"BUDISANTOSO","ts":"2026-02-01T05:58:57.120048Z","changes":["status","dependent_unblocked"]}
@@ -0,0 +1 @@
1
+ {"id":"test-fanin-feature-2elY","project_id":"test-fanin","name":"feature-fanin","goal":"Feature for fan-in test","priority":"P3","status":"draft","created_at":"2026-02-01T05:58:05.36178Z","updated_at":"2026-02-01T05:58:05.36178Z","created_by":"BUDISANTOSO","updated_by":"BUDISANTOSO"}
File without changes
@@ -0,0 +1,11 @@
1
+ {
2
+ "id": "test-fanin",
3
+ "name": "Test Fan-In Pattern",
4
+ "goal": "Testing fan-in dependency pattern",
5
+ "status": "initial",
6
+ "strict": false,
7
+ "created_at": "2026-02-01T05:58:00.409806Z",
8
+ "updated_at": "2026-02-01T05:58:00.409806Z",
9
+ "created_by": "BUDISANTOSO",
10
+ "updated_by": "BUDISANTOSO"
11
+ }
@@ -0,0 +1,29 @@
1
+ {
2
+ "version": "mandor.v1",
3
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
4
+ "rules": {
5
+ "task": {
6
+ "dependency": "same_project_only",
7
+ "cycle": "disallowed"
8
+ },
9
+ "feature": {
10
+ "dependency": "cross_project_allowed",
11
+ "cycle": "disallowed"
12
+ },
13
+ "issue": {
14
+ "dependency": "same_project_only",
15
+ "cycle": "disallowed"
16
+ },
17
+ "priority": {
18
+ "levels": [
19
+ "P0",
20
+ "P1",
21
+ "P2",
22
+ "P3",
23
+ "P4",
24
+ "P5"
25
+ ],
26
+ "default": "P3"
27
+ }
28
+ }
29
+ }
@@ -0,0 +1,4 @@
1
+ {"id":"test-fanin-feature-2elY-task-ZfWu","feature_id":"test-fanin-feature-2elY","project_id":"test-fanin","name":"M","goal":"Merged task depending on A1, A2, A3","priority":"P3","status":"ready","depends_on":["test-fanin-feature-2elY-task-1k9F","test-fanin-feature-2elY-task-sNR6","test-fanin-feature-2elY-task-BeRC"],"implementation_steps":["none"],"test_cases":["none"],"derivable_files":["none"],"library_needs":["none"],"created_at":"2026-02-01T05:58:27.331136Z","updated_at":"2026-02-01T05:58:57.120372Z","created_by":"BUDISANTOSO","updated_by":"BUDISANTOSO"}
2
+ {"id":"test-fanin-feature-2elY-task-1k9F","feature_id":"test-fanin-feature-2elY","project_id":"test-fanin","name":"A1","goal":"First independent task","priority":"P3","status":"done","implementation_steps":["none"],"test_cases":["none"],"derivable_files":["none"],"library_needs":["none"],"created_at":"2026-02-01T05:58:10.043007Z","updated_at":"2026-02-01T05:58:37.060027Z","created_by":"BUDISANTOSO","updated_by":"BUDISANTOSO"}
3
+ {"id":"test-fanin-feature-2elY-task-sNR6","feature_id":"test-fanin-feature-2elY","project_id":"test-fanin","name":"A2","goal":"Second independent task","priority":"P3","status":"done","implementation_steps":["none"],"test_cases":["none"],"derivable_files":["none"],"library_needs":["none"],"created_at":"2026-02-01T05:58:15.880022Z","updated_at":"2026-02-01T05:58:47.642995Z","created_by":"BUDISANTOSO","updated_by":"BUDISANTOSO"}
4
+ {"id":"test-fanin-feature-2elY-task-BeRC","feature_id":"test-fanin-feature-2elY","project_id":"test-fanin","name":"A3","goal":"Third independent task","priority":"P3","status":"done","implementation_steps":["none"],"test_cases":["none"],"derivable_files":["none"],"library_needs":["none"],"created_at":"2026-02-01T05:58:20.574235Z","updated_at":"2026-02-01T05:58:57.120048Z","created_by":"BUDISANTOSO","updated_by":"BUDISANTOSO"}
@@ -0,0 +1,18 @@
1
+ {"layer":"project","type":"created","id":"test-fanout","by":"BUDISANTOSO","ts":"2026-02-01T05:59:24.715847Z"}
2
+ {"layer":"feature","type":"created","id":"test-fanout-feature-oYIl","by":"BUDISANTOSO","ts":"2026-02-01T05:59:29.020934Z"}
3
+ {"layer":"task","type":"created","id":"test-fanout-feature-oYIl-task-lwhL","by":"BUDISANTOSO","ts":"2026-02-01T05:59:33.866969Z"}
4
+ {"layer":"task","type":"ready","id":"test-fanout-feature-oYIl-task-lwhL","by":"system","ts":"2026-02-01T05:59:33.866969Z"}
5
+ {"layer":"task","type":"created","id":"test-fanout-feature-oYIl-task-KEPz","by":"BUDISANTOSO","ts":"2026-02-01T05:59:38.912543Z"}
6
+ {"layer":"task","type":"blocked","id":"test-fanout-feature-oYIl-task-KEPz","by":"system","ts":"2026-02-01T05:59:38.912543Z"}
7
+ {"layer":"task","type":"created","id":"test-fanout-feature-oYIl-task-YhBZ","by":"BUDISANTOSO","ts":"2026-02-01T05:59:46.04695Z"}
8
+ {"layer":"task","type":"blocked","id":"test-fanout-feature-oYIl-task-YhBZ","by":"system","ts":"2026-02-01T05:59:46.04695Z"}
9
+ {"layer":"task","type":"created","id":"test-fanout-feature-oYIl-task-VVny","by":"BUDISANTOSO","ts":"2026-02-01T05:59:46.071694Z"}
10
+ {"layer":"task","type":"blocked","id":"test-fanout-feature-oYIl-task-VVny","by":"system","ts":"2026-02-01T05:59:46.071694Z"}
11
+ {"layer":"task","type":"created","id":"test-fanout-feature-oYIl-task-JX8a","by":"BUDISANTOSO","ts":"2026-02-01T05:59:46.090369Z"}
12
+ {"layer":"task","type":"blocked","id":"test-fanout-feature-oYIl-task-JX8a","by":"system","ts":"2026-02-01T05:59:46.090369Z"}
13
+ {"layer":"task","type":"updated","id":"test-fanout-feature-oYIl-task-lwhL","by":"BUDISANTOSO","ts":"2026-02-01T05:59:55.6459Z","changes":["status"]}
14
+ {"layer":"task","type":"ready","id":"test-fanout-feature-oYIl-task-KEPz","by":"system","ts":"2026-02-01T05:59:55.664229Z"}
15
+ {"layer":"task","type":"ready","id":"test-fanout-feature-oYIl-task-YhBZ","by":"system","ts":"2026-02-01T05:59:55.664229Z"}
16
+ {"layer":"task","type":"ready","id":"test-fanout-feature-oYIl-task-VVny","by":"system","ts":"2026-02-01T05:59:55.664229Z"}
17
+ {"layer":"task","type":"ready","id":"test-fanout-feature-oYIl-task-JX8a","by":"system","ts":"2026-02-01T05:59:55.664229Z"}
18
+ {"layer":"task","type":"updated","id":"test-fanout-feature-oYIl-task-lwhL","by":"BUDISANTOSO","ts":"2026-02-01T05:59:55.664018Z","changes":["status","dependent_unblocked"]}
@@ -0,0 +1 @@
1
+ {"id":"test-fanout-feature-oYIl","project_id":"test-fanout","name":"feature-fanout","goal":"Feature for fan-out test","priority":"P3","status":"draft","created_at":"2026-02-01T05:59:29.020934Z","updated_at":"2026-02-01T05:59:29.020934Z","created_by":"BUDISANTOSO","updated_by":"BUDISANTOSO"}
File without changes
@@ -0,0 +1,11 @@
1
+ {
2
+ "id": "test-fanout",
3
+ "name": "Test Fan-Out Pattern",
4
+ "goal": "Testing fan-out dependency pattern",
5
+ "status": "initial",
6
+ "strict": false,
7
+ "created_at": "2026-02-01T05:59:24.715847Z",
8
+ "updated_at": "2026-02-01T05:59:24.715847Z",
9
+ "created_by": "BUDISANTOSO",
10
+ "updated_by": "BUDISANTOSO"
11
+ }
@@ -0,0 +1,29 @@
1
+ {
2
+ "version": "mandor.v1",
3
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
4
+ "rules": {
5
+ "task": {
6
+ "dependency": "same_project_only",
7
+ "cycle": "disallowed"
8
+ },
9
+ "feature": {
10
+ "dependency": "cross_project_allowed",
11
+ "cycle": "disallowed"
12
+ },
13
+ "issue": {
14
+ "dependency": "same_project_only",
15
+ "cycle": "disallowed"
16
+ },
17
+ "priority": {
18
+ "levels": [
19
+ "P0",
20
+ "P1",
21
+ "P2",
22
+ "P3",
23
+ "P4",
24
+ "P5"
25
+ ],
26
+ "default": "P3"
27
+ }
28
+ }
29
+ }
@@ -0,0 +1,5 @@
1
+ {"id":"test-fanout-feature-oYIl-task-KEPz","feature_id":"test-fanout-feature-oYIl","project_id":"test-fanout","name":"D1","goal":"Dependent 1","priority":"P3","status":"ready","depends_on":["test-fanout-feature-oYIl-task-lwhL"],"implementation_steps":["none"],"test_cases":["none"],"derivable_files":["none"],"library_needs":["none"],"created_at":"2026-02-01T05:59:38.912543Z","updated_at":"2026-02-01T05:59:55.664229Z","created_by":"BUDISANTOSO","updated_by":"BUDISANTOSO"}
2
+ {"id":"test-fanout-feature-oYIl-task-YhBZ","feature_id":"test-fanout-feature-oYIl","project_id":"test-fanout","name":"D2","goal":"Dependent 2","priority":"P3","status":"ready","depends_on":["test-fanout-feature-oYIl-task-lwhL"],"implementation_steps":["none"],"test_cases":["none"],"derivable_files":["none"],"library_needs":["none"],"created_at":"2026-02-01T05:59:46.04695Z","updated_at":"2026-02-01T05:59:55.664229Z","created_by":"BUDISANTOSO","updated_by":"BUDISANTOSO"}
3
+ {"id":"test-fanout-feature-oYIl-task-VVny","feature_id":"test-fanout-feature-oYIl","project_id":"test-fanout","name":"D3","goal":"Dependent 3","priority":"P3","status":"ready","depends_on":["test-fanout-feature-oYIl-task-lwhL"],"implementation_steps":["none"],"test_cases":["none"],"derivable_files":["none"],"library_needs":["none"],"created_at":"2026-02-01T05:59:46.071694Z","updated_at":"2026-02-01T05:59:55.664229Z","created_by":"BUDISANTOSO","updated_by":"BUDISANTOSO"}
4
+ {"id":"test-fanout-feature-oYIl-task-JX8a","feature_id":"test-fanout-feature-oYIl","project_id":"test-fanout","name":"D4","goal":"Dependent 4","priority":"P3","status":"ready","depends_on":["test-fanout-feature-oYIl-task-lwhL"],"implementation_steps":["none"],"test_cases":["none"],"derivable_files":["none"],"library_needs":["none"],"created_at":"2026-02-01T05:59:46.090369Z","updated_at":"2026-02-01T05:59:55.664229Z","created_by":"BUDISANTOSO","updated_by":"BUDISANTOSO"}
5
+ {"id":"test-fanout-feature-oYIl-task-lwhL","feature_id":"test-fanout-feature-oYIl","project_id":"test-fanout","name":"P","goal":"Parent task","priority":"P3","status":"done","implementation_steps":["none"],"test_cases":["none"],"derivable_files":["none"],"library_needs":["none"],"created_at":"2026-02-01T05:59:33.866969Z","updated_at":"2026-02-01T05:59:55.664018Z","created_by":"BUDISANTOSO","updated_by":"BUDISANTOSO"}