diff --git a/.claude/metrics/hooks-metrics.json b/.claude/metrics/hooks-metrics.json index 66e49fbb..feed2709 100644 --- a/.claude/metrics/hooks-metrics.json +++ b/.claude/metrics/hooks-metrics.json @@ -76,12 +76,987 @@ "file": "/home/theflow/projects/tractatus/public/admin/dashboard.html", "result": "passed", "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-15T08:03:19.942Z", + "file": "/home/theflow/projects/tractatus/src/routes/hooks-metrics.routes.js", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-15T08:46:05.417Z", + "file": "/home/theflow/projects/tractatus/public/researcher.html", + "result": "blocked", + "reason": "Pre-action check failed (CSP violation or file restriction)" + }, + { + "hook": "validate-file-write", + "timestamp": "2025-10-15T08:46:26.632Z", + "file": "/home/theflow/projects/tractatus/public/js/researcher-page.js", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-write", + "timestamp": "2025-10-15T08:52:33.441Z", + "file": "/home/theflow/projects/tractatus/public/js/leader-page.js", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-write", + "timestamp": "2025-10-15T10:00:52.875Z", + "file": "/home/theflow/projects/tractatus/public/js/koha-donation.js", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-write", + "timestamp": "2025-10-15T10:03:15.327Z", + "file": "/tmp/fix-koha-csp.py", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-15T10:03:52.989Z", + "file": "/home/theflow/projects/tractatus/public/koha.html", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-15T10:03:58.319Z", + "file": "/home/theflow/projects/tractatus/public/koha.html", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-15T10:04:04.525Z", + "file": "/home/theflow/projects/tractatus/public/koha.html", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-15T10:33:56.445Z", + "file": "/home/theflow/projects/tractatus/docs/TE_REO_MAORI_TRANSLATION_REQUIREMENTS.md", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-15T10:34:10.868Z", + "file": "/home/theflow/projects/tractatus/docs/TE_REO_MAORI_TRANSLATION_REQUIREMENTS.md", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-write", + "timestamp": "2025-10-15T18:29:31.743Z", + "file": "/tmp/add-i18n-attributes.py", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-write", + "timestamp": "2025-10-15T18:30:26.334Z", + "file": "/tmp/fix-missing-i18n.py", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-15T18:31:06.317Z", + "file": "/home/theflow/projects/tractatus/public/js/components/navbar.js", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-15T18:39:41.208Z", + "file": "/home/theflow/projects/tractatus/docs/I18N_IMPLEMENTATION_SUMMARY.md", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-15T18:41:15.196Z", + "file": "/home/theflow/projects/tractatus/public/docs.html", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-write", + "timestamp": "2025-10-15T18:43:51.015Z", + "file": "/home/theflow/projects/tractatus/public/admin/case-moderation.html", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-write", + "timestamp": "2025-10-15T18:45:07.460Z", + "file": "/home/theflow/projects/tractatus/public/js/admin/case-moderation.js", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-15T18:47:12.426Z", + "file": "/home/theflow/projects/tractatus/src/controllers/cases.controller.js", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-15T18:47:20.582Z", + "file": "/home/theflow/projects/tractatus/src/controllers/cases.controller.js", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-15T18:47:27.973Z", + "file": "/home/theflow/projects/tractatus/src/controllers/cases.controller.js", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-15T18:47:38.248Z", + "file": "/home/theflow/projects/tractatus/src/routes/cases.routes.js", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-15T18:48:14.910Z", + "file": "/home/theflow/projects/tractatus/public/js/admin/case-moderation.js", + "result": "blocked", + "reason": "Pre-action check failed (CSP violation or file restriction)" + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-15T18:48:15.070Z", + "file": "/home/theflow/projects/tractatus/public/js/admin/case-moderation.js", + "result": "blocked", + "reason": "Pre-action check failed (CSP violation or file restriction)" + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-15T18:48:15.235Z", + "file": "/home/theflow/projects/tractatus/public/js/admin/case-moderation.js", + "result": "blocked", + "reason": "Pre-action check failed (CSP violation or file restriction)" + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-15T18:48:15.397Z", + "file": "/home/theflow/projects/tractatus/public/js/admin/case-moderation.js", + "result": "blocked", + "reason": "Pre-action check failed (CSP violation or file restriction)" + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-15T18:48:32.438Z", + "file": "/home/theflow/projects/tractatus/public/js/admin/case-moderation.js", + "result": "blocked", + "reason": "Pre-action check failed (CSP violation or file restriction)" + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-15T18:48:38.593Z", + "file": null, + "result": "error", + "reason": "No file path in input" + }, + { + "hook": "validate-file-write", + "timestamp": "2025-10-15T18:49:58.575Z", + "file": "/home/theflow/projects/tractatus/public/js/admin/case-moderation.js", + "result": "blocked", + "reason": "Pre-action check failed (CSP violation or file restriction)" + }, + { + "hook": "validate-file-write", + "timestamp": "2025-10-15T19:53:32.916Z", + "file": "/home/theflow/Desktop/Presentation-to-Commissioners.md", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-write", + "timestamp": "2025-10-15T19:55:07.849Z", + "file": "/tmp/generate-pdf-custom-footer.js", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-15T19:57:46.651Z", + "file": "/home/theflow/projects/tractatus/scripts/generate-pdf-custom-footer.js", + "result": "blocked", + "reason": "Pre-action check failed (CSP violation or file restriction)" + }, + { + "hook": "validate-file-write", + "timestamp": "2025-10-15T19:58:06.679Z", + "file": "/home/theflow/projects/tractatus/scripts/generate-pdf-commissioners.js", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-write", + "timestamp": "2025-10-16T01:53:25.099Z", + "file": "/home/theflow/projects/tractatus/public/js/components/language-selector.js", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T01:53:45.136Z", + "file": "/home/theflow/projects/tractatus/public/js/components/navbar.js", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T01:54:06.153Z", + "file": "/home/theflow/projects/tractatus/public/js/i18n-simple.js", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-write", + "timestamp": "2025-10-16T02:01:35.298Z", + "file": "/home/theflow/projects/tractatus/public/js/components/language-selector.js", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T02:02:04.765Z", + "file": "/home/theflow/projects/tractatus/public/researcher.html", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-write", + "timestamp": "2025-10-16T09:59:31.766Z", + "file": "/home/theflow/projects/tractatus/public/locales/en/researcher.json", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-write", + "timestamp": "2025-10-16T09:59:32.123Z", + "file": "/home/theflow/projects/tractatus/public/locales/en/leader.json", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-write", + "timestamp": "2025-10-16T09:59:32.555Z", + "file": "/home/theflow/projects/tractatus/public/locales/en/implementer.json", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-write", + "timestamp": "2025-10-16T09:59:32.884Z", + "file": "/home/theflow/projects/tractatus/public/locales/en/about.json", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-write", + "timestamp": "2025-10-16T09:59:33.172Z", + "file": "/home/theflow/projects/tractatus/public/locales/en/faq.json", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-write", + "timestamp": "2025-10-16T10:02:12.472Z", + "file": "/home/theflow/projects/tractatus/public/locales/de/researcher.json", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-write", + "timestamp": "2025-10-16T10:02:12.721Z", + "file": "/home/theflow/projects/tractatus/public/locales/de/leader.json", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-write", + "timestamp": "2025-10-16T10:02:13.002Z", + "file": "/home/theflow/projects/tractatus/public/locales/de/implementer.json", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-write", + "timestamp": "2025-10-16T10:02:13.266Z", + "file": "/home/theflow/projects/tractatus/public/locales/de/about.json", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-write", + "timestamp": "2025-10-16T10:02:13.556Z", + "file": "/home/theflow/projects/tractatus/public/locales/de/faq.json", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-write", + "timestamp": "2025-10-16T10:04:45.290Z", + "file": "/home/theflow/projects/tractatus/public/locales/fr/researcher.json", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-write", + "timestamp": "2025-10-16T10:04:45.667Z", + "file": "/home/theflow/projects/tractatus/public/locales/fr/leader.json", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-write", + "timestamp": "2025-10-16T10:04:46.213Z", + "file": "/home/theflow/projects/tractatus/public/locales/fr/implementer.json", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-write", + "timestamp": "2025-10-16T10:04:46.571Z", + "file": "/home/theflow/projects/tractatus/public/locales/fr/about.json", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-write", + "timestamp": "2025-10-16T10:04:46.872Z", + "file": "/home/theflow/projects/tractatus/public/locales/fr/faq.json", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T10:05:30.498Z", + "file": "/home/theflow/projects/tractatus/public/js/i18n-simple.js", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T10:05:56.337Z", + "file": "/home/theflow/projects/tractatus/public/researcher.html", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T10:05:56.726Z", + "file": "/home/theflow/projects/tractatus/public/researcher.html", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T10:05:57.131Z", + "file": "/home/theflow/projects/tractatus/public/researcher.html", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T10:19:43.324Z", + "file": "/home/theflow/projects/tractatus/public/js/components/navbar.js", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T10:21:49.374Z", + "file": "/home/theflow/projects/tractatus/public/about.html", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T10:21:49.749Z", + "file": "/home/theflow/projects/tractatus/public/about.html", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T10:21:50.057Z", + "file": "/home/theflow/projects/tractatus/public/about.html", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T10:22:57.389Z", + "file": "/home/theflow/projects/tractatus/public/about.html", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T10:22:57.910Z", + "file": "/home/theflow/projects/tractatus/public/about.html", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T10:22:58.409Z", + "file": "/home/theflow/projects/tractatus/public/about.html", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T10:22:58.860Z", + "file": "/home/theflow/projects/tractatus/public/about.html", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T19:04:27.986Z", + "file": "/home/theflow/projects/tractatus/public/about.html", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T19:09:33.733Z", + "file": "/home/theflow/projects/tractatus/public/researcher.html", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T19:09:41.133Z", + "file": "/home/theflow/projects/tractatus/public/researcher.html", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T19:09:50.873Z", + "file": "/home/theflow/projects/tractatus/public/researcher.html", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T19:09:58.877Z", + "file": "/home/theflow/projects/tractatus/public/researcher.html", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T19:10:06.126Z", + "file": "/home/theflow/projects/tractatus/public/researcher.html", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T19:10:12.751Z", + "file": "/home/theflow/projects/tractatus/public/researcher.html", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T19:10:21.724Z", + "file": "/home/theflow/projects/tractatus/public/researcher.html", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T19:10:31.999Z", + "file": "/home/theflow/projects/tractatus/public/researcher.html", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T19:10:41.414Z", + "file": "/home/theflow/projects/tractatus/public/researcher.html", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T19:10:57.623Z", + "file": "/home/theflow/projects/tractatus/public/researcher.html", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T19:11:04.268Z", + "file": "/home/theflow/projects/tractatus/public/researcher.html", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T19:11:13.335Z", + "file": "/home/theflow/projects/tractatus/public/researcher.html", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T19:11:25.363Z", + "file": "/home/theflow/projects/tractatus/public/researcher.html", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T19:12:15.627Z", + "file": "/home/theflow/projects/tractatus/public/leader.html", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T19:12:31.501Z", + "file": "/home/theflow/projects/tractatus/public/leader.html", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T19:12:40.659Z", + "file": "/home/theflow/projects/tractatus/public/leader.html", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T19:12:50.643Z", + "file": "/home/theflow/projects/tractatus/public/leader.html", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T19:13:02.907Z", + "file": "/home/theflow/projects/tractatus/public/leader.html", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T19:13:11.949Z", + "file": "/home/theflow/projects/tractatus/public/leader.html", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T19:13:23.571Z", + "file": "/home/theflow/projects/tractatus/public/leader.html", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T19:13:37.259Z", + "file": "/home/theflow/projects/tractatus/public/leader.html", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T19:13:46.869Z", + "file": "/home/theflow/projects/tractatus/public/leader.html", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T19:13:56.091Z", + "file": "/home/theflow/projects/tractatus/public/leader.html", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T19:14:06.318Z", + "file": "/home/theflow/projects/tractatus/public/leader.html", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T19:14:22.183Z", + "file": "/home/theflow/projects/tractatus/public/leader.html", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T19:14:43.252Z", + "file": "/home/theflow/projects/tractatus/public/leader.html", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T19:15:40.747Z", + "file": "/home/theflow/projects/tractatus/public/implementer.html", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T19:15:56.366Z", + "file": "/home/theflow/projects/tractatus/public/implementer.html", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T19:16:24.772Z", + "file": "/home/theflow/projects/tractatus/public/implementer.html", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T19:16:25.320Z", + "file": "/home/theflow/projects/tractatus/public/implementer.html", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T19:16:25.650Z", + "file": "/home/theflow/projects/tractatus/public/implementer.html", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T19:16:25.959Z", + "file": "/home/theflow/projects/tractatus/public/implementer.html", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T19:16:26.287Z", + "file": "/home/theflow/projects/tractatus/public/implementer.html", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T19:16:26.629Z", + "file": "/home/theflow/projects/tractatus/public/implementer.html", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T19:17:27.449Z", + "file": "/home/theflow/projects/tractatus/public/faq.html", + "result": "blocked", + "reason": "Pre-action check failed (CSP violation or file restriction)" + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T19:17:27.739Z", + "file": "/home/theflow/projects/tractatus/public/faq.html", + "result": "blocked", + "reason": "Pre-action check failed (CSP violation or file restriction)" + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T19:17:27.982Z", + "file": "/home/theflow/projects/tractatus/public/faq.html", + "result": "blocked", + "reason": "Pre-action check failed (CSP violation or file restriction)" + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T19:17:28.149Z", + "file": "/home/theflow/projects/tractatus/public/faq.html", + "result": "blocked", + "reason": "Pre-action check failed (CSP violation or file restriction)" + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T19:21:07.160Z", + "file": "/home/theflow/projects/tractatus/public/js/components/language-selector.js", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T19:21:14.897Z", + "file": "/home/theflow/projects/tractatus/public/js/components/language-selector.js", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T19:24:21.973Z", + "file": "/home/theflow/projects/tractatus/public/faq.html", + "result": "blocked", + "reason": "Pre-action check failed (CSP violation or file restriction)" + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T19:24:22.130Z", + "file": "/home/theflow/projects/tractatus/public/faq.html", + "result": "blocked", + "reason": "Pre-action check failed (CSP violation or file restriction)" + }, + { + "hook": "validate-file-write", + "timestamp": "2025-10-16T19:28:46.661Z", + "file": "/home/theflow/projects/tractatus/public/faq.html", + "result": "blocked", + "reason": "Pre-action check failed (CSP violation or file restriction)" + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T19:38:45.989Z", + "file": "/home/theflow/projects/tractatus/public/faq.html", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T19:39:24.948Z", + "file": "/home/theflow/projects/tractatus/public/faq.html", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T19:40:04.096Z", + "file": "/home/theflow/projects/tractatus/public/faq.html", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T19:40:04.514Z", + "file": "/home/theflow/projects/tractatus/public/faq.html", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T19:40:39.354Z", + "file": "/home/theflow/projects/tractatus/public/faq.html", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T19:41:11.086Z", + "file": "/home/theflow/projects/tractatus/public/faq.html", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T19:45:57.600Z", + "file": "/home/theflow/projects/tractatus/public/index.html", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T19:45:58.032Z", + "file": "/home/theflow/projects/tractatus/public/about.html", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T19:45:58.478Z", + "file": "/home/theflow/projects/tractatus/public/researcher.html", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T19:45:58.774Z", + "file": "/home/theflow/projects/tractatus/public/leader.html", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T19:45:59.082Z", + "file": "/home/theflow/projects/tractatus/public/implementer.html", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T19:45:59.441Z", + "file": "/home/theflow/projects/tractatus/public/faq.html", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T19:46:22.106Z", + "file": "/home/theflow/projects/tractatus/public/docs.html", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T19:50:15.951Z", + "file": "/home/theflow/projects/tractatus/public/js/components/language-selector.js", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T19:54:54.774Z", + "file": "/home/theflow/projects/tractatus/public/js/components/language-selector.js", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T19:59:48.394Z", + "file": "/home/theflow/projects/tractatus/public/js/components/language-selector.js", + "result": "passed", + "reason": null + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T20:04:37.279Z", + "file": "/home/theflow/projects/tractatus/public/js/components/language-selector.js", + "result": "passed", + "reason": null + } + ], + "blocks": [ + { + "hook": "validate-file-edit", + "timestamp": "2025-10-15T08:46:05.418Z", + "file": "/home/theflow/projects/tractatus/public/researcher.html", + "reason": "Pre-action check failed (CSP violation or file restriction)" + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-15T18:48:14.911Z", + "file": "/home/theflow/projects/tractatus/public/js/admin/case-moderation.js", + "reason": "Pre-action check failed (CSP violation or file restriction)" + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-15T18:48:15.070Z", + "file": "/home/theflow/projects/tractatus/public/js/admin/case-moderation.js", + "reason": "Pre-action check failed (CSP violation or file restriction)" + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-15T18:48:15.236Z", + "file": "/home/theflow/projects/tractatus/public/js/admin/case-moderation.js", + "reason": "Pre-action check failed (CSP violation or file restriction)" + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-15T18:48:15.397Z", + "file": "/home/theflow/projects/tractatus/public/js/admin/case-moderation.js", + "reason": "Pre-action check failed (CSP violation or file restriction)" + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-15T18:48:32.438Z", + "file": "/home/theflow/projects/tractatus/public/js/admin/case-moderation.js", + "reason": "Pre-action check failed (CSP violation or file restriction)" + }, + { + "hook": "validate-file-write", + "timestamp": "2025-10-15T18:49:58.575Z", + "file": "/home/theflow/projects/tractatus/public/js/admin/case-moderation.js", + "reason": "Pre-action check failed (CSP violation or file restriction)" + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-15T19:57:46.652Z", + "file": "/home/theflow/projects/tractatus/scripts/generate-pdf-custom-footer.js", + "reason": "Pre-action check failed (CSP violation or file restriction)" + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T19:17:27.449Z", + "file": "/home/theflow/projects/tractatus/public/faq.html", + "reason": "Pre-action check failed (CSP violation or file restriction)" + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T19:17:27.739Z", + "file": "/home/theflow/projects/tractatus/public/faq.html", + "reason": "Pre-action check failed (CSP violation or file restriction)" + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T19:17:27.982Z", + "file": "/home/theflow/projects/tractatus/public/faq.html", + "reason": "Pre-action check failed (CSP violation or file restriction)" + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T19:17:28.149Z", + "file": "/home/theflow/projects/tractatus/public/faq.html", + "reason": "Pre-action check failed (CSP violation or file restriction)" + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T19:24:21.973Z", + "file": "/home/theflow/projects/tractatus/public/faq.html", + "reason": "Pre-action check failed (CSP violation or file restriction)" + }, + { + "hook": "validate-file-edit", + "timestamp": "2025-10-16T19:24:22.131Z", + "file": "/home/theflow/projects/tractatus/public/faq.html", + "reason": "Pre-action check failed (CSP violation or file restriction)" + }, + { + "hook": "validate-file-write", + "timestamp": "2025-10-16T19:28:46.661Z", + "file": "/home/theflow/projects/tractatus/public/faq.html", + "reason": "Pre-action check failed (CSP violation or file restriction)" } ], - "blocks": [], "session_stats": { - "total_edit_hooks": 11, - "total_edit_blocks": 0, - "last_updated": "2025-10-15T07:16:46.366Z" + "total_edit_hooks": 107, + "total_edit_blocks": 13, + "last_updated": "2025-10-16T20:04:37.279Z", + "total_write_hooks": 30, + "total_write_blocks": 2 } } \ No newline at end of file diff --git a/docs/plans/integrated-implementation-roadmap-2025.md b/docs/plans/integrated-implementation-roadmap-2025.md index 22e7d634..26cf585d 100644 --- a/docs/plans/integrated-implementation-roadmap-2025.md +++ b/docs/plans/integrated-implementation-roadmap-2025.md @@ -50,14 +50,20 @@ This integrated roadmap combines: - Fixed prohibited language: "guarantees" → "constraints" (2 files) - generate-card-sections.js script created for systematic card presentation implementation - Docs/markdown files verified correct (historical context appropriate) -- 🔄 GitHub Repository Setup - Partially Complete (October 12, 2025) +- ✅ **GitHub Repository Setup Complete** (October 15, 2025) + - CODE_OF_CONDUCT.md added (Contributor Covenant v2.1) + - 4 Issue templates (bug, feature, research, documentation) + - Pull request template with values alignment checklist + - GitHub Actions CI workflow (tests, linting, CSP compliance) + - CONTRIBUTING.md expanded to comprehensive 8.5KB guide + - All community infrastructure deployed to public repository -**Overall Progress (as of October 12, 2025):** +**Overall Progress (as of October 15, 2025):** - **Phase 1 (Weeks 1-2):** 8/10 tasks complete (80%) - 1 deferred, 1 pending - **Phase 2 (Weeks 3-4):** 6/12 tasks complete (50%) - 6 pending -- **Phase 3 (Weeks 5-6):** 1.5/8 tasks complete (19%) - 1 partial, 6 pending +- **Phase 3 (Weeks 5-6):** 2/8 tasks complete (25%) - 6 pending - **Phase 4 (Weeks 7-8):** 1/6 tasks complete (17%) - 5 pending -- **Total Progress:** 16.5/36 tasks = **46% complete** (up from 44%) +- **Total Progress:** 17/36 tasks = **47% complete** (up from 46%) --- @@ -478,9 +484,9 @@ Response: **Objective:** Implement community contribution and engagement features -**Completeness:** [🔄] 1.5/8 tasks complete (1 partial) +**Completeness:** [🔄] 2/8 tasks complete (25%) - ✅ Interactive Demo #3: Boundary Enforcement (October 11, 2025) -- 🔄 GitHub Repository Setup (October 12, 2025 - Partially Complete) +- ✅ GitHub Repository Setup (October 15, 2025) ### Week 5 (Nov 8-15, 2025) @@ -560,27 +566,29 @@ Response: ### Week 6 (Nov 15-22, 2025) #### 18. GitHub Repository Setup -**Priority:** Medium | **Effort:** 2-3 days | **Status:** [🔄] PARTIALLY COMPLETE (October 12, 2025) +**Priority:** Medium | **Effort:** 2-3 days | **Status:** [✅] COMPLETED (October 15, 2025) - [✅] Create public GitHub repository - **AgenticGovernance/tractatus-framework** - [✅] Clean codebase for publication - **Documentation-only approach (security)** - [✅] Write comprehensive README - **13KB README.md with full project overview** - [✅] Add LICENSE (choose appropriate open source license) - **Apache 2.0 License** -- [✅] Create CONTRIBUTING.md - **9.8KB contribution guidelines** -- [ ] Add CODE_OF_CONDUCT.md - **PENDING** -- [ ] Set up GitHub Issues templates - **PENDING** -- [ ] Configure GitHub Actions (tests, linting) - **PENDING** -- [ ] Create releases - **PENDING** +- [✅] Create CONTRIBUTING.md - **Expanded to 8.5KB comprehensive guide (October 15)** +- [✅] Add CODE_OF_CONDUCT.md - **Contributor Covenant v2.1 (October 15)** +- [✅] Set up GitHub Issues templates - **4 templates (bug, feature, research, docs) (October 15)** +- [✅] Configure GitHub Actions (tests, linting) - **CI workflow with CSP compliance checks (October 15)** +- [ ] Create releases - **DEFERRED (no version releases yet)** - [✅] Link from website - **Linked from multiple pages** -**Success Criteria:** 🔄 Public repository available and documented; CI/CD and community templates pending +**Success Criteria:** ✅ Public repository fully configured with community infrastructure -**Verification (October 12, 2025):** +**Verification (October 15, 2025):** - Repository: https://github.com/AgenticGovernance/tractatus-framework -- Contains: docs/, deployment-guide/, README.md, CONTRIBUTING.md, LICENSE +- Contains: docs/, deployment-guide/, README.md, CONTRIBUTING.md, LICENSE, CODE_OF_CONDUCT.md +- GitHub templates: bug_report.yml, feature_request.yml, research_question.yml, documentation.yml, config.yml +- Pull request template: PULL_REQUEST_TEMPLATE.md with values alignment checklist +- CI workflow: .github/workflows/ci.yml (tests, linting, CSP checks) - Security: Documentation-only (no production source code) -- Missing: CODE_OF_CONDUCT.md, GitHub Issues templates, GitHub Actions workflows -- **Next steps:** Add community health files and CI/CD configuration +- **Result:** Task 18 100% complete (releases deferred until version 1.0) --- diff --git a/package-lock.json b/package-lock.json index 3bc09e50..6b7b31b5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,6 +18,9 @@ "express-rate-limit": "^7.5.1", "helmet": "^7.1.0", "highlight.js": "^11.9.0", + "i18next": "^25.6.0", + "i18next-browser-languagedetector": "^8.2.0", + "i18next-http-backend": "^3.0.2", "jsonwebtoken": "^9.0.2", "marked": "^11.0.0", "mongodb": "^6.3.0", @@ -545,7 +548,6 @@ "version": "7.28.4", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz", "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==", - "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -2868,6 +2870,15 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/cross-fetch": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.0.0.tgz", + "integrity": "sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==", + "license": "MIT", + "dependencies": { + "node-fetch": "^2.6.12" + } + }, "node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", @@ -4563,6 +4574,55 @@ "node": ">=10.17.0" } }, + "node_modules/i18next": { + "version": "25.6.0", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-25.6.0.tgz", + "integrity": "sha512-tTn8fLrwBYtnclpL5aPXK/tAYBLWVvoHM1zdfXoRNLcI+RvtMsoZRV98ePlaW3khHYKuNh/Q65W/+NVFUeIwVw==", + "funding": [ + { + "type": "individual", + "url": "https://locize.com" + }, + { + "type": "individual", + "url": "https://locize.com/i18next.html" + }, + { + "type": "individual", + "url": "https://www.i18next.com/how-to/faq#i18next-is-awesome.-how-can-i-support-the-project" + } + ], + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.27.6" + }, + "peerDependencies": { + "typescript": "^5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/i18next-browser-languagedetector": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/i18next-browser-languagedetector/-/i18next-browser-languagedetector-8.2.0.tgz", + "integrity": "sha512-P+3zEKLnOF0qmiesW383vsLdtQVyKtCNA9cjSoKCppTKPQVfKd2W8hbVo5ZhNJKDqeM7BOcvNoKJOjpHh4Js9g==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.23.2" + } + }, + "node_modules/i18next-http-backend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/i18next-http-backend/-/i18next-http-backend-3.0.2.tgz", + "integrity": "sha512-PdlvPnvIp4E1sYi46Ik4tBYh/v/NbYfFFgTjkwFl0is8A18s7/bx9aXqsrOax9WUbeNS6mD2oix7Z0yGGf6m5g==", + "license": "MIT", + "dependencies": { + "cross-fetch": "4.0.0" + } + }, "node_modules/iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", diff --git a/package.json b/package.json index 391ee1f4..483f2743 100644 --- a/package.json +++ b/package.json @@ -49,6 +49,9 @@ "express-rate-limit": "^7.5.1", "helmet": "^7.1.0", "highlight.js": "^11.9.0", + "i18next": "^25.6.0", + "i18next-browser-languagedetector": "^8.2.0", + "i18next-http-backend": "^3.0.2", "jsonwebtoken": "^9.0.2", "marked": "^11.0.0", "mongodb": "^6.3.0",