Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
206 commits
Select commit Hold shift + click to select a range
4189e1c
Add initial roadmap and task documentation for AI Engineering Platform
JuergGood Mar 14, 2026
7c5475b
Refactor task governance docs: update paths and templates for consist…
JuergGood Mar 14, 2026
5507b46
Remove deprecated scripts for task format checks and normalization
JuergGood Mar 14, 2026
33d9d34
Add disciplined task implementation templates
JuergGood Mar 14, 2026
5a47cb7
Sprint 1.3 AI-INFRA-02
JuergGood Mar 14, 2026
0b61110
Mark AI-INFRA-02 task as completed and correct sprint task references.
JuergGood Mar 14, 2026
819844d
Complete AI-INFRA-03: Integrate Ollama for local AI runtime. Implemen…
JuergGood Mar 14, 2026
4c72b67
Implement Knowledge Retrieval Trace Logging
JuergGood Mar 14, 2026
7dd3a07
Implement Prompt Assembly Service
JuergGood Mar 14, 2026
a580017
Add `DeterministicRetrievalTest` for AI retrieval evaluation
JuergGood Mar 14, 2026
f0b9727
Integrate evaluation support with Ollama and OpenAI
JuergGood Mar 14, 2026
08dfabc
Integrate evaluation support with Ollama and OpenAI
JuergGood Mar 14, 2026
c78fe49
Update benchmark exclusions and index to refine task coverage
JuergGood Mar 14, 2026
7aeba0c
Add benchmark status metadata and update exclusions
JuergGood Mar 14, 2026
1895f18
Refactor and finalize AI-UI-01: Add debounce to Quick Add AI parser
JuergGood Mar 14, 2026
cfff937
Finalize AI-UI-02: Split architecture and demo routes
JuergGood Mar 14, 2026
a8c0373
Enhance E2E test navigation logic and fix sidenav on mobile
JuergGood Mar 14, 2026
68c3ac4
Restrict "Browse Technical Docs" link access to Admin only using RBAC
JuergGood Mar 14, 2026
929371c
Introduce Task Governance Documents
JuergGood Mar 14, 2026
bed2034
Add task contract standards and linting scripts
JuergGood Mar 14, 2026
2ff5ddb
Enforce task contract validation in CI using GitHub Actions
JuergGood Mar 14, 2026
a8b8874
Implement Sprint 1.4 plan updates and enhance task contract linting
JuergGood Mar 14, 2026
2b59362
Implement Sprint 1.5 and 1.6.
JuergGood Mar 14, 2026
ab7a629
Add final status assessment for Sprint 1.6 and enhance architecture a…
JuergGood Mar 14, 2026
3e2f96d
Refactor type casting and improve type safety across frontend service…
JuergGood Mar 14, 2026
a07de00
Improve error handling for Ollama model integration
JuergGood Mar 14, 2026
8abe064
Add comprehensive task documentation for Sprint 1.6A covering archite…
JuergGood Mar 14, 2026
949671f
Split and enhance dashboards; add AI Copilot and capability models.
JuergGood Mar 14, 2026
1608a6e
Sprint 1.6A
JuergGood Mar 14, 2026
9a46bac
Enhance TaskRelationship deserialization, optimize StructuredOutputSe…
JuergGood Mar 14, 2026
5be8091
Implement real-time streaming for AI Intelligence Dashboard
JuergGood Mar 14, 2026
0ea43e6
Remove `adminGuard` and CodeChangeExplanationComponent, refactor type…
JuergGood Mar 14, 2026
65ce617
Refactor signal aggregation and TaskRelationship handling; improve er…
JuergGood Mar 14, 2026
59305f8
Refactor AI Cost Dashboard to display EUR currency, add y-axis with c…
JuergGood Mar 14, 2026
01379dc
Enhance AI Cost Dashboard with dynamic y-axis calculation, improve cu…
JuergGood Mar 14, 2026
ea599e8
Add error handling for future tasks and sanitize JSON; refactor AdrDr…
JuergGood Mar 15, 2026
29e76cc
Extend timeouts in AiIntelligenceService, handle JSON within strings,…
JuergGood Mar 15, 2026
fd9ea3f
Remove duplicate documents related to AI Task Governance, AI Architec…
JuergGood Mar 15, 2026
4117814
Add warning display and error handling for AI Dashboard; update JSON …
JuergGood Mar 15, 2026
c65e771
Add warning display and error handling for AI Dashboard; update JSON …
JuergGood Mar 15, 2026
ca3b2fd
Improve architecture drift detection logic with incremental progress …
JuergGood Mar 15, 2026
bec8217
Refactor AI dashboard aggregation with improved error handling and ti…
JuergGood Mar 15, 2026
e2d3f8e
Add documentation for host-run Ollama setup and fast local profile; c…
JuergGood Mar 15, 2026
767acd5
Remove duplicate Ollama setup documentation and enhance configuration…
JuergGood Mar 15, 2026
e34b0c7
Add comprehensive documentation for new AI initiatives including sign…
JuergGood Mar 15, 2026
95e1715
Add taxonomy status translations, integrate with epic-dashboard, upda…
JuergGood Mar 15, 2026
43a2fb4
Enhance intelligence dashboard partial-loading with timeout handling …
JuergGood Mar 15, 2026
bf5f081
Implement fast-path profile for Ollama, optimize Docker performance, …
JuergGood Mar 15, 2026
2898ade
Enhance AiIntelligenceService with observability, refactor subtask ex…
JuergGood Mar 15, 2026
b25fe63
Update DocStartupTask profile to exclude 'test' and refactor ADR path…
JuergGood Mar 15, 2026
7b4ee77
Implement `DocEmbeddingRepositoryCustom` for semantic search, refacto…
JuergGood Mar 15, 2026
08b74e6
Add caching mechanism for database type detection and implement integ…
JuergGood Mar 15, 2026
749c320
Add documentation for AI intelligence dashboard fixes in epic scoping…
JuergGood Mar 15, 2026
f3e2c21
Add taskset management to tasks, enhance sprint-based task retrieval,…
JuergGood Mar 15, 2026
8a2201e
Add authoritative sprint plan docs for AI dashboard scoping, remove S…
JuergGood Mar 15, 2026
79c1fad
Refactor AiIntelligenceService to use SprintResolutionService for aut…
JuergGood Mar 15, 2026
aa86565
Add `TaskDoc` entity and repository, enhance `SprintResolutionService…
JuergGood Mar 15, 2026
ef6cb41
Add authoritative sprint plan doc usage and discovery features for in…
JuergGood Mar 15, 2026
26d783f
Remove AI-BE-15 documentation files, ensuring intelligence dashboard …
JuergGood Mar 15, 2026
f79949a
move to doc-noindex
JuergGood Mar 15, 2026
92b8964
move to doc-noindex 2
JuergGood Mar 15, 2026
3bcbce5
Update tracking in Angular templates; add script for indexing documen…
JuergGood Mar 15, 2026
f376e50
Refactor doc ingestion to track actual updates, rename sprint docs, a…
JuergGood Mar 15, 2026
c031c57
Integrate `ObjectMapper` for JSON handling, adjust timeouts and strea…
JuergGood Mar 15, 2026
ebede2f
Fix 2026-00-00 problem
JuergGood Mar 15, 2026
b447d9b
Add new `AdrDriftResponse` method for string deserialization and impr…
JuergGood Mar 15, 2026
817f088
Move taskset `junie-tasks` documentation from `doc-noindex` to `doc/k…
JuergGood Mar 16, 2026
b9b388f
Move taskset `junie-tasks` documentation from `doc-noindex` to `doc/k…
JuergGood Mar 16, 2026
127ed0e
Move taskset `junie-tasks` documentation from `doc-noindex` to `doc/k…
JuergGood Mar 16, 2026
2f5d1fb
Move taskset `junie-tasks` documentation from `doc-noindex` to `doc/k…
JuergGood Mar 16, 2026
02ca9e7
Remove outdated Sprint 1.6 and 1.6A documentation from `doc/knowledge…
JuergGood Mar 16, 2026
6e84767
Add documentation for AI Project Intelligence Dashboard features, sco…
JuergGood Mar 16, 2026
3ed6662
Remove redundant task documentation from `AI-BE-INTEL`, `AI-INTEL`, `…
JuergGood Mar 16, 2026
93a683c
Correct German encoding and restructure conditional formatting across…
JuergGood Mar 16, 2026
e6c7450
Update Envers revision type mapping to `integer` for consistency acro…
JuergGood Mar 16, 2026
450714e
Increase VARCHAR field lengths for `task_doc` table and enhance file …
JuergGood Mar 16, 2026
d058673
Update `DocIngestionService` to support `includeTasksets` config, enh…
JuergGood Mar 16, 2026
754869c
Mark AI Arch 03 task as done; fix JSON handling and database connecti…
JuergGood Mar 16, 2026
4d850f6
Add JSON sanitization and AI parsing improvements; introduce audit sc…
JuergGood Mar 16, 2026
b3f6942
Remove outdated task documentation and reorganize taskset files for e…
JuergGood Mar 16, 2026
6136bc1
Add menu items for AI Copilot and Engineering Intelligence; improve t…
JuergGood Mar 16, 2026
7570fb3
Remove outdated task documents and update paths for Onboarding Assist…
JuergGood Mar 16, 2026
71d1ed7
Remove outdated Dependency Graph Viewer documents and update Fix Engi…
JuergGood Mar 17, 2026
755d629
Add AI response repair, improve robustness of JSON parsing for Struct…
JuergGood Mar 17, 2026
c4d7d46
Add task normalization documentation for AI-GOV sprint and related gu…
JuergGood Mar 17, 2026
9abf7e7
Normalize AI task documentation for sprint 1.7, updating structure to…
JuergGood Mar 17, 2026
2d88a46
Sprint 1.7
JuergGood Mar 17, 2026
ccf38d9
Update i18n service for enhanced language handling, apply Ollama prof…
JuergGood Mar 17, 2026
306c0f1
Remove deprecated AI-GOV task documents and update Playwright auth va…
JuergGood Mar 17, 2026
4b657c6
Merge duplicate `ADMIN` translation blocks for `en.json` and `de-ch.j…
JuergGood Mar 17, 2026
58b23ff
Add Ollama timeout tuning documentation and update Playwright user co…
JuergGood Mar 18, 2026
67cb122
Update Playwright auth values, enhance JSON parsing robustness with n…
JuergGood Mar 18, 2026
6fa2a44
Update Playwright auth values, enhance exception handling in OllamaMa…
JuergGood Mar 18, 2026
69e055c
Update Playwright auth values, improve path resolution in backend ser…
JuergGood Mar 18, 2026
ddc4377
Remove legacy AI DTOs and enhance JSON prompt handling for improved b…
JuergGood Mar 18, 2026
af6c6e5
Implement E2E tests for Copilot modes, update Playwright auth, and en…
JuergGood Mar 18, 2026
1e01589
Enhance Copilot with section context support and translations; update…
JuergGood Mar 18, 2026
bdfbab8
Fix ADR parsing in full set overview by reading headers from filesyst…
JuergGood Mar 18, 2026
5e46a3e
Sprint 1.8
JuergGood Mar 18, 2026
8389924
Normalize tasks to Format v1.0 and enhance Sprint 1.8 reconciliation …
JuergGood Mar 18, 2026
3207aa3
Sprint 1.8
JuergGood Mar 18, 2026
fc919b4
Sprint 1.9 plan
JuergGood Mar 18, 2026
30e55ff
Update Sprint 1.9 plan; refine task definitions, execution order, and…
JuergGood Mar 18, 2026
b3dba64
Update Playwright auth, enhance sprint selection, verify AI response …
JuergGood Mar 18, 2026
bd1fecf
Implement AI observability with telemetry service, add stale knowledg…
JuergGood Mar 18, 2026
17f41bb
Normalize task files to align with Normalized Markdown Format v1.0.
JuergGood Mar 18, 2026
766be15
Refactor AiCoverageDashboardComponent to use Angular Signals, add uni…
JuergGood Mar 18, 2026
8b8cac4
Sprint 2.0
JuergGood Mar 18, 2026
7a65dfd
Enhance code quality and security: implement role-based access for ad…
JuergGood Mar 18, 2026
bc09311
Update consistency report and fix database migration test expected co…
JuergGood Mar 19, 2026
974a52b
Add end-to-end AI regression tests for ADR Drift and update related d…
JuergGood Mar 19, 2026
684869a
Integrate AI provider selection and sprint configuration into E2E tes…
JuergGood Mar 19, 2026
c9cc0b7
Update Playwright auth, enhance AI E2E tests with improved sprint sel…
JuergGood Mar 19, 2026
b72dc3c
Enhance Playwright config and AI regression tests, introduce test res…
JuergGood Mar 19, 2026
e894ae5
Update AI regression tests with retry logic, enhance logging, and adj…
JuergGood Mar 19, 2026
c82003e
Refactor AI regression tests: remove retry logic, adjust response ver…
JuergGood Mar 19, 2026
9025ad9
Update Playwright config, enhance AI regression tests with timeout im…
JuergGood Mar 19, 2026
1e3ee44
Enhance documentation ingestion with index validation token, adjust A…
JuergGood Mar 20, 2026
07ffffa
Testrun 2.0.1
JuergGood Mar 20, 2026
e8bf4c3
Remove old AI QA documentation files, update Playwright helpers for A…
JuergGood Mar 20, 2026
778eb57
Update Playwright auth values, enhance AI regression suite with JSON …
JuergGood Mar 20, 2026
ae2a2bb
Merge latest changes from master
JuergGood Mar 20, 2026
9530bf3
Refactor documentation and ensure consistency: relocate feature and a…
JuergGood Mar 20, 2026
3b909fd
Update Playwright auth values, adjust default timeout in `OllamaManua…
JuergGood Mar 20, 2026
9b238e5
Add AI cache clearing endpoint and update AI regression scripts, impr…
JuergGood Mar 20, 2026
d970142
sprint 2.1 prep
JuergGood Mar 20, 2026
b85be1f
sprint 2.1
JuergGood Mar 20, 2026
ee28853
Correct file path typos in `iteration-4` directory and improve code f…
JuergGood Mar 20, 2026
c9d0115
Add invitation details for live demo and create new GoodOne project d…
JuergGood Mar 20, 2026
6585a31
Enhance test configuration and dependencies for AI application tests,…
JuergGood Mar 20, 2026
956a7c0
Moved user-guide and admin-guide
JuergGood Mar 20, 2026
e75d61a
Add comprehensive AI engineering documentation for v2.1.0, including …
JuergGood Mar 20, 2026
ac3223a
Update file paths for architecture documents and tests, refine retrie…
JuergGood Mar 20, 2026
d654b5b
Refactor concurrency logging in `OllamaPerformanceService`, update te…
JuergGood Mar 20, 2026
a467e18
Add Phase 5 AI transparency metadata support for frontend and backend…
JuergGood Mar 20, 2026
ac58cee
Introduce sprint context isolation for AI queries, update services an…
JuergGood Mar 20, 2026
18323e1
Integrate AI trace persistence with EFS across Docker and AWS Fargate…
JuergGood Mar 20, 2026
04acb4c
Enhance sprint filtering with inclusive logic, update query methods i…
JuergGood Mar 20, 2026
634f061
Update Playwright auth cookie values, remove unnecessary `@Transactio…
JuergGood Mar 20, 2026
2acc936
Update invitation title in iteration 4 document for clarity
JuergGood Mar 21, 2026
6ce1313
Refine terminologies and format in `GoodOne-Intranet` and iteration 4…
JuergGood Mar 21, 2026
f4b0893
Clarify section title in iteration 4 slides for improved specificity.
JuergGood Mar 21, 2026
77f55ee
Remove coverage report, update auth cookies, refactor `DocRetrievalSe…
JuergGood Mar 21, 2026
27aeb76
Remove detailed presentation slides and optimize `CopilotContextOrche…
JuergGood Mar 21, 2026
e1141a3
Enable JWT, improve token generation logging, update Playwright outpu…
JuergGood Mar 21, 2026
b9e5ee0
Introduce AI system understanding slides: Add new slides to illustrat…
JuergGood Mar 21, 2026
494d099
Remove AI regression test results from `copilot-results.json` and `su…
JuergGood Mar 21, 2026
ea2ca76
Remove demo 4 recovery-related presentation markdown files to clean u…
JuergGood Mar 22, 2026
2502b99
Add comprehensive Confluence import presentation for GoodOne-Intranet…
JuergGood Mar 22, 2026
43d56ed
Update auth cookies and finalize sprint selection automation
JuergGood Mar 22, 2026
1a6825a
Update `AI-FIX-01` with detailed hallucination analysis and improve J…
JuergGood Mar 22, 2026
ecedca0
Enhance JSON parsing reliability, update auth cookies, and add `Copil…
JuergGood Mar 22, 2026
288f6c6
Enhance JSON parsing reliability, update auth cookies, and add `Copil…
JuergGood Mar 22, 2026
19ef8c5
Sprint 2.1 plan
JuergGood Mar 22, 2026
0cecbc8
Mark AI-BE tasks as complete with documented implementations, accepta…
JuergGood Mar 23, 2026
de391fd
Remove obsolete monitoring server configs, tests, and annotations, al…
JuergGood Mar 23, 2026
a26a9b5
Add detailed Jackson runtime conflict analysis task document in `doc/…
JuergGood Mar 23, 2026
32e1505
Simplify Jackson runtime conflict documentation by updating the deliv…
JuergGood Mar 23, 2026
bf56401
Stabilize Jackson dependencies by excluding legacy libraries, pinning…
JuergGood Mar 23, 2026
87c5e04
Implement AI-GOV-33: Add `AiSchemaValidator` for JSON schema validati…
JuergGood Mar 23, 2026
fa8e8b9
Enhance JSON parsing reliability, update auth cookies, integrate stru…
JuergGood Mar 23, 2026
2ad61cc
Revise iteration 4 slides - update formatting for clarity and add spr…
JuergGood Mar 23, 2026
be43e7e
Add JSON schemas for decision proposal, impact simulation, quick add …
JuergGood Mar 23, 2026
535b6b0
Update AI regression test: add OpenAI backend profile and sprint 2.1 …
JuergGood Mar 23, 2026
1f8f8b6
Update auth cookies, expand AI regression test scenarios, document in…
JuergGood Mar 23, 2026
2e0494e
Remove AiResponseSanitizer and StructuredOutputService classes along …
JuergGood Mar 24, 2026
f70e912
Remove stale test-related files, update auth cookies, enhance AI test…
JuergGood Mar 24, 2026
06b857f
Update auth cookies, expand AI regression test documentation with new…
JuergGood Mar 24, 2026
40c9e2e
Update cookies, document AI regression test steps for Sprint 2.1, and…
JuergGood Mar 24, 2026
71c9659
Update auth cookies, refactor code with consistent braces, introduce …
JuergGood Mar 24, 2026
a297deb
Update auth cookies, refine Ollama warm-up methods with error handlin…
JuergGood Mar 24, 2026
2fd483c
Update authentication cookies, introduce sprint ID context throughout…
JuergGood Mar 24, 2026
de09b8d
Update auth cookies, implement AI-specific rate limiting, and enhance…
JuergGood Mar 24, 2026
4c3f866
Update auth cookies, enhance AI suggestion handling with RBAC control…
JuergGood Mar 25, 2026
4c7bcb2
Update auth cookies, introduce sprint ID context in AI-related servic…
JuergGood Mar 25, 2026
72f70ad
Revamp AI Coverage Dashboard: Group branches into categories; Impleme…
JuergGood Mar 25, 2026
66d46f7
Update auth cookies, refine stale knowledge analysis, improve admin o…
JuergGood Mar 25, 2026
289a47c
Enhance UI consistency and admin controls: Align selectors, add dynam…
JuergGood Mar 25, 2026
d5c3a50
Integrate new services and enhance components: Add EmbeddingService t…
JuergGood Mar 25, 2026
d84c131
Improve test coverage and error handling:
JuergGood Mar 25, 2026
bb11a90
Enhance accessibility in promo-section component, improve AI observab…
JuergGood Mar 25, 2026
07f5c39
Remove unnecessary documentation and scripts from sonar directory.
JuergGood Mar 25, 2026
8e46ba4
Update Sonar issue records: Remove stale entries, adjust issue severi…
JuergGood Mar 25, 2026
ea40c3a
Update Sonar issue records: Clear all open issues and update project …
JuergGood Mar 25, 2026
16b9588
Remove outdated documentation for Sonar major issue fix loop. Update …
JuergGood Mar 25, 2026
4e3535a
Refactor AI observability, enhance security, and update test coverage:
JuergGood Mar 25, 2026
b9ac93f
- Improve AI credit messaging and error logging: Remove redundant AI …
JuergGood Mar 25, 2026
a7b8c5c
Remove publishedSuppressions.xml: Clean up outdated suppressions file…
JuergGood Mar 25, 2026
5140e1e
Update Sonar issue records: Add critical and major code smells, updat…
JuergGood Mar 25, 2026
4b13b61
Add traceability sections to documentation and refactor chat service …
JuergGood Mar 25, 2026
122ba74
Refactor Ollama embedding model for improved structure and maintainab…
JuergGood Mar 25, 2026
bddaacb
Remove obsolete Copilot Sprint 2.1 regression tests and refactor fron…
JuergGood Mar 26, 2026
d8f218a
Refactor AiIntelligenceService to use facades; update security assess…
JuergGood Mar 26, 2026
32360d9
Refactor `OllamaManualConfig` for enhanced modularity and maintainabi…
JuergGood Mar 26, 2026
a4edfc5
Refactor AI observability and performance service: replace `RuntimeEx…
JuergGood Mar 26, 2026
9fc8995
Refactor multiple components: remove redundant imports from `RateLimi…
JuergGood Mar 26, 2026
e274b50
Refactor tests and improve code maintainability: simplify mock usage …
JuergGood Mar 26, 2026
266c5eb
Refactor code and tests for consistency: switch `textValue()` to `asT…
JuergGood Mar 26, 2026
bef810a
Refactor JSON node access and frontend components for consistency: re…
JuergGood Mar 26, 2026
1370412
Refactor frontend components and CSS: enhance trace detail animations…
JuergGood Mar 26, 2026
ab9cf0c
Enhance batch processing and error handling: replace `deleteAll()` wi…
JuergGood Mar 26, 2026
cd43130
Remove hardcoded credentials and enhance security: update environment…
JuergGood Mar 26, 2026
bb091a3
Optimize memory usage and rate limits: reduce `embeddingTaskExecutor`…
JuergGood Mar 26, 2026
11fdbda
Optimize Fargate deployment: Increase CPU and memory allocation for A…
JuergGood Mar 26, 2026
7b78c33
Improve open ai performance on fargate. Move MD files to respective f…
JuergGood Mar 26, 2026
f405b15
Inject current date into AI prompt and update schema for null values:…
JuergGood Mar 26, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ SES_FROM=noreply@example.com
# Optional: Set APP_BASE_URL to override the defaults:
# - Local IDE: Defaults to http://localhost:4200
# - Local Docker: Defaults to http://localhost
# - AWS Fargate: Set in task definition (https://goodone.ch)
# - AWS Fargate: Set in task definition (https://GoodOne.ch)
# APP_BASE_URL=http://localhost:4200

# JWT Secret for local development
Expand Down
34 changes: 34 additions & 0 deletions .github/workflows/guardrails.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
name: Junie Guardrails

on:
pull_request:
branches: [ main ]
push:
branches: [ main ]

jobs:
validate:
name: Run Guardrails Validator
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.11"

- name: Install dependencies
run: pip install pyyaml

- name: Run Validator with Autofix
run: python scripts/task-governance/guardrails-validator.py --autofix

- name: Check for changes after autofix
run: |
if [ -n "$(git status --porcelain)" ]; then
echo "Autofix applied changes. Please review and commit locally."
git diff
exit 1
fi
33 changes: 33 additions & 0 deletions .github/workflows/task-contract-lint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
name: Task Contract Lint

on:
pull_request:
paths:
- 'doc/knowledge/junie-tasks/**'
- 'scripts/task-governance/**'
- '.github/workflows/task-contract-lint.yml'

jobs:
lint-task-contracts:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0

- uses: actions/setup-python@v5
with:
python-version: '3.11'

- name: Get changed files
id: changed-files
uses: tj-actions/changed-files@v44
with:
files: doc/knowledge/junie-tasks/**
json: true

- name: Run task contract linter
if: steps.changed-files.outputs.any_changed == 'true'
run: |
echo '${{ steps.changed-files.outputs.all_changed_files }}' | jq -r '.[]' > files_to_lint.txt
xargs -d '\n' -r python scripts/task-governance/lint_task_contracts.py < files_to_lint.txt
2 changes: 1 addition & 1 deletion .github/workflows/validate-tasks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,4 @@ jobs:
run: pip install pyyaml

- name: Validate task files
run: python scripts/validate_tasks.py doc/knowledge/junie-tasks
run: python scripts/task-governance/validate_tasks.py doc/knowledge/junie-tasks
9 changes: 9 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2472,3 +2472,12 @@
/frontend/node/npx
/frontend/node/npx.cmd
/.ai/mcp/mcp.json
/doc/knowledge/junie-tasks/backlog/
/logs/ai-traces/
/backend/logs/ai-traces/
/tmp_repo/
/sonar-export-new/issues/
/sonar/sonar-export/issues/
/sonar-export/issues/
/sonar-export-fresh/issues/
/test-results/
2 changes: 1 addition & 1 deletion .idea/compiler.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion .idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

59 changes: 50 additions & 9 deletions .junie/guidelines.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,45 @@ This document outlines the best practices and standards for the GoodOne project.
## General Principles
- **Modern Standards**: Use the latest stable versions of frameworks (Angular 21+, Spring Boot 4+). NEVER use deprecated methods, features, or syntax in any language (e.g., avoid `*ngIf` and `*ngFor` in Angular, use modern control flow instead).
- **Consistency**: Follow existing naming conventions and project structure.
- **Clean Code**: Remove all unused imports, variables, and commented-out code blocks. Every test case MUST have at least one explicit assertion (e.g., `expect`, `assert`, `assertEquals`). Avoid empty catch blocks; at least log the exception or add a comment explaining why it's ignored.
- **Method Complexity**: Keep methods small and focused (Single Responsibility Principle). Avoid "Brain Methods" with high cyclomatic complexity (e.g., > 10).
- **Clean Code**: Remove all unused imports (including for TypeScript/Angular), variables, fields, parameters, and commented-out code blocks. Every test case MUST have at least one explicit assertion (e.g., `expect`, `assert`, `assertEquals`). Avoid empty catch blocks; at least log the exception or add a comment explaining why it's ignored. NEVER append empty trailing lines to files; all files MUST end with a single newline character.
- **Complexity Guardrails**:
- **Cognitive Complexity**: Max 15 per method (Sonar java:S3776).
- **Nesting Depth**: Max 3 levels of indentation (if, for, while, try). Use early returns (guard clauses) to reduce nesting.
- **Method Length**: Aim for < 30 lines. Methods exceeding 50 lines MUST be refactored into smaller, focused private methods.
- **Parameters**: Max 7 parameters (Sonar java:S107). Use DTOs or Value Objects for more.
- **Boolean Expressions**: Avoid complex conditions with more than 3 operators (`&&`, `||`). Break them down into descriptive boolean variables or helper methods.
- **Switch/If-Else Chains**: Long chains of `if-else if` or `switch` (e.g., > 5 cases) should be refactored using a Map-based lookup, Strategy pattern, or Polymorphism.
- **Modern Java Standards (Java 21)**:
- Use `Stream.toList()` instead of `.collect(Collectors.toList())` for unmodifiable lists.
- Use Pattern Matching for `instanceof` (e.g., `if (obj instanceof String s)`).
- Use Text Blocks (`"""..."""`) for multiline strings (e.g., SQL, JSON, HTML, or large text reports) instead of string concatenation.
- Use `.formatted()` for string interpolation in text blocks or literals.
- **Logging**: Use SLF4J `Logger` for all logging. NEVER use `System.out.println`, `System.err.println`, or `Throwable.printStackTrace()`. Use placeholders (e.g., `logger.info("User {} logged in", userId)`) instead of string concatenation.
- **Exceptions**: Avoid throwing generic exceptions like `RuntimeException`, `Exception`, or `Throwable`. Use specific, descriptive exceptions. NEVER ignore caught exceptions; log them or explain why they are ignored.
- **Modifiers**: Follow the standard Java modifier order: `public protected private abstract default static final transient volatile synchronized native strictfp`.
- **Clean Logic**:
- Avoid nested ternary operators.
- Merge nested `if` statements into a single `if` with a combined condition (`&&`) when they have no `else` and no other code in between.
- Prefer method references (e.g., `Objects::nonNull`) over lambda expressions (e.g., `x -> x != null`) when the lambda only calls an existing method.
- Simplify boolean returns (e.g., `return condition;` instead of `if (condition) return true; else return false;`).
- Avoid using Java restricted identifiers (e.g., `record`, `yield`, `var`, `sealed`, `permits`) as variable or parameter names.
- Remove redundant type casts.
- Iterate over `entrySet()` instead of `keySet()` when both keys and values are required.
- **Constants**: Avoid duplicating string literals; use `private static final` constants (UPPER_SNAKE_CASE) for repeated values. Avoid "magic numbers"; use descriptive constants instead.
- **Hardcoded Values**: Avoid hardcoding URIs, file paths, or configuration values. Use `@Value` or `@ConfigurationProperties` to inject them.
- Remove unused private methods, fields, and parameters.
- **Modern Frontend Standards**:
- Use `readonly` for TypeScript properties that are only set in the constructor or never reassigned.
- Use `@use` instead of `@import` in Sass/CSS files.
- Avoid deprecated APIs; always prefer the modern equivalent (e.g., modern Angular control flow).
- **Communication**: If there are doubts about the implementation or if better ways are identified, stop the implementation and ask the user before continuing.
- **RBAC Synchronization**: Frontend and backend Role-Based Access Control (RBAC) MUST always be in sync. Every protected UI route MUST have a corresponding protected REST endpoint with the same security policy (e.g., `ROLE_ADMIN`). This ensures "Defense in Depth" and prevents security bypasses via direct API access. This is a CRITICAL security requirement.
- **Centralized Versioning**:
- The **Root `pom.xml`** is the single source of truth for the project version.
- All modules (Backend, Frontend, Android, Test Client) must share the same version.
- Use `.\scripts\sync-version.ps1` to propagate version changes from the root `pom.xml` to other files (package.json, build.gradle, deployment scripts, and documentation).
- **Build Integrity**: Ensure the project builds successfully (`mvn clean install`) before submitting changes.
- **PostRefactoring Build**: After every refactoring (no matter how small), the application MUST build successfully. Verify locally with:
- **Post-Refactoring Build**: After every refactoring (no matter how small), the application MUST build successfully. Verify locally with:
- Backend+Frontend: `mvn clean install -DskipTests`
- Frontend only: `mvn clean install -pl frontend -DskipTests`
Any refactoring is incomplete until these builds pass.
Expand All @@ -37,6 +66,8 @@ This document outlines the best practices and standards for the GoodOne project.
- No dev-only features are exposed.
- Application can be demoed repeatedly without manual fixes.
- Playwright UX guardrails are successful (`npx playwright test e2e/ux-guardrails.spec.ts`).
- **Task Log Update**: The relevant task `.md` file MUST be updated with a log entry and testing instructions.
- **Basic Regression**: All relevant unit and E2E tests MUST pass before reporting "DONE".
- **Docker First**: Ensure all changes are compatible with the Docker-based deployment.
- **Language**: Always communicate in English for all interactions, thoughts, and documentation, unless explicitly requested otherwise by the user.
- **Translations**: Always provide translations for both supported languages (English `en.json` and German `de-ch.json`) when adding or modifying UI text. The `ch` part of the `de-ch` locale MUST be respected: never use the letter 'ß' (Eszett) in any German translations (e.g. use 'ss' instead).
Expand All @@ -62,6 +93,7 @@ This document outlines the best practices and standards for the GoodOne project.
6. `## Verification`
7. `## Links`
8. `## Notes (optional)`
9. `## Acceptance Confirmation`
- **YAML Frontmatter**: Must include `key`, `title`, `taskset`, `priority`, `status`, `created`, `updated`, and `iterations`.
- `status` must be one of: `TODO`, `IN_PROGRESS`, `DONE`, `BLOCKED`.
- `priority` must be one of: `P0`, `P1`, `P2`.
Expand All @@ -78,16 +110,20 @@ This document outlines the best practices and standards for the GoodOne project.
- Never invent new metadata fields or move metadata into the markdown body.
- Never add emojis or decorative formatting.
- If an instruction conflicts with this guideline, refuse and explain why.
- **Task Storage**:
- The following folders are legacy and are used to keep the history of old tasks: `doc/knowledge/junie-tasks/taskset*`.
- All new tasks MUST be placed in category folders: `doc/knowledge/junie-tasks/AI-*/` (e.g., `doc/knowledge/junie-tasks/AI-REL/`).
- **CRITICAL**: Whenever you update an `.md` file in a legacy folder (e.g. `doc/knowledge/junie-tasks/taskset*`), you MUST move it to its corresponding category folder `doc/knowledge/junie-tasks/AI-*/` (e.g. `doc/knowledge/junie-tasks/AI-ARCH/`) before submitting. Do NOT update files in legacy folders anymore.
- **Chat Summarization Workaround**:
- If the Junie AI JetBrains plugin does not provide a manual rename option, ensure the full task filename (without extension) is mentioned prominently in the initial message of a task. This triggers the plugin's automatic summarizer to include the complete Task ID and filename in the chat history summary.

## Backend Development (Spring Boot)

### 1. Architecture
- **Controllers**: Use RESTful controllers in `ch.goodone.goodone.backend.controller`.
- **Models**: Use JPA entities in `ch.goodone.goodone.backend.model`. Always create a Flyway migration script (in `backend/src/main/resources/db/migration/`) whenever a JPA entity is created or modified to ensure the database schema stays in sync.
- **Controllers**: Use RESTful controllers in `ch.goodone.backend.controller`.
- **Models**: Use JPA entities in `ch.goodone.backend.model`. Always create a Flyway migration script (in `backend/src/main/resources/db/migration/`) whenever a JPA entity is created or modified to ensure the database schema stays in sync.
- **Idempotent Migrations**: All Flyway migration scripts MUST be idempotent. Use `CREATE TABLE IF NOT EXISTS`, `ALTER TABLE ... ADD COLUMN IF NOT EXISTS`, and similar constructs. This is critical for Fargate deployments where tasks may restart or run concurrently during rollout.
- **Repositories**: Use Spring Data JPA repositories in `ch.goodone.goodone.backend.repository`. Avoid using direct SQL statements (e.g., via `JdbcTemplate`) in Java code. Use JPA or Spring Data JPA abstractions for all database operations.
- **Repositories**: Use Spring Data JPA repositories in `ch.goodone.backend.repository`. Avoid using direct SQL statements (e.g., via `JdbcTemplate`) in Java code. Use JPA or Spring Data JPA abstractions for all database operations.
- **DTOs**: Use DTOs for API requests and responses to avoid leaking internal entity structures. Implement `fromEntity()` static methods in DTOs for centralized mapping.

### 2. Best Practices
Expand All @@ -97,15 +133,17 @@ This document outlines the best practices and standards for the GoodOne project.
- **Log Security**: NEVER log user-provided data (e.g., request parameters, headers, paths) directly without sanitization to prevent Log Injection. Use placeholders and only log trusted or sanitized values. NEVER log sensitive information like passwords, session tokens, or PII.
- **Type Safety**: Avoid using generic wildcard types like `ResponseEntity<?>` or `ResponseEntity<Object>` in controllers. Always use specific DTOs or `ResponseEntity<Void>` to maintain clear API contracts and avoid Sonar issues.
- **Validation**: Use `@Column` annotations for explicit database mapping. Use unique constraints where appropriate (e.g., login, email).
- **JSON Handling**: Use `tools.jackson.databind.ObjectMapper` for JSON processing in tests.
- **JSON Handling**: Always use **`tools.jackson.databind.ObjectMapper`** for all Spring `@Bean` definitions, `@Autowired` injections, and JSON processing in tests (matching Spring Boot 4's default). Continue using **`com.fasterxml.jackson.annotation.*`** for DTOs to maintain compatibility with existing annotations. Refer to [ADR-0067](doc/knowledge/adrs/adr-full-set.md#adr-0067-single-serialization-ownership-jackson-3-only) for details.
- **Auditing**: All major user interactions (login, registration, password changes, etc.) and significant system events must be logged to the `ActionLogService` to ensure a robust audit trail.
- **Date/Time**: Use `LocalDate` for dates. Use `@JsonFormat(pattern = "yyyy-MM-dd")` for DTO date fields.
- **Role-Based Access Control**: Enforce security in `SecurityConfig` and use the `Role` enum.

### 3. Testing
- Use JUnit 5 and MockMvc for controller testing.
- JUnit 5 test classes and methods should have default (package-private) visibility. Avoid using `public`.
- Always include Spring Security in the test context if the endpoint is protected.
- Keep tests isolated from the database using a `test` profile if needed.
- **AI Infrastructure for Builds/Tests**: Local builds and tests MUST run with Ollama, not OpenAI. No OpenAI tokens must be consumed during the build process. Ensure all `@SpringBootTest` use the `ollama` profile or mock AI beans accordingly.

## Frontend Development (Angular)

Expand Down Expand Up @@ -133,9 +171,12 @@ This document outlines the best practices and standards for the GoodOne project.

## Deployment & Environments
- **Local Dev**: Use `npm start` (Angular) and the Spring Boot application (IntelliJ). The Angular proxy (`proxy.conf.json`) handles routing to the backend on `localhost:8080`.
- **Docker**: Use `docker compose up --build`. Nginx handles the reverse proxying of `/api` requests to the `backend` container.
- **Docker (Local)**: Use `docker compose up --build`. Nginx handles the reverse proxying of `/api` requests to the `backend` container.
- **AWS ECS (Fargate)**:
- **Resource Allocation**: To minimize costs, always use the minimal required resources for demo services. The standard allocation is **256 CPU units and 512 MiB memory**. Do not increase these without explicit justification and user approval.
- **Architecture**: Nginx is NOT used for reverse proxying. The AWS Application Load Balancer (ALB) handles routing (e.g., path-based routing for `/api`). Nginx in the frontend container only serves static files.
- **ALB Timeout**: Ensure the ALB 'Idle timeout' is set to at least **300 seconds** (default is 60s) to support long-running AI calls like ADR Drift detection.
- **Resource Allocation**: To minimize costs, always use the minimal required resources for demo services. The standard allocation is **256 CPU units and 512 MiB memory**. Do not increase these without explicit justification and user approval. For AI-heavy features with large prompts, **512 CPU units and 2048 MiB memory** may be required to avoid timeouts and high GC pressure.
- **Model Selection**: For latency-sensitive AI features like ADR Drift detection, use `gpt-4o-mini` to achieve response times < 10s and reduce token costs.
- **Single Task Enforcement**: Ensure only one task runs per service by setting `desired-count` to 1 and `maximum-percent` to 100 during deployments to avoid overlapping costs.
- **Task Definitions**: Always update the local task definition files in `deploy/aws/` and `task-def.json` at the root when making live changes to ensure consistency across deployments.

Expand Down
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ Instead of only generating code, the platform analyzes:
• engineering risks

Live demo
https://goodone.ch
https://GoodOne.ch

---

Expand Down Expand Up @@ -221,13 +221,13 @@ Documentation is located in the `doc` directory.
Key entry points:

Architecture
doc/architecture/index.md
doc/knowledge/architecture/index.md

User Guide
doc/user-guide/user-guide.md
doc/operations-guide.md

Admin Guide
doc/admin-guide/admin-guide.md
doc/operations-guide.md

Deployment
doc/infrastructure/Deployment.md
Expand Down
Loading
Loading