feat(p7): AiJobService + AiBudgetGuard + local inference (gate→budget→propose)

Task 7.3: AiJobService runs scoped/purposed AI jobs that only propose — fails
closed via OPA (KG-03), degrades on budget (AiBudgetGuard sums costUnits, KG-12),
then persists job+modelRun+artifact(PROPOSED)+claims+evidence with full
provenance. CLASSIFY also proposes IiosModerationFlag(proposedBy:'AI'). accept/
reject record human feedback + emit events. Idempotent per job key. INFERENCE_PORT
binds LocalDeterministicInference for nest start; specs inject testkit FakeInference.
8 tests: classify/summarize/extract, fail-closed, budget-degrade, idempotent, accept.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-01 16:34:32 +05:30
parent e03f2f72e4
commit c6dc1cf112
6 changed files with 491 additions and 0 deletions
+2
View File
@@ -10,6 +10,7 @@ import { InboxModule } from './inbox/inbox.module';
import { SupportModule } from './support/support.module';
import { AdaptersModule } from './adapters/adapters.module';
import { RoutingModule } from './routing/routing.module';
import { AiModule } from './ai/ai.module';
import { HealthController } from './health.controller';
import { DevController } from './dev/dev.controller';
@@ -26,6 +27,7 @@ import { DevController } from './dev/dev.controller';
SupportModule,
AdaptersModule,
RoutingModule,
AiModule,
],
controllers: [HealthController, DevController],
})