Separate per-project domain data from the reusable harness so packages/casan-harness
holds no domain artifacts. Domain data physically relocated to apps/okr/domain, with
compat symlinks at the old paths (Python + app + evidence-log refs keep resolving).
Moved -> apps/okr/domain (+ compat symlink at old path):
golden-runs/ (was .specify/level5/golden-runs)
corpus/{redteam-corpus.jsonl,redteam-vectors.jsonl,benign-corpus/}
(was packages/casan-harness/security/*)
traceability-map.json (was .specify/traceability-map.json)
input/ (was docs/input — OKR requirement/architecture)
casan-paths.sh: add CASAN_DOMAIN_ROOT (apps/okr/domain; env-overridable so Plan-06 can
point a second app at its own domain; falls back to .specify pre-split).
Harness bash refs repointed to $CASAN_DOMAIN_ROOT: run-casan4 (golden), phase3-redteam
(corpus), phase-h4-multilingual/split-inject (benign-corpus), phase10-traceability (map),
benign-fp-report (corpus+vectors). Python + app refs still resolve via the compat
symlinks (repointed in Phase 4 when the symlinks are removed).
Full gate: PASS=64 FAIL=0 SKIP=3 (CASAN_CI_STEP_TIMEOUT_SEC=1200). A first gate run
crawled under host load avg ~30 (Ollama + system); re-run at lower load passed clean.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
70 lines
2.1 KiB
JSON
70 lines
2.1 KiB
JSON
{
|
|
"FR-01": {
|
|
"name": "Login",
|
|
"code": [
|
|
"backend/src/auth/auth.controller.ts",
|
|
{ "file": "backend/src/auth/auth.service.ts", "symbols": ["AuthService", "login"] },
|
|
"frontend/src/pages/Login.tsx",
|
|
"frontend/src/hooks/useAuth.tsx"
|
|
],
|
|
"tests": [
|
|
"backend/test/services.test.ts",
|
|
"backend/test/e2e.test.ts"
|
|
]
|
|
},
|
|
"FR-02": {
|
|
"name": "Create Objective",
|
|
"code": [
|
|
"backend/src/objectives/objectives.controller.ts",
|
|
{ "file": "backend/src/objectives/objectives.service.ts", "symbols": ["ObjectivesService", "create"] },
|
|
"frontend/src/pages/CreateObjective.tsx",
|
|
"frontend/src/schemas/objective.schema.ts"
|
|
],
|
|
"tests": [
|
|
"backend/test/services.test.ts",
|
|
"backend/test/e2e.test.ts",
|
|
"frontend/src/__tests__/okr.test.tsx"
|
|
]
|
|
},
|
|
"FR-03": {
|
|
"name": "Create Key Result",
|
|
"code": [
|
|
"backend/src/key-results/key-results.controller.ts",
|
|
{ "file": "backend/src/key-results/key-results.service.ts", "symbols": ["KeyResultsService", "create"] },
|
|
"backend/src/key-results/dto/create-key-result.dto.ts"
|
|
],
|
|
"tests": [
|
|
"backend/test/services.test.ts",
|
|
"backend/test/e2e.test.ts"
|
|
]
|
|
},
|
|
"FR-04": {
|
|
"name": "Update Progress",
|
|
"code": [
|
|
"backend/src/key-results/key-results.controller.ts",
|
|
{ "file": "backend/src/key-results/key-results.service.ts", "symbols": ["updateProgress"] },
|
|
"backend/src/key-results/dto/update-progress.dto.ts",
|
|
"frontend/src/pages/KeyResultDetail.tsx"
|
|
],
|
|
"tests": [
|
|
"backend/test/services.test.ts",
|
|
"backend/test/e2e.test.ts",
|
|
"frontend/src/__tests__/okr.test.tsx"
|
|
]
|
|
},
|
|
"FR-05": {
|
|
"name": "Dashboard",
|
|
"code": [
|
|
"backend/src/objectives/objectives.controller.ts",
|
|
{ "file": "backend/src/objectives/objectives.service.ts", "symbols": ["ObjectivesService", "list"] },
|
|
"frontend/src/pages/Dashboard.tsx",
|
|
"frontend/src/hooks/useObjectives.ts"
|
|
],
|
|
"tests": [
|
|
"backend/test/services.test.ts",
|
|
"backend/test/e2e.test.ts",
|
|
"frontend/src/__tests__/okr.test.tsx"
|
|
]
|
|
}
|
|
}
|