/
spec.json
645 lines (645 loc) · 42.7 KB
/
spec.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
{
"OVERVIEW": {
"UUID": "b18c7bd2-9ffd-4150-aa67-fd1636560d98",
"Responsible": "mra",
"Title": "speccer - a CLI tool for specs",
"Text": "[*speccer*](https://github.com/metakeule/speccer) is a CLI tool \nfor dealing with specs.\n\nIt is a frontend to the [speclib](https://github.com/metakeule/speclib).\n\n",
"Comments": {
"mra": "just a comment",
"reason for state": "other comment"
},
"LastUpdate": "2013-11-30",
"State": "IMPLEMENTING",
"Deadline": "soon",
"EstimatedHours": 2
},
"INFO": {
"Company": "Know GmbH",
"Project": "speclib",
"URL": "http://metakeule.github.io/speccer/spec/spec",
"Language": "en_US",
"DateFormat": "YYYY-MM-DD",
"RequestedBy": [
"mra"
],
"Related": {
"other": "http://metakeule.github.io/speccer/spec/other"
},
"Translations": {
"de_DE": "http://metakeule.github.io/speccer/spec/de_DE/spec"
},
"SupersededBy": {
"new": "http://metakeule.github.io/speccer/spec/new"
},
"Resources": {
"img": "http://metakeule.github.io/speccer/spec/spec.png"
},
"Persons": {
"mra": "Marc René Arns \u003clinux@marcrenearns.de\u003e",
"reason for state": "Reason why a paragraph has the current state"
},
"Parent": "http://metakeule.github.io/speclib/spec/spec.html",
"Approved": true
},
"Sections": {
"CONTRADICTION": [
{
"UUID": "db825b93-fbbb-4442-85e3-89cd899a3699",
"Responsible": "mra",
"Title": "Rights Management vs responsible",
"Text": "**Rights Management** is a **Non Goal** but on the other hand we \nhave persons responsible for paragraphs.\n\nIf anyone may edit any paragraph, then the responsibility\nmust constantly change (and is worthless) or it is false.\n",
"Comments": {
"reason for state": "Yes the responsability should change often in order to request feedback.\nIf multiple persons work on a spec, the spec is considered teamwork\nand the people should work together.\n\nOnly one person is responsible for each paragraph at a single point in\ntime. This could be enforced by external tools as well as rights management\nif necessary. Although with version control it should not be necessary."
},
"LastUpdate": "2013-11-23",
"State": "OBSOLET",
"Deadline": "",
"EstimatedHours": 0
}
],
"DEFINITION": [
{
"UUID": "70a075a0-04ff-4692-9021-e56cb595e00e",
"Responsible": "mra",
"Title": "inherited definitions",
"Text": "All definitions of the speclib apply",
"Comments": {},
"LastUpdate": "2013-11-23",
"State": "FINISHED",
"Deadline": "",
"EstimatedHours": 0
},
{
"UUID": "f1930868-da24-4cb1-a26f-90c20debb975",
"Responsible": "mra",
"Title": "current spec",
"Text": "\nThe current spec is the spec that is loaded from a special file\nin the current directory (`pwd`).\n\nIf the `-language` option is set, the spec is loaded from the file\n`spec_[language].json`, e.g.\n\n spec_en_US.json\n\nOtherwise it is looking for any files matching the regular expression\n\n spec*.json\n\nIf there is just one file matching, the spec is loaded from this file.\nOtherwise an error is thrown mentioning that the language option should\nprobably be set.",
"Comments": {},
"LastUpdate": "2013-11-23",
"State": "FINISHED",
"Deadline": "",
"EstimatedHours": 0
},
{
"UUID": "21431f37-09a5-42ee-a049-20d054acc849",
"Responsible": "mra",
"Title": "name parameter",
"Text": "The parameter passed via `-name` is the name of a spec property (like\n`TRANSLATIONS` with the command `property`) or the name of a paragraph\nproperty (like `STATE` with the command `meta`).\n\n",
"Comments": {},
"LastUpdate": "2013-11-23",
"State": "FINISHED",
"Deadline": "",
"EstimatedHours": 0
},
{
"UUID": "afbc5bfe-c0f1-48a5-8536-3f10370e4576",
"Responsible": "mra",
"Title": "usage parameter",
"Text": "The parameter passed via `-usage` is the name of a filter provided by\n`speccer` for typical usage scenarios.\n\nThere are currently:\n\n- **documentation** filters \n - PROPERTIES\n - META\n - COMMENTS\n - NONGOAL\n - CONTRADICTION\n - UNDECIDED\n - SPEC_END\n - RESOURCES\n - PLANNING\n - AGREED\n - IMPLEMENTING\n - OBSOLET\n- **approval** filters\n - META\n - COMMENTS\n - CONTRADICTION\n - UNDECIDED\n - SPEC_END\n - RESOURCES\n - PLANNING\n - OBSOLET\n- **discussion** filters\n - OVERVIEW\n - AGREED\n - IMPLEMENTING\n - OBSOLET\n - SPEC_END\n- **implementation** filters\n - UNDECIDED\n - PLANNING\n - FINISHED\n - OBSOLET\n",
"Comments": {},
"LastUpdate": "2013-11-23",
"State": "FINISHED",
"Deadline": "",
"EstimatedHours": 0
},
{
"UUID": "cc3a6fd8-fe1d-493c-997f-5f0c0b61dcc7",
"Responsible": "mra",
"Title": "Linefeed export",
"Text": "Every import and export replaces to `\\n` only. \nEditors should be able to handle it, otherwise other tools would be \nneeded to convert before editing.\n\n",
"Comments": {},
"LastUpdate": "2013-11-29",
"State": "FINISHED",
"Deadline": "",
"EstimatedHours": 0
}
],
"FEATURE": [
{
"UUID": "7a6daf30-1bfc-4d97-8e82-dd3ae6f7380e",
"Responsible": "mra",
"Title": "create a new spec",
"Text": "Go into a folder that should contain your spec and run\n\n speccer -cmd create\n\nThis creates a file `spec.json` in the current folder.\n\nIf the `-language` parameter is set (to e.g. `en_US`) it creates\nthe file `spec_en_US.json` instead.\n\nBe aware that the new spec is not valid since there are missing\nproperties. You can validate a spec to see them:\n\n speccer -cmd validate\n\n\n\n",
"Comments": {},
"LastUpdate": "2013-11-29",
"State": "FINISHED",
"Deadline": "",
"EstimatedHours": 0
},
{
"UUID": "50c8c8f8-846f-4a39-81ce-23f869aa9b64",
"Responsible": "mra",
"Title": "validate a spec",
"Text": "Go into a folder that contains your spec and run\n\n speccer -cmd validate\n\nIt it returns nothing your spec is valid.",
"Comments": {},
"LastUpdate": "2013-11-23",
"State": "FINISHED",
"Deadline": "",
"EstimatedHours": 0
},
{
"UUID": "78af57be-97a0-4a06-8ca1-d5b2c13b25b5",
"Responsible": "mra",
"Title": "export markdown to stdout",
"Text": "Go into a folder that contains your spec and run\n\n speccer -cmd markdown\n\nYou might also pass the usage option to filter out some data, e.g.\n\n speccer -cmd markdown -usage \"documentation\"\n\n \n\n",
"Comments": {},
"LastUpdate": "2013-11-29",
"State": "FINISHED",
"Deadline": "",
"EstimatedHours": 0
},
{
"UUID": "3f36007c-3063-4ebb-a5c3-2c9ff0bda510",
"Responsible": "mra",
"Title": "export HTML to stdout",
"Text": "Go into a folder that contains your spec and run\n\n speccer -cmd html\n\nYou might also pass the usage option to filter out some data, e.g.\n\n speccer -cmd html -usage \"documentation\"\n\n\n\n",
"Comments": {},
"LastUpdate": "2013-11-29",
"State": "FINISHED",
"Deadline": "",
"EstimatedHours": 0
},
{
"UUID": "884999ca-4e76-46c6-aeed-ef8aa89fa0e0",
"Responsible": "mra",
"Title": "print property of spec",
"Text": "Go into a folder that contains your spec and run\n\n speccer -cmd property -name COMPANY\n\nto print the `COMPANY` property. The properties are \nall written in high caps and defined in `speclib`.\n\n\n",
"Comments": {},
"LastUpdate": "2013-11-23",
"State": "FINISHED",
"Deadline": "",
"EstimatedHours": 0
},
{
"UUID": "e42f5105-74ee-448a-899d-68af690e6e88",
"Responsible": "mra",
"Title": "set property of spec",
"Text": "Go into a folder that contains your spec and run\n\n speccer -cmd property -name COMPANY -set acme\n\nto set the `COMPANY` property to `acme`. The properties are \nall written in high caps and defined in `speclib`.\n\n\n",
"Comments": {},
"LastUpdate": "2013-11-23",
"State": "FINISHED",
"Deadline": "",
"EstimatedHours": 0
},
{
"UUID": "98f3bcf3-ea1b-4119-8219-ac33b6ad1f30",
"Responsible": "mra",
"Title": "unset property of spec",
"Text": "Go into a folder that contains your spec and run\n\n speccer -cmd property -name PARENT -uset\n\nto unset the `PARENT` property. Only the following properties can\nbe unset:\n\n- `REQUESTEDBY`\n- `RELATED`\n- `TRANSLATIONS`\n- `SUPERSEDEDBY`\n- `RESOURCES`\n- `PARENT`\n- `PERSONS`\n",
"Comments": {},
"LastUpdate": "2013-11-23",
"State": "FINISHED",
"Deadline": "",
"EstimatedHours": 0
},
{
"UUID": "0e04c354-207d-4e24-a536-6d12f7db08b8",
"Responsible": "mra",
"Title": "add markdown text to a section",
"Text": "Go into a folder that contains your spec and write your text\ninto a file, let's say `new.md`.\n\nPut the title of the paragraph in the first line \nand the body in the next lines.\nThen run\n\n speccer -cmd add -sec SCENARIO -resp 'Your Name' -set new.md\n\nto add title and body to the `SCENARIO` section.\nThe available sections are defined in the `speclib`.\n\n\n\n\n",
"Comments": {},
"LastUpdate": "2013-11-23",
"State": "FINISHED",
"Deadline": "",
"EstimatedHours": 0
},
{
"UUID": "936f9d4a-6c84-4a3b-a496-b3022f9fc78c",
"Responsible": "mra",
"Title": "show list of paragraphs",
"Text": "Go into a folder that contains your spec and run\n\n speccer -cmd positions -sec SCENARIO\n\nto see a list of all paragraphs of the `SCENARIO` section.\n\nEach paragraph has the title printed preceeded by \na number indicating the position of the paragraph inside\nthe section. This position can be used to print or change\nthe paragraph.\n\n\n",
"Comments": {},
"LastUpdate": "2013-11-29",
"State": "FINISHED",
"Deadline": "",
"EstimatedHours": 0
},
{
"UUID": "4df2be31-ef24-4630-a8e0-587ab43b4c38",
"Responsible": "mra",
"Title": "show content of a paragraph",
"Text": "Go into a folder that contains your spec.\nYou will need to know the position of the paragraph\nyou want to see. Therefor you might want to first \nprint all positions of the section (here `SCENARIO`) \nwith\n\n speccer -cmd positions -sec SCENARIO\n\nthen you can run\n\n speccer -cmd text -sec SCENARIO -at 3\n\nto see the text for the 3rd paragraph in the\n`SCENARIO` section.\n\nIf you want to include comments and meta data, run\n\n speccer -cmd text -sec SCENARIO -at 3 -with-comments -with-meta\n\n\n",
"Comments": {},
"LastUpdate": "2013-11-29",
"State": "FINISHED",
"Deadline": "",
"EstimatedHours": 0
},
{
"UUID": "ef854fec-9cec-4912-ae8d-6a0e2ceac098",
"Responsible": "mra",
"Title": "change content of a paragraph",
"Text": "Go into a folder that contains your spec.\nYou will need to know the position of the paragraph\nyou want to see. Therefor you might want to first \nprint all positions of the section (here `SCENARIO`) \nwith\n\n speccer -cmd positions -sec SCENARIO\n\nthen you can run\n\n speccer -cmd text -sec SCENARIO -at 3 \u003e temp.md\n\nto save the current text and comments for the 3rd paragraph in the\n`SCENARIO` section to the file `temp.md`.\n\nNow fire up your editor to change the content. Then run\n\n speccer -cmd text -sec SCENARIO -at 3 -set temp.md\n\nto set the text of the 3rd paragraph in the `SCENARIO` section.\n\nThe comments and meta data (including the title) of the \n3rd paragraph are not modified by this operation. \nSo you may want to change them too.\n\n\n\n\n\n",
"Comments": {},
"LastUpdate": "2013-11-29",
"State": "FINISHED",
"Deadline": "",
"EstimatedHours": 0
},
{
"UUID": "6daa3b1a-0cda-4861-b935-527474415efb",
"Responsible": "mra",
"Title": "see, add and change comment to a paragraph",
"Text": "Go into a folder that contains your spec.\nYou will need to know the position of the paragraph\nyou want to see. Therefor you might want to first \nprint all positions of the section (here `SCENARIO`) \nwith\n\n speccer -cmd positions -sec SCENARIO\n\nthen you can run\n\n speccer -cmd comment -sec SCENARIO -at 3\n\nto see the current comments for the 3rd paragraph in the\n`SCENARIO` section.\n\nNow if the author of your comment already made a comment to \nthis paragraph and if you want to append to this old comment,\nyou first have to save the old one.\n\nTo do this, run \n\n speccer -cmd comment -sec SCENARIO -at 3 -author Jim \u003e temp.md\n\nto save the comment of `Jim` to the file `temp.md`. Then you can edit this\nfile. If you just want to remove the old comment or if there was no\ncomment you may simply start with an empty file `temp.md`.\n\nAfter you edited the file, run \n\n speccer -cmd comment -sec SCENARIO -at 3 -author Jim -set temp.md\n\nto set the comment of `Jim` on the 3rd paragraph of the `SCENARIO` section\nto the content of the file `temp.md`.\n\n\n",
"Comments": {},
"LastUpdate": "2013-11-29",
"State": "FINISHED",
"Deadline": "",
"EstimatedHours": 0
},
{
"UUID": "322afa61-0ddf-4743-b7b5-fbfcf953acee",
"Responsible": "mra",
"Title": "move a paragraph",
"Text": "Go into a folder that contains your spec.\nYou will need to know the position of the paragraph\nyou want to move. Therefor you might want to first \nprint all positions of the section (here `SCENARIO`) \nwith\n\n speccer -cmd positions -sec SCENARIO\n\nthen you can run\n\n speccer -cmd move -sec SCENARIO -at 3 -to 1\n\nto move the 3rd paragraph in the `SCENARIO` section to be the first.\n\n\n",
"Comments": {},
"LastUpdate": "2013-11-29",
"State": "FINISHED",
"Deadline": "",
"EstimatedHours": 0
},
{
"UUID": "0c570c6c-39c5-43c2-ba60-5368260fd448",
"Responsible": "mra",
"Title": "delete a paragraph",
"Text": "Go into a folder that contains your spec.\nYou will need to know the position of the paragraph\nyou want to delete. Therefor you might want to first \nprint all positions of the section (here `SCENARIO`) \nwith\n\n speccer -cmd positions -sec SCENARIO\n\nthen you can run\n\n speccer -cmd rm -sec SCENARIO -at 3\n\nto remove the 3rd paragraph in the `SCENARIO` section.\n\n\n",
"Comments": {},
"LastUpdate": "2013-11-29",
"State": "FINISHED",
"Deadline": "",
"EstimatedHours": 0
},
{
"UUID": "e9fa657c-1700-4bbe-b265-beb420eb661c",
"Responsible": "mra",
"Title": "see and change meta data of a paragraph",
"Text": "Go into a folder that contains your spec.\nYou will need to know the position of the paragraph\nyou want to see the meta data. Therefor you might want to first \nprint all positions of the section (here `SCENARIO`) \nwith\n\n speccer -cmd positions -sec SCENARIO\n\nthen you can run\n\n speccer -cmd meta -sec SCENARIO -at 3\n\nto see all meta data of the 3rd paragraph in the `SCENARIO` section.\n\nIf you want to change a datum you will have to pass the name:\n\n speccer -cmd meta -sec SCENARIO -at 3 -name RESPONSIBLE -set Jim\n\n\n\n\n",
"Comments": {},
"LastUpdate": "2013-11-29",
"State": "FINISHED",
"Deadline": "",
"EstimatedHours": 0
},
{
"UUID": "e3373cdc-d9c3-45ab-bc00-41d8118df8e1",
"Responsible": "mra",
"Title": "shortcuts",
"Text": "Some commands and options are hard to remember.\nBut instead of bake new options into `speccer` we\ndeliver an alias file you could use in your bash or zsh shell.\n\nTo use the `bash` / `zsh` shortcuts, copy the `aliases.sh`\ninto your home directory\n\n cp aliases.sh ~/.speccer_aliases.sh\n\nand write the following into your `.bashrc`\n\n . ~/.speccer_aliases.sh\n\nThen you will have access to the following shortcuts\n(in bold is an example input to put after the alias).\n\n#### General\n`spec_create` \n`spec_validate` \n`spec_copy` \n\n#### Markdown export\n`spec_markdown` \n`spec_markdown-doc` \n`spec_markdown-approve` \n`spec_markdown-discuss` \n`spec_markdown-implement` \n`spec_markdown-clean` \n\n#### HTML export\n`spec_html` \n`spec_html-doc` \n`spec_html-approve` \n`spec_html-discuss` \n`spec_html-implement` \n`spec_html-clean` \n\n#### Spec property getters\n`spec-requestedby` \n`spec-related` \n`spec-translations` \n`spec-supersededby` \n`spec-resources` \n`spec-parent` \n`spec-company` \n`spec-project` \n`spec-persons` \n`spec-url` \n`spec-language` \n`spec-dateformat` \n`spec-approved` \n\n#### Spec property unsetters\n`spec_uset-requestedby` \n`spec_uset-related` \n`spec_uset-translations` \n`spec_uset-supersededby` \n`spec_uset-resources` \n`spec_uset-parent` \n`spec_uset-persons` \n\n#### Spec property setters\n`spec_set-requestedby` **Jim** \n`spec_set-related` **'{\"other\": \"http://other.com/spec\"}'** \n`spec_set-translations` **'{\"de_DE\": \"http://de.other.com/spec\"}'** \n`spec_set-supersededby` **'{\"v2\": \"http://other.com/v2/spec\"}'** \n`spec_set-resources` **'{\"ER diagramm\": \"http://other.com/er.png\"}'** \n`spec_set-parent` **'http://other.com/parent-spec'** \n`spec_set-company` **acme** \n`spec_set-project` **'my project'** \n`spec_set-url` **'http://greatspec.com/spec'** \n`spec_set-language` **en_US** \n`spec_set-dateformat` **YYYY-MM-DD** \n`spec_set-approved` **true** \n`spec_set-persons` **'{\"PP\": \"Paul Panther \u003cpaul@panther.com\u003e\"}'** \n\n#### Add Sections\n`spec_add-SCENARIO` **new.md** \n`spec_add-CONTRADICTION` **new.md** \n`spec_add-DEFINITION` **new.md** \n`spec_add-FEATURE` **new.md** \n`spec_add-NONGOAL` **new.md** \n`spec_add-UNDECIDED` **new.md** \n\n#### Show Sections\n`spec-OVERVIEW` \n`spec-SCENARIO-at` **2** \n`spec-CONTRADICTION-at` **5** \n`spec-DEFINITION-at` **20** \n`spec-FEATURE-at` **1** \n`spec-NONGOAL-at` **2** \n`spec-UNDECIDED-at` **5** \n\n#### Show Sections with comments and meta\n`spec-OVERVIEW-full` \n`spec-SCENARIO-full-at` **2** \n`spec-CONTRADICTION-full-at` **2** \n`spec-DEFINITION-full-at` **5** \n`spec-FEATURE-full-at` **2** \n`spec-NONGOAL-full-at` **7** \n`spec-UNDECIDED-full-at` **2** \n\n#### Get list of Paragraphs for all section\n`spec_ls` \n\n#### Get list of Paragraphs for a section\n`spec_ls-SCENARIO` \n`spec_ls-CONTRADICTION` \n`spec_ls-DEFINITION` \n`spec_ls-FEATURE` \n`spec_ls-NONGOAL` \n`spec_ls-UNDECIDED` \n\n#### Get uuids of Paragraphs for a section\n`spec_uuids`\n`spec_uuids-SCENARIO`\n`spec_uuids-CONTRADICTION`\n`spec_uuids-DEFINITION`\n`spec_uuids-FEATURE`\n`spec_uuids-NONGOAL`\n`spec_uuids-UNDECIDED`\n\n#### Get Comments of Paragraphs for a section\n`spec_comment-OVERVIEW` \n`spec_comment-SCENARIO-at` **2** \n`spec_comment-CONTRADICTION-at` **2** \n`spec_comment-DEFINITION-at` **2** \n`spec_comment-FEATURE-at` **2** \n`spec_comment-NONGOAL-at` **2** \n`spec_comment-UNDECIDED-at` **2** \n\n#### Set Comment of Paragraph for a section\n`spec_comment_replace-OVERVIEW` **new.md** \n`spec_comment_replace-SCENARIO` **new.md -at 2** \n`spec_comment_replace-CONTRADICTION` **new.md -at 2** \n`spec_comment_replace-DEFINITION` **new.md -at 2** \n`spec_comment_replace-FEATURE` **new.md -at 2** \n`spec_comment_replace-NONGOAL` **new.md -at 2** \n`spec_comment_replace-UNDECIDED` **new.md -at 2** \n\n#### Replace Sections\n`spec_replace-OVERVIEW` **new.md** \n`spec_replace-SCENARIO` **new.md -at 2** \n`spec_replace-CONTRADICTION` **new.md -at 2** \n`spec_replace-DEFINITION` **new.md -at 2** \n`spec_replace-FEATURE` **new.md -at 2** \n`spec_replace-NONGOAL` **new.md -at 2** \n`spec_replace-UNDECIDED` **new.md -at 2** \n\n#### Move Sections\n`spec_mv-SCENARIO-at` **2 -to 5** \n`spec_mv-CONTRADICTION-at` **2 -to 5** \n`spec_mv-DEFINITION-at` **2 -to 5** \n`spec_mv-FEATURE-at` **2 -to 5** \n`spec_mv-NONGOAL-at` **2 -to 5** \n`spec_mv-UNDECIDED-at` **2 -to 5** \n\n#### Remove Sections\n`spec_rm-SCENARIO-at` **2** \n`spec_rm-CONTRADICTION-at` **2** \n`spec_rm-DEFINITION-at` **2** \n`spec_rm-FEATURE-at` **2** \n`spec_rm-NONGOAL-at` **2** \n`spec_rm-UNDECIDED-at` **2** \n\n#### Get Meta Data of Overview / Spec\n`spec-RESPONSIBLE` \n`spec-STATE` \n`spec-DEADLINE` \n`spec-LASTUPDATE` \n`spec-ESTIMATEDHOURS` \n`spec-TITLE` \n`spec-UUID`\n\n#### Get Meta Data of Section\n`spec-SCENARIO-RESPONSIBLE-at` **2** \n`spec-SCENARIO-STATE-at` **2** \n`spec-SCENARIO-DEADLINE-at` **2** \n`spec-SCENARIO-LASTUPDATE-at` **2** \n`spec-SCENARIO-ESTIMATEDHOURS-at` **2** \n`spec-SCENARIO-TITLE-at` **2** \n`spec-SCENARIO-UUID-at` **2** \n\n`spec-CONTRADICTION-RESPONSIBLE-at` **2** \n`spec-CONTRADICTION-STATE-at` **2** \n`spec-CONTRADICTION-DEADLINE-at` **2** \n`spec-CONTRADICTION-LASTUPDATE-at` **2** \n`spec-CONTRADICTION-ESTIMATEDHOURS-at` **2** \n`spec-CONTRADICTION-TITLE-at` **2** \n`spec-CONTRADICTION-UUID-at` **2** \n\n`spec-DEFINITION-RESPONSIBLE-at` **2** \n`spec-DEFINITION-STATE-at` **2** \n`spec-DEFINITION-DEADLINE-at` **2** \n`spec-DEFINITION-LASTUPDATE-at` **2** \n`spec-DEFINITION-ESTIMATEDHOURS-at` **2** \n`spec-DEFINITION-TITLE-at` **2** \n`spec-DEFINITION-UUID-at` **2** \n\n`spec-FEATURE-RESPONSIBLE-at` **2** \n`spec-FEATURE-STATE-at` **2** \n`spec-FEATURE-DEADLINE-at` **2** \n`spec-FEATURE-LASTUPDATE-at` **2** \n`spec-FEATURE-ESTIMATEDHOURS-at` **2** \n`spec-FEATURE-TITLE-at` **2** \n`spec-FEATURE-UUID-at` **2** \n\n`spec-NONGOAL-RESPONSIBLE-at` **2** \n`spec-NONGOAL-STATE-at` **2** \n`spec-NONGOAL-DEADLINE-at` **2** \n`spec-NONGOAL-LASTUPDATE-at` **2** \n`spec-NONGOAL-ESTIMATEDHOURS-at` **2** \n`spec-NONGOAL-TITLE-at` **2** \n`spec-NONGOAL-UUID-at` **2** \n\n`spec-UNDECIDED-RESPONSIBLE-at` **2** \n`spec-UNDECIDED-STATE-at` **2** \n`spec-UNDECIDED-DEADLINE-at` **2** \n`spec-UNDECIDED-LASTUPDATE-at` **2** \n`spec-UNDECIDED-ESTIMATEDHOURS-at` **2** \n`spec-UNDECIDED-TITLE-at` **2** \n`spec-NONGOAL-UUID-at` **2** \n\n#### Set Meta Data of Overview / Spec\n`spec_set-RESPONSIBLE` **'Peter Pan'** \n`spec_set-PLANNING` \n`spec_set-AGREED` \n`spec_set-IMPLEMENTING` \n`spec_set-FINISHED` \n`spec_set-OBSOLET` \n`spec_set-DEADLINE` **'2014-12-24'** \n`spec_set-ESTIMATEDHOURS` **12** \n`spec_set-TITLE` **'my title'** \n\n#### Set Meta Data of Section\n\n`spec_set-SCENARIO-RESPONSIBLE` **'Peter Pan' -at 2** \n`spec_set-SCENARIO-PLANNING` **-at 2** \n`spec_set-SCENARIO-AGREED` **-at 2** \n`spec_set-SCENARIO-IMPLEMENTING` **-at 2** \n`spec_set-SCENARIO-FINISHED` **-at 2** \n`spec_set-SCENARIO-OBSOLET` **-at 2** \n`spec_set-SCENARIO-DEADLINE` **'2014-12-24' -at 2** \n`spec_set-SCENARIO-ESTIMATEDHOURS` **12 -at 2** \n`spec_set-SCENARIO-TITLE` **'my title' -at 3** \n\n`spec_set-CONTRADICTION-RESPONSIBLE` **'Peter Pan' -at 2** \n`spec_set-CONTRADICTION-PLANNING` **-at 2** \n`spec_set-CONTRADICTION-AGREED` **-at 2** \n`spec_set-CONTRADICTION-IMPLEMENTING` **-at 2** \n`spec_set-CONTRADICTION-FINISHED` **-at 2** \n`spec_set-CONTRADICTION-OBSOLET` **-at 2** \n`spec_set-CONTRADICTION-DEADLINE` **'2014-12-24' -at 2** \n`spec_set-CONTRADICTION-ESTIMATEDHOURS` **3 -at 2** \n`spec_set-CONTRADICTION-TITLE` **'my title' -at 3** \n\n`spec_set-DEFINITION-RESPONSIBLE` **'Peter Pan' -at 2** \n`spec_set-DEFINITION-PLANNING` **-at 2** \n`spec_set-DEFINITION-AGREED` **-at 2** \n`spec_set-DEFINITION-IMPLEMENTING` **-at 2** \n`spec_set-DEFINITION-FINISHED` **-at 2** \n`spec_set-DEFINITION-OBSOLET` **-at 2** \n`spec_set-DEFINITION-DEADLINE` **'2014-12-24' -at 2** \n`spec_set-DEFINITION-ESTIMATEDHOURS` **3 -at 2** \n`spec_set-DEFINITION-TITLE` **'my title' -at 3** \n\n`spec_set-FEATURE-RESPONSIBLE` **'Peter Pan' -at 2** \n`spec_set-FEATURE-PLANNING` **-at 2** \n`spec_set-FEATURE-AGREED` **-at 2** \n`spec_set-FEATURE-IMPLEMENTING` **-at 2** \n`spec_set-FEATURE-FINISHED` **-at 2** \n`spec_set-FEATURE-OBSOLET` **-at 2** \n`spec_set-FEATURE-DEADLINE` **'2014-12-24' -at 2** \n`spec_set-FEATURE-ESTIMATEDHOURS` **3 -at 2** \n`spec_set-FEATURE-TITLE` **'my title' -at 3** \n\n`spec_set-NONGOAL-RESPONSIBLE` **'Peter Pan' -at 2** \n`spec_set-NONGOAL-PLANNING` **-at 2** \n`spec_set-NONGOAL-AGREED` **-at 2** \n`spec_set-NONGOAL-IMPLEMENTING` **-at 2** \n`spec_set-NONGOAL-FINISHED` **-at 2** \n`spec_set-NONGOAL-OBSOLET` **-at 2** \n`spec_set-NONGOAL-DEADLINE` **'2014-12-24' -at 2** \n`spec_set-NONGOAL-ESTIMATEDHOURS` **3 -at 2** \n`spec_set-NONGOAL-TITLE` **'my title' -at 3** \n\n`spec_set-UNDECIDED-RESPONSIBLE` **'Peter Pan' -at 2** \n`spec_set-UNDECIDED-PLANNING` **-at 2** \n`spec_set-UNDECIDED-AGREED` **-at 2** \n`spec_set-UNDECIDED-IMPLEMENTING` **-at 2** \n`spec_set-UNDECIDED-FINISHED` **-at 2** \n`spec_set-UNDECIDED-OBSOLET` **-at 2** \n`spec_set-UNDECIDED-DEADLINE` **'2014-12-24' -at 2** \n`spec_set-UNDECIDED-ESTIMATEDHOURS` **3 -at 2** \n`spec_set-UNDECIDED-TITLE` **'my title' -at 3** \n\n",
"Comments": {},
"LastUpdate": "2013-11-29",
"State": "FINISHED",
"Deadline": "",
"EstimatedHours": 0
},
{
"UUID": "98aa38cd-1fd4-49ff-88ae-6c5f42e0ec89",
"Responsible": "mra",
"Title": "adding multiple paragraphs to a section in one go",
"Text": "Go into a folder that contains your spec.\n\nCreate a new file (e.g. `new.md`) and write your paragraphs\ninto this file.\n\nEach paragraph should hold its title inside its first line\nand should end with a line containing `***`.\n\nThen run\n\n speccer -cmd add-multi -sec SCENARIO -resp Jim -set new.md\n\nto add multiple paragraphs to the SCENARIO section as defined in\n`new.md` with all having the responsible set to Jim.\n\n",
"Comments": {},
"LastUpdate": "2013-11-23",
"State": "PLANNING",
"Deadline": "",
"EstimatedHours": 0
},
{
"UUID": "ad6af27a-b991-488e-9d56-09bf33f181e3",
"Responsible": "mra",
"Title": "fix breakage caused by changes in the speclib",
"Text": "The `speclib` changed in incompatible ways. This affects also \nthe format of the **json** file.\n\n### TODO\n\n- fix speccer to conform to the new API\n- manually convert the existing `spec.json` of speccer \n to the new format",
"Comments": {},
"LastUpdate": "2013-11-24",
"State": "FINISHED",
"Deadline": "",
"EstimatedHours": 2
},
{
"UUID": "ccc8d79d-6618-44c7-878e-72e295301e8b",
"Responsible": "mra",
"Title": "setting multiple comments to a paragraph in one go",
"Text": "Go into a folder that contains your spec.\n\nCreate a new file (e.g. `new.md`) and write the comments\ninto this file.\n\nEach comment should hold its author inside the first line\nand should end with a line containing `***`\n\nYou will need to know the position of the paragraph\nyou want to set the comments to. Therefor you might want to first \nprint all positions of the section (here `SCENARIO`) \nwith\n\n speccer -cmd positions -sec SCENARIO\n\nthen you can run\n\n speccer -cmd comment-multi -sec SCENARIO -at 3 -set new.md\n\nto set multiple comments to the 3rd paragraph of the `SCENARIO` \nsection as defined in `new.md`.\n\n ",
"Comments": {},
"LastUpdate": "2013-11-23",
"State": "PLANNING",
"Deadline": "",
"EstimatedHours": 0
},
{
"UUID": "bdb1bb6e-6c96-4138-b896-4c678466c767",
"Responsible": "mra",
"Title": "change states",
"Text": "some states make no sense for some sections, e.g.\n\n- `NONGOAL` section can't be \"implemented\" in any \n meaningful way\n\nIn think the following states should change the name:\n\n- `APPROVED` =\u003e `AGREED`\n- `PARTLY_IMPLEMENTED` =\u003e `IMPLEMENTING`\n- `FULLY_IMPLEMENTED` =\u003e `FINISHED`\n\n",
"Comments": {},
"LastUpdate": "2013-11-24",
"State": "FINISHED",
"Deadline": "",
"EstimatedHours": 3
},
{
"UUID": "5f326a27-19b8-42c1-b98a-7589e309c0b7",
"Responsible": "mra",
"Title": "packing multiple paragraphs to one single paragraph",
"Text": "Go into a folder that contains your spec.\n\nYou will need to know the positions of the paragraph you want\nto pack. Therefor you might want to first \nprint all positions of the section (here `SCENARIO`) \nwith\n\n speccer -cmd positions -sec SCENARIO\n\nthen you can run\n\n speccer -cmd pack -sec SCENARIO -packing '[3,4,5]' -resp Jim -title 'all together'\n\nto pack the paragraphs no 3,4 and 5 of the `SCENARIO` section into a\nnew paragraph with the title `all together` and the responsible `Jim`.\nThe previous titles are inserted as subheadings and the previous paragraphs\nare deleted.\n",
"Comments": {},
"LastUpdate": "2013-11-23",
"State": "PLANNING",
"Deadline": "",
"EstimatedHours": 0
},
{
"UUID": "bb295d1a-4609-44e8-84fb-d42486e2f9fa",
"Responsible": "mra",
"Title": "move paragraph from one section to another",
"Text": "Go into a folder that contains your spec.\nYou will need to know the position of the paragraph\nyou want to move. Therefor you might want to first \nprint all positions of the section (here `SCENARIO`) \nwith\n\n speccer -cmd positions -sec SCENARIO\n\nthen you can run\n\n speccer -cmd setsec -sec SCENARIO -at 3 -tosec NONGOAL\n\nto move the 3rd paragraph in the `SCENARIO` section \nto the `NONGOAL` section.\n\n\n",
"Comments": {},
"LastUpdate": "2013-11-23",
"State": "AGREED",
"Deadline": "",
"EstimatedHours": 0
},
{
"UUID": "a1af5f0a-b5a3-4fef-a6c0-10a91bea14ec",
"Responsible": "mra",
"Title": "get the uuids of a section",
"Text": "Go into a folder that contains your spec and run\n\n speccer -cmd uuids -sec SCENARIO\n\nto see a list of all paragraphs of the `SCENARIO` section.\n\nEach paragraph has the position and the uuid followed by \nthe title of the paragraph.\n\n\n",
"Comments": {},
"LastUpdate": "2013-11-24",
"State": "FINISHED",
"Deadline": "",
"EstimatedHours": 0
},
{
"UUID": "7e686080-17ba-4885-bcb9-f5de5da2c227",
"Responsible": "mra",
"Title": "copy spec and create new uuids for every paragraph",
"Text": "Go into a folder that contains the spec you want to copy and run\n\n speccer -cmd copy \u003e target/spec.json\n\nThis creates a file `spec.json` in the folder `target` as copy\nof the current spec. Inside the copy every `UUID` is replaced \nby a new one and all comments are removed.\n\nBe aware that the copy may not be valid since there may be missing\nproperties. You can validate the new copy like this:\n\n cd target && speccer -cmd validate\n\n",
"Comments": {},
"LastUpdate": "2013-11-29",
"State": "AGREED",
"Deadline": "",
"EstimatedHours": 0
}
],
"NONGOAL": [
{
"UUID": "141dd94c-d5f8-4b15-aac0-c72eedcd173c",
"Responsible": "mra",
"Title": "No GUI",
"Text": "To have a GUI would be a project on its own.\nHowever such a project could also be external and be built \nupon *speccer*.\n",
"Comments": {},
"LastUpdate": "2013-11-23",
"State": "FINISHED",
"Deadline": "",
"EstimatedHours": 0
},
{
"UUID": "12f5da6a-dce7-4926-ae14-1fe55d452207",
"Responsible": "mra",
"Title": "No Database",
"Text": "`speccer` will operate on plain text json files only.\nThere will be no way to have a database and search.\nA database could however exchange data with `speccer`\nvia json files.\n\nSince each paragraph and therefor the spec (via `OVERVIEW` \nparagraph) has its own `UUID` it should be easy to archive\nthem in a database and make them searchable.",
"Comments": {},
"LastUpdate": "2013-11-23",
"State": "FINISHED",
"Deadline": "",
"EstimatedHours": 0
},
{
"UUID": "f66e5709-8c6a-4605-94b0-a19561b35a0b",
"Responsible": "mra",
"Title": "No versioning",
"Text": "`speccer` will not do any backups or have versions.\nYou are advised to use a version control system to save your\nspecs or make backups by a backup tool.\n",
"Comments": {},
"LastUpdate": "2013-11-23",
"State": "FINISHED",
"Deadline": "",
"EstimatedHours": 0
},
{
"UUID": "e1ba4fa3-3c9d-4dc7-9c40-b72c8ea5a2b1",
"Responsible": "mra",
"Title": "No editing",
"Text": "`speccer` will have any functionality of an editor.\nYou may however replace parts of the spec by exporting them\nto your favourite editor and reimport them when you are finished.\n",
"Comments": {},
"LastUpdate": "2013-11-23",
"State": "FINISHED",
"Deadline": "",
"EstimatedHours": 0
},
{
"UUID": "ec87b659-7df4-46da-a54a-853e1483a22e",
"Responsible": "mra",
"Title": "No merging of specs",
"Text": "`speccer` won't provide any mechanism to merge specs.\nSince you can export and import parts of the specs in\nplain text or markdown, it is not hard to merge by hand.",
"Comments": {},
"LastUpdate": "2013-11-23",
"State": "FINISHED",
"Deadline": "",
"EstimatedHours": 0
},
{
"UUID": "f4523a32-adec-494c-a122-1db47f1686a7",
"Responsible": "mra",
"Title": "No rights management",
"Text": "`speccer` won't have any rights management baked in. \nYou could manage the viewing and changing rights for\na single spec by the filesystem.\n\nIf you need finer control, you need to write a wrapper\naround `speccer` or the `speclib`.",
"Comments": {},
"LastUpdate": "2013-11-23",
"State": "FINISHED",
"Deadline": "",
"EstimatedHours": 0
},
{
"UUID": "08e57c5f-aa21-4c18-936f-3fc85b8a4bdd",
"Responsible": "mra",
"Title": "No multiple comments per author and paragraph",
"Text": "With `speclib` (and therefor `speccer` too),\na single author can only have one comment per paragraph.\n\nWe consider this a good thing, since it forces the spec\nto be split up in several paragraphs if they get too many\ncomments. The spec will benefit from it.\n\nAlso it is possible to have comments of arbitrary length.",
"Comments": {},
"LastUpdate": "2013-11-23",
"State": "FINISHED",
"Deadline": "",
"EstimatedHours": 0
},
{
"UUID": "51b6987d-b12a-4e94-92fd-14e8c46c9afe",
"Responsible": "mra",
"Title": "No 'threads'",
"Text": "Again this is a decision by `speclib` and considered a good \nthing. There should not be comments on comments and endless\ndiscussions. Instead the comments should be directed to a \nparagraph and decision should be made soon.\n\nThen the different topics should seperate into the different\nsections like `UNDECIDED`, `CONTRADICTIONS`, `DEFINITIONS`,\n`FEATURES` etc. and there should be multiple paragraphs \nwhich may each have their own state of consense and comments.\n",
"Comments": {},
"LastUpdate": "2013-11-23",
"State": "FINISHED",
"Deadline": "",
"EstimatedHours": 0
},
{
"UUID": "34a9b1ae-bfb4-4d23-b4b1-1f07b223dc9f",
"Responsible": "mra",
"Title": "No order of comments",
"Text": "Again this is a decision by `speclib`.\nSince each author may just have one comment per paragraph, \nthere is no point in have an order for comments.\n\nHowever their is an order of paragraphs and that could \nbe changed.\n",
"Comments": {},
"LastUpdate": "2013-11-23",
"State": "FINISHED",
"Deadline": "",
"EstimatedHours": 0
},
{
"UUID": "b1156de4-cd51-46a0-afd5-35ada4deb2c8",
"Responsible": "mra",
"Title": "No text generation",
"Text": "Since the specs format is based on json, it is very easy \nand flexible to have own templates and copy them.",
"Comments": {},
"LastUpdate": "2013-11-23",
"State": "FINISHED",
"Deadline": "",
"EstimatedHours": 0
},
{
"UUID": "d39da0b6-6f52-4985-b352-003a7fcd352a",
"Responsible": "mra",
"Title": "No PDF export",
"Text": "There are great tools to convert from HTML to PDF, like `wkhtmltopdf` and\nalso markdown to pdf converter like `pandoc`. Since `speccer` exports \nto HTML and markdown you should be able to use these tools to generate\nPDFs.",
"Comments": {},
"LastUpdate": "2013-11-23",
"State": "FINISHED",
"Deadline": "",
"EstimatedHours": 0
},
{
"UUID": "dbe28598-cb0a-4f48-aaea-7a4caca9ce09",
"Responsible": "mra",
"Title": "No Translations for SPECS",
"Text": "There is rudimentary support for translations of key words that\nare automatically inserted via `speclib`.\n\nIf your language is not supported, it is very easy to translate \non your own. A simple bash-script will do. You only have to\nreplace the keys as they are in the translations folders.\n\nYou might also contribute your translations to the project.\n\nHowever for the main text of the specs they should be translated\nby creating a new spec of each language and telling the other\nspecs of the translation in the `TRANSLATIONS` section of the \nspecs.",
"Comments": {},
"LastUpdate": "2013-11-23",
"State": "FINISHED",
"Deadline": "",
"EstimatedHours": 0
},
{
"UUID": "b7e022fa-cadb-4458-851d-49a0cb022b3e",
"Responsible": "mra",
"Title": "No time tracking",
"Text": "Each paragraph has a field `ESTIMATEDHOURS` that could be used \nto do basic scheduling.\n\nAn external tool could then collect the estimated hours and \ncompare them to the real time to drive conclusions about the \nschedule.\n\nMore time tracking functionality is not part of this project.\n",
"Comments": {},
"LastUpdate": "2013-11-23",
"State": "FINISHED",
"Deadline": "",
"EstimatedHours": 0
},
{
"UUID": "8d824161-9ca4-4a18-9c84-f716033d8737",
"Responsible": "mra",
"Title": "No translation of options",
"Text": "In order to be able to associate the wordings of the options\nto the corresponding keys in the json file and the untranslated\nspecs the options will not be translated.",
"Comments": {},
"LastUpdate": "2013-11-23",
"State": "FINISHED",
"Deadline": "",
"EstimatedHours": 0
}
],
"SCENARIO": [
{
"UUID": "6d9cb892-ab9f-4236-bcb2-184aff7de019",
"Responsible": "mra",
"Title": "Create Specification",
"Text": "Mike wants to create a specification. He gets a clean\nstarting point with `speccer`.",
"Comments": {
"mra": "comment one",
"reason for state": "comment2"
},
"LastUpdate": "2013-11-24",
"State": "FINISHED",
"Deadline": "",
"EstimatedHours": 0
},
{
"UUID": "ed61b3ca-b0b3-499d-af64-308d6c06abfc",
"Responsible": "mra",
"Title": "Add comments",
"Text": "Mike receives comments for his specification.\nHe wants to add them without hassle.\n",
"Comments": {},
"LastUpdate": "2013-11-23",
"State": "FINISHED",
"Deadline": "",
"EstimatedHours": 0
},
{
"UUID": "ae2bfd27-9e91-48b2-8430-02f12741dccd",
"Responsible": "mra",
"Title": "Editable",
"Text": "Mike wants to update his specification with is\neditor.",
"Comments": {},
"LastUpdate": "2013-11-23",
"State": "FINISHED",
"Deadline": "",
"EstimatedHours": 0
},
{
"UUID": "f949981f-f0d0-4288-8eae-eb3fad0a9d05",
"Responsible": "mra",
"Title": "Scriptability",
"Text": "Gill wants to change specifications with a script.",
"Comments": {},
"LastUpdate": "2013-11-23",
"State": "FINISHED",
"Deadline": "",
"EstimatedHours": 0
},
{
"UUID": "3e437143-8f7f-42ea-bceb-15ff28eb40df",
"Responsible": "mra",
"Title": "Import and export",
"Text": "Gill wants to read import and export specifications\nfrom different places.",
"Comments": {},
"LastUpdate": "2013-11-23",
"State": "FINISHED",
"Deadline": "",
"EstimatedHours": 0
},
{
"UUID": "d97d2941-ec37-43db-a210-29c033d52dc7",
"Responsible": "mra",
"Title": "View as HTML and markdown",
"Text": "Sue wants to read the specifications in HTML and \nbe able to mail them as markdown.\n",
"Comments": {},
"LastUpdate": "2013-11-23",
"State": "FINISHED",
"Deadline": "",
"EstimatedHours": 0
},
{
"UUID": "1df1af64-22fe-48bf-954a-6ca01aecfa84",
"Responsible": "mra",
"Title": "Filter for documentation",
"Text": "Peter wants to create a documentation from the spec and\nwants the unneccessary informations to be filtered.",
"Comments": {},
"LastUpdate": "2013-11-23",
"State": "FINISHED",
"Deadline": "",
"EstimatedHours": 0
},
{
"UUID": "743a3aa4-273b-4d89-aa3f-7ad9f466daac",
"Responsible": "mra",
"Title": "Filter for implementation",
"Text": "Anne wants to implement parts of the specification.\nShe just wants to read the parts that are ready\nto be implemented.",
"Comments": {},
"LastUpdate": "2013-11-23",
"State": "FINISHED",
"Deadline": "",
"EstimatedHours": 0
},
{
"UUID": "472220e2-848b-4629-a8cb-9bb0140cebc8",
"Responsible": "mra",
"Title": "Templating",
"Text": "John wants to reuse specs. But the new spec with their parts should get \nnew UUIDs to be saved in the Database.",
"Comments": {},
"LastUpdate": "2013-11-29",
"State": "AGREED",
"Deadline": "",
"EstimatedHours": 0
}
],
"UNDECIDED": []
}
}