@gitgov/core 2.7.2 → 2.8.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.
package/dist/src/fs.js CHANGED
@@ -735,7 +735,6 @@ var DIR_TO_TYPE = {
735
735
  "tasks": "task",
736
736
  "cycles": "cycle",
737
737
  "executions": "execution",
738
- "changelogs": "changelog",
739
738
  "feedbacks": "feedback",
740
739
  "actors": "actor",
741
740
  "agents": "agent"
@@ -762,9 +761,6 @@ function inferEntityTypeFromId(recordId) {
762
761
  if (recordId.match(/^\d+-exec-/) || recordId.includes("-execution-")) {
763
762
  return "execution";
764
763
  }
765
- if (recordId.match(/^\d+-changelog-/)) {
766
- return "changelog";
767
- }
768
764
  if (recordId.match(/^\d+-feedback-/)) {
769
765
  return "feedback";
770
766
  }
@@ -887,7 +883,7 @@ var actor_record_schema_default = {
887
883
  $schema: "http://json-schema.org/draft-07/schema#",
888
884
  $id: "actor_record_schema.json",
889
885
  title: "ActorRecord",
890
- description: "Canonical schema for actor records as defined in actor_protocol.md",
886
+ description: "Canonical schema for actor records as defined in 02_actor.md",
891
887
  additionalProperties: false,
892
888
  type: "object",
893
889
  required: [
@@ -982,8 +978,9 @@ var agent_record_schema_default = {
982
978
  $schema: "http://json-schema.org/draft-07/schema#",
983
979
  $id: "agent_record_schema.json",
984
980
  title: "AgentRecord",
985
- description: "Canonical schema for agent operational manifests.",
981
+ description: "Canonical schema for agent operational manifests \u2014 the work contract that defines how an agent is invoked.",
986
982
  type: "object",
983
+ additionalProperties: false,
987
984
  required: [
988
985
  "id",
989
986
  "engine"
@@ -991,8 +988,13 @@ var agent_record_schema_default = {
991
988
  properties: {
992
989
  id: {
993
990
  type: "string",
994
- pattern: "^agent:[a-z0-9:-]+$",
995
- description: "Unique identifier for the agent, linking to an ActorRecord."
991
+ pattern: "^agent(:[a-z0-9-]+)+$",
992
+ description: "Unique identifier for the agent, linking 1:1 to an ActorRecord of type agent.",
993
+ examples: [
994
+ "agent:scribe",
995
+ "agent:aion",
996
+ "agent:camilo:cursor"
997
+ ]
996
998
  },
997
999
  status: {
998
1000
  type: "string",
@@ -1000,63 +1002,12 @@ var agent_record_schema_default = {
1000
1002
  "active",
1001
1003
  "archived"
1002
1004
  ],
1003
- default: "active"
1004
- },
1005
- triggers: {
1006
- type: "array",
1007
- default: [],
1008
- description: "Optional list of triggers that activate the agent.\nAdditional fields are allowed and depend on trigger type:\n- webhook triggers: 'event' (event identifier), 'filter' (condition)\n- scheduled triggers: 'cron' (cron expression)\n- manual triggers: 'command' (example CLI command)\n",
1009
- items: {
1010
- type: "object",
1011
- properties: {
1012
- type: {
1013
- type: "string",
1014
- enum: [
1015
- "manual",
1016
- "webhook",
1017
- "scheduled"
1018
- ],
1019
- description: "Type of trigger that activates the agent"
1020
- }
1021
- },
1022
- required: [
1023
- "type"
1024
- ],
1025
- additionalProperties: true
1026
- }
1027
- },
1028
- knowledge_dependencies: {
1029
- type: "array",
1030
- default: [],
1031
- items: {
1032
- type: "string",
1033
- description: "Glob patterns for blueprint files this agent needs access to"
1034
- }
1035
- },
1036
- prompt_engine_requirements: {
1037
- type: "object",
1038
- properties: {
1039
- roles: {
1040
- type: "array",
1041
- items: {
1042
- type: "string"
1043
- }
1044
- },
1045
- skills: {
1046
- type: "array",
1047
- items: {
1048
- type: "string"
1049
- }
1050
- }
1051
- }
1052
- },
1053
- metadata: {
1054
- type: "object",
1055
- description: "Optional framework-specific or deployment-specific metadata for agent extensions.\nCommon use cases: framework identification (langchain, google-adk), deployment info (provider, image, region),\ncost tracking (cost_per_invocation, currency), tool capabilities, maintainer info.\nThis field does NOT affect agent execution - it is purely informational.\n",
1056
- additionalProperties: true
1005
+ default: "active",
1006
+ description: "Operational status. An archived agent cannot be invoked."
1057
1007
  },
1058
1008
  engine: {
1059
1009
  type: "object",
1010
+ description: "Invocation specification \u2014 defines how the agent is executed. Uses oneOf with 4 variants: local, api, mcp, custom.",
1060
1011
  oneOf: [
1061
1012
  {
1062
1013
  required: [
@@ -1103,7 +1054,8 @@ var agent_record_schema_default = {
1103
1054
  "GET",
1104
1055
  "PUT"
1105
1056
  ],
1106
- default: "POST"
1057
+ default: "POST",
1058
+ description: "HTTP method"
1107
1059
  },
1108
1060
  auth: {
1109
1061
  type: "object",
@@ -1149,7 +1101,7 @@ var agent_record_schema_default = {
1149
1101
  },
1150
1102
  tool: {
1151
1103
  type: "string",
1152
- description: "Name of the MCP tool to invoke. If not specified, defaults to agentId without 'agent:' prefix."
1104
+ description: "Name of the MCP tool to invoke. If omitted, the agent has access to all tools on the server."
1153
1105
  },
1154
1106
  auth: {
1155
1107
  type: "object",
@@ -1198,6 +1150,60 @@ var agent_record_schema_default = {
1198
1150
  }
1199
1151
  }
1200
1152
  ]
1153
+ },
1154
+ triggers: {
1155
+ type: "array",
1156
+ default: [],
1157
+ description: "Optional list of triggers that activate the agent.\nAdditional fields are allowed and depend on trigger type:\n- manual: 'command' (example CLI command)\n- webhook: 'event' (event identifier), 'filter' (condition)\n- scheduled: 'cron' (cron expression)\n",
1158
+ items: {
1159
+ type: "object",
1160
+ properties: {
1161
+ type: {
1162
+ type: "string",
1163
+ enum: [
1164
+ "manual",
1165
+ "webhook",
1166
+ "scheduled"
1167
+ ],
1168
+ description: "Type of trigger that activates the agent"
1169
+ }
1170
+ },
1171
+ required: [
1172
+ "type"
1173
+ ],
1174
+ additionalProperties: true
1175
+ }
1176
+ },
1177
+ knowledge_dependencies: {
1178
+ type: "array",
1179
+ default: [],
1180
+ items: {
1181
+ type: "string",
1182
+ description: "Glob patterns for files this agent needs access to"
1183
+ }
1184
+ },
1185
+ prompt_engine_requirements: {
1186
+ type: "object",
1187
+ description: "Requirements for prompt composition \u2014 roles and skills the agent needs.",
1188
+ properties: {
1189
+ roles: {
1190
+ type: "array",
1191
+ items: {
1192
+ type: "string"
1193
+ }
1194
+ },
1195
+ skills: {
1196
+ type: "array",
1197
+ items: {
1198
+ type: "string"
1199
+ }
1200
+ }
1201
+ }
1202
+ },
1203
+ metadata: {
1204
+ type: "object",
1205
+ description: "Optional framework-specific or deployment-specific metadata.\nCommon use cases: framework identification (langchain, google-adk), deployment info,\ncost tracking, tool capabilities, maintainer info.\nThis field does NOT affect agent execution \u2014 it is purely informational.\n",
1206
+ additionalProperties: true
1201
1207
  }
1202
1208
  },
1203
1209
  examples: [
@@ -1428,193 +1434,12 @@ var agent_record_schema_default = {
1428
1434
  ]
1429
1435
  };
1430
1436
 
1431
- // src/record_schemas/generated/changelog_record_schema.json
1432
- var changelog_record_schema_default = {
1433
- $schema: "http://json-schema.org/draft-07/schema#",
1434
- $id: "changelog_record_schema.json",
1435
- title: "ChangelogRecord",
1436
- description: "Canonical schema for changelog records - aggregates N tasks into 1 release note",
1437
- additionalProperties: false,
1438
- type: "object",
1439
- required: [
1440
- "id",
1441
- "title",
1442
- "description",
1443
- "relatedTasks",
1444
- "completedAt"
1445
- ],
1446
- properties: {
1447
- id: {
1448
- type: "string",
1449
- pattern: "^\\d{10}-changelog-[a-z0-9-]{1,50}$",
1450
- maxLength: 71,
1451
- description: "Unique identifier for the changelog entry",
1452
- examples: [
1453
- "1752707800-changelog-sistema-autenticacion-v1",
1454
- "1752707800-changelog-sprint-24-api-performance"
1455
- ]
1456
- },
1457
- title: {
1458
- type: "string",
1459
- minLength: 10,
1460
- maxLength: 150,
1461
- description: "Executive title of the deliverable",
1462
- examples: [
1463
- "Sistema de Autenticaci\xF3n Completo v1.0",
1464
- "Sprint 24 - Performance Optimizations"
1465
- ]
1466
- },
1467
- description: {
1468
- type: "string",
1469
- minLength: 20,
1470
- maxLength: 5e3,
1471
- description: "Detailed description of the value delivered, including key decisions and impact"
1472
- },
1473
- relatedTasks: {
1474
- type: "array",
1475
- items: {
1476
- type: "string",
1477
- pattern: "^\\d{10}-task-[a-z0-9-]{1,50}$"
1478
- },
1479
- minItems: 1,
1480
- description: "IDs of tasks that compose this deliverable (minimum 1 required)"
1481
- },
1482
- completedAt: {
1483
- type: "number",
1484
- minimum: 0,
1485
- description: "Unix timestamp in seconds when the deliverable was completed"
1486
- },
1487
- relatedCycles: {
1488
- type: "array",
1489
- items: {
1490
- type: "string",
1491
- pattern: "^\\d{10}-cycle-[a-z0-9-]{1,50}$"
1492
- },
1493
- default: [],
1494
- description: "Optional IDs of cycles related to this deliverable"
1495
- },
1496
- relatedExecutions: {
1497
- type: "array",
1498
- items: {
1499
- type: "string",
1500
- pattern: "^\\d{10}-exec-[a-z0-9-]{1,50}$"
1501
- },
1502
- default: [],
1503
- description: "Optional IDs of key execution records related to this work"
1504
- },
1505
- version: {
1506
- type: "string",
1507
- minLength: 1,
1508
- maxLength: 50,
1509
- description: "Optional version or release identifier (e.g., 'v1.0.0', 'sprint-24')",
1510
- examples: [
1511
- "v1.0.0",
1512
- "v2.1.3",
1513
- "sprint-24"
1514
- ]
1515
- },
1516
- tags: {
1517
- type: "array",
1518
- items: {
1519
- type: "string",
1520
- pattern: "^[a-z0-9-]+(:[a-z0-9-]+)*$"
1521
- },
1522
- default: [],
1523
- description: "Optional tags for categorization (e.g., 'feature:auth', 'bugfix', 'security')"
1524
- },
1525
- commits: {
1526
- type: "array",
1527
- items: {
1528
- type: "string",
1529
- maxLength: 100
1530
- },
1531
- default: [],
1532
- description: "Optional list of git commit hashes related to this deliverable"
1533
- },
1534
- files: {
1535
- type: "array",
1536
- items: {
1537
- type: "string",
1538
- maxLength: 500
1539
- },
1540
- default: [],
1541
- description: "Optional list of main files that were created or modified"
1542
- },
1543
- notes: {
1544
- type: "string",
1545
- maxLength: 3e3,
1546
- description: "Optional additional context, decisions, or learnings"
1547
- }
1548
- },
1549
- examples: [
1550
- {
1551
- id: "1752707800-changelog-sistema-autenticacion-v1",
1552
- title: "Sistema de Autenticaci\xF3n Completo v1.0",
1553
- description: "Implementaci\xF3n completa del sistema de autenticaci\xF3n con OAuth2, 2FA via TOTP, recuperaci\xF3n de contrase\xF1a, y UI responsive. Incluye tests E2E completos (95% coverage) y documentaci\xF3n t\xE9cnica actualizada.",
1554
- relatedTasks: [
1555
- "1752274500-task-crear-ui-login",
1556
- "1752274600-task-integrar-oauth2-backend",
1557
- "1752274700-task-implementar-2fa-totp",
1558
- "1752274800-task-tests-e2e-auth",
1559
- "1752274900-task-documentar-flujo-auth"
1560
- ],
1561
- completedAt: 1752707800,
1562
- relatedCycles: [
1563
- "1752200000-cycle-q1-auth-milestone"
1564
- ],
1565
- relatedExecutions: [
1566
- "1752274550-exec-analisis-auth-providers",
1567
- "1752707750-exec-final-integration-test"
1568
- ],
1569
- version: "v1.0.0",
1570
- tags: [
1571
- "feature:auth",
1572
- "security",
1573
- "frontend",
1574
- "backend"
1575
- ],
1576
- commits: [
1577
- "abc123def",
1578
- "456ghi789",
1579
- "jkl012mno"
1580
- ],
1581
- files: [
1582
- "src/pages/Login.tsx",
1583
- "src/services/auth.ts",
1584
- "src/components/TwoFactorSetup.tsx",
1585
- "e2e/auth.spec.ts"
1586
- ],
1587
- notes: "Decisi\xF3n t\xE9cnica: Usamos NextAuth.js despu\xE9s de evaluar Passport.js. El 2FA se implement\xF3 con TOTP (Google Authenticator compatible) en lugar de SMS por seguridad y costo."
1588
- },
1589
- {
1590
- id: "1752707900-changelog-hotfix-payment-timeout",
1591
- title: "Hotfix: Critical Payment Timeout Fix",
1592
- description: "Fixed critical payment timeout issue affecting 15% of transactions. Increased timeout from 5s to 30s and added circuit breaker pattern for third-party API calls.",
1593
- relatedTasks: [
1594
- "1752707850-task-fix-payment-timeout",
1595
- "1752707870-task-add-circuit-breaker"
1596
- ],
1597
- completedAt: 1752707900,
1598
- version: "v1.2.1",
1599
- tags: [
1600
- "hotfix",
1601
- "critical",
1602
- "payment"
1603
- ],
1604
- commits: [
1605
- "xyz789abc"
1606
- ],
1607
- notes: "Emergency response to production incident. Deployed to production within 2 hours."
1608
- }
1609
- ]
1610
- };
1611
-
1612
1437
  // src/record_schemas/generated/cycle_record_schema.json
1613
1438
  var cycle_record_schema_default = {
1614
1439
  $schema: "http://json-schema.org/draft-07/schema#",
1615
1440
  $id: "cycle_record_schema.json",
1616
1441
  title: "CycleRecord",
1617
- description: "Canonical schema for cycle records - strategic grouping of work",
1442
+ description: "Canonical schema for cycle records \u2014 strategic grouping of work into sprints, milestones, or roadmaps.",
1618
1443
  additionalProperties: false,
1619
1444
  type: "object",
1620
1445
  required: [
@@ -1627,7 +1452,7 @@ var cycle_record_schema_default = {
1627
1452
  type: "string",
1628
1453
  pattern: "^\\d{10}-cycle-[a-z0-9-]{1,50}$",
1629
1454
  maxLength: 67,
1630
- description: "Unique identifier for the cycle (10 timestamp + 1 dash + 5 'cycle' + 1 dash + max 50 slug = 67 max)",
1455
+ description: "Unique identifier for the cycle (10 timestamp + 1 dash + 5 'cycle' + 1 dash + max 50 slug = 67 max).",
1631
1456
  examples: [
1632
1457
  "1754400000-cycle-sprint-24-api-performance",
1633
1458
  "1754500000-cycle-auth-system-v2",
@@ -1638,7 +1463,7 @@ var cycle_record_schema_default = {
1638
1463
  type: "string",
1639
1464
  minLength: 1,
1640
1465
  maxLength: 256,
1641
- description: "Human-readable title for the cycle (e.g., 'Sprint 24', 'Auth v2.0', 'Q4 2025')",
1466
+ description: "Human-readable title for the cycle (e.g., 'Sprint 24', 'Auth v2.0', 'Q4 2025').",
1642
1467
  examples: [
1643
1468
  "Sprint 24 - API Performance",
1644
1469
  "Authentication System v2.0",
@@ -1653,7 +1478,7 @@ var cycle_record_schema_default = {
1653
1478
  "completed",
1654
1479
  "archived"
1655
1480
  ],
1656
- description: "The lifecycle status of the cycle"
1481
+ description: "The lifecycle status of the cycle."
1657
1482
  },
1658
1483
  taskIds: {
1659
1484
  type: "array",
@@ -1663,7 +1488,7 @@ var cycle_record_schema_default = {
1663
1488
  maxLength: 66
1664
1489
  },
1665
1490
  default: [],
1666
- description: "Optional array of Task IDs that belong to this cycle. Can be empty for cycles that only contain child cycles. (10 timestamp + 1 dash + 4 'task' + 1 dash + max 50 slug = 66 max)",
1491
+ description: "Optional array of Task IDs that belong to this cycle. Bidirectional with TaskRecord.cycleIds. Can be empty for container cycles.",
1667
1492
  examples: [
1668
1493
  [
1669
1494
  "1752274500-task-optimizar-endpoint-search",
@@ -1679,7 +1504,7 @@ var cycle_record_schema_default = {
1679
1504
  maxLength: 67
1680
1505
  },
1681
1506
  default: [],
1682
- description: "Optional array of Cycle IDs that are children of this cycle, allowing for hierarchies (e.g., Q1 containing Sprint 1, Sprint 2, Sprint 3). (10 timestamp + 1 dash + 5 'cycle' + 1 dash + max 50 slug = 67 max)",
1507
+ description: "Optional array of child Cycle IDs for hierarchical composition (e.g., Q1 containing Sprint 1, Sprint 2, Sprint 3).",
1683
1508
  examples: [
1684
1509
  [
1685
1510
  "1754400000-cycle-sprint-24",
@@ -1713,9 +1538,29 @@ var cycle_record_schema_default = {
1713
1538
  },
1714
1539
  notes: {
1715
1540
  type: "string",
1716
- minLength: 0,
1717
- maxLength: 1e4,
1718
- description: "Optional description of the cycle's goals, objectives, and context"
1541
+ minLength: 1,
1542
+ description: "Optional description of the cycle's goals, objectives, and context."
1543
+ },
1544
+ metadata: {
1545
+ type: "object",
1546
+ additionalProperties: true,
1547
+ description: "Optional structured data for machine consumption.\nUse this field for domain-specific data that needs to be programmatically processed.\nExtends the strategic grouping with structured, queryable attributes.\nCommon use cases: epic lifecycle, sprint configuration, OKR tracking, budget allocation.\n",
1548
+ examples: [
1549
+ {
1550
+ epic: true,
1551
+ phase: "active",
1552
+ files: {
1553
+ overview: "overview.md",
1554
+ roadmap: "roadmap.md",
1555
+ plan: "implementation_plan.md"
1556
+ }
1557
+ },
1558
+ {
1559
+ sprint: 24,
1560
+ velocity: 42,
1561
+ team: "backend"
1562
+ }
1563
+ ]
1719
1564
  }
1720
1565
  },
1721
1566
  examples: [
@@ -1733,7 +1578,7 @@ var cycle_record_schema_default = {
1733
1578
  "team:backend",
1734
1579
  "focus:performance"
1735
1580
  ],
1736
- notes: "Objetivo: Reducir la latencia p95 de la API por debajo de 200ms y preparar infraestructura para Black Friday."
1581
+ notes: "Objective: Reduce API p95 latency below 200ms and prepare infrastructure for Black Friday."
1737
1582
  },
1738
1583
  {
1739
1584
  id: "1754500000-cycle-auth-system-v2",
@@ -1750,7 +1595,7 @@ var cycle_record_schema_default = {
1750
1595
  "security",
1751
1596
  "feature:auth"
1752
1597
  ],
1753
- notes: "Milestone mayor: Sistema completo de autenticaci\xF3n con OAuth2, 2FA, y gesti\xF3n avanzada de sesiones. Cr\xEDtico para lanzamiento Q4."
1598
+ notes: "Major milestone: Complete authentication system with OAuth2, 2FA, and advanced session management. Critical for Q4 launch."
1754
1599
  },
1755
1600
  {
1756
1601
  id: "1754600000-cycle-q4-2025-growth",
@@ -1766,7 +1611,7 @@ var cycle_record_schema_default = {
1766
1611
  "strategy:growth",
1767
1612
  "okr:scale-to-1m-users"
1768
1613
  ],
1769
- notes: "Objetivo trimestral: Escalar a 1M usuarios activos. Incluye mejoras de performance, nuevo sistema de auth, y lanzamiento de app m\xF3vil."
1614
+ notes: "Quarterly objective: Scale to 1M active users. Includes performance improvements, new auth system, and mobile app launch."
1770
1615
  }
1771
1616
  ]
1772
1617
  };
@@ -1784,10 +1629,8 @@ var embedded_metadata_schema_default = {
1784
1629
  properties: {
1785
1630
  version: {
1786
1631
  type: "string",
1787
- enum: [
1788
- "1.0"
1789
- ],
1790
- description: "Version of the embedded metadata format."
1632
+ pattern: "^\\d+\\.\\d+$",
1633
+ description: 'Protocol version in MAJOR.MINOR format (e.g. "1.1", "2.0").'
1791
1634
  },
1792
1635
  type: {
1793
1636
  type: "string",
@@ -1796,12 +1639,23 @@ var embedded_metadata_schema_default = {
1796
1639
  "agent",
1797
1640
  "task",
1798
1641
  "execution",
1799
- "changelog",
1800
1642
  "feedback",
1801
- "cycle"
1643
+ "cycle",
1644
+ "workflow",
1645
+ "custom"
1802
1646
  ],
1803
1647
  description: "The type of the record contained in the payload."
1804
1648
  },
1649
+ schemaUrl: {
1650
+ type: "string",
1651
+ format: "uri",
1652
+ description: "URL to a custom schema for the payload. Required when type is 'custom'."
1653
+ },
1654
+ schemaChecksum: {
1655
+ type: "string",
1656
+ pattern: "^[a-fA-F0-9]{64}$",
1657
+ description: "SHA-256 checksum of the custom schema. Required when type is 'custom'."
1658
+ },
1805
1659
  payloadChecksum: {
1806
1660
  type: "string",
1807
1661
  pattern: "^[a-fA-F0-9]{64}$",
@@ -1816,14 +1670,14 @@ var embedded_metadata_schema_default = {
1816
1670
  keyId: {
1817
1671
  type: "string",
1818
1672
  pattern: "^(human|agent)(:[a-z0-9-]+)+$",
1819
- description: "The Actor ID of the signer (must match ActorRecord.id pattern)."
1673
+ description: "The Actor ID of the signer. Supports scoped identifiers (e.g. agent:camilo:cursor)."
1820
1674
  },
1821
1675
  role: {
1822
1676
  type: "string",
1823
1677
  pattern: "^([a-z-]+|custom:[a-z0-9-]+)$",
1824
1678
  minLength: 1,
1825
1679
  maxLength: 50,
1826
- description: "The context role of the signature (e.g., 'author', 'reviewer', 'auditor', or 'custom:*')."
1680
+ description: "The context role of the signature (e.g., 'author', 'reviewer', or 'custom:*')."
1827
1681
  },
1828
1682
  notes: {
1829
1683
  type: "string",
@@ -1838,6 +1692,7 @@ var embedded_metadata_schema_default = {
1838
1692
  },
1839
1693
  timestamp: {
1840
1694
  type: "integer",
1695
+ minimum: 16e8,
1841
1696
  description: "Unix timestamp of the signature."
1842
1697
  }
1843
1698
  },
@@ -1871,12 +1726,35 @@ var embedded_metadata_schema_default = {
1871
1726
  "payload"
1872
1727
  ],
1873
1728
  additionalProperties: false,
1874
- oneOf: [
1729
+ allOf: [
1875
1730
  {
1876
1731
  if: {
1732
+ properties: {
1733
+ header: {
1734
+ properties: {
1735
+ type: {
1736
+ const: "custom"
1737
+ }
1738
+ }
1739
+ }
1740
+ }
1741
+ },
1742
+ then: {
1877
1743
  properties: {
1878
1744
  header: {
1879
1745
  type: "object",
1746
+ required: [
1747
+ "schemaUrl",
1748
+ "schemaChecksum"
1749
+ ]
1750
+ }
1751
+ }
1752
+ }
1753
+ },
1754
+ {
1755
+ if: {
1756
+ properties: {
1757
+ header: {
1880
1758
  properties: {
1881
1759
  type: {
1882
1760
  const: "actor"
@@ -1891,14 +1769,12 @@ var embedded_metadata_schema_default = {
1891
1769
  $ref: "ref:actor_record_schema"
1892
1770
  }
1893
1771
  }
1894
- },
1895
- else: false
1772
+ }
1896
1773
  },
1897
1774
  {
1898
1775
  if: {
1899
1776
  properties: {
1900
1777
  header: {
1901
- type: "object",
1902
1778
  properties: {
1903
1779
  type: {
1904
1780
  const: "agent"
@@ -1913,14 +1789,12 @@ var embedded_metadata_schema_default = {
1913
1789
  $ref: "ref:agent_record_schema"
1914
1790
  }
1915
1791
  }
1916
- },
1917
- else: false
1792
+ }
1918
1793
  },
1919
1794
  {
1920
1795
  if: {
1921
1796
  properties: {
1922
1797
  header: {
1923
- type: "object",
1924
1798
  properties: {
1925
1799
  type: {
1926
1800
  const: "task"
@@ -1935,14 +1809,12 @@ var embedded_metadata_schema_default = {
1935
1809
  $ref: "ref:task_record_schema"
1936
1810
  }
1937
1811
  }
1938
- },
1939
- else: false
1812
+ }
1940
1813
  },
1941
1814
  {
1942
1815
  if: {
1943
1816
  properties: {
1944
1817
  header: {
1945
- type: "object",
1946
1818
  properties: {
1947
1819
  type: {
1948
1820
  const: "execution"
@@ -1957,17 +1829,15 @@ var embedded_metadata_schema_default = {
1957
1829
  $ref: "ref:execution_record_schema"
1958
1830
  }
1959
1831
  }
1960
- },
1961
- else: false
1832
+ }
1962
1833
  },
1963
1834
  {
1964
1835
  if: {
1965
1836
  properties: {
1966
1837
  header: {
1967
- type: "object",
1968
1838
  properties: {
1969
1839
  type: {
1970
- const: "changelog"
1840
+ const: "feedback"
1971
1841
  }
1972
1842
  }
1973
1843
  }
@@ -1976,20 +1846,18 @@ var embedded_metadata_schema_default = {
1976
1846
  then: {
1977
1847
  properties: {
1978
1848
  payload: {
1979
- $ref: "ref:changelog_record_schema"
1849
+ $ref: "ref:feedback_record_schema"
1980
1850
  }
1981
1851
  }
1982
- },
1983
- else: false
1852
+ }
1984
1853
  },
1985
1854
  {
1986
1855
  if: {
1987
1856
  properties: {
1988
1857
  header: {
1989
- type: "object",
1990
1858
  properties: {
1991
1859
  type: {
1992
- const: "feedback"
1860
+ const: "cycle"
1993
1861
  }
1994
1862
  }
1995
1863
  }
@@ -1998,20 +1866,18 @@ var embedded_metadata_schema_default = {
1998
1866
  then: {
1999
1867
  properties: {
2000
1868
  payload: {
2001
- $ref: "ref:feedback_record_schema"
1869
+ $ref: "ref:cycle_record_schema"
2002
1870
  }
2003
1871
  }
2004
- },
2005
- else: false
1872
+ }
2006
1873
  },
2007
1874
  {
2008
1875
  if: {
2009
1876
  properties: {
2010
1877
  header: {
2011
- type: "object",
2012
1878
  properties: {
2013
1879
  type: {
2014
- const: "cycle"
1880
+ const: "workflow"
2015
1881
  }
2016
1882
  }
2017
1883
  }
@@ -2020,58 +1886,58 @@ var embedded_metadata_schema_default = {
2020
1886
  then: {
2021
1887
  properties: {
2022
1888
  payload: {
2023
- $ref: "ref:cycle_record_schema"
1889
+ $ref: "ref:workflow_record_schema"
2024
1890
  }
2025
1891
  }
2026
- },
2027
- else: false
1892
+ }
2028
1893
  }
2029
1894
  ],
2030
1895
  examples: [
2031
1896
  {
2032
1897
  header: {
2033
- version: "1.0",
2034
- type: "task",
2035
- payloadChecksum: "a1b2c3d4e5f6...",
1898
+ version: "1.1",
1899
+ type: "actor",
1900
+ payloadChecksum: "063d4ba3505e4d2d3852f6063cbd0b98a8728b2afb4a26a323c5c5c512137398",
2036
1901
  signatures: [
2037
1902
  {
2038
1903
  keyId: "human:lead-dev",
2039
1904
  role: "author",
2040
- notes: "Initial task creation for OAuth 2.0 implementation",
2041
- signature: "...",
1905
+ notes: "Self-registration of lead developer account",
1906
+ signature: "yEtlWOGAek8ukP8fycqYZOyogQBudO5XUf4v4BUGaOTogDH4wraanhLvutaJBM7rdilFUS2VvmxZmIy0KjTZAg==",
2042
1907
  timestamp: 1752274500
2043
1908
  }
2044
1909
  ]
2045
1910
  },
2046
1911
  payload: {
2047
- id: "1752274500-task-implementar-auth",
2048
- status: "pending",
2049
- priority: "high",
2050
- description: "Implementar autenticaci\xF3n OAuth 2.0.",
2051
- tags: [
2052
- "skill:go",
2053
- "area:backend"
2054
- ]
1912
+ id: "human:lead-dev",
1913
+ type: "human",
1914
+ displayName: "Lead Developer",
1915
+ publicKey: "0yyrCETtVql51Id+nRKGmpbfsxNxOz+eCYLpWDoutV0=",
1916
+ roles: [
1917
+ "developer",
1918
+ "reviewer"
1919
+ ],
1920
+ status: "active"
2055
1921
  }
2056
1922
  },
2057
1923
  {
2058
1924
  header: {
2059
- version: "1.0",
1925
+ version: "1.1",
2060
1926
  type: "execution",
2061
- payloadChecksum: "b2c3d4e5f6a1...",
1927
+ payloadChecksum: "bd667ddc8698a50594592ac15d0761e62a9f05cc3ba10a9a853ef0819e5fb2ad",
2062
1928
  signatures: [
2063
1929
  {
2064
- keyId: "agent:cursor",
1930
+ keyId: "agent:camilo:cursor",
2065
1931
  role: "author",
2066
1932
  notes: "OAuth 2.0 flow completed with GitHub provider integration",
2067
- signature: "...",
1933
+ signature: "8d9LWTtMlK/Ct4+QWGFpH4iFdZb9T/hlFThAAGKqz8UOPe9qDwPFcv3b4qz9G+NQXh1/PgB1pl8YiQCe6fnjAQ==",
2068
1934
  timestamp: 1752274600
2069
1935
  },
2070
1936
  {
2071
1937
  keyId: "human:camilo",
2072
1938
  role: "reviewer",
2073
1939
  notes: "Reviewed and tested locally. LGTM.",
2074
- signature: "...",
1940
+ signature: "17xsA75W0zzNZI3DXa8iHmxS5NwedfCwu9DoXwk/vArk9yaHcFsY6EgJHNPUtIX+XeKSVF/lOg6CvVIkcXjjAA==",
2075
1941
  timestamp: 1752274650
2076
1942
  }
2077
1943
  ]
@@ -2081,39 +1947,30 @@ var embedded_metadata_schema_default = {
2081
1947
  taskId: "1752274500-task-implement-oauth",
2082
1948
  type: "progress",
2083
1949
  title: "OAuth 2.0 flow implemented",
2084
- result: "Completed the OAuth 2.0 authentication flow..."
1950
+ result: "Completed the OAuth 2.0 authentication flow with GitHub provider. Token refresh and session management included."
2085
1951
  }
2086
1952
  },
2087
1953
  {
2088
1954
  header: {
2089
- version: "1.0",
2090
- type: "actor",
2091
- payloadChecksum: "c3d4e5f6a1b2...",
1955
+ version: "1.1",
1956
+ type: "custom",
1957
+ schemaUrl: "https://example.com/schemas/deployment-record-v1.json",
1958
+ schemaChecksum: "d4e5f6a1b2c3789012345678901234567890123456789012345678901234abcd",
1959
+ payloadChecksum: "1f9598081fcfcf34732de647de25c8445e68e9320e0c10d3a4bd911c7274a1b3",
2092
1960
  signatures: [
2093
1961
  {
2094
- keyId: "human:admin",
1962
+ keyId: "agent:deploy-bot",
2095
1963
  role: "author",
2096
- notes: "New developer onboarded to team",
2097
- signature: "...",
1964
+ notes: "Production deployment of v2.1.0",
1965
+ signature: "W3cSLJnEp+OmKVOwFqjuLTL1S55/OlQyFDzmmxg+vUfETIiQWNr7aDH06/rHUM11g2BLEGRfXZPQPFry6FJeAw==",
2098
1966
  timestamp: 1752274700
2099
- },
2100
- {
2101
- keyId: "agent:aion",
2102
- role: "auditor",
2103
- notes: "Actor verification: 10/10. Credentials validated.",
2104
- signature: "...",
2105
- timestamp: 1752274705
2106
1967
  }
2107
1968
  ]
2108
1969
  },
2109
1970
  payload: {
2110
- id: "human:new-developer",
2111
- type: "human",
2112
- displayName: "New Developer",
2113
- publicKey: "...",
2114
- roles: [
2115
- "developer"
2116
- ]
1971
+ deploymentId: "deploy-2025-07-12-v2.1.0",
1972
+ environment: "production",
1973
+ status: "success"
2117
1974
  }
2118
1975
  }
2119
1976
  ]
@@ -2124,7 +1981,7 @@ var execution_record_schema_default = {
2124
1981
  $schema: "http://json-schema.org/draft-07/schema#",
2125
1982
  $id: "execution_record_schema.json",
2126
1983
  title: "ExecutionRecord",
2127
- description: "Canonical schema for execution log records - the universal event stream",
1984
+ description: "Canonical schema for execution log records - the universal event stream.",
2128
1985
  additionalProperties: false,
2129
1986
  type: "object",
2130
1987
  required: [
@@ -2139,209 +1996,50 @@ var execution_record_schema_default = {
2139
1996
  type: "string",
2140
1997
  pattern: "^\\d{10}-exec-[a-z0-9-]{1,50}$",
2141
1998
  maxLength: 66,
2142
- description: "Unique identifier for the execution log entry (10 timestamp + 1 dash + 4 'exec' + 1 dash + max 50 slug = 66 max)",
2143
- examples: [
2144
- "1752275000-exec-refactor-queries",
2145
- "1752361200-exec-api-externa-caida"
2146
- ]
1999
+ description: "Unique identifier for the execution log entry."
2147
2000
  },
2148
2001
  taskId: {
2149
2002
  type: "string",
2150
2003
  pattern: "^\\d{10}-task-[a-z0-9-]{1,50}$",
2151
2004
  maxLength: 66,
2152
- description: "ID of the parent task this execution belongs to (10 timestamp + 1 dash + 4 'task' + 1 dash + max 50 slug = 66 max)"
2005
+ description: "ID of the parent task this execution belongs to."
2153
2006
  },
2154
2007
  type: {
2155
2008
  type: "string",
2156
- enum: [
2157
- "analysis",
2158
- "progress",
2159
- "blocker",
2160
- "completion",
2161
- "info",
2162
- "correction"
2163
- ],
2164
- description: "Semantic classification of the execution event",
2165
- examples: [
2166
- "progress",
2167
- "analysis",
2168
- "blocker",
2169
- "completion"
2170
- ]
2009
+ pattern: "^(analysis|decision|progress|blocker|completion|correction|info|custom:[a-z0-9-]+(:[a-z0-9-]+)*)$",
2010
+ description: "Classifies what happened in this execution event. Primitive types cover the fundamental kinds of events that occur during any collaborative work. Extend with 'custom:' for your domain.\nPrimitive types:\n - analysis: Investigation, research, or evaluation before acting.\n - decision: A choice that changes the direction of work.\n - progress: Incremental advancement of work.\n - blocker: An impediment preventing further progress.\n - completion: Work on the task is finished.\n - correction: A fix to something previously done incorrectly.\n - info: Informational note or status update.\n\nCustom types use the 'custom:' prefix for industry-specific extensions. Software development examples:\n - custom:review (code review, design review, QA)\n - custom:deployment (deploy to staging/production)\n - custom:rollback (revert a deployment or change)\n - custom:release (version release, PR merge to main)\n - custom:hotfix (emergency fix in production)\nImplementations that encounter an unrecognized custom type MUST treat it as 'info' for display purposes.\n"
2171
2011
  },
2172
2012
  title: {
2173
2013
  type: "string",
2174
2014
  minLength: 1,
2175
2015
  maxLength: 256,
2176
- description: "Human-readable title for the execution (used to generate ID)",
2177
- examples: [
2178
- "Refactor de queries N+1",
2179
- "API Externa Ca\xEDda",
2180
- "Plan de implementaci\xF3n OAuth2"
2181
- ]
2016
+ description: "Human-readable title for the execution (used to generate ID slug)."
2182
2017
  },
2183
2018
  result: {
2184
2019
  type: "string",
2185
2020
  minLength: 10,
2186
- maxLength: 22e3,
2187
- description: 'The tangible, verifiable output or result of the execution. \nThis is the "WHAT" - evidence of work or event summary.\n'
2021
+ description: 'The tangible, verifiable output or result of the execution. This is the "WHAT" - evidence of work or event summary.\n'
2188
2022
  },
2189
2023
  notes: {
2190
2024
  type: "string",
2191
- maxLength: 6500,
2192
- description: 'Optional narrative, context and decisions behind the execution.\nThis is the "HOW" and "WHY" - the story behind the result.\n'
2025
+ description: 'Optional narrative, context and decisions behind the execution. This is the "HOW" and "WHY" - the story behind the result.\n'
2193
2026
  },
2194
2027
  references: {
2195
2028
  type: "array",
2196
2029
  items: {
2197
- type: "string",
2198
- maxLength: 500
2199
- },
2200
- default: [],
2201
- description: "Optional list of typed references to relevant commits, files, PRs, or external documents.\nShould use typed prefixes for clarity and trazabilidad (see execution_protocol_appendix.md):\n- commit: Git commit SHA\n- pr: Pull Request number\n- file: File path (relative to repo root)\n- url: External URL\n- issue: GitHub Issue number\n- task: TaskRecord ID\n- exec: ExecutionRecord ID (for corrections or dependencies)\n- changelog: ChangelogRecord ID\n"
2202
- },
2203
- metadata: {
2204
- type: "object",
2205
- additionalProperties: true,
2206
- description: "Optional structured data for machine consumption.\nUse this field for data that needs to be programmatically processed (e.g., audit findings,\nperformance metrics, scan results). This complements result (human-readable WHAT) and\nnotes (narrative HOW/WHY) by providing structured, queryable data.\nCommon use cases: audit findings arrays, performance metrics, tool outputs, scan summaries.\n",
2207
- examples: [
2208
- {
2209
- findings: [
2210
- {
2211
- type: "PII",
2212
- file: "src/user.ts",
2213
- line: 42
2214
- }
2215
- ],
2216
- scannedFiles: 245
2217
- },
2218
- {
2219
- metrics: {
2220
- duration_ms: 1250,
2221
- memory_mb: 512
2222
- }
2223
- }
2224
- ]
2225
- }
2226
- },
2227
- examples: [
2228
- {
2229
- id: "1752275500-exec-refactor-queries",
2230
- taskId: "1752274500-task-optimizar-api",
2231
- type: "progress",
2232
- title: "Refactor de queries N+1",
2233
- result: "Refactorizados 3 queries N+1 a un solo JOIN optimizado. Performance mejor\xF3 de 2.5s a 200ms.",
2234
- notes: "Identificados 3 N+1 queries en el endpoint /api/search. Aplicado eager loading y caching de relaciones.",
2235
- references: [
2236
- "commit:b2c3d4e",
2237
- "file:src/api/search.ts"
2238
- ]
2239
- },
2240
- {
2241
- id: "1752361200-exec-api-externa-caida",
2242
- taskId: "1752274500-task-optimizar-api",
2243
- type: "blocker",
2244
- title: "API Externa Ca\xEDda",
2245
- result: "No se puede continuar con testing de integraci\xF3n. API de pagos devuelve 503.",
2246
- notes: "La API de pagos de terceros (api.payments.com) est\xE1 devolviendo errores 503. Contactado soporte del proveedor. ETA de resoluci\xF3n: 2-3 horas.",
2247
- references: [
2248
- "url:https://status.payments.com"
2249
- ]
2250
- },
2251
- {
2252
- id: "1752188000-exec-plan-oauth-implementation",
2253
- taskId: "1752274500-task-oauth-implementation",
2254
- type: "analysis",
2255
- title: "Plan de implementaci\xF3n OAuth2",
2256
- result: "Documento de dise\xF1o t\xE9cnico completado. 5 sub-tareas identificadas con estimaciones de complejidad.",
2257
- notes: "Evaluadas 3 opciones: NextAuth.js (elegida), Passport.js, custom implementation. NextAuth.js por madurez y soporte de m\xFAltiples providers.",
2258
- references: [
2259
- "file:docs/oauth-design.md"
2260
- ]
2261
- },
2262
- {
2263
- id: "1752707800-exec-oauth-completed",
2264
- taskId: "1752274500-task-oauth-implementation",
2265
- type: "completion",
2266
- title: "OAuth Implementation Completed",
2267
- result: "Sistema OAuth2 completamente implementado, testeado y deployado a staging. 95% test coverage. Todos los acceptance criteria cumplidos.",
2268
- notes: "Implementaci\xF3n finalizada. Code review aprobado. Tests E2E passing. Ready para changelog y deploy a producci\xF3n.",
2269
- references: [
2270
- "pr:456",
2271
- "commit:def789abc",
2272
- "url:https://staging.app.com/login"
2273
- ]
2274
- },
2275
- {
2276
- id: "1752275600-exec-cambio-estrategia-redis",
2277
- taskId: "1752274500-task-oauth-implementation",
2278
- type: "info",
2279
- title: "Cambio de estrategia: Usar Redis para sessions",
2280
- result: "Decisi\xF3n: Migrar de JWT stateless a sessions en Redis por requisito de revocaci\xF3n inmediata.",
2281
- notes: "Durante code review se identific\xF3 requisito cr\xEDtico: revocar sesiones inmediatamente (ej: compromiso de cuenta). JWT stateless no permite esto sin lista negra compleja. Redis sessions permite revocaci\xF3n instant\xE1nea.",
2282
- references: [
2283
- "issue:567",
2284
- "url:https://redis.io/docs/manual/keyspace-notifications/"
2285
- ]
2286
- },
2287
- {
2288
- id: "1752275700-exec-correccion-metricas",
2289
- taskId: "1752274500-task-optimizar-api",
2290
- type: "correction",
2291
- title: "Correcci\xF3n: M\xE9tricas de performance",
2292
- result: "Correcci\xF3n de execution 1752275500-exec-refactor-queries: El performance fue 200ms, no 50ms como se report\xF3.",
2293
- notes: "Error de tipeo en execution original. La mejora real fue de 2.5s a 200ms (no 50ms). Sigue siendo significativa (92% mejora) pero n\xFAmeros correctos son importantes para m\xE9tricas.",
2294
- references: [
2295
- "exec:1752275500-exec-refactor-queries"
2296
- ]
2297
- },
2298
- {
2299
- id: "1752276000-exec-source-audit-scan",
2300
- taskId: "1752274500-task-audit-compliance",
2301
- type: "analysis",
2302
- title: "Source Audit Scan - 2025-01-15",
2303
- result: "Escaneados 245 archivos. Encontrados 10 findings (3 critical, 4 high, 3 medium). Ver metadata para detalles estructurados.",
2304
- notes: "Scan ejecutado con RegexDetector + HeuristicDetector. LLM calls: 0 (tier free).",
2305
- references: [
2306
- "file:src/config/db.ts",
2307
- "file:src/auth/keys.ts"
2308
- ],
2309
- metadata: {
2310
- scannedFiles: 245,
2311
- scannedLines: 18420,
2312
- duration_ms: 1250,
2313
- findings: [
2314
- {
2315
- id: "SEC-001",
2316
- severity: "critical",
2317
- file: "src/config/db.ts",
2318
- line: 5,
2319
- type: "api_key"
2320
- },
2321
- {
2322
- id: "SEC-003",
2323
- severity: "critical",
2324
- file: "src/auth/keys.ts",
2325
- line: 2,
2326
- type: "private_key"
2327
- },
2328
- {
2329
- id: "PII-003",
2330
- severity: "critical",
2331
- file: "src/payments/stripe.ts",
2332
- line: 8,
2333
- type: "credit_card"
2334
- }
2335
- ],
2336
- summary: {
2337
- critical: 3,
2338
- high: 4,
2339
- medium: 3,
2340
- low: 0
2341
- }
2342
- }
2030
+ type: "string",
2031
+ minLength: 1,
2032
+ maxLength: 500
2033
+ },
2034
+ default: [],
2035
+ description: "Optional list of typed references to relevant commits, files, PRs, or external documents. Standard prefixes: commit:, pr:, issue:, file:, url:, task:, exec:.\n"
2036
+ },
2037
+ metadata: {
2038
+ type: "object",
2039
+ additionalProperties: true,
2040
+ description: "Optional structured data for machine consumption. Use this field for data that needs to be programmatically processed (e.g., audit findings, performance metrics, scan results). Complements result (WHAT) and notes (HOW/WHY) with structured, queryable data.\n"
2343
2041
  }
2344
- ]
2042
+ }
2345
2043
  };
2346
2044
 
2347
2045
  // src/record_schemas/generated/feedback_record_schema.json
@@ -2349,7 +2047,7 @@ var feedback_record_schema_default = {
2349
2047
  $schema: "http://json-schema.org/draft-07/schema#",
2350
2048
  $id: "feedback_record_schema.json",
2351
2049
  title: "FeedbackRecord",
2352
- description: "Canonical schema for feedback records - structured conversation about work",
2050
+ description: "Canonical schema for feedback records \u2014 the structured conversation about work.",
2353
2051
  additionalProperties: false,
2354
2052
  type: "object",
2355
2053
  required: [
@@ -2365,32 +2063,35 @@ var feedback_record_schema_default = {
2365
2063
  type: "string",
2366
2064
  pattern: "^\\d{10}-feedback-[a-z0-9-]{1,50}$",
2367
2065
  maxLength: 70,
2368
- description: "Unique identifier for the feedback entry",
2066
+ description: "Unique identifier for the feedback entry (10 timestamp + 1 dash + 8 'feedback' + 1 dash + max 50 slug = 70 max)",
2369
2067
  examples: [
2370
2068
  "1752788100-feedback-blocking-rest-api",
2371
- "1752788200-feedback-question-test-coverage"
2069
+ "1752788400-feedback-question-test-coverage"
2372
2070
  ]
2373
2071
  },
2374
2072
  entityType: {
2375
2073
  type: "string",
2376
2074
  enum: [
2075
+ "actor",
2076
+ "agent",
2377
2077
  "task",
2378
2078
  "execution",
2379
- "changelog",
2380
2079
  "feedback",
2381
- "cycle"
2080
+ "cycle",
2081
+ "workflow"
2382
2082
  ],
2383
- description: "The type of entity this feedback refers to"
2083
+ description: "The type of entity this feedback refers to."
2384
2084
  },
2385
2085
  entityId: {
2386
2086
  type: "string",
2387
2087
  minLength: 1,
2388
2088
  maxLength: 256,
2389
- description: "The ID of the entity this feedback refers to.\nMust match the pattern for its entityType:\n- task: ^\\d{10}-task-[a-z0-9-]{1,50}$\n- execution: ^\\d{10}-exec-[a-z0-9-]{1,50}$\n- changelog: ^\\d{10}-changelog-[a-z0-9-]{1,50}$\n- feedback: ^\\d{10}-feedback-[a-z0-9-]{1,50}$\n- cycle: ^\\d{10}-cycle-[a-z0-9-]{1,50}$\n",
2089
+ description: "The ID of the entity this feedback refers to.\nMust match the ID pattern for its entityType:\n- actor: ^(human|agent)(:[a-z0-9-]+)+$\n- agent: ^agent(:[a-z0-9-]+)+$\n- task: ^\\d{10}-task-[a-z0-9-]{1,50}$\n- execution: ^\\d{10}-exec-[a-z0-9-]{1,50}$\n- feedback: ^\\d{10}-feedback-[a-z0-9-]{1,50}$\n- cycle: ^\\d{10}-cycle-[a-z0-9-]{1,50}$\n- workflow: ^\\d{10}-workflow-[a-z0-9-]{1,50}$\n",
2390
2090
  examples: [
2391
2091
  "1752274500-task-implementar-oauth",
2392
2092
  "1752642000-exec-subtarea-9-4",
2393
- "1752788100-feedback-blocking-rest-api"
2093
+ "1752788100-feedback-blocking-rest-api",
2094
+ "human:camilo"
2394
2095
  ]
2395
2096
  },
2396
2097
  type: {
@@ -2403,12 +2104,7 @@ var feedback_record_schema_default = {
2403
2104
  "clarification",
2404
2105
  "assignment"
2405
2106
  ],
2406
- description: "The semantic intent of the feedback",
2407
- examples: [
2408
- "blocking",
2409
- "question",
2410
- "approval"
2411
- ]
2107
+ description: "The semantic intent of the feedback."
2412
2108
  },
2413
2109
  status: {
2414
2110
  type: "string",
@@ -2418,19 +2114,18 @@ var feedback_record_schema_default = {
2418
2114
  "resolved",
2419
2115
  "wontfix"
2420
2116
  ],
2421
- description: 'The lifecycle status of the feedback. \nNote: FeedbackRecords are immutable. To change status, create a new feedback \nthat references this one using entityType: "feedback" and resolvesFeedbackId.\n'
2117
+ description: 'The lifecycle status of the feedback.\nFeedbackRecords are immutable. To change status, create a new FeedbackRecord\nthat references this one using entityType: "feedback" and resolvesFeedbackId.\n'
2422
2118
  },
2423
2119
  content: {
2424
2120
  type: "string",
2425
2121
  minLength: 1,
2426
- maxLength: 5e3,
2427
- description: "The content of the feedback. Reduced from 10000 to 5000 chars for practical use."
2122
+ description: "The content of the feedback."
2428
2123
  },
2429
2124
  assignee: {
2430
2125
  type: "string",
2431
2126
  pattern: "^(human|agent)(:[a-z0-9-]+)+$",
2432
2127
  maxLength: 256,
2433
- description: "Optional. The Actor ID responsible for addressing the feedback (e.g., 'human:maria', 'agent:camilo:cursor')",
2128
+ description: "Optional. The Actor ID responsible for addressing the feedback (e.g., 'human:maria', 'agent:camilo:cursor').",
2434
2129
  examples: [
2435
2130
  "human:maria",
2436
2131
  "agent:code-reviewer",
@@ -2441,7 +2136,7 @@ var feedback_record_schema_default = {
2441
2136
  type: "string",
2442
2137
  pattern: "^\\d{10}-feedback-[a-z0-9-]{1,50}$",
2443
2138
  maxLength: 70,
2444
- description: "Optional. The ID of another feedback record that this one resolves or responds to",
2139
+ description: "Optional. The ID of another FeedbackRecord that this one resolves or responds to.",
2445
2140
  examples: [
2446
2141
  "1752788100-feedback-blocking-rest-api"
2447
2142
  ]
@@ -2449,18 +2144,151 @@ var feedback_record_schema_default = {
2449
2144
  metadata: {
2450
2145
  type: "object",
2451
2146
  additionalProperties: true,
2452
- description: "Optional structured data for machine consumption.\nUse this field for domain-specific data that needs to be programmatically processed.\nCommon use cases: waiver details (fingerprint, ruleId, file, line), approval context, assignment metadata.\n",
2453
- examples: [
2454
- {
2455
- fingerprint: "abc123def456",
2456
- ruleId: "PII-001",
2457
- file: "src/user.ts",
2458
- line: 42,
2459
- expiresAt: "2025-12-31T23:59:59Z"
2460
- }
2461
- ]
2147
+ description: "Optional structured data for machine consumption.\nUse this field for domain-specific data that needs to be programmatically processed.\nCommon use cases: waiver details (fingerprint, ruleId, file, line), approval context, assignment metadata.\n"
2462
2148
  }
2463
2149
  },
2150
+ allOf: [
2151
+ {
2152
+ if: {
2153
+ required: [
2154
+ "entityType"
2155
+ ],
2156
+ properties: {
2157
+ entityType: {
2158
+ const: "actor"
2159
+ }
2160
+ }
2161
+ },
2162
+ then: {
2163
+ properties: {
2164
+ entityId: {
2165
+ type: "string",
2166
+ pattern: "^(human|agent)(:[a-z0-9-]+)+$"
2167
+ }
2168
+ }
2169
+ }
2170
+ },
2171
+ {
2172
+ if: {
2173
+ required: [
2174
+ "entityType"
2175
+ ],
2176
+ properties: {
2177
+ entityType: {
2178
+ const: "agent"
2179
+ }
2180
+ }
2181
+ },
2182
+ then: {
2183
+ properties: {
2184
+ entityId: {
2185
+ type: "string",
2186
+ pattern: "^agent(:[a-z0-9-]+)+$"
2187
+ }
2188
+ }
2189
+ }
2190
+ },
2191
+ {
2192
+ if: {
2193
+ required: [
2194
+ "entityType"
2195
+ ],
2196
+ properties: {
2197
+ entityType: {
2198
+ const: "task"
2199
+ }
2200
+ }
2201
+ },
2202
+ then: {
2203
+ properties: {
2204
+ entityId: {
2205
+ type: "string",
2206
+ pattern: "^\\d{10}-task-[a-z0-9-]{1,50}$"
2207
+ }
2208
+ }
2209
+ }
2210
+ },
2211
+ {
2212
+ if: {
2213
+ required: [
2214
+ "entityType"
2215
+ ],
2216
+ properties: {
2217
+ entityType: {
2218
+ const: "execution"
2219
+ }
2220
+ }
2221
+ },
2222
+ then: {
2223
+ properties: {
2224
+ entityId: {
2225
+ type: "string",
2226
+ pattern: "^\\d{10}-exec-[a-z0-9-]{1,50}$"
2227
+ }
2228
+ }
2229
+ }
2230
+ },
2231
+ {
2232
+ if: {
2233
+ required: [
2234
+ "entityType"
2235
+ ],
2236
+ properties: {
2237
+ entityType: {
2238
+ const: "feedback"
2239
+ }
2240
+ }
2241
+ },
2242
+ then: {
2243
+ properties: {
2244
+ entityId: {
2245
+ type: "string",
2246
+ pattern: "^\\d{10}-feedback-[a-z0-9-]{1,50}$"
2247
+ }
2248
+ }
2249
+ }
2250
+ },
2251
+ {
2252
+ if: {
2253
+ required: [
2254
+ "entityType"
2255
+ ],
2256
+ properties: {
2257
+ entityType: {
2258
+ const: "cycle"
2259
+ }
2260
+ }
2261
+ },
2262
+ then: {
2263
+ properties: {
2264
+ entityId: {
2265
+ type: "string",
2266
+ pattern: "^\\d{10}-cycle-[a-z0-9-]{1,50}$"
2267
+ }
2268
+ }
2269
+ }
2270
+ },
2271
+ {
2272
+ if: {
2273
+ required: [
2274
+ "entityType"
2275
+ ],
2276
+ properties: {
2277
+ entityType: {
2278
+ const: "workflow"
2279
+ }
2280
+ }
2281
+ },
2282
+ then: {
2283
+ properties: {
2284
+ entityId: {
2285
+ type: "string",
2286
+ pattern: "^\\d{10}-workflow-[a-z0-9-]{1,50}$"
2287
+ }
2288
+ }
2289
+ }
2290
+ }
2291
+ ],
2464
2292
  examples: [
2465
2293
  {
2466
2294
  id: "1752788100-feedback-blocking-rest-api",
@@ -2468,7 +2296,7 @@ var feedback_record_schema_default = {
2468
2296
  entityId: "1752642000-exec-subtarea-9-4",
2469
2297
  type: "blocking",
2470
2298
  status: "open",
2471
- content: "Esta implementaci\xF3n no cumple el est\xE1ndar de rutas REST. Los endpoints deben seguir el patr\xF3n /api/v1/{resource}/{id}. Actualmente usa /get-user?id=X que no es RESTful."
2299
+ content: "This implementation does not comply with the REST endpoint standard. Endpoints must follow the /api/v1/{resource}/{id} pattern. Currently uses /get-user?id=X which is not RESTful."
2472
2300
  },
2473
2301
  {
2474
2302
  id: "1752788200-feedback-rest-api-fixed",
@@ -2476,7 +2304,7 @@ var feedback_record_schema_default = {
2476
2304
  entityId: "1752788100-feedback-blocking-rest-api",
2477
2305
  type: "clarification",
2478
2306
  status: "resolved",
2479
- content: "Implementada la correcci\xF3n. Ahora todos los endpoints siguen el est\xE1ndar REST: GET /api/v1/users/:id, POST /api/v1/users, etc. Tests actualizados y passing.",
2307
+ content: "Fix implemented. All endpoints now follow REST standard: GET /api/v1/users/:id, POST /api/v1/users, etc. Tests updated and passing.",
2480
2308
  resolvesFeedbackId: "1752788100-feedback-blocking-rest-api"
2481
2309
  },
2482
2310
  {
@@ -2485,7 +2313,7 @@ var feedback_record_schema_default = {
2485
2313
  entityId: "1752274500-task-implementar-oauth",
2486
2314
  type: "assignment",
2487
2315
  status: "open",
2488
- content: "Asignando esta tarea a Mar\xEDa por su experiencia con OAuth2. Prioridad alta para el sprint actual.",
2316
+ content: "Assigning this task to Maria for her experience with OAuth2. High priority for the current sprint.",
2489
2317
  assignee: "human:maria"
2490
2318
  },
2491
2319
  {
@@ -2494,7 +2322,7 @@ var feedback_record_schema_default = {
2494
2322
  entityId: "1752274500-task-implementar-oauth",
2495
2323
  type: "question",
2496
2324
  status: "open",
2497
- content: "\xBFCu\xE1l es el nivel de test coverage esperado para esta feature? El spec no lo menciona expl\xEDcitamente. \xBFDebemos apuntar a 80% como el resto del proyecto?"
2325
+ content: "What level of test coverage is expected for this feature? The spec does not mention it explicitly. Should we aim for 80% like the rest of the project?"
2498
2326
  }
2499
2327
  ]
2500
2328
  };
@@ -2504,7 +2332,7 @@ var task_record_schema_default = {
2504
2332
  $schema: "http://json-schema.org/draft-07/schema#",
2505
2333
  $id: "task_record_schema.json",
2506
2334
  title: "TaskRecord",
2507
- description: "Canonical schema for task records as defined in task_protocol.md",
2335
+ description: "Canonical schema for task records as defined in 04_task.md",
2508
2336
  additionalProperties: false,
2509
2337
  type: "object",
2510
2338
  required: [
@@ -2554,7 +2382,6 @@ var task_record_schema_default = {
2554
2382
  "paused",
2555
2383
  "discarded"
2556
2384
  ],
2557
- maxLength: 40,
2558
2385
  description: "Current state of the task in the institutional flow"
2559
2386
  },
2560
2387
  priority: {
@@ -2565,13 +2392,11 @@ var task_record_schema_default = {
2565
2392
  "high",
2566
2393
  "critical"
2567
2394
  ],
2568
- maxLength: 40,
2569
2395
  description: "Strategic or tactical priority level"
2570
2396
  },
2571
2397
  description: {
2572
2398
  type: "string",
2573
2399
  minLength: 10,
2574
- maxLength: 22e3,
2575
2400
  description: "Functional, technical or strategic summary of the objective"
2576
2401
  },
2577
2402
  tags: {
@@ -2579,7 +2404,7 @@ var task_record_schema_default = {
2579
2404
  items: {
2580
2405
  type: "string",
2581
2406
  minLength: 1,
2582
- pattern: "^[a-z0-9-]+(:[a-z0-9-:]+)*$"
2407
+ pattern: "^[a-z0-9-]+(:[a-z0-9-]+)*$"
2583
2408
  },
2584
2409
  default: [],
2585
2410
  description: "Optional. List of key:value tags for categorization and role suggestion (e.g., 'skill:react', 'role:agent:developer')."
@@ -2596,9 +2421,26 @@ var task_record_schema_default = {
2596
2421
  },
2597
2422
  notes: {
2598
2423
  type: "string",
2599
- minLength: 0,
2600
- maxLength: 3e3,
2424
+ minLength: 1,
2601
2425
  description: "Additional comments, decisions made or added context"
2426
+ },
2427
+ metadata: {
2428
+ type: "object",
2429
+ additionalProperties: true,
2430
+ description: "Optional structured data for machine consumption.\nUse this field for domain-specific data that needs to be programmatically processed.\nComplements tags (classification) and notes (free text) with structured, queryable data.\nCommon use cases: epic metadata, external tool references, agent metrics, compliance tags.\n",
2431
+ examples: [
2432
+ {
2433
+ epic: true,
2434
+ phase: "implementation",
2435
+ files: {
2436
+ overview: "overview.md"
2437
+ }
2438
+ },
2439
+ {
2440
+ jira: "AUTH-42",
2441
+ storyPoints: 5
2442
+ }
2443
+ ]
2602
2444
  }
2603
2445
  },
2604
2446
  examples: [
@@ -2681,25 +2523,22 @@ var task_record_schema_default = {
2681
2523
  // src/record_schemas/generated/workflow_record_schema.json
2682
2524
  var workflow_record_schema_default = {
2683
2525
  $schema: "http://json-schema.org/draft-07/schema#",
2684
- $id: "workflow_schema.json",
2526
+ $id: "workflow_record_schema.json",
2685
2527
  title: "WorkflowRecord",
2686
- description: "Complete schema for workflow methodology configuration files that define state transitions, signatures, and custom rules",
2528
+ description: "Schema for workflow methodology configuration that defines named state transitions, signatures, and custom rules.",
2687
2529
  type: "object",
2688
2530
  required: [
2689
- "version",
2531
+ "id",
2690
2532
  "name",
2691
2533
  "state_transitions"
2692
2534
  ],
2693
2535
  additionalProperties: false,
2694
2536
  properties: {
2695
- $schema: {
2696
- type: "string",
2697
- description: "JSON Schema reference"
2698
- },
2699
- version: {
2537
+ id: {
2700
2538
  type: "string",
2701
- pattern: "^\\d+\\.\\d+\\.\\d+$",
2702
- description: "Semantic version of the methodology configuration"
2539
+ pattern: "^\\d{10}-workflow-[a-z0-9-]{1,50}$",
2540
+ maxLength: 70,
2541
+ description: "Unique identifier for the workflow record (10 timestamp + 1 dash + 8 'workflow' + 1 dash + max 50 slug = 70 max)"
2703
2542
  },
2704
2543
  name: {
2705
2544
  type: "string",
@@ -2714,11 +2553,15 @@ var workflow_record_schema_default = {
2714
2553
  },
2715
2554
  state_transitions: {
2716
2555
  type: "object",
2717
- description: "Defines valid state transitions and their requirements",
2556
+ description: "Map of named transitions to their rules. Keys are transition names (e.g., submit, approve, activate, resume), not target states.",
2557
+ propertyNames: {
2558
+ pattern: "^[a-z][a-z0-9_]{0,49}$"
2559
+ },
2718
2560
  additionalProperties: {
2719
2561
  type: "object",
2720
2562
  required: [
2721
2563
  "from",
2564
+ "to",
2722
2565
  "requires"
2723
2566
  ],
2724
2567
  additionalProperties: false,
@@ -2732,21 +2575,26 @@ var workflow_record_schema_default = {
2732
2575
  minItems: 1,
2733
2576
  description: "Valid source states for this transition"
2734
2577
  },
2578
+ to: {
2579
+ type: "string",
2580
+ pattern: "^[a-z][a-z0-9_]{0,49}$",
2581
+ description: "Target state for this transition"
2582
+ },
2735
2583
  requires: {
2736
2584
  type: "object",
2737
2585
  additionalProperties: false,
2738
2586
  properties: {
2739
2587
  command: {
2740
2588
  type: "string",
2741
- description: "CLI command that triggers this transition"
2589
+ description: "CLI command that triggers this transition (Command Gate)"
2742
2590
  },
2743
2591
  event: {
2744
2592
  type: "string",
2745
- description: "System event that triggers this transition"
2593
+ description: "System event that triggers this transition (Event Gate)"
2746
2594
  },
2747
2595
  signatures: {
2748
2596
  type: "object",
2749
- description: "Signature requirements keyed by role (e.g., 'approver:quality', 'developer:backend')",
2597
+ description: "Signature group requirements (Signature Gate)",
2750
2598
  additionalProperties: {
2751
2599
  type: "object",
2752
2600
  required: [
@@ -2786,7 +2634,7 @@ var workflow_record_schema_default = {
2786
2634
  items: {
2787
2635
  type: "string"
2788
2636
  },
2789
- description: "Optional: specific actors that can sign"
2637
+ description: "Optional: restrict to specific actor IDs"
2790
2638
  }
2791
2639
  }
2792
2640
  }
@@ -2835,7 +2683,7 @@ var workflow_record_schema_default = {
2835
2683
  },
2836
2684
  expression: {
2837
2685
  type: "string",
2838
- description: "Inline validation expression for 'custom' validation type. Implementation determines the runtime and language. Must return boolean or Promise<boolean>."
2686
+ description: "Inline validation expression for 'custom' type. Must return boolean."
2839
2687
  },
2840
2688
  module_path: {
2841
2689
  type: "string",
@@ -2846,7 +2694,7 @@ var workflow_record_schema_default = {
2846
2694
  },
2847
2695
  agent_integration: {
2848
2696
  type: "object",
2849
- description: "Optional agent automation configuration for methodology",
2697
+ description: "Optional agent automation configuration",
2850
2698
  additionalProperties: false,
2851
2699
  properties: {
2852
2700
  description: {
@@ -2856,7 +2704,7 @@ var workflow_record_schema_default = {
2856
2704
  },
2857
2705
  required_agents: {
2858
2706
  type: "array",
2859
- description: "References to agents required for this methodology. Agent details (engine, knowledge, etc.) live in their AgentRecord.",
2707
+ description: "Agents required for this methodology",
2860
2708
  items: {
2861
2709
  type: "object",
2862
2710
  required: [
@@ -2878,8 +2726,8 @@ var workflow_record_schema_default = {
2878
2726
  properties: {
2879
2727
  id: {
2880
2728
  type: "string",
2881
- pattern: "^agent:[a-z0-9:-]+$",
2882
- description: "Specific agent ID. References an existing AgentRecord."
2729
+ pattern: "^agent(:[a-z0-9-]+)+$",
2730
+ description: "Specific agent ID (references an AgentRecord)"
2883
2731
  },
2884
2732
  required_roles: {
2885
2733
  type: "array",
@@ -2888,11 +2736,11 @@ var workflow_record_schema_default = {
2888
2736
  pattern: "^[a-z0-9-]+(:[a-z0-9-]+)*$"
2889
2737
  },
2890
2738
  minItems: 1,
2891
- description: "Required capability roles. Matches any agent with these roles (from ActorRecord)."
2739
+ description: "Required capability roles (matches any agent with these roles)"
2892
2740
  },
2893
2741
  triggers: {
2894
2742
  type: "array",
2895
- description: "When this agent activates within this methodology",
2743
+ description: "Events that activate this agent",
2896
2744
  items: {
2897
2745
  type: "object",
2898
2746
  required: [
@@ -2921,190 +2769,13 @@ var workflow_record_schema_default = {
2921
2769
  }
2922
2770
  }
2923
2771
  }
2924
- },
2925
- examples: [
2926
- {
2927
- version: "1.0.0",
2928
- name: "Simple Kanban",
2929
- description: "Basic workflow for small teams",
2930
- state_transitions: {
2931
- review: {
2932
- from: [
2933
- "draft"
2934
- ],
2935
- requires: {
2936
- command: "gitgov task submit"
2937
- }
2938
- },
2939
- ready: {
2940
- from: [
2941
- "review"
2942
- ],
2943
- requires: {
2944
- command: "gitgov task approve",
2945
- signatures: {
2946
- __default__: {
2947
- role: "approver",
2948
- capability_roles: [
2949
- "approver:product"
2950
- ],
2951
- min_approvals: 1
2952
- }
2953
- }
2954
- }
2955
- },
2956
- active: {
2957
- from: [
2958
- "ready"
2959
- ],
2960
- requires: {
2961
- event: "first_execution_record_created"
2962
- }
2963
- },
2964
- done: {
2965
- from: [
2966
- "active"
2967
- ],
2968
- requires: {
2969
- command: "gitgov task complete"
2970
- }
2971
- }
2972
- }
2973
- },
2974
- {
2975
- version: "1.0.0",
2976
- name: "GitGovernance Default Methodology",
2977
- description: "Standard GitGovernance workflow with quality gates and agent collaboration",
2978
- state_transitions: {
2979
- review: {
2980
- from: [
2981
- "draft"
2982
- ],
2983
- requires: {
2984
- command: "gitgov task submit",
2985
- signatures: {
2986
- __default__: {
2987
- role: "submitter",
2988
- capability_roles: [
2989
- "author"
2990
- ],
2991
- min_approvals: 1
2992
- }
2993
- }
2994
- }
2995
- },
2996
- ready: {
2997
- from: [
2998
- "review"
2999
- ],
3000
- requires: {
3001
- command: "gitgov task approve",
3002
- signatures: {
3003
- __default__: {
3004
- role: "approver",
3005
- capability_roles: [
3006
- "approver:product"
3007
- ],
3008
- min_approvals: 1
3009
- },
3010
- design: {
3011
- role: "approver",
3012
- capability_roles: [
3013
- "approver:design"
3014
- ],
3015
- min_approvals: 1
3016
- },
3017
- quality: {
3018
- role: "approver",
3019
- capability_roles: [
3020
- "approver:quality"
3021
- ],
3022
- min_approvals: 1
3023
- }
3024
- }
3025
- }
3026
- },
3027
- active: {
3028
- from: [
3029
- "ready",
3030
- "paused"
3031
- ],
3032
- requires: {
3033
- event: "first_execution_record_created",
3034
- custom_rules: [
3035
- "task_must_have_valid_assignment_for_executor"
3036
- ]
3037
- }
3038
- },
3039
- done: {
3040
- from: [
3041
- "active"
3042
- ],
3043
- requires: {
3044
- command: "gitgov task complete",
3045
- signatures: {
3046
- __default__: {
3047
- role: "approver",
3048
- capability_roles: [
3049
- "approver:quality"
3050
- ],
3051
- min_approvals: 1
3052
- }
3053
- }
3054
- }
3055
- },
3056
- archived: {
3057
- from: [
3058
- "done"
3059
- ],
3060
- requires: {
3061
- event: "changelog_record_created"
3062
- }
3063
- },
3064
- paused: {
3065
- from: [
3066
- "active",
3067
- "review"
3068
- ],
3069
- requires: {
3070
- event: "feedback_blocking_created"
3071
- }
3072
- },
3073
- discarded: {
3074
- from: [
3075
- "ready",
3076
- "active"
3077
- ],
3078
- requires: {
3079
- command: "gitgov task cancel",
3080
- signatures: {
3081
- __default__: {
3082
- role: "canceller",
3083
- capability_roles: [
3084
- "approver:product",
3085
- "approver:quality"
3086
- ],
3087
- min_approvals: 1
3088
- }
3089
- }
3090
- }
3091
- }
3092
- },
3093
- custom_rules: {
3094
- task_must_have_valid_assignment_for_executor: {
3095
- description: "Task must have a valid assignment before execution can begin",
3096
- validation: "assignment_required"
3097
- }
3098
- }
3099
- }
3100
- ]
2772
+ }
3101
2773
  };
3102
2774
 
3103
2775
  // src/record_schemas/generated/index.ts
3104
2776
  var Schemas = {
3105
2777
  ActorRecord: actor_record_schema_default,
3106
2778
  AgentRecord: agent_record_schema_default,
3107
- ChangelogRecord: changelog_record_schema_default,
3108
2779
  CycleRecord: cycle_record_schema_default,
3109
2780
  EmbeddedMetadata: embedded_metadata_schema_default,
3110
2781
  ExecutionRecord: execution_record_schema_default,
@@ -3146,7 +2817,6 @@ var SchemaValidationCache = class {
3146
2817
  const schemaRefMap = {
3147
2818
  "ActorRecord": "ref:actor_record_schema",
3148
2819
  "AgentRecord": "ref:agent_record_schema",
3149
- "ChangelogRecord": "ref:changelog_record_schema",
3150
2820
  "CycleRecord": "ref:cycle_record_schema",
3151
2821
  "ExecutionRecord": "ref:execution_record_schema",
3152
2822
  "FeedbackRecord": "ref:feedback_record_schema",
@@ -3373,45 +3043,6 @@ function loadExecutionRecord(data) {
3373
3043
  return record;
3374
3044
  }
3375
3045
 
3376
- // src/record_validations/changelog_validator.ts
3377
- function validateChangelogRecordSchema(data) {
3378
- const validator = SchemaValidationCache.getValidatorFromSchema(Schemas.ChangelogRecord);
3379
- const isValid = validator(data);
3380
- return [isValid, validator.errors];
3381
- }
3382
- function validateChangelogRecordDetailed(data) {
3383
- const [isValid, errors] = validateChangelogRecordSchema(data);
3384
- if (!isValid && errors) {
3385
- const formattedErrors = errors.map((error) => ({
3386
- field: error.instancePath?.replace("/", "") || error.params?.["missingProperty"] || "root",
3387
- message: error.message || "Unknown validation error",
3388
- value: error.data
3389
- }));
3390
- return {
3391
- isValid: false,
3392
- errors: formattedErrors
3393
- };
3394
- }
3395
- return {
3396
- isValid: true,
3397
- errors: []
3398
- };
3399
- }
3400
-
3401
- // src/record_factories/changelog_factory.ts
3402
- function loadChangelogRecord(data) {
3403
- const embeddedValidation = validateEmbeddedMetadataDetailed(data);
3404
- if (!embeddedValidation.isValid) {
3405
- throw new DetailedValidationError("GitGovRecord (ChangelogRecord)", embeddedValidation.errors);
3406
- }
3407
- const record = data;
3408
- const payloadValidation = validateChangelogRecordDetailed(record.payload);
3409
- if (!payloadValidation.isValid) {
3410
- throw new DetailedValidationError("ChangelogRecord payload", payloadValidation.errors);
3411
- }
3412
- return record;
3413
- }
3414
-
3415
3046
  // src/record_validations/feedback_validator.ts
3416
3047
  function validateFeedbackRecordSchema(data) {
3417
3048
  const validator = SchemaValidationCache.getValidatorFromSchema(Schemas.FeedbackRecord);
@@ -3516,7 +3147,7 @@ var FsLintModule = class {
3516
3147
  return this.lintModule.lintRecord(record, context);
3517
3148
  }
3518
3149
  /**
3519
- * Delegates to LintModule.lintRecordReferences() for prefix validation.
3150
+ * Delegates to LintModule.lintRecordReferences() for reference validation.
3520
3151
  */
3521
3152
  lintRecordReferences(record, context) {
3522
3153
  return this.lintModule.lintRecordReferences(record, context);
@@ -3754,9 +3385,6 @@ var FsLintModule = class {
3754
3385
  case "execution":
3755
3386
  record = loadExecutionRecord(raw);
3756
3387
  break;
3757
- case "changelog":
3758
- record = loadChangelogRecord(raw);
3759
- break;
3760
3388
  case "feedback":
3761
3389
  record = loadFeedbackRecord(raw);
3762
3390
  break;
@@ -3769,10 +3397,6 @@ var FsLintModule = class {
3769
3397
  filePath
3770
3398
  });
3771
3399
  results.push(...lintResults);
3772
- if (options.validateFileNaming) {
3773
- const namingResults = this.validateFileNaming(record, recordId, filePath, entityType);
3774
- results.push(...namingResults);
3775
- }
3776
3400
  if (options.validateReferences) {
3777
3401
  const refResults = this.lintModule.lintRecordReferences(record, {
3778
3402
  recordId,
@@ -3781,6 +3405,10 @@ var FsLintModule = class {
3781
3405
  });
3782
3406
  results.push(...refResults);
3783
3407
  }
3408
+ if (options.validateFileNaming) {
3409
+ const namingResults = this.validateFileNaming(record, recordId, filePath, entityType);
3410
+ results.push(...namingResults);
3411
+ }
3784
3412
  } catch (error) {
3785
3413
  if (error instanceof DetailedValidationError) {
3786
3414
  const hasAdditionalProperties = error.errors.some(
@@ -3833,7 +3461,6 @@ var FsLintModule = class {
3833
3461
  "task": "tasks",
3834
3462
  "cycle": "cycles",
3835
3463
  "execution": "executions",
3836
- "changelog": "changelogs",
3837
3464
  "feedback": "feedbacks",
3838
3465
  "actor": "actors",
3839
3466
  "agent": "agents"
@@ -3876,7 +3503,6 @@ var FsLintModule = class {
3876
3503
  "cycle",
3877
3504
  "task",
3878
3505
  "execution",
3879
- "changelog",
3880
3506
  "feedback"
3881
3507
  ];
3882
3508
  const allRecords = [];
@@ -3884,7 +3510,6 @@ var FsLintModule = class {
3884
3510
  "task": "tasks",
3885
3511
  "cycle": "cycles",
3886
3512
  "execution": "executions",
3887
- "changelog": "changelogs",
3888
3513
  "feedback": "feedbacks",
3889
3514
  "actor": "actors",
3890
3515
  "agent": "agents"
@@ -3910,7 +3535,6 @@ var FsLintModule = class {
3910
3535
  "task": "tasks",
3911
3536
  "cycle": "cycles",
3912
3537
  "execution": "executions",
3913
- "changelog": "changelogs",
3914
3538
  "feedback": "feedbacks",
3915
3539
  "actor": "actors",
3916
3540
  "agent": "agents"
@@ -4126,8 +3750,7 @@ var GITGOV_DIRECTORIES = [
4126
3750
  "cycles",
4127
3751
  "tasks",
4128
3752
  "executions",
4129
- "feedbacks",
4130
- "changelogs"
3753
+ "feedbacks"
4131
3754
  ];
4132
3755
  var FsProjectInitializer = class {
4133
3756
  projectRoot;
@@ -5656,7 +5279,6 @@ var SYNC_DIRECTORIES = [
5656
5279
  "agents",
5657
5280
  "feedbacks",
5658
5281
  "executions",
5659
- "changelogs",
5660
5282
  "workflows"
5661
5283
  ];
5662
5284
  var SYNC_ROOT_FILES = [