Skip to content

Commit b965483

Browse files
committed
docs(spm): regenerate markdown with hyperlinked node references
1 parent bb992fa commit b965483

10 files changed

Lines changed: 394 additions & 394 deletions

File tree

.spm/CHANGES.md

Lines changed: 45 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@ doc_type: "changes"
1212
Establishes the core domain model with layered abstraction, decisions, changes, and invariants.
1313

1414
- Affects:
15-
- DEC1
16-
- DEC2
17-
- DEC7
15+
- [DEC1](./DECISIONS.md#dec1--separate-domain-from-process-from-evolution)
16+
- [DEC2](./DECISIONS.md#dec2--make-decisions-first-class-entities)
17+
- [DEC7](./DECISIONS.md#dec7--append-only-history)
1818

1919
Scope:
2020
- INT1
@@ -59,8 +59,8 @@ Operations:
5959
Extends the model with process, artefact, and projection node families.
6060

6161
- Affects:
62-
- DEC3
63-
- DEC4
62+
- [DEC3](./DECISIONS.md#dec3--distinguish-invariants-from-principles-from-policies)
63+
- [DEC4](./DECISIONS.md#dec4--add-process-modelling)
6464

6565
Scope:
6666
- CON5
@@ -89,8 +89,8 @@ Operations:
8989
Defines how SysProM may be encoded in files, including single-document, multi-document, and recursive folder forms.
9090

9191
- Affects:
92-
- DEC5
93-
- DEC6
92+
- [DEC5](./DECISIONS.md#dec5--format-agnostic-with-markdown-as-primary-representation)
93+
- [DEC6](./DECISIONS.md#dec6--recursive-composition-using-same-conventions)
9494

9595
Scope:
9696
- CON6
@@ -133,9 +133,9 @@ Operations:
133133
Adds the external reference and internalisation mechanism with typed roles.
134134

135135
- Affects:
136-
- DEC8
137-
- DEC4
138-
- DEC2
136+
- [DEC8](./DECISIONS.md#dec8--support-external-resources-via-reference-and-internalisation)
137+
- [DEC4](./DECISIONS.md#dec4--add-process-modelling)
138+
- [DEC2](./DECISIONS.md#dec2--make-decisions-first-class-entities)
139139

140140
Scope:
141141
- CON7
@@ -160,7 +160,7 @@ Operations:
160160

161161
Adds the decision, change, and node lifecycle state machines as protocols with stages and ordering.
162162

163-
- Affects: DEC4
163+
- Affects: [DEC4](./DECISIONS.md#dec4--add-process-modelling)
164164

165165
Scope:
166166
- PROT1
@@ -182,7 +182,7 @@ Operations:
182182

183183
Adds conformance requirements, missing invariants, security and extensibility policies, non-linear evolution capabilities, and complete node/relationship type vocabularies to make the JSON self-contained.
184184

185-
- Affects: DEC2
185+
- Affects: [DEC2](./DECISIONS.md#dec2--make-decisions-first-class-entities)
186186

187187
Scope:
188188
- INV28
@@ -226,7 +226,7 @@ Operations:
226226
Adds support for text fields (description, context, rationale, internalised) to accept either a string or an array of strings.
227227
Updates the JSON schema, Zod definitions, and specification.
228228

229-
- Affects: DEC9
229+
- Affects: [DEC9](./DECISIONS.md#dec9--allow-array-of-lines-for-text-fields)
230230

231231
Scope:
232232
- INV21
@@ -250,7 +250,7 @@ Replaces open z.string() types with z.enum() for node types, statuses, relations
250250
Introduces labelledEnum() helper that defines values and labels in one place.
251251
Derives SECTION_LABELS, RELATIONSHIP_LABELS, and reverse lookups from the label maps.
252252

253-
- Affects: DEC10
253+
- Affects: [DEC10](./DECISIONS.md#dec10--use-strict-enums-for-core-types)
254254

255255
Scope:
256256
- INV22
@@ -272,7 +272,7 @@ Operations:
272272

273273
README generator now only links to files that contain nodes for the given subsystem.
274274

275-
- Affects: DEC11
275+
- Affects: [DEC11](./DECISIONS.md#dec11--only-link-to-present-files-in-readme)
276276

277277
Scope:
278278
- POL19
@@ -294,7 +294,7 @@ Operations:
294294

295295
Removes the Navigation section and Document Roles table from generated READMEs. The file naming convention is self-documenting.
296296

297-
- Affects: DEC12
297+
- Affects: [DEC12](./DECISIONS.md#dec12--remove-navigation-and-document-roles-from-readme)
298298

299299
Scope:
300300
- DEC8
@@ -314,7 +314,7 @@ Operations:
314314
Updates INV3 to require must_preserve only when a decision affects domain nodes.
315315
Decisions affecting only non-domain nodes (realisations, policies, process nodes) should but are not required to identify preserved invariants.
316316

317-
- Affects: DEC13
317+
- Affects: [DEC13](./DECISIONS.md#dec13--layer-dependent-invariant-preservation)
318318

319319
Scope:
320320
- INV3
@@ -337,7 +337,7 @@ Worked examples become artefact nodes (ART2, ART3) with example SysProM graphs a
337337
Naming rationale is already captured in D8.
338338
Specification is already captured as the JSON itself — distilled/Specification.md is redundant.
339339

340-
- Affects: DEC14
340+
- Affects: [DEC14](./DECISIONS.md#dec14--internalise-design-archive-into-sysprom-json)
341341

342342
Scope:
343343
- ART1
@@ -361,7 +361,7 @@ Subsystems that would produce a single file over 100 lines are now split into mu
361361
Subsystems of the same node type are automatically grouped into type-named directories (e.g. elements/, artefacts/).
362362
Both heuristics are automatic — no user configuration needed.
363363

364-
- Affects: DEC15
364+
- Affects: [DEC15](./DECISIONS.md#dec15--size-based-subsystem-splitting)
365365

366366
Scope:
367367
- POL20
@@ -387,7 +387,7 @@ Generator reverses the mapping to produce valid Spec-Kit markdown from SysProM g
387387
CLI adds import, export, sync, and diff subcommands under sysprom speckit.
388388
Tests cover all 5 parser functions (40 cases) and all 5 generator functions (28 cases), plus round-trip fidelity.
389389

390-
- Affects: DEC16
390+
- Affects: [DEC16](./DECISIONS.md#dec16--add-bidirectional-spec-kit-interoperability)
391391

392392
Scope:
393393
- DEC16
@@ -419,7 +419,7 @@ Two new mutate helpers (addPlanTask, updatePlanTask) follow the immutable doc-in
419419
task list supports --pending and --json flags enabling agent scripting via jq.
420420
AGENTS.md documents the complete subagent workflow: discover, claim, progress, complete.
421421

422-
- Affects: DEC17
422+
- Affects: [DEC17](./DECISIONS.md#dec17--add-task-subcommand-for-change-plan-tracking)
423423

424424
Scope:
425425
- DEC17
@@ -442,7 +442,7 @@ Operations:
442442

443443
New spm plan command with five subcommands: init (scaffold feature skeleton), add-task (add tasks with optional --parent for nesting), status (workflow completeness report), progress (per-task ASCII progress bars), and gate (phase readiness validation). Phases are change nodes in PROT-IMPL.subsystem; subtasks nest recursively via child subsystems. Includes isTaskDone and countTasks helpers for recursive completion tracking. Updated generateTasks and parseTasks to use change-only model.
444444

445-
- Implements: DEC18
445+
- Implements: [DEC18](./DECISIONS.md#dec18--recursive-change-nodes-for-planning)
446446

447447
- Status: complete
448448

@@ -453,15 +453,15 @@ Scope:
453453

454454
Extended lifecycle schema to accept ISO date strings alongside booleans. Added temporal query functions: timeline (chronological events), nodeHistory (single node history), stateAt (system state at a point in time). Updated markdown rendering and parsing for date lifecycle values. Added timeline and state-at subcommands to spm query.
455455

456-
- Implements: DEC19
456+
- Implements: [DEC19](./DECISIONS.md#dec19--extend-lifecycle-with-temporal-timestamps)
457457

458458
- Status: complete
459459

460460
### CHG18 — Migrate CLI to Commander.js
461461

462462
Replace manual process.argv parsing across all CLI command files with Commander.js declarative command definitions. Add a doc generation script that walks Commander's command tree to produce markdown files for TypeDoc's projectDocuments feature.
463463

464-
- Implements: DEC20
464+
- Implements: [DEC20](./DECISIONS.md#dec20--adopt-commanderjs-for-cli)
465465

466466
- Status: complete
467467

@@ -474,7 +474,7 @@ Replace manual process.argv parsing across all CLI command files with Commander.
474474

475475
Configure TypeDoc for markdown API docs (docs/api/), HTML site generation (site/), and auto-generated CLI reference (docs/cli/) from Commander.js metadata. Add @param/@returns JSDoc tags to all public functions. Use typedoc-plugin-zod to render Zod-inferred types cleanly.
476476

477-
- Implements: DEC21
477+
- Implements: [DEC21](./DECISIONS.md#dec21--adopt-typedoc-for-documentation)
478478

479479
- Status: complete
480480

@@ -495,7 +495,7 @@ Operations:
495495

496496
Add turbo.json with task dependency graph for typecheck, compile, schema, test, and doc generation tasks. Restructure package.json scripts into atomic _-prefixed tasks orchestrated by turbo. Turbo manages output caching and directory cleaning.
497497

498-
- Implements: DEC22
498+
- Implements: [DEC22](./DECISIONS.md#dec22--adopt-turborepo-for-build-orchestration)
499499

500500
- Status: complete
501501

@@ -515,7 +515,7 @@ Operations:
515515

516516
Set up GitHub Actions CI workflow with quality checks, docs generation, GitHub Pages deployment, and npm publishing via OIDC trusted publishers. Add commitlint with husky hooks, semantic-release with all commit types triggering releases, and Dependabot for dependency updates.
517517

518-
- Implements: DEC23
518+
- Implements: [DEC23](./DECISIONS.md#dec23--enforce-conventional-commits-and-automated-releases)
519519

520520
- Status: complete
521521

@@ -528,7 +528,7 @@ Set up GitHub Actions CI workflow with quality checks, docs generation, GitHub P
528528

529529
Replace all as type coercions across library and CLI code with runtime validation. Use Zod .is() and .safeParse() for domain type narrowing, isRecord() for object checks, instanceof for error handling, and properly typed Commander action handlers.
530530

531-
- Implements: DEC24
531+
- Implements: [DEC24](./DECISIONS.md#dec24--eliminate-type-assertions)
532532

533533
- Status: complete
534534

@@ -541,7 +541,7 @@ Replace all as type coercions across library and CLI code with runtime validatio
541541

542542
Update package.json entry points to reference compiled JavaScript in dist/. Move tsx from dependencies to devDependencies. Change CLI shebang to #!/usr/bin/env node.
543543

544-
- Implements: DEC25
544+
- Implements: [DEC25](./DECISIONS.md#dec25--ship-compiled-javascript)
545545

546546
- Status: complete
547547

@@ -554,7 +554,7 @@ Update package.json entry points to reference compiled JavaScript in dist/. Move
554554

555555
Add nextId() function and NODE_ID_PREFIX map. Make --id optional on the add command — auto-generates from type prefix + next available number.
556556

557-
- Implements: DEC26
557+
- Implements: [DEC26](./DECISIONS.md#dec26--auto-generate-node-ids)
558558

559559
- Status: complete
560560

@@ -567,7 +567,7 @@ Add nextId() function and NODE_ID_PREFIX map. Make --id optional on the add comm
567567

568568
Add auto-option IDs, spm init, --sync, coloured output, --json on mutations, spm search, spm graph, spm rename, spm check, shell completions, and --dry-run.
569569

570-
- Implements: DEC27
570+
- Implements: [DEC27](./DECISIONS.md#dec27--cli-ux-improvements)
571571

572572
- Status: complete
573573

@@ -580,7 +580,7 @@ Add auto-option IDs, spm init, --sync, coloured output, --json on mutations, spm
580580

581581
Create defineCommand() with Zod schema introspection for Commander generation and doc extraction. Migrate all 16 CLI commands to single-file definitions in src/cli/commands/. Delete old run() files.
582582

583-
- Implements: DEC28
583+
- Implements: [DEC28](./DECISIONS.md#dec28--unify-cli-with-zod-driven-command-definitions)
584584

585585
- Status: complete
586586

@@ -596,7 +596,7 @@ Scope:
596596

597597
Create defineOperation infrastructure, define operations for all domain functions, refactor CLI commands to thin adapters, update exports.
598598

599-
- Implements: DEC29
599+
- Implements: [DEC29](./DECISIONS.md#dec29--unify-library-api-and-cli-with-defineoperation)
600600

601601
- Status: complete
602602

@@ -625,7 +625,7 @@ Scope:
625625

626626
Add a Claude Code plugin to the SysProM repository with skills, commands, hooks, and agents for provenance-aware development workflows. The plugin is pure markdown — no compiled code. Commands call spm if available, falling back to npx -y sysprom after npm publication. Distribution via GitHub marketplace (marketplace.json in .claude-plugin/).
627627

628-
- Implements: DEC30
628+
- Implements: [DEC30](./DECISIONS.md#dec30--distribute-sysprom-as-a-claude-code-plugin)
629629

630630
- Status: introduced
631631

@@ -641,7 +641,7 @@ Add a Claude Code plugin to the SysProM repository with skills, commands, hooks,
641641

642642
Add a unified 'spm sync' command that performs bidirectional synchronisation between JSON and Markdown representations by default, with flags for precise conflict handling.
643643

644-
- Implements: DEC31
644+
- Implements: [DEC31](./DECISIONS.md#dec31--bidirectional-sync-by-default)
645645

646646
- Status: complete
647647

@@ -665,7 +665,7 @@ Scope:
665665

666666
Add an MCP server at src/mcp/index.ts that wraps SysProM's programmatic API as MCP tools over stdio transport. Add sysprom-mcp bin entry to package.json. Add @modelcontextprotocol/sdk dependency. Add .mcp.json to the plugin referencing npx -y sysprom-mcp. Tools: validate, stats, query-nodes, query-node, query-relationships, trace, add-node, remove-node, update-node, add-relationship, remove-relationship, timeline, state-at.
667667

668-
- Implements: DEC32
668+
- Implements: [DEC32](./DECISIONS.md#dec32--add-mcp-server-for-programmatic-api-access)
669669

670670
- Status: complete
671671

@@ -684,7 +684,7 @@ Add an MCP server at src/mcp/index.ts that wraps SysProM's programmatic API as M
684684

685685
### CHG31 — Implement Keyed Provider Registry for External Formats
686686

687-
- Implements: DEC33
687+
- Implements: [DEC33](./DECISIONS.md#dec33--abstract-external-format-interop-into-keyed-provider-registry)
688688

689689
- Status: proposed
690690

@@ -706,7 +706,7 @@ Add an MCP server at src/mcp/index.ts that wraps SysProM's programmatic API as M
706706

707707
### CHG32 — Implement Safe Graph Removal
708708

709-
- Implements: DEC34
709+
- Implements: [DEC34](./DECISIONS.md#dec34--safe-graph-removal-with-soft-delete-default)
710710

711711
- Status: complete
712712

@@ -729,8 +729,8 @@ Add an MCP server at src/mcp/index.ts that wraps SysProM's programmatic API as M
729729

730730
### CHG33 — Implement Graph Mutation Safety Guards
731731

732-
- Implements: DEC35
733-
- Depends on: CHG32
732+
- Implements: [DEC35](./DECISIONS.md#dec35--graph-mutation-safety-guards)
733+
- Depends on: [CHG32](#chg32--implement-safe-graph-removal)
734734

735735
- Status: complete
736736

@@ -754,7 +754,7 @@ Add an MCP server at src/mcp/index.ts that wraps SysProM's programmatic API as M
754754

755755
Make input arg optional with priority-based auto-detection (.spm.json > .spm.md > .spm/ > glob). Rework init command to support optional path with context-dependent format and --format flag.
756756

757-
- Implements: DEC36
757+
- Implements: [DEC36](./DECISIONS.md#dec36--default-input-resolution-and-init-command)
758758

759759
- Status: complete
760760

@@ -775,13 +775,13 @@ Scope:
775775

776776
Implement YAML serialisation (single-file and multi-document) and multi-file JSON support with 8 new CLI commands.
777777

778-
- Implements: DEC37
778+
- Implements: [DEC37](./DECISIONS.md#dec37--add-yaml-and-multi-file-json-serialisation-formats)
779779

780780
### CHG36 — Convert file-path positional args to flags
781781

782782
Move path/input/output positional arguments to --flags in init, json2md, md2json, sync, speckit (import/export/sync/diff), and plan init commands.
783783

784-
- Implements: DEC38
784+
- Implements: [DEC38](./DECISIONS.md#dec38--convert-file-path-positional-args-to-flags)
785785

786786
#### Plan
787787

@@ -799,7 +799,7 @@ Move path/input/output positional arguments to --flags in init, json2md, md2json
799799

800800
Add saveDocument calls to all MCP write operations
801801

802-
- Implements: DEC39
802+
- Implements: [DEC39](./DECISIONS.md#dec39--fix-mcp-write-operations-not-persisting)
803803

804804
Scope:
805805
- src/mcp/server.ts
@@ -808,7 +808,7 @@ Scope:
808808

809809
Check if path ends with correct suffix before appending
810810

811-
- Implements: DEC40
811+
- Implements: [DEC40](./DECISIONS.md#dec40--fix-init-path-suffix-doubling)
812812

813813
Scope:
814814
- src/cli/commands/init.ts

0 commit comments

Comments
 (0)