dxcomplete 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/README.md +18 -10
  2. package/dist/init.js +19 -0
  3. package/dist/mcp/docs.d.ts +18 -2
  4. package/dist/mcp/docs.js +201 -13
  5. package/dist/mcp/server.js +761 -47
  6. package/dist/runtime/check.d.ts +1 -1
  7. package/dist/runtime/records.d.ts +95 -4
  8. package/dist/runtime/records.js +640 -11
  9. package/dist/validate.js +2 -0
  10. package/docs/codex-integration.md +45 -18
  11. package/docs/glossary.md +39 -7
  12. package/docs/index.md +2 -1
  13. package/docs/model.md +3 -3
  14. package/docs/operating-guide.md +116 -0
  15. package/docs/taxonomy.md +12 -6
  16. package/docs/workflows.md +5 -3
  17. package/package.json +20 -2
  18. package/scripts/smoke-mcp-http.mjs +460 -6
  19. package/src/init.ts +35 -0
  20. package/src/mcp/docs.ts +234 -14
  21. package/src/mcp/server.ts +1138 -83
  22. package/src/runtime/records.ts +914 -12
  23. package/src/validate.ts +2 -0
  24. package/templates/AGENTS.md +30 -0
  25. package/templates/process/controls.yml +10 -6
  26. package/templates/process/diagrams/01-intake-triage.mmd +5 -5
  27. package/templates/process/diagrams/02-product-definition.mmd +1 -1
  28. package/templates/process/diagrams/06-change-release-control.mmd +5 -7
  29. package/templates/process/diagrams/07-deployment-operations.mmd +2 -2
  30. package/templates/process/diagrams/08-support-incident-management.mmd +5 -4
  31. package/templates/process/diagrams/09-problem-improvement.mmd +4 -3
  32. package/templates/process/diagrams/10-risk-control-management.mmd +6 -4
  33. package/templates/process/diagrams/11-audit-evidence-capture.mmd +1 -1
  34. package/templates/process/taxonomy.yml +91 -17
  35. package/templates/process/workflows.yml +10 -9
  36. package/website/flow.html +1 -0
  37. package/website/glossary.html +37 -8
  38. package/website/index.html +2 -1
  39. package/website/objects.html +68 -11
  40. package/website/operating-guide.html +165 -0
  41. package/website/outcomes.html +1 -0
  42. package/website/phase-build.html +1 -0
  43. package/website/phase-elicit.html +1 -0
  44. package/website/phase-go-live.html +2 -1
  45. package/website/phase-measure.html +1 -0
  46. package/website/phase-operate.html +1 -0
  47. package/website/phase-orient.html +1 -0
  48. package/website/phase-weigh.html +1 -0
  49. package/website/roles.html +1 -0
package/README.md CHANGED
@@ -1,19 +1,23 @@
1
1
  # DX Complete
2
2
 
3
- DX Complete is an exploratory npm package for installing a reusable documentation, process, and MCP route kit into a Next.js workspace project.
3
+ DX Complete installs a process, documentation, and MCP route scaffold into a Next.js workspace so a service can track decisions, requirements, tasks, changes, incidents, support, operations, and measurement over time.
4
4
 
5
- The broader product premise is:
6
-
7
- ```text
8
- DX Complete = Decision Basis + Complete Engineering + Operations Measurement
9
- ```
5
+ ## Quick Start
10
6
 
11
- The target command is:
7
+ Install the scaffold into the current Next.js project:
12
8
 
13
9
  ```sh
14
10
  npx dxcomplete init
15
11
  ```
16
12
 
13
+ The command creates editable DX Complete documentation and process files under `dxcomplete/`, installs Next.js route wrappers under `pages/api/`, writes `vercel.json` compatibility settings, and creates `dxcomplete/workspace.json` as the workspace identity for that service.
14
+
15
+ The broader product premise is:
16
+
17
+ ```text
18
+ DX Complete = Decision Basis + Complete Engineering + Operations Measurement
19
+ ```
20
+
17
21
  The scaffold is intended to help a team describe and revise a full engineering and service lifecycle model. It deliberately does not present the current model as decided. Roles, workflows, object taxonomy, and diagrams are draft material that should be edited as the operating model becomes clearer.
18
22
 
19
23
  ## Product Outcome
@@ -41,11 +45,11 @@ The working hypothesis is that DX Complete describes a full decision-basis, engi
41
45
 
42
46
  The current role model includes Owner, Engineer, Tester, Operator, Support Agent, and End User. The model keeps outcome authority, requirements, product validation, and risk acceptance visible inside Owner; implementation responsibilities inside Engineer; and administration responsibilities inside Operator.
43
47
 
44
- Current draft concepts include Workspace, Statement, Expectation, Requirement, Commitment, Deferral, Task, Environment, Component, Estimate, Benefits, Feedback, AuthoritativeRequest, FeatureRequest, Change, Incident, Problem, SupportTicket, Release, Deployment, Decision, Risk, and Control. These are represented in editable YAML and Markdown so they can evolve.
48
+ Current runtime records include Workspace, Statement, Journal, Environment, Component, Maintenance Schedule, Expectation, Requirement, Estimate, Benefits, Value Realization, Commitment, Deferral, Task, Change, Incident, Problem, Support Request, Decision, Risk, and DX Complete Ticket. Other lifecycle concepts such as Feedback, Feature Request, Release, Deployment, Control, and Evidence remain useful language but are not all current records. They are represented in editable YAML and Markdown so the model can evolve deliberately.
45
49
 
46
50
  ## Usage
47
51
 
48
- Install the scaffold into the current Next.js project:
52
+ Install into the current Next.js project:
49
53
 
50
54
  ```sh
51
55
  npx dxcomplete init
@@ -83,6 +87,8 @@ npx dxcomplete validate
83
87
 
84
88
  By default, the scaffold is written to `dxcomplete/` and a placeholder workflow is written to `.github/workflows/dxcomplete.yml`. Existing files are not overwritten unless `--force` is provided.
85
89
 
90
+ If the target project does not already have a root `AGENTS.md`, `dxcomplete init` also writes a small Codex guidance file that points future engineering agents to `dxcomplete/docs/operating-guide.md` and `dxcomplete/docs/codex-integration.md`. If a root `AGENTS.md` already exists, it is skipped. `dxcomplete upgrade` does not overwrite a user-owned `AGENTS.md`.
91
+
86
92
  `dxcomplete upgrade` previews by default. It manages the installed route wrappers, Vercel compatibility configuration, and `dxcomplete/.install-manifest.json`. It does not overwrite `dxcomplete/workspace.json`. It reports drift in `dxcomplete/docs` and `dxcomplete/process` because those files are expected to become user-owned after installation.
87
93
  Run `dxcomplete init` before `dxcomplete upgrade`; upgrade refuses targets that do not already have `dxcomplete/workspace.json`.
88
94
 
@@ -150,7 +156,7 @@ Useful MCP tools for dogfooding include:
150
156
 
151
157
  - `runtime_status` to confirm the connected server process and MCP surface fingerprint.
152
158
  - `get_process_guide` to give MCP clients the current phase guide: Orient, Elicit, Weigh, Build, Go Live, Operate, and Measure.
153
- - `get_doc` to retrieve richer reference content for outcomes, flow, records, roles, and glossary terms on demand.
159
+ - `get_doc` to retrieve richer reference content for outcomes, flow, records, roles, operating guidance, and glossary terms on demand.
154
160
  - `create_dxcomplete_ticket`, `append_dxcomplete_ticket`, `list_dxcomplete_tickets`, and `archive_dxcomplete_ticket` for private, appendable DX Complete Tickets from the current actor.
155
161
  - `list_unread_dxcomplete_ticket_replies` to see which tickets have unread DX Complete replies without returning the reply body, and `read_dxcomplete_ticket` to open a ticket and mark those replies read.
156
162
  - `append_journal_note`, `read_journal`, `get_journal_entry`, and `append_journal_summary` for shared workspace context that has no dedicated record home.
@@ -183,6 +189,8 @@ A DX Complete Ticket is the private place for an MCP client user to raise a ques
183
189
 
184
190
  The Journal is shared workspace context, not a private ticket. It is for useful notes that do not already belong in a dedicated record such as Statement, Expectation, Requirement, Decision, Risk, Change, or Task. The routing test is: will another record reference or depend on this? If yes, prefer a dedicated record. Journal content that becomes load-bearing should be promoted to the appropriate record and linked back where useful. Journal entries are append-only and can be linked as decision inputs or provenance. The default journal read returns the hot tier: active summaries plus active raw notes. Summary entries point back to covered raw notes, and covered notes are archived out of the hot read without being deleted.
185
191
 
192
+ The Operating Guide explains record routing by role. Engineer/Codex work defaults to Requirement -> Task. Tester evidence usually belongs in Task entries, review notes, Risk, Decision, or Journal. Operator work uses Change for run-side alterations, Incident for specific service-impacting occurrences, Problem for underlying or recurring causes, and Environment or Component for operational inventory. Support Agent work starts with DX Complete Ticket, then promotes to shared records only when needed.
193
+
186
194
  For dogfood maintenance work that needs direct database access, batch the work in one process instead of running repeated one-off Mongo commands:
187
195
 
188
196
  ```sh
package/dist/init.js CHANGED
@@ -18,6 +18,7 @@ export async function initProject(options) {
18
18
  await copyDirectory(path.join(packageRoot, "docs"), path.join(targetDir, "dxcomplete", "docs"), { force, dryRun }, result);
19
19
  await copyDirectory(path.join(packageRoot, "templates", "process"), path.join(targetDir, "dxcomplete", "process"), { force, dryRun }, result);
20
20
  await writeWorkspaceConfig(targetDir, { force, dryRun }, result);
21
+ await copyFileIfAbsent(path.join(packageRoot, "templates", "AGENTS.md"), path.join(targetDir, "AGENTS.md"), { dryRun }, result);
21
22
  await copyDirectory(path.join(packageRoot, "templates", "next", "pages"), path.join(targetDir, "pages"), { force, dryRun }, result);
22
23
  await copyFileIfAvailable(path.join(packageRoot, "templates", "next", "vercel.json"), path.join(targetDir, "vercel.json"), { force, dryRun }, result);
23
24
  if (includeGithubWorkflow) {
@@ -59,6 +60,24 @@ async function copyFileIfAvailable(sourcePath, destinationPath, options, result)
59
60
  await copyFile(sourcePath, destinationPath);
60
61
  result.written.push(relativeDestination);
61
62
  }
63
+ async function copyFileIfAbsent(sourcePath, destinationPath, options, result) {
64
+ if (!(await fileExists(sourcePath))) {
65
+ return;
66
+ }
67
+ const relativeDestination = path.relative(result.targetDir, destinationPath);
68
+ const exists = await fileExists(destinationPath);
69
+ if (exists) {
70
+ result.skipped.push(relativeDestination);
71
+ return;
72
+ }
73
+ if (options.dryRun) {
74
+ result.planned.push(relativeDestination);
75
+ return;
76
+ }
77
+ await mkdir(path.dirname(destinationPath), { recursive: true });
78
+ await copyFile(sourcePath, destinationPath);
79
+ result.written.push(relativeDestination);
80
+ }
62
81
  async function writeWorkspaceConfig(targetDir, options, result) {
63
82
  const destinationPath = path.join(targetDir, "dxcomplete", "workspace.json");
64
83
  const relativeDestination = path.relative(result.targetDir, destinationPath);
@@ -1,5 +1,5 @@
1
1
  export declare const DOC_SOURCE_BASE_URL = "https://dxcomplete.directeddomains.com";
2
- export declare const DOC_PAGE_IDS: readonly ["start_here", "outcomes", "flow", "records", "roles", "glossary"];
2
+ export declare const DOC_PAGE_IDS: readonly ["start_here", "outcomes", "flow", "records", "roles", "operating_guide", "glossary"];
3
3
  export type DocPageId = (typeof DOC_PAGE_IDS)[number];
4
4
  type BaseDocPage = {
5
5
  page: DocPageId;
@@ -81,6 +81,22 @@ type RolesDoc = BaseDocPage & {
81
81
  responsibility: string;
82
82
  }>;
83
83
  };
84
+ type OperatingGuideDoc = BaseDocPage & {
85
+ page: "operating_guide";
86
+ roles: Array<{
87
+ name: string;
88
+ use: string;
89
+ defaultRecords: string[];
90
+ avoid: string[];
91
+ }>;
92
+ recordRouting: Array<{
93
+ situation: string;
94
+ use: string;
95
+ why: string;
96
+ }>;
97
+ itsmBoundaries: string[];
98
+ freshAgentGuidance: string[];
99
+ };
84
100
  export type GlossaryTerm = {
85
101
  term: string;
86
102
  category: string;
@@ -90,7 +106,7 @@ type GlossaryDoc = BaseDocPage & {
90
106
  page: "glossary";
91
107
  terms: GlossaryTerm[];
92
108
  };
93
- export type DocPage = StartHereDoc | OutcomesDoc | FlowDoc | RecordsDoc | RolesDoc | GlossaryDoc;
109
+ export type DocPage = StartHereDoc | OutcomesDoc | FlowDoc | RecordsDoc | RolesDoc | OperatingGuideDoc | GlossaryDoc;
94
110
  export declare const DOC_REFERENCE: Record<DocPageId, DocPage>;
95
111
  export declare function getDocReference(page: DocPageId, term?: string): DocPage | (BaseDocPage & {
96
112
  term: GlossaryTerm;
package/dist/mcp/docs.js CHANGED
@@ -1,5 +1,5 @@
1
1
  export const DOC_SOURCE_BASE_URL = "https://dxcomplete.directeddomains.com";
2
- export const DOC_PAGE_IDS = ["start_here", "outcomes", "flow", "records", "roles", "glossary"];
2
+ export const DOC_PAGE_IDS = ["start_here", "outcomes", "flow", "records", "roles", "operating_guide", "glossary"];
3
3
  export const DOC_REFERENCE = {
4
4
  start_here: {
5
5
  page: "start_here",
@@ -172,11 +172,11 @@ export const DOC_REFERENCE = {
172
172
  axes: [
173
173
  {
174
174
  name: "Kind of information",
175
- test: "Claims, goals, and success criteria go to Statement, Expectation, or Requirement; choices go to Decision; actions go to Task; events or controlled history go to matching records such as Change or Risk; otherwise relevant context may go to Journal."
175
+ test: "Claims, goals, and success criteria go to Statement, Expectation, or Requirement; choices go to Decision; actions go to Task; events or controlled history go to matching records such as Change, Incident, Problem, Support Request, Maintenance Schedule, Value Realization, or Risk; otherwise relevant context may go to Journal."
176
176
  },
177
177
  {
178
178
  name: "Process-bound or process-free",
179
- test: "Statement, Expectation, Requirement, Decision, Task, Change, and Risk can advance work or carry dependencies. Journal is parallel context and does not advance the process by itself."
179
+ test: "Statement, Expectation, Requirement, Decision, Task, Change, Incident, Problem, Support Request, Maintenance Schedule, Value Realization, and Risk can advance work or carry dependencies. Journal is parallel context and does not advance the process by itself."
180
180
  },
181
181
  {
182
182
  name: "Attachment",
@@ -187,8 +187,15 @@ export const DOC_REFERENCE = {
187
187
  { signal: "Desired truth, success criteria, or buildable commitment", record: "Statement, Expectation, or Requirement" },
188
188
  { signal: "Choice between alternatives", record: "Decision" },
189
189
  { signal: "Action someone needs to do", record: "Task" },
190
- { signal: "Event or controlled service/process history", record: "Change, Risk, or the matching event/history record" },
190
+ { signal: "Run-side alteration to the service", record: "Change" },
191
+ { signal: "Specific service-impacting occurrence", record: "Incident" },
192
+ { signal: "Underlying or recurring cause behind incidents", record: "Problem" },
193
+ { signal: "User-facing question, request, or issue needing shared follow-up", record: "Support Request" },
194
+ { signal: "Uncertainty or exposure", record: "Risk" },
191
195
  { signal: "Operational infrastructure state", record: "Operational Registry through Environment and Component records" },
196
+ { signal: "Recurring operational hygiene", record: "Maintenance Schedule" },
197
+ { signal: "Measured before/after value", record: "Value Realization" },
198
+ { signal: "Private question, report, request, correction, or follow-up with DX Complete", record: "DX Complete Ticket" },
192
199
  { signal: "Relevant context with no better home", record: "Journal" }
193
200
  ],
194
201
  edgeCases: [
@@ -196,7 +203,7 @@ export const DOC_REFERENCE = {
196
203
  "A reminder may look like context, but if someone needs to act on it, it should be a Task.",
197
204
  "A note that repeatedly informs decisions or work should be promoted from Journal to the appropriate dedicated record."
198
205
  ],
199
- promotion: "Journal content that becomes load-bearing should be promoted to Statement, Expectation, Requirement, Decision, Task, Change, Risk, or another dedicated record, then linked back where useful.",
206
+ promotion: "Journal content that becomes load-bearing should be promoted to Statement, Expectation, Requirement, Decision, Task, Change, Incident, Problem, Support Request, Maintenance Schedule, Value Realization, Risk, or another dedicated record, then linked back where useful.",
200
207
  futureContainers: [
201
208
  {
202
209
  name: "Operational Registry",
@@ -224,6 +231,10 @@ export const DOC_REFERENCE = {
224
231
  name: "Component",
225
232
  summary: "One environment-specific operational item, with kind, location details, identifiers, secret pointers, notes, and version history."
226
233
  },
234
+ {
235
+ name: "Maintenance Schedule",
236
+ summary: "Recurring operational hygiene, with cadence, start date, rationale, version history, and due state derived from linked completed Changes or Tasks."
237
+ },
227
238
  {
228
239
  name: "Expectation",
229
240
  summary: "The result a person or group expects, including how success will be recognized. Prior versions and review notes can be kept without blocking progress."
@@ -246,6 +257,10 @@ export const DOC_REFERENCE = {
246
257
  name: "Benefits",
247
258
  summary: "An Owner-authored view of expected benefits. Benefits may be quantified or qualitative."
248
259
  },
260
+ {
261
+ name: "Value Realization",
262
+ summary: "Measured before/after value tied to expectations, requirements, or commitments, with derived comparisons for each metric."
263
+ },
249
264
  { name: "Commitment", summary: "An Owner record that commits requirements or expectations into Build, with any reservations visible." },
250
265
  { name: "Deferral", summary: "An Owner record for not committing yet, with conditions that make a future Commitment possible." },
251
266
  { name: "Risk", summary: "Something uncertain that could affect value, delivery, service, or compliance." }
@@ -261,7 +276,19 @@ export const DOC_REFERENCE = {
261
276
  },
262
277
  {
263
278
  name: "Change",
264
- summary: "A record for a specific alteration to the running service, with plan sections and append-only event history."
279
+ summary: "A record for a specific alteration to the running service, with change type, plan sections, risk and impact including downstream impact where known, append-only event history, and optional Git commit references on result or recovery events."
280
+ },
281
+ {
282
+ name: "Incident",
283
+ summary: "A record for a specific service-impacting or potentially service-impacting occurrence, with status and severity derived from entries."
284
+ },
285
+ {
286
+ name: "Problem",
287
+ summary: "A record for an underlying or recurring cause evidenced by one or more Incidents, with root cause and status derived from entries."
288
+ },
289
+ {
290
+ name: "Support Request",
291
+ summary: "A shared support ledger for a reported user experience, question, request, or issue, with current status derived from entries."
265
292
  }
266
293
  ]
267
294
  },
@@ -295,7 +322,7 @@ export const DOC_REFERENCE = {
295
322
  },
296
323
  {
297
324
  name: "Support, incidents, problems, and feedback",
298
- summary: "Operational signals can be handled through tickets, risks, tasks, changes, decisions, or new requirements."
325
+ summary: "Operational signals can be handled through tickets, incidents, problems, risks, tasks, changes, decisions, or new requirements. Use Incident for a specific occurrence and Problem for an underlying or recurring cause."
299
326
  },
300
327
  {
301
328
  name: "Measurement and estimate refinement",
@@ -320,6 +347,151 @@ export const DOC_REFERENCE = {
320
347
  }
321
348
  ]
322
349
  },
350
+ operating_guide: {
351
+ page: "operating_guide",
352
+ title: "Operating Guide",
353
+ sourceUrl: `${DOC_SOURCE_BASE_URL}/operating-guide.html`,
354
+ summary: "How each role uses DX Complete in day-to-day work, including record routing and ITSM boundaries.",
355
+ roles: [
356
+ {
357
+ name: "Owner",
358
+ use: "Uses DX Complete to set direction, approve expectations when needed, weigh cost and benefit, record Commitment or Deferral, make Decisions, and formally accept risk when the project should own it.",
359
+ defaultRecords: ["Statement", "Expectation", "Benefits", "Value Realization", "Commitment", "Deferral", "Decision", "Risk"],
360
+ avoid: [
361
+ "Do not turn every comment into a requirement.",
362
+ "Do not use approval language for End User feedback.",
363
+ "Do not hide reservations or low-confidence decisions."
364
+ ]
365
+ },
366
+ {
367
+ name: "Engineer and Codex assistance",
368
+ use: "Uses Requirement to Task as the normal build path. Codex may assist the Engineer, but Codex is a coding-capable tool, not a role.",
369
+ defaultRecords: ["Requirement", "Task", "Decision", "Risk", "Journal"],
370
+ avoid: [
371
+ "Do not create a Change just because implementation work is happening.",
372
+ "Do not use Journal when a Task, Decision, Risk, or Requirement is the real record.",
373
+ "Do not invent Owner intent or End User feedback."
374
+ ]
375
+ },
376
+ {
377
+ name: "Tester",
378
+ use: "Uses DX Complete to keep verification tied to requirements and visible evidence. Verification can be captured through Task entries, review notes, Risk, Decision, or Journal depending on what is being learned.",
379
+ defaultRecords: ["Task", "Requirement", "Risk", "Decision", "Journal"],
380
+ avoid: [
381
+ "Do not default to Change for testing observations.",
382
+ "Do not treat a failed check as a new requirement unless the expected truth changed.",
383
+ "Do not hide verification uncertainty in free text when it is a Risk."
384
+ ]
385
+ },
386
+ {
387
+ name: "Operator and administration",
388
+ use: "Uses DX Complete to keep run-side state, service changes, incidents, problems, and operational inventory legible, including Environments, Components, rollout or rollback plans, user permissions, and operational security.",
389
+ defaultRecords: ["Change", "Incident", "Problem", "Environment", "Component", "Maintenance Schedule", "Risk", "Decision"],
390
+ avoid: [
391
+ "Do not paste secret values into records.",
392
+ "Do not use Change for ordinary build work before it alters the running service.",
393
+ "Do not create Incident or Problem merely because work is happening; use them only for operational signal or service-history meaning."
394
+ ]
395
+ },
396
+ {
397
+ name: "Support Agent",
398
+ use: "Uses DX Complete Ticket as the first stop for user questions, reports, requests, corrections, and follow-ups, then promotes shared follow-up only when needed.",
399
+ defaultRecords: ["Support Request", "DX Complete Ticket", "Statement", "Task", "Incident", "Problem", "Risk", "Decision", "Change", "Journal"],
400
+ avoid: [
401
+ "Do not promote every ticket into shared process work.",
402
+ "Do not use DX Complete Ticket for shared support follow-up when Support Request is the better record.",
403
+ "Do not call a user signal an approval.",
404
+ "Do not create ITSM-style records merely because a user reported something; promote only when the signal has operational or shared follow-up meaning."
405
+ ]
406
+ },
407
+ {
408
+ name: "End User",
409
+ use: "Uses the service and provides input. Another role captures that input as a Statement, report, request, correction, feedback signal, or ticket when it needs to enter DX Complete.",
410
+ defaultRecords: ["Statement", "DX Complete Ticket"],
411
+ avoid: [
412
+ "Do not treat the End User as a DX Complete operator.",
413
+ "Do not treat End User feedback as authority approval.",
414
+ "Do not expect the End User to choose process records."
415
+ ]
416
+ }
417
+ ],
418
+ recordRouting: [
419
+ {
420
+ situation: "Normal implementation work",
421
+ use: "Task",
422
+ why: "A Task is the default record for concrete work someone needs to do."
423
+ },
424
+ {
425
+ situation: "Meaningful choice between alternatives",
426
+ use: "Decision",
427
+ why: "A Decision preserves what was chosen and which records informed it."
428
+ },
429
+ {
430
+ situation: "Uncertainty, exposure, or possible harm",
431
+ use: "Risk",
432
+ why: "A Risk keeps the uncertainty visible without pretending it is resolved."
433
+ },
434
+ {
435
+ situation: "Discrete alteration to the running service",
436
+ use: "Change",
437
+ why: "A Change is the current ITSM-style run-side control record."
438
+ },
439
+ {
440
+ situation: "Specific service-impacting occurrence",
441
+ use: "Incident",
442
+ why: "An Incident keeps response history for one occurrence visible."
443
+ },
444
+ {
445
+ situation: "Underlying or recurring cause behind one or more incidents",
446
+ use: "Problem",
447
+ why: "A Problem keeps investigation and root-cause history separate from the individual incidents it explains."
448
+ },
449
+ {
450
+ situation: "User-facing support follow-up",
451
+ use: "Support Request",
452
+ why: "A Support Request keeps the shared support thread visible without turning every report into an Incident."
453
+ },
454
+ {
455
+ situation: "Operational inventory",
456
+ use: "Environment or Component",
457
+ why: "The Operational Registry shows what exists and where it lives."
458
+ },
459
+ {
460
+ situation: "Recurring operational hygiene",
461
+ use: "Maintenance Schedule",
462
+ why: "A Maintenance Schedule keeps cadence and due state visible while completed Changes or Tasks show what happened."
463
+ },
464
+ {
465
+ situation: "Measured value after work or operation",
466
+ use: "Value Realization",
467
+ why: "Value Realization compares baseline and actual metrics without replacing Benefits or Estimates."
468
+ },
469
+ {
470
+ situation: "Useful context with no better dedicated home",
471
+ use: "Journal",
472
+ why: "Journal is fallback context, not the default home for load-bearing records."
473
+ },
474
+ {
475
+ situation: "Question, report, request, correction, or follow-up with DX Complete",
476
+ use: "DX Complete Ticket",
477
+ why: "A ticket is private to the submitting actor until someone promotes shared follow-up."
478
+ }
479
+ ],
480
+ itsmBoundaries: [
481
+ "Change is the current first-class run-side control record. Its risk and impact section should include downstream impact where known: what else may be affected and what depends on what is changing.",
482
+ "Result and recovery events on a Change may include optional Git commit references for the specific execution attempt or rollback. They are recorded as references only; DX Complete does not validate Git commits or assume a Git host.",
483
+ "Incident is the current first-class record for a specific service-impacting or potentially service-impacting occurrence.",
484
+ "Problem is the current first-class record for an underlying or recurring cause evidenced by one or more incidents.",
485
+ "Do not create ITSM-style records merely because work is happening; use them when the information is truly run-side control, operational signal, or service history."
486
+ ],
487
+ freshAgentGuidance: [
488
+ "Start by identifying the role being helped and the record that best matches the information.",
489
+ "For Engineer/Codex work, default to Requirement -> Task unless a Decision, Risk, Journal note, or Change is specifically warranted.",
490
+ "For Operator work, use Change only for run-side alteration and Environment or Component for operational inventory.",
491
+ "For Support Agent work, start with DX Complete Ticket before promoting into shared records.",
492
+ "When unsure, ask whether another record will reference or depend on the information. If yes, use the dedicated record."
493
+ ]
494
+ },
323
495
  glossary: {
324
496
  page: "glossary",
325
497
  title: "Glossary",
@@ -330,8 +502,10 @@ export const DOC_REFERENCE = {
330
502
  { term: "Benefit Item", category: "Cost and benefit", definition: "One item inside Benefits. It may have an amount or range, or it may be qualitative with no amount." },
331
503
  { term: "Benefits", category: "Cost and benefit", definition: "An Owner-authored benefit record used during Weigh, linked to the requirements or expectations it covers. Benefits may be quantified or qualitative." },
332
504
  { term: "Build", category: "Delivery", definition: "Turning committed requirements into tasks, working changes, and verification." },
333
- { term: "Change", category: "Delivery", definition: "A service change record for a discrete alteration to the running service. It records the plan, execution, rollback, notice, veto, emergency posture, decision, result, and recovery history without enforcing the operation." },
505
+ { term: "Cadence", category: "Run and support", definition: "How often recurring operational work is expected to happen, such as every month or every quarter." },
506
+ { term: "Change", category: "Delivery", definition: "A service change record for a discrete alteration to the running service. It records the change type, plan, execution, rollback, notice, veto, decision, result, recovery history, and optional Git commit references without enforcing the operation." },
334
507
  { term: "Change Plan", category: "Delivery", definition: "The part of a Change record that explains what is changing, why, scope, timing, and notice." },
508
+ { term: "Change Type", category: "Delivery", definition: "The classification of a Change as standard, normal, or emergency. It affects scrutiny and communication but does not enforce the operation." },
335
509
  { term: "Checkpoint", category: "Risk and decisions", definition: "A confirmation point that reduces risk. It can be approved, formally accepted as risk by the Owner, or proceeded past with open risk visible." },
336
510
  { term: "Codex", category: "Delivery", definition: "A coding-capable model that may assist the Engineer. Codex is not a role." },
337
511
  { term: "Commitment", category: "Business context", definition: "An Owner record that says preparation is sufficient to commit requirements or expectations into Build, with any reservations kept visible." },
@@ -348,7 +522,7 @@ export const DOC_REFERENCE = {
348
522
  { term: "Deployment", category: "Delivery", definition: "Putting a release or change into use." },
349
523
  { term: "DX Complete Ticket", category: "Business context", definition: "A private item used to raise a question, report, request, correction, or follow-up with DX Complete." },
350
524
  { term: "Elicit", category: "Business context", definition: "Turning expectations into requirements, dependencies, unknowns, and risk before estimating the work." },
351
- { term: "Emergency Change", category: "Delivery", definition: "A change where normal notice is shortened or skipped because both importance and immediacy are recorded." },
525
+ { term: "Emergency Change", category: "Delivery", definition: "A Change where normal notice or review is shortened because the situation is important and immediate. Missing rationale remains visible but does not block the record." },
352
526
  { term: "End User", category: "Role", definition: "The person the service is for; uses the service and provides requests, feedback, corrections, and issue reports." },
353
527
  { term: "Engineer", category: "Role", definition: "The role that turns committed requirements into tasks and working changes, either directly or by driving coding-capable tools." },
354
528
  { term: "Environment", category: "Run and support", definition: "A named operating context such as local, staging, or production. Components belong to one Environment so each operating context can be understood separately." },
@@ -359,24 +533,31 @@ export const DOC_REFERENCE = {
359
533
  { term: "Execution Plan", category: "Delivery", definition: "The ordered practical steps inside a Change record for carrying out the change." },
360
534
  { term: "Expectation", category: "Business context", definition: "The result a person or group expects, including how success will be recognized, with approval tracked where needed." },
361
535
  { term: "Feedback", category: "Run and support", definition: "A signal from a user, support interaction, service issue, or observed result." },
536
+ { term: "Git Commit Reference", category: "Delivery", definition: "An optional commit identifier recorded on a Change result or recovery event to show what code state was used for that execution attempt or rollback. DX Complete records the reference as provided and does not validate it." },
362
537
  { term: "Go Live", category: "Delivery", definition: "Putting a change into use after readiness is confirmed." },
363
538
  { term: "Greenfield", category: "Business context", definition: "Work that starts from a new idea rather than an existing service." },
364
539
  { term: "Handoff", category: "Delivery", definition: "The point where a phase has enough clarity to move into the next phase." },
365
- { term: "Incident", category: "Run and support", definition: "An event that affects, or may affect, the service and needs a response." },
540
+ { term: "Incident", category: "Run and support", definition: "A specific service-impacting or potentially service-impacting occurrence with response history, current status, and severity derived from ordered entries." },
541
+ { term: "Incident Entry", category: "Run and support", definition: "One ordered entry in an Incident, such as detected, update, severity, resolved, reopened, or note." },
366
542
  { term: "Informed By", category: "Risk and decisions", definition: "The relationship from a decision to the record that helped inform it." },
367
543
  { term: "Journal", category: "Business context", definition: "A shared workspace record for relevant notes that do not have a better dedicated home. Journal entries are append-only and visible to workspace members." },
368
544
  { term: "Journal Note", category: "Business context", definition: "A raw Journal entry with body text, author, and timestamp. It can be summarized later without being deleted." },
369
545
  { term: "Journal Summary", category: "Business context", definition: "A compact Journal entry that summarizes covered notes and points back to them so older detail remains retrievable." },
546
+ { term: "Known Error", category: "Run and support", definition: "A Problem state showing an underlying cause is known even if the full improvement is not complete." },
370
547
  { term: "Limited Disclosure", category: "Business context", definition: "A situation where some information is unavailable or cannot be shared." },
371
548
  { term: "Locator", category: "Run and support", definition: "Structured location information for a Component, such as a URL, project, region, host, or route." },
549
+ { term: "Maintenance Schedule", category: "Run and support", definition: "A recurring operational hygiene record with cadence, start date, rationale, and due state derived from linked completed Changes or Tasks." },
372
550
  { term: "Measure", category: "Cost and benefit", definition: "Compare expected and actual cost or benefit when data is available." },
551
+ { term: "Measured At", category: "Cost and benefit", definition: "The date or time when a value metric baseline or actual value was measured." },
373
552
  { term: "Measurement", category: "Cost and benefit", definition: "Comparing expected and actual cost or benefit when data is available." },
553
+ { term: "Normal Change", category: "Delivery", definition: "The default Change type for an assessed alteration to the running service. It may carry a minor, significant, or major impact grade." },
374
554
  { term: "Operate", category: "Run and support", definition: "Run the service, support users, and respond to issues." },
375
555
  { term: "Operational Registry", category: "Run and support", definition: "The inventory of Environments and Components that shows what exists, where it lives, and which secret locations are relevant. It is not monitoring, diagnostics, a secret vault, an event log, or a runbook." },
376
556
  { term: "Operator", category: "Role", definition: "The role that releases, deploys, monitors, runs the service, and manages users, permissions, settings, provisioning, and run-side security." },
377
557
  { term: "Outcome", category: "Business context", definition: "The result the work is meant to create or improve." },
378
558
  { term: "Owner", category: "Role", definition: "The role that sets authority, priority, outcome direction, requirements, product validation direction, budget commitment, escalation direction, and formal risk acceptance." },
379
- { term: "Problem", category: "Run and support", definition: "An underlying or repeated issue that may need deeper improvement work." },
559
+ { term: "Problem", category: "Run and support", definition: "An underlying or recurring cause evidenced by one or more Incidents, with investigation, root-cause, known-error, and resolution history." },
560
+ { term: "Problem Entry", category: "Run and support", definition: "One ordered entry in a Problem, such as identified, investigation, root cause, known error, resolved, reopened, or note." },
380
561
  { term: "Proceeding Past an Open Checkpoint", category: "Risk and decisions", definition: "Moving forward while an approval, readiness concern, or other checkpoint is still open. The risk remains visible and is not formally accepted." },
381
562
  { term: "Product Validation", category: "Delivery", definition: "Confirming that the completed work achieves the intended outcome." },
382
563
  { term: "QA Verification", category: "Delivery", definition: "Checking that completed work meets the requirements and success criteria." },
@@ -390,21 +571,28 @@ export const DOC_REFERENCE = {
390
571
  { term: "Requirement Set", category: "Business context", definition: "The group of requirements being estimated, committed, built, or stopped together." },
391
572
  { term: "Reservation", category: "Business context", definition: "A concern recorded inside a Commitment when the Owner moves forward despite it." },
392
573
  { term: "Review Note", category: "Delivery", definition: "A free-text note on an expectation or requirement. It may be marked important, but it does not block progress or require an Owner response." },
393
- { term: "Risk", category: "Risk and decisions", definition: "Something uncertain that could affect value, delivery, service, or compliance." },
574
+ { term: "Risk", category: "Risk and decisions", definition: "Something uncertain that could affect value, delivery, service, compliance, or operations. Current risk state comes from ordered entries." },
394
575
  { term: "Risk Acceptance", category: "Risk and decisions", definition: "An Owner decision to own an open risk on the project's behalf. It is different from simply proceeding past an open checkpoint." },
576
+ { term: "Risk Entry", category: "Risk and decisions", definition: "One ordered entry in a Risk, such as identified, assessment, treatment, monitor note, closed, or reopened." },
577
+ { term: "Risk Treatment", category: "Risk and decisions", definition: "The chosen response to a Risk: accept, mitigate, transfer, or avoid. Formal acceptance is Owner-only." },
395
578
  { term: "Rollback Plan", category: "Delivery", definition: "The part of a Change record that explains how to reverse or recover if the change fails or should not remain in use." },
396
579
  { term: "Roll-up", category: "Cost and benefit", definition: "Grouped totals from quantified cost or benefit items, keeping one-time amounts, recurring amounts, periods, and currencies distinct." },
397
580
  { term: "Secret Pointer", category: "Run and support", definition: "A reference to where a secret is stored and what it is called. It should not contain the secret value." },
581
+ { term: "Root Cause", category: "Run and support", definition: "The underlying cause recorded in a Problem when investigation identifies why one or more incidents occurred." },
582
+ { term: "Standard Change", category: "Delivery", definition: "A low-risk, pre-understood, repeatable Change type for work that can use a lighter path while still preserving the record." },
398
583
  { term: "Statement", category: "Business context", definition: "A person's own words before they are interpreted or translated, kept as the traceable root for expectations and downstream work." },
399
584
  { term: "Success Criteria", category: "Delivery", definition: "The conditions used to decide whether completed work satisfies the need." },
400
585
  { term: "Support Agent", category: "Role", definition: "The role that helps users, captures signals, and routes questions, feedback, and issues to the right follow-up." },
401
- { term: "Support Ticket", category: "Run and support", definition: "A user request, question, or issue report." },
586
+ { term: "Support Request", category: "Run and support", definition: "A shared support record for a reported user experience, question, request, or issue that needs workspace-visible follow-up." },
587
+ { term: "Support Request Entry", category: "Run and support", definition: "One ordered entry in a Support Request, such as raised, triage, update, escalated, resolved, reopened, or note." },
402
588
  { term: "Task", category: "Delivery", definition: "A piece of work with an entry history. The current status comes from the latest status-change entry." },
403
589
  { term: "Task Entry", category: "Delivery", definition: "One ordered entry in a Task, such as a comment, note, or status change." },
404
590
  { term: "Tester", category: "Role", definition: "The role that checks completed work against requirements and success criteria." },
405
591
  { term: "Transformation", category: "Business context", definition: "Improving an existing service or way of working." },
406
592
  { term: "Unknowns", category: "Business context", definition: "Important questions that are not answered yet." },
407
593
  { term: "Veto", category: "Risk and decisions", definition: "A serious recorded objection to a Change by the Owner or Engineer. It does not mechanically stop the Operator, but proceeding over it creates a strong accountability record." },
594
+ { term: "Value Metric", category: "Cost and benefit", definition: "One before/after measure inside Value Realization, with a baseline, optional actual value, unit, direction, and measured dates." },
595
+ { term: "Value Realization", category: "Cost and benefit", definition: "A record that compares baseline and actual value metrics after work or operation when measurement is available." },
408
596
  { term: "Version History", category: "Risk and decisions", definition: "Prior versions kept when an expectation or requirement changes, so the current wording can be understood without losing what came before." },
409
597
  { term: "Weigh", category: "Business context", definition: "The phase where cost, value, risk, and confidence are compared before recording a Commitment or Deferral." },
410
598
  { term: "Workspace", category: "Business context", definition: "The container for one service and the work connected to it." }