feat: harden CASAN production install lifecycle

This commit is contained in:
thanhnv
2026-07-24 11:11:44 +07:00
parent c7671ab198
commit 114340c719
48 changed files with 1036 additions and 165 deletions
@@ -0,0 +1,20 @@
version: 1.0
description: CASAN production drift detection policy
golden_dir: apps/okr/domain/golden-runs
evidence_dir: docs/output/casan/level5-evidence
thresholds:
minimum_similarity: 0.85
maximum_length_delta_ratio: 0.30
actions:
pass: allow
warn: require_review
fail: block_or_fallback
metrics:
- similarity_ratio
- length_delta_ratio
- golden_hash
- candidate_hash
@@ -0,0 +1,24 @@
{
"package": "fpt-casan-sdd-harness",
"version": "1.0.0",
"capabilities": [
"H4-security",
"H5-governance",
"H6-agentops",
"drift-detection",
"model-fallback",
"tool-registry",
"rollback",
"business-feedback"
],
"compatibility": {
"speckit": ">=1.0.0",
"shell": "bash",
"python": ">=3.9"
},
"entrypoints": {
"wrapper": "packages/casan-harness/scripts/bash/casan-harness.sh",
"project_gate": "packages/casan-harness/scripts/bash/project-gate.sh",
"agentic_bridge": "packages/casan-harness/scripts/python/agentic_bridge.py"
}
}
@@ -0,0 +1,27 @@
version: 1.0
description: CASAN business KPI feedback schema
kpis:
- id: cycle_time_minutes
direction: lower_is_better
baseline: 180
target: 90
- id: review_rejection_rate
direction: lower_is_better
baseline: 0.30
target: 0.10
- id: defect_leakage_rate
direction: lower_is_better
baseline: 0.15
target: 0.05
- id: manual_rework_hours
direction: lower_is_better
baseline: 12
target: 4
evidence:
input: docs/output/casan/level5-evidence/business-kpi-input.json
output: docs/output/casan/level5-evidence/business-kpi-report.json
@@ -0,0 +1,33 @@
version: 1.0
description: CASAN model/tool fallback policy
routes:
- step_pattern: "review|test|security"
primary: primary-model
fallback: verifier-model
max_attempts: 2
fallback_on:
- nonzero_exit
- empty_output
- timeout
- step_pattern: "implement|write_code|deploy"
primary: primary-model
fallback: conservative-model
max_attempts: 1
fallback_on:
- nonzero_exit
- policy_reject
governance_required: true
default_route:
primary: primary-model
fallback: fallback-model
max_attempts: 2
fallback_on:
- nonzero_exit
- empty_output
evidence:
trace_dir: .specify/logs/trace
fallback_log: .specify/logs/level5/fallback.jsonl
@@ -0,0 +1,54 @@
{
"registry": "fpt-casan-harness-adoption",
"layout": {
"note": "Plan-01 restructure: reusable harness is a standalone package; each project keeps its domain data separate. A new project (Plan-06) registers here with its own domain_root.",
"harness_root": "packages/casan-harness",
"state_root": ".specify",
"governance_root": ".specify/level5/central-governance"
},
"projects": [
{
"project_id": "AINative_OKR_CASAN4",
"domain": "SDD OKR",
"domain_root": "apps/okr/domain",
"manifest": "apps/okr/domain/project.manifest.json",
"context_roots": [
"apps/okr/domain",
"apps/okr/frontend",
"apps/okr/backend",
"docs/technical_architecture.md"
],
"harness_package": "fpt-casan-sdd-harness",
"harness_version": "1.0.0",
"status": "active"
},
{
"project_id": "CASAN_DEMO_PROJECT_A",
"domain": "Demo SDLC",
"domain_root": "apps/demo-sdlc/domain",
"harness_package": "fpt-casan-sdd-harness",
"harness_version": "1.0.0",
"status": "archived-demo"
},
{
"project_id": "CASAN_DEMO_PROJECT_B",
"domain": "Demo QA",
"domain_root": "apps/demo-qa/domain",
"harness_package": "fpt-casan-sdd-harness",
"harness_version": "1.0.0",
"status": "archived-demo"
},
{
"project_id": "CASAN_SERVICE_DESK",
"domain": "IT Service Desk",
"domain_root": "apps/service-desk/domain",
"manifest": "apps/service-desk/domain/project.manifest.json",
"context_roots": [
"apps/service-desk"
],
"harness_package": "fpt-casan-sdd-harness",
"harness_version": "1.0.0",
"status": "active"
}
]
}
@@ -0,0 +1,90 @@
version: 1.0
description: CASAN production tool registry with ownership, schema, risk, idempotency, and rollback metadata
tools:
- id: agent_step
owner: ai-platform
risk_level: low
side_effect: false
idempotency_required: false
timeout_seconds: 600
- id: write_code
owner: engineering
risk_level: high
side_effect: true
idempotency_required: true
timeout_seconds: 900
allowed_agents: "boss,implement-agent"
rollback:
strategy: git_patch_reverse
script: packages/casan-harness/scripts/bash/rollback-manager.sh
- id: migration
owner: database-owner
risk_level: high
side_effect: true
idempotency_required: true
timeout_seconds: 900
allowed_agents: "boss,implement-agent"
rollback:
strategy: migration_down_or_restore
script: packages/casan-harness/scripts/bash/rollback-manager.sh
- id: deploy
owner: release-manager
risk_level: high
side_effect: true
idempotency_required: true
timeout_seconds: 1200
rate_limit_per_run: 2
allowed_agents: "boss,release-manager"
rollback:
strategy: previous_release
script: packages/casan-harness/scripts/bash/rollback-manager.sh
- id: external_api
owner: platform-team
risk_level: medium
side_effect: true
idempotency_required: true
timeout_seconds: 120
allowed_agents: "boss,implement-agent"
rollback:
strategy: compensating_request
script: packages/casan-harness/scripts/bash/rollback-manager.sh
- id: db_write
owner: database-owner
risk_level: high
side_effect: true
idempotency_required: true
timeout_seconds: 300
allowed_agents: "boss,implement-agent"
rollback:
strategy: restore_from_backup
script: packages/casan-harness/scripts/powershell/rollback-manager.ps1
- id: write_file
owner: engineering
risk_level: medium
side_effect: true
idempotency_required: false
timeout_seconds: 60
allowed_agents: "boss,implement-agent,design-agent"
rollback:
strategy: delete_or_restore
script: packages/casan-harness/scripts/bash/rollback-manager.sh
level5_gate:
required_fields:
- id
- owner
- risk_level
- side_effect
- idempotency_required
- timeout_seconds
side_effecting_tools_require:
- idempotency_key
- audit_record
- rollback_strategy