Reference implementation for the Phoenix Architecture. Work in progress.
aicoding.leaflet.pub/
ai
coding
crazy
1/**
2 * Implementation Unit (IU) — stable compilation boundary.
3 *
4 * Maps canonical requirements to generated code modules.
5 */
6
7export type IUKind = 'module' | 'function';
8export type RiskTier = 'low' | 'medium' | 'high' | 'critical';
9
10export interface IUContract {
11 /** Description of what this IU does */
12 description: string;
13 /** Input types / parameters */
14 inputs: string[];
15 /** Output types / return values */
16 outputs: string[];
17 /** Invariants that must hold */
18 invariants: string[];
19}
20
21export interface BoundaryPolicy {
22 code: {
23 allowed_ius: string[];
24 allowed_packages: string[];
25 forbidden_ius: string[];
26 forbidden_packages: string[];
27 forbidden_paths: string[];
28 };
29 side_channels: {
30 databases: string[];
31 queues: string[];
32 caches: string[];
33 config: string[];
34 external_apis: string[];
35 files: string[];
36 };
37}
38
39export interface EnforcementConfig {
40 dependency_violation: { severity: 'error' | 'warning' };
41 side_channel_violation: { severity: 'error' | 'warning' };
42}
43
44export interface EvidencePolicy {
45 /** What evidence is required for this risk tier */
46 required: string[];
47}
48
49export interface ImplementationUnit {
50 iu_id: string;
51 kind: IUKind;
52 name: string;
53 risk_tier: RiskTier;
54 contract: IUContract;
55 source_canon_ids: string[];
56 dependencies: string[];
57 boundary_policy: BoundaryPolicy;
58 enforcement: EnforcementConfig;
59 evidence_policy: EvidencePolicy;
60 output_files: string[];
61}
62
63export function defaultBoundaryPolicy(): BoundaryPolicy {
64 return {
65 code: {
66 allowed_ius: [],
67 allowed_packages: [],
68 forbidden_ius: [],
69 forbidden_packages: [],
70 forbidden_paths: [],
71 },
72 side_channels: {
73 databases: [],
74 queues: [],
75 caches: [],
76 config: [],
77 external_apis: [],
78 files: [],
79 },
80 };
81}
82
83export function defaultEnforcement(): EnforcementConfig {
84 return {
85 dependency_violation: { severity: 'error' },
86 side_channel_violation: { severity: 'warning' },
87 };
88}