10-backend/internal/persistence/artifact-manifest.json

{
  "manifestVersion": "1",
  "artifact": {
    "id": "IMPL-EP-PERSISTENCE-MIGRATIONS",
    "type": "implementation-module",
    "name": "Persistence and Migration Foundation",
    "status": "active"
  },
  "realizes": {
    "vision": [
      "MVP-001"
    ],
    "capabilities": [
      "CAP-015",
      "CAP-024",
      "CAP-027"
    ],
    "referenceBuildingBlocks": [
      "RBB-PERSISTENCE"
    ],
    "solutionBuildingBlocks": [
      "BB-EP-010"
    ],
    "requirements": [
      "REQ-MVP-PER-001",
      "REQ-MVP-AUD-001"
    ]
  },
  "implements": {
    "domainObjects": [
      "ArtifactRevision",
      "RelationshipRevision",
      "AuditEvent",
      "OutboxEvent"
    ],
    "ports": [
      "MigrationRunner"
    ],
    "runtimeComponents": [
      "engineering-platform-database"
    ]
  },
  "documentation": {
    "solutionArchitecture": [
      "70-data/EP-001B-persistence-model.md"
    ],
    "engineeringPlatform": [
      "60-persistence/EP-001B-persistence-boundary.md"
    ]
  },
  "ownership": {
    "repository": "engineering-platform",
    "buildingBlock": "BB-EP-010",
    "modulePath": "10-backend/internal/persistence"
  },
  "quality": {
    "tests": [
      "10-backend/internal/persistence/migrations"
    ],
    "requiredChecks": [
      "go-test",
      "migration-validation",
      "traceability-validation"
    ]
  },
  "verification": {
    "codeAreas": [
      {
        "path": "10-backend/internal/persistence/migrations",
        "classification": "adapter",
        "status": "directly-verified",
        "evidence": [
          {
            "category": "unit-test",
            "path": "10-backend/internal/persistence/migrations/runner_test.go",
            "purpose": "prüft Migrationserkennung und SQL-Splitting"
          },
          {
            "category": "fuzz-test",
            "path": "10-backend/internal/persistence/migrations/runner_test.go",
            "purpose": "stabilisiert SQL-Splitting"
          }
        ],
        "limitations": [
          "Echte MariaDB-Ausführung fehlt noch."
        ]
      },
      {
        "path": "10-backend/internal/sharedkernel/language.go",
        "classification": "domain-logic",
        "status": "directly-verified",
        "evidence": [
          {
            "category": "unit-test",
            "path": "10-backend/internal/sharedkernel/id_test.go",
            "purpose": "prüft Sprachcodes"
          },
          {
            "category": "fuzz-test",
            "path": "10-backend/internal/sharedkernel/id_test.go",
            "purpose": "verhindert unbekannte Sprachcodes"
          }
        ]
      },
      {
        "path": "10-backend/internal/sharedkernel/context.go",
        "classification": "domain-logic",
        "status": "directly-verified",
        "evidence": [
          {
            "category": "unit-test",
            "path": "10-backend/internal/sharedkernel/context_test.go",
            "purpose": "prüft Akteur und Zeitpunkt"
          }
        ]
      },
      {
        "path": "10-backend/internal/localization/domain/localization.go",
        "classification": "declaration-only",
        "status": "not-applicable",
        "reason": "Aktuell nur Typen und Statuskonstanten."
      },
      {
        "path": "10-backend/internal/translation/domain/job.go",
        "classification": "declaration-only",
        "status": "not-applicable",
        "reason": "Aktuell nur Typen und Statuskonstanten."
      },
      {
        "path": "10-backend/internal/roundtrip/domain/job.go",
        "classification": "declaration-only",
        "status": "not-applicable",
        "reason": "Aktuell nur Typen und Statuskonstanten."
      },
      {
        "path": "10-backend/internal/audit/domain/event.go",
        "classification": "declaration-only",
        "status": "not-applicable",
        "reason": "Aktuell nur Event-Datenmodell."
      }
    ]
  }
}