diff --git a/openspec/changes/advice-management/builds/build.json b/openspec/changes/advice-management/builds/build.json index c62b20fb..8256757b 100644 --- a/openspec/changes/advice-management/builds/build.json +++ b/openspec/changes/advice-management/builds/build.json @@ -1,17 +1,17 @@ { "phase": "build", - "timestamp": "2026-04-18T20:08:33.514412+00:00", + "timestamp": "2026-04-20T21:15:05.372334+00:00", "pr": 123, - "commit": "b37d8fc", - "turns": 107, - "cost_usd": 1.3009, + "commit": "00ac01f", + "turns": 94, + "cost_usd": 1.1389, "tokens": { - "input": 844, - "output": 39748, - "cache_read": 9384173, - "cache_create": 130358 + "input": 738, + "output": 32065, + "cache_read": 8063377, + "cache_create": 135785 }, "model": "claude-haiku-4-5-20251001", "maxed_out": false, - "cost_eur": 1.1968 + "cost_eur": 1.0478 } \ No newline at end of file diff --git a/openspec/changes/advice-management/pipeline-logs/build.2.jsonl.gz b/openspec/changes/advice-management/pipeline-logs/build.2.jsonl.gz new file mode 100644 index 00000000..c4005a2d Binary files /dev/null and b/openspec/changes/advice-management/pipeline-logs/build.2.jsonl.gz differ diff --git a/openspec/changes/case-dashboard-view/builds/build.json b/openspec/changes/case-dashboard-view/builds/build.json index ded2f185..560855fb 100644 --- a/openspec/changes/case-dashboard-view/builds/build.json +++ b/openspec/changes/case-dashboard-view/builds/build.json @@ -1,17 +1,17 @@ { "phase": "build", - "timestamp": "2026-04-18T20:29:40.815816+00:00", + "timestamp": "2026-04-20T21:27:53.618409+00:00", "pr": 179, - "commit": "dd43e77", - "turns": 86, - "cost_usd": 0.7379, + "commit": "ad65f5f", + "turns": 83, + "cost_usd": 0.6914, "tokens": { - "input": 666, - "output": 21514, - "cache_read": 5348463, - "cache_create": 75848 + "input": 650, + "output": 20276, + "cache_read": 4993016, + "cache_create": 70596 }, "model": "claude-haiku-4-5-20251001", "maxed_out": false, - "cost_eur": 0.6789 + "cost_eur": 0.6361 } \ No newline at end of file diff --git a/openspec/changes/case-dashboard-view/pipeline-logs/build.2.jsonl.gz b/openspec/changes/case-dashboard-view/pipeline-logs/build.2.jsonl.gz new file mode 100644 index 00000000..eeef993c Binary files /dev/null and b/openspec/changes/case-dashboard-view/pipeline-logs/build.2.jsonl.gz differ diff --git a/openspec/changes/case-management/builds/build.json b/openspec/changes/case-management/builds/build.json index cd5ba41b..b0a6a03a 100644 --- a/openspec/changes/case-management/builds/build.json +++ b/openspec/changes/case-management/builds/build.json @@ -1,17 +1,17 @@ { "phase": "build", - "timestamp": "2026-04-18T18:19:55.294646+00:00", + "timestamp": "2026-04-20T21:41:41.315041+00:00", "pr": 180, - "commit": "0e9d812", - "turns": 72, - "cost_usd": 0.812, + "commit": "cf4b5c8", + "turns": 87, + "cost_usd": 0.6734, "tokens": { - "input": 1900, - "output": 19760, - "cache_read": 5234799, - "cache_create": 150267 + "input": 658, + "output": 18536, + "cache_read": 4992348, + "cache_create": 63221 }, "model": "claude-haiku-4-5-20251001", "maxed_out": false, - "cost_eur": 0.747 + "cost_eur": 0.6195 } \ No newline at end of file diff --git a/openspec/changes/case-management/pipeline-logs/build.2.jsonl.gz b/openspec/changes/case-management/pipeline-logs/build.2.jsonl.gz new file mode 100644 index 00000000..955cd653 Binary files /dev/null and b/openspec/changes/case-management/pipeline-logs/build.2.jsonl.gz differ diff --git a/openspec/changes/case-types/hydra.json b/openspec/changes/case-types/hydra.json new file mode 100644 index 00000000..3cc15e0b --- /dev/null +++ b/openspec/changes/case-types/hydra.json @@ -0,0 +1,502 @@ +{ + "spec_slug": "case-types", + "app": "procest", + "repo": "ConductionNL/procest", + "issue": 206, + "depends_on": [], + "schema_version": 2, + "cycles": [ + { + "cycle": 1, + "trigger": "build:queued", + "started_at": "2026-04-18T20:31:00Z", + "ended_at": null, + "outcome": "aborted", + "outcome_reason": "no terminal label seen in timeline", + "pattern_tags": [ + "reviewer-skipped-full-suite" + ], + "stages": [ + { + "stage": "build", + "persona": "Al Gorithm", + "model": "haiku", + "container": "hydra-builder", + "started_at": "2026-04-18T20:31:00Z", + "ended_at": "2026-04-18T20:31:01Z", + "turns_used": 80, + "turns_budget": 200, + "cost_usd": 0.6591, + "checks_run": [ + "composer check:strict" + ], + "checks_skipped": [], + "findings": [ + { + "id": "b-builder-build-0", + "severity": "WARNING", + "gate": null, + "rule": "builder output flagged failure language", + "status": "open", + "note": "## Implementation Complete \u2705\n\nI have successfully implemented the 'case-types' OpenSpec change for the procest repository. Here's what was accomplished:\n\n### Changes Made\n\n**File Modified:**\n- `src/views/settings/CaseTypeDetail.vue` \u2014 Integrated four new case type management tabs into the Case Type Detail component\n\n### Implementation Details\n\nThe four pre-implemented Vue components have been integrated into the CaseTypeDetail admin interface:\n\n1. **ResultTypesTab.vue** \u2014 Manage case outcome typ", + "autofixable": false + } + ], + "decisions": [], + "verdict": "fail" + }, + { + "stage": "pre-review-quality", + "persona": "orchestrator", + "container": "hydra-quality-runner", + "started_at": "2026-04-18T20:31:00Z", + "ended_at": "2026-04-18T20:31:01Z", + "exit_code": 0, + "checks_run": [ + "php-lint", + "phpcs", + "phpmd", + "psalm", + "phpstan", + "phpmetrics", + "composer-audit", + "spdx-headers", + "forbidden-patterns", + "eslint", + "stylelint", + "npm-audit", + "phpunit" + ], + "checks_skipped": [ + "publiccode", + "gitleaks", + "trivy", + "newman" + ], + "gates": { + "php-lint": { + "pass": true, + "failures": 0 + }, + "phpcs": { + "pass": true, + "failures": 0 + }, + "phpmd": { + "pass": true, + "failures": 0 + }, + "psalm": { + "pass": true, + "failures": 0 + }, + "phpstan": { + "pass": true, + "failures": 0 + }, + "phpmetrics": { + "pass": true, + "failures": 0 + }, + "composer-audit": { + "pass": true, + "failures": 0 + }, + "spdx-headers": { + "pass": true, + "failures": 0 + }, + "forbidden-patterns": { + "pass": true, + "failures": 0 + }, + "eslint": { + "pass": true, + "failures": 0 + }, + "stylelint": { + "pass": true, + "failures": 0 + }, + "npm-audit": { + "pass": true, + "failures": 0 + }, + "phpunit": { + "pass": true, + "failures": 0 + } + }, + "findings": [], + "verdict": "pass" + }, + { + "stage": "code-review", + "persona": "Juan Claude van Damme", + "model": "sonnet", + "container": "hydra-reviewer", + "started_at": "2026-04-18T20:44:08Z", + "ended_at": "2026-04-18T20:44:09Z", + "turns_used": 44, + "turns_budget": 40, + "cost_usd": 0.5413, + "checks_run": [ + "eslint" + ], + "checks_skipped": [ + "hydra-gates", + "composer check:strict" + ], + "findings": [], + "verdict": "pass" + }, + { + "stage": "security-review", + "persona": "Clyde Barcode", + "model": "sonnet", + "container": "hydra-security", + "started_at": "2026-04-18T20:49:29Z", + "ended_at": "2026-04-18T20:49:30Z", + "turns_used": 12, + "turns_budget": 40, + "cost_usd": 0.1801, + "checks_run": [], + "checks_skipped": [ + "hydra-gates", + "composer check:strict" + ], + "findings": [], + "verdict": "pass" + } + ] + }, + { + "cycle": 2, + "trigger": "build:queued", + "started_at": "2026-04-18T20:53:26Z", + "ended_at": "2026-04-20T21:41:41Z", + "outcome": "aborted", + "outcome_reason": "rebuild:queued \u2014 human wiped prior cycle", + "pattern_tags": [], + "stages": [ + { + "stage": "quality-recheck", + "persona": "orchestrator", + "container": "hydra-quality-runner", + "started_at": "2026-04-18T20:53:26Z", + "ended_at": "2026-04-18T20:53:27Z", + "exit_code": 1, + "checks_run": [ + "phpcs", + "phpmd", + "psalm", + "phpstan", + "phpmetrics", + "composer-audit", + "spdx-headers", + "forbidden-patterns", + "eslint", + "stylelint", + "npm-audit", + "phpunit" + ], + "checks_skipped": [ + "php-lint", + "publiccode", + "gitleaks", + "trivy", + "newman" + ], + "gates": { + "phpcs": { + "pass": false, + "failures": 1 + }, + "phpmd": { + "pass": true, + "failures": 0 + }, + "psalm": { + "pass": true, + "failures": 0 + }, + "phpstan": { + "pass": true, + "failures": 0 + }, + "phpmetrics": { + "pass": true, + "failures": 0 + }, + "composer-audit": { + "pass": true, + "failures": 0 + }, + "spdx-headers": { + "pass": true, + "failures": 0 + }, + "forbidden-patterns": { + "pass": false, + "failures": 1 + }, + "eslint": { + "pass": false, + "failures": 1 + }, + "stylelint": { + "pass": false, + "failures": 1 + }, + "npm-audit": { + "pass": true, + "failures": 0 + }, + "phpunit": { + "pass": false, + "failures": 1 + } + }, + "findings": [ + { + "id": "qr-quality-recheck-phpcs", + "severity": "CRITICAL", + "gate": "phpcs", + "rule": "phpcs gate failing", + "status": "open", + "note": "phpcs reported status=fail in quality-recheck.json", + "autofixable": true + }, + { + "id": "qr-quality-recheck-forbidden-patterns", + "severity": "CRITICAL", + "gate": "forbidden-patterns", + "rule": "forbidden-patterns gate failing", + "status": "open", + "note": "forbidden-patterns reported status=fail in quality-recheck.json", + "autofixable": true + }, + { + "id": "qr-quality-recheck-eslint", + "severity": "CRITICAL", + "gate": "eslint", + "rule": "eslint gate failing", + "status": "open", + "note": "eslint reported status=fail in quality-recheck.json", + "autofixable": true + }, + { + "id": "qr-quality-recheck-stylelint", + "severity": "CRITICAL", + "gate": "stylelint", + "rule": "stylelint gate failing", + "status": "open", + "note": "stylelint reported status=fail in quality-recheck.json", + "autofixable": true + }, + { + "id": "qr-quality-recheck-phpunit", + "severity": "CRITICAL", + "gate": "phpunit", + "rule": "phpunit gate failing", + "status": "open", + "note": "phpunit reported status=fail in quality-recheck.json", + "autofixable": false + } + ], + "verdict": "fail" + } + ] + }, + { + "cycle": 3, + "trigger": "build:queued", + "started_at": "2026-04-20T21:48:23Z", + "ended_at": "2026-04-21T07:41:10Z", + "outcome": "needs-input", + "outcome_reason": "deterministic checks still failing \u2014 reviewers ran but applied no fixes, builder output remains broken", + "pattern_tags": [ + "browser-test-nc-setup-failed", + "reviewer-ran-applied-no-fixes" + ], + "stages": [ + { + "stage": "build", + "persona": "Al Gorithm", + "model": "haiku", + "container": "hydra-builder", + "started_at": "2026-04-20T21:42:21Z", + "ended_at": "2026-04-20T21:48:20Z", + "exit_code": 0, + "turns_used": 146, + "turns_budget": 40, + "checks_run": [], + "checks_skipped": [], + "findings": [], + "decisions": [], + "verdict": "pass" + }, + { + "stage": "pre-review-quality", + "persona": "orchestrator", + "container": "hydra-quality-runner", + "started_at": "2026-04-21T07:27:19Z", + "ended_at": "2026-04-21T07:27:19Z", + "exit_code": 1, + "checks_run": [ + "php -l", + "composer check:strict (phpcs)", + "composer check:strict (phpmd)", + "composer check:strict (psalm)", + "composer check:strict (phpstan)", + "phpmetrics", + "composer audit", + "spdx-headers", + "forbidden-patterns", + "npm run lint (eslint)", + "npm run lint (stylelint)", + "npm audit" + ], + "checks_skipped": [ + "publiccode", + "stub-scan", + "gitleaks", + "trivy", + "composer test:unit (phpunit)", + "newman" + ], + "gates": { + "php-lint": "pass", + "phpcs": "fail", + "phpmd": "pass", + "psalm": "pass", + "phpstan": "pass", + "phpmetrics": "pass", + "composer-audit": "pass", + "spdx-headers": "pass", + "publiccode": "skip", + "forbidden-patterns": "pass", + "eslint": "fail", + "stylelint": "fail", + "npm-audit": "pass", + "stub-scan": "skip", + "gitleaks": "skip", + "trivy": "skip", + "phpunit": "skip", + "newman": "skip" + }, + "findings": [ + { + "id": "prq-phpcs", + "severity": "WARNING", + "gate": "phpcs", + "rule": "composer check:strict (phpcs) failing", + "status": "open", + "note": "...\nThe repository at \"/server/apps/app\" does not have the correct ownership and git refuses to use it:\n\nfatal: detected dubious ownership in repository at '/server/apps/app'\nTo add an exception for this directory, call:\n\ngit config --global --add safe.directory /server/apps/app\n\nComposer could not detect the root package (conductionnl/procest) version, defaulting to '1.0.0'. See https://getcomposer.org/root-version\n\u001b[33mW\u001b[0m\u001b[33mW\u001b[0m\u001b[33mW\u001b[0m\u001b[33mW\u001b[0m\u001b[33mW\u001b[0m\u001b[33mW\u001b[0m\u001b[33mW\u001b[0m\u001b[33mW\u001b[0m\u001b[33mW\u001b[0m\u001b[33mW\u001b[0m\u001b[33mW\u001b[0m\u001b[33mW\u001b[0m\u001b[33mW\u001b[0m\u001b[33mW\u001b[0m\u001b[33mW\u001b[0m\u001b[33mW\u001b[0m\u001b[33mW\u001b[0m\u001b[33mW\u001b[0m\u001b[33mW\u001b[0m\u001b[33mW\u001b[0m\u001b[33mW\u001b[0m\u001b[33mW\u001b[0m\u001b[33mW\u001b[0m\u001b[33mW\u001b[0m\u001b[33mW\u001b[0m\u001b[33mW\u001b[0m\u001b[33mW\u001b[0m\u001b[33mW\u001b[0m\u001b[33mW\u001b[0m\u001b[33mW\u001b[0m\u001b[33mW\u001b[0m\u001b[33mW\u001b[0m\u001b[33mW\u001b[0m\u001b[33mW\u001b[0m\u001b[33mW\u001b[0m\u001b[33mW\u001b[0m\u001b[33mW\u001b[0m\u001b[33mW\u001b[0m", + "autofixable": true + }, + { + "id": "prq-eslint", + "severity": "WARNING", + "gate": "eslint", + "rule": "npm run lint (eslint) failing", + "status": "open", + "note": "...\n\n> procest@0.1.0 lint\n> eslint src\n\nsh: 1: eslint: not found", + "autofixable": true + }, + { + "id": "prq-stylelint", + "severity": "WARNING", + "gate": "stylelint", + "rule": "npm run lint (stylelint) failing", + "status": "open", + "note": "...\n\n> procest@0.1.0 stylelint\n> stylelint src/**/*.vue src/**/*.scss src/**/*.css\n\nsh: 1: stylelint: not found", + "autofixable": true + } + ], + "verdict": "fail" + }, + { + "stage": "quality-recheck", + "persona": "orchestrator", + "container": "hydra-quality-runner", + "started_at": "2026-04-21T07:41:00Z", + "ended_at": "2026-04-21T07:41:00Z", + "exit_code": 1, + "checks_run": [ + "php -l", + "composer check:strict (phpcs)", + "composer check:strict (phpmd)", + "composer check:strict (psalm)", + "composer check:strict (phpstan)", + "phpmetrics", + "composer audit", + "spdx-headers", + "forbidden-patterns", + "npm run lint (eslint)", + "npm run lint (stylelint)", + "npm audit" + ], + "checks_skipped": [ + "publiccode", + "stub-scan", + "gitleaks", + "trivy", + "composer test:unit (phpunit)", + "newman" + ], + "gates": { + "php-lint": "pass", + "phpcs": "fail", + "phpmd": "pass", + "psalm": "pass", + "phpstan": "pass", + "phpmetrics": "pass", + "composer-audit": "pass", + "spdx-headers": "pass", + "publiccode": "skip", + "forbidden-patterns": "pass", + "eslint": "fail", + "stylelint": "fail", + "npm-audit": "pass", + "stub-scan": "skip", + "gitleaks": "skip", + "trivy": "skip", + "phpunit": "skip", + "newman": "skip" + }, + "findings": [ + { + "id": "qrc-phpcs", + "severity": "WARNING", + "gate": "phpcs", + "rule": "composer check:strict (phpcs) failing", + "status": "open", + "note": "...\nThe repository at \"/server/apps/repo\" does not have the correct ownership and git refuses to use it:\n\nfatal: detected dubious ownership in repository at '/server/apps/repo'\nTo add an exception for this directory, call:\n\ngit config --global --add safe.directory /server/apps/repo\n\nComposer could not detect the root package (conductionnl/procest) version, defaulting to '1.0.0'. See https://getcomposer.org/root-version\n\u001b[33mW\u001b[0m\u001b[33mW\u001b[0m\u001b[33mW\u001b[0m\u001b[33mW\u001b[0m\u001b[33mW\u001b[0m\u001b[33mW\u001b[0m\u001b[33mW\u001b[0m\u001b[33mW\u001b[0m\u001b[33mW\u001b[0m\u001b[33mW\u001b[0m\u001b[33mW\u001b[0m\u001b[33mW\u001b[0m\u001b[33mW\u001b[0m\u001b[33mW\u001b[0m\u001b[33mW\u001b[0m\u001b[33mW\u001b[0m\u001b[33mW\u001b[0m\u001b[33mW\u001b[0m\u001b[33mW\u001b[0m\u001b[33mW\u001b[0m\u001b[33mW\u001b[0m\u001b[33mW\u001b[0m\u001b[33mW\u001b[0m\u001b[33mW\u001b[0m\u001b[33mW\u001b[0m\u001b[33mW\u001b[0m\u001b[33mW\u001b[0m\u001b[33mW\u001b[0m\u001b[33mW\u001b[0m\u001b[33mW\u001b[0m\u001b[33mW\u001b[0m\u001b[33mW\u001b[0m\u001b[33mW\u001b[0m\u001b[33mW\u001b[0m\u001b[33mW\u001b[0m\u001b[33mW\u001b[0m\u001b[33mW\u001b[0m\u001b[33mW\u001b", + "autofixable": true + }, + { + "id": "qrc-eslint", + "severity": "WARNING", + "gate": "eslint", + "rule": "npm run lint (eslint) failing", + "status": "open", + "note": "...\n\n> procest@0.1.0 lint\n> eslint src\n\nsh: 1: eslint: not found", + "autofixable": true + }, + { + "id": "qrc-stylelint", + "severity": "WARNING", + "gate": "stylelint", + "rule": "npm run lint (stylelint) failing", + "status": "open", + "note": "...\n\n> procest@0.1.0 stylelint\n> stylelint src/**/*.vue src/**/*.scss src/**/*.css\n\nsh: 1: stylelint: not found", + "autofixable": true + } + ], + "verdict": "fail" + } + ] + } + ] +} diff --git a/openspec/changes/doorlooptijd-dashboard/builds/build.json b/openspec/changes/doorlooptijd-dashboard/builds/build.json index a0918529..6795c962 100644 --- a/openspec/changes/doorlooptijd-dashboard/builds/build.json +++ b/openspec/changes/doorlooptijd-dashboard/builds/build.json @@ -1,17 +1,17 @@ { "phase": "build", - "timestamp": "2026-04-18T20:14:27.860014+00:00", + "timestamp": "2026-04-20T21:28:08.597740+00:00", "pr": 137, - "commit": "407eba9", - "turns": 100, - "cost_usd": 1.272, + "commit": "4c079b5", + "turns": 113, + "cost_usd": 0.7644, "tokens": { - "input": 819, - "output": 58157, - "cache_read": 8113935, - "cache_create": 135239 + "input": 538, + "output": 23694, + "cache_read": 5283064, + "cache_create": 92186 }, "model": "claude-haiku-4-5-20251001", "maxed_out": false, - "cost_eur": 1.1702 + "cost_eur": 0.7032 } \ No newline at end of file diff --git a/openspec/changes/doorlooptijd-dashboard/pipeline-logs/build.2.jsonl.gz b/openspec/changes/doorlooptijd-dashboard/pipeline-logs/build.2.jsonl.gz new file mode 100644 index 00000000..8583e513 Binary files /dev/null and b/openspec/changes/doorlooptijd-dashboard/pipeline-logs/build.2.jsonl.gz differ diff --git a/openspec/changes/task-management/builds/build.json b/openspec/changes/task-management/builds/build.json index c8c6cdf4..5d5139a6 100644 --- a/openspec/changes/task-management/builds/build.json +++ b/openspec/changes/task-management/builds/build.json @@ -1,17 +1,17 @@ { "phase": "build", - "timestamp": "2026-04-19T12:08:12.631215+00:00", + "timestamp": "2026-04-20T21:27:39.193213+00:00", "pr": 157, - "commit": "d683577", - "turns": 53, - "cost_usd": 0.4038, + "commit": "f5b013f", + "turns": 108, + "cost_usd": 0.7167, "tokens": { - "input": 627, - "output": 9424, - "cache_read": 2749390, - "cache_create": 64864 + "input": 554, + "output": 22484, + "cache_read": 5079182, + "cache_create": 75197 }, "model": "claude-haiku-4-5-20251001", "maxed_out": false, - "cost_eur": 0.3715 + "cost_eur": 0.6594 } \ No newline at end of file diff --git a/openspec/changes/task-management/pipeline-logs/build.3.jsonl.gz b/openspec/changes/task-management/pipeline-logs/build.3.jsonl.gz new file mode 100644 index 00000000..b700c5cc Binary files /dev/null and b/openspec/changes/task-management/pipeline-logs/build.3.jsonl.gz differ diff --git a/src/views/settings/CaseTypeDetail.vue b/src/views/settings/CaseTypeDetail.vue index b8711728..b53ce29a 100644 --- a/src/views/settings/CaseTypeDetail.vue +++ b/src/views/settings/CaseTypeDetail.vue @@ -89,6 +89,22 @@ + + + + @@ -100,6 +116,10 @@ import ArrowLeftIcon from 'vue-material-design-icons/ArrowLeft.vue' import GeneralTab from './tabs/GeneralTab.vue' import StatusesTab from './tabs/StatusesTab.vue' import WorkflowTab from './tabs/WorkflowTab.vue' +import ResultTypesTab from './tabs/ResultTypesTab.vue' +import RoleTypesTab from './tabs/RoleTypesTab.vue' +import PropertiesTab from './tabs/PropertiesTab.vue' +import DocumentTypesTab from './tabs/DocumentTypesTab.vue' import { useObjectStore } from '../../store/modules/object.js' import { validateCaseType, validateForPublish } from '../../utils/caseTypeValidation.js' @@ -138,6 +158,10 @@ export default { GeneralTab, StatusesTab, WorkflowTab, + ResultTypesTab, + RoleTypesTab, + PropertiesTab, + DocumentTypesTab, }, props: { caseTypeId: { @@ -171,6 +195,10 @@ export default { { id: 'general', label: t('procest', 'General') }, { id: 'statuses', label: t('procest', 'Statuses') }, { id: 'workflow', label: t('procest', 'Workflow') }, + { id: 'resultTypes', label: t('procest', 'Result Types') }, + { id: 'roleTypes', label: t('procest', 'Role Types') }, + { id: 'properties', label: t('procest', 'Properties') }, + { id: 'documentTypes', label: t('procest', 'Document Types') }, ] }, },