@mriekki/project-forge 4.26.0 → 4.27.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/assets/authentication/distribution.json +90 -0
  2. package/assets/components.json +18 -4
  3. package/assets/core/distribution.json +12 -0
  4. package/assets/deployment/distribution.json +292 -68
  5. package/assets/generated/ASSEMBLY.json +152 -6
  6. package/assets/generated/authentication/docs/AUTH_RECOVERY_RETENTION.md +101 -0
  7. package/assets/generated/authentication/docs/HOUSEHOLD_INFRASTRUCTURE_ADOPTION.md +55 -0
  8. package/assets/generated/authentication/docs/HOUSEHOLD_REGISTRY.md +246 -0
  9. package/assets/generated/authentication/docs/PROJECT_AUTH_REFERENCE.md +878 -0
  10. package/assets/generated/authentication/samples/ProjectForgeAuth.Api/Program.cs +40 -0
  11. package/assets/generated/authentication/samples/ProjectForgeAuth.Api/ProjectForgeAuth.Api.csproj +13 -0
  12. package/assets/generated/authentication/samples/ProjectForgeAuth.Api/wwwroot/auth.js +65 -0
  13. package/assets/generated/authentication/samples/ProjectForgeAuth.Api/wwwroot/index.html +44 -0
  14. package/assets/generated/authentication/src/ProjectForge.Auth/AdmissionPolicy.cs +167 -0
  15. package/assets/generated/authentication/src/ProjectForge.Auth/AuthenticationDiagnostics.cs +159 -0
  16. package/assets/generated/authentication/src/ProjectForge.Auth/ProjectForge.Auth.csproj +9 -0
  17. package/assets/generated/authentication/src/ProjectForge.Auth/PwaExistingProjectCompatibility.cs +64 -0
  18. package/assets/generated/authentication/src/ProjectForge.Auth.Runtime/ProjectAuthStore.cs +471 -0
  19. package/assets/generated/authentication/src/ProjectForge.Auth.Runtime/ProjectForge.Auth.Runtime.csproj +15 -0
  20. package/assets/generated/authentication/src/ProjectForge.Auth.Runtime/ProjectForgeAuthRuntimeExtensions.cs +472 -0
  21. package/assets/generated/authentication/src/ProjectForge.Auth.Runtime/ResendProjectInvitationDelivery.cs +105 -0
  22. package/assets/generated/authentication/src/ProjectForge.Transport/ProjectForge.Transport.csproj +11 -0
  23. package/assets/generated/authentication/src/ProjectForge.Transport/StrictPublicOriginTransport.cs +95 -0
  24. package/assets/generated/authentication/tools/household_connect.py +145 -0
  25. package/assets/generated/authentication/tools/project_auth_recovery.py +716 -0
  26. package/assets/generated/core/core/process/ENGINEERING_BACKLOG.md +150 -0
  27. package/assets/generated/core/core/skills/manage-backlog/SKILL.md +115 -0
  28. package/assets/generated/core/core/skills/review-user-feedback/SKILL.md +50 -0
  29. package/assets/generated/core/tools/setup_maintenance/maintenance.py +162 -6
  30. package/assets/generated/deployment/docs/RECOVERY_READINESS.md +103 -0
  31. package/assets/generated/deployment/src/project_forge_deployment/auth_recovery_capture.py +164 -0
  32. package/assets/generated/deployment/src/project_forge_deployment/auth_recovery_guard.py +225 -0
  33. package/assets/generated/deployment/src/project_forge_deployment/auth_recovery_lifecycle.py +455 -0
  34. package/assets/generated/deployment/src/project_forge_deployment/auth_recovery_retention.py +220 -0
  35. package/assets/generated/deployment/src/project_forge_deployment/auth_recovery_schedule.py +489 -0
  36. package/package.json +1 -1
  37. package/src/cli.mjs +32 -3
  38. package/src/engine.mjs +87 -5
@@ -0,0 +1,90 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "name": "greenfield-project",
4
+ "component": "authentication",
5
+ "accountAuthority": "per-project",
6
+ "registryRequiredForLogin": false,
7
+ "requiresReviewedProviderBindings": true,
8
+ "mappings": [
9
+ {
10
+ "source": "src/ProjectForge.Auth/AdmissionPolicy.cs",
11
+ "destination": "tools/project-forge-auth-kit/src/ProjectForge.Auth/AdmissionPolicy.cs"
12
+ },
13
+ {
14
+ "source": "src/ProjectForge.Auth/AuthenticationDiagnostics.cs",
15
+ "destination": "tools/project-forge-auth-kit/src/ProjectForge.Auth/AuthenticationDiagnostics.cs"
16
+ },
17
+ {
18
+ "source": "src/ProjectForge.Auth/ProjectForge.Auth.csproj",
19
+ "destination": "tools/project-forge-auth-kit/src/ProjectForge.Auth/ProjectForge.Auth.csproj"
20
+ },
21
+ {
22
+ "source": "src/ProjectForge.Auth/PwaExistingProjectCompatibility.cs",
23
+ "destination": "tools/project-forge-auth-kit/src/ProjectForge.Auth/PwaExistingProjectCompatibility.cs"
24
+ },
25
+ {
26
+ "source": "src/ProjectForge.Auth.Runtime/ProjectAuthStore.cs",
27
+ "destination": "tools/project-forge-auth-kit/src/ProjectForge.Auth.Runtime/ProjectAuthStore.cs"
28
+ },
29
+ {
30
+ "source": "src/ProjectForge.Auth.Runtime/ProjectForge.Auth.Runtime.csproj",
31
+ "destination": "tools/project-forge-auth-kit/src/ProjectForge.Auth.Runtime/ProjectForge.Auth.Runtime.csproj"
32
+ },
33
+ {
34
+ "source": "src/ProjectForge.Auth.Runtime/ProjectForgeAuthRuntimeExtensions.cs",
35
+ "destination": "tools/project-forge-auth-kit/src/ProjectForge.Auth.Runtime/ProjectForgeAuthRuntimeExtensions.cs"
36
+ },
37
+ {
38
+ "source": "tools/household_connect.py",
39
+ "destination": "tools/project-forge-auth-kit/household_connect.py"
40
+ },
41
+ {
42
+ "source": "docs/HOUSEHOLD_REGISTRY.md",
43
+ "destination": "tools/project-forge-auth-kit/docs/HOUSEHOLD_REGISTRY.md"
44
+ },
45
+ {
46
+ "source": "docs/HOUSEHOLD_INFRASTRUCTURE_ADOPTION.md",
47
+ "destination": "tools/project-forge-auth-kit/docs/HOUSEHOLD_INFRASTRUCTURE_ADOPTION.md"
48
+ },
49
+ {
50
+ "source": "src/ProjectForge.Transport/ProjectForge.Transport.csproj",
51
+ "destination": "tools/project-forge-auth-kit/src/ProjectForge.Transport/ProjectForge.Transport.csproj"
52
+ },
53
+ {
54
+ "source": "src/ProjectForge.Transport/StrictPublicOriginTransport.cs",
55
+ "destination": "tools/project-forge-auth-kit/src/ProjectForge.Transport/StrictPublicOriginTransport.cs"
56
+ },
57
+ {
58
+ "source": "samples/ProjectForgeAuth.Api/Program.cs",
59
+ "destination": "tools/project-forge-auth-kit/samples/ProjectForgeAuth.Api/Program.cs"
60
+ },
61
+ {
62
+ "source": "samples/ProjectForgeAuth.Api/ProjectForgeAuth.Api.csproj",
63
+ "destination": "tools/project-forge-auth-kit/samples/ProjectForgeAuth.Api/ProjectForgeAuth.Api.csproj"
64
+ },
65
+ {
66
+ "source": "samples/ProjectForgeAuth.Api/wwwroot/index.html",
67
+ "destination": "tools/project-forge-auth-kit/samples/ProjectForgeAuth.Api/wwwroot/index.html"
68
+ },
69
+ {
70
+ "source": "samples/ProjectForgeAuth.Api/wwwroot/auth.js",
71
+ "destination": "tools/project-forge-auth-kit/samples/ProjectForgeAuth.Api/wwwroot/auth.js"
72
+ },
73
+ {
74
+ "source": "src/ProjectForge.Auth.Runtime/ResendProjectInvitationDelivery.cs",
75
+ "destination": "tools/project-forge-auth-kit/src/ProjectForge.Auth.Runtime/ResendProjectInvitationDelivery.cs"
76
+ },
77
+ {
78
+ "source": "docs/PROJECT_AUTH_REFERENCE.md",
79
+ "destination": "tools/project-forge-auth-kit/docs/PROJECT_AUTH_REFERENCE.md"
80
+ },
81
+ {
82
+ "source": "tools/project_auth_recovery.py",
83
+ "destination": "tools/project-forge-auth-kit/project_auth_recovery.py"
84
+ },
85
+ {
86
+ "source": "docs/AUTH_RECOVERY_RETENTION.md",
87
+ "destination": "tools/project-forge-auth-kit/docs/AUTH_RECOVERY_RETENTION.md"
88
+ }
89
+ ]
90
+ }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": 2,
3
3
  "package": "@mriekki/project-forge",
4
- "version": "4.26.0",
4
+ "version": "4.27.1",
5
5
  "defaultProfile": "greenfield-project",
6
6
  "profiles": {
7
7
  "greenfield-project": {
@@ -9,23 +9,37 @@
9
9
  "core",
10
10
  "deployment"
11
11
  ]
12
+ },
13
+ "greenfield-household-project": {
14
+ "components": [
15
+ "core",
16
+ "deployment",
17
+ "authentication"
18
+ ]
12
19
  }
13
20
  },
14
21
  "components": {
15
22
  "core": {
16
- "revision": "39bc7661db49266743317e9dfedab800674f9c30",
17
- "version": "4.3.0",
23
+ "revision": "eac51d50a9e3c8931159ee8dedba79e63ba7867b",
24
+ "version": "4.3.1",
18
25
  "distribution": "greenfield-workspace",
19
26
  "descriptor": "assets/core/distribution.json",
20
27
  "sourceRoot": "assets/generated/core",
21
28
  "canonicalDescriptor": "distributions/greenfield-workspace.json"
22
29
  },
23
30
  "deployment": {
24
- "revision": "e9ca6e12e5b19f691b25ce0aba758a43c3df2913",
31
+ "revision": "0f80ad06eedeeeb84fcf70cd367873b23d70af25",
25
32
  "distribution": "greenfield-project",
26
33
  "descriptor": "assets/deployment/distribution.json",
27
34
  "sourceRoot": "assets/generated/deployment",
28
35
  "canonicalDescriptor": "distributions/greenfield-project.json"
36
+ },
37
+ "authentication": {
38
+ "revision": "6db1c1e8a0d3cb0a20aa3415ca0e228f8849df46",
39
+ "distribution": "greenfield-project",
40
+ "descriptor": "assets/authentication/distribution.json",
41
+ "sourceRoot": "assets/generated/authentication",
42
+ "canonicalDescriptor": "distributions/greenfield-project.json"
29
43
  }
30
44
  }
31
45
  }
@@ -287,6 +287,18 @@
287
287
  "source": "core/skills/ux-review/SKILL.md",
288
288
  "destination": ".github/skills/ux-review/SKILL.md"
289
289
  },
290
+ {
291
+ "source": "core/skills/review-user-feedback/SKILL.md",
292
+ "destination": ".github/skills/review-user-feedback/SKILL.md"
293
+ },
294
+ {
295
+ "source": "core/process/ENGINEERING_BACKLOG.md",
296
+ "destination": "docs/process/ENGINEERING_BACKLOG.md"
297
+ },
298
+ {
299
+ "source": "core/skills/manage-backlog/SKILL.md",
300
+ "destination": ".github/skills/manage-backlog/SKILL.md"
301
+ },
290
302
  {
291
303
  "source": "core/instructions/project-forge-web-guidance.instructions.md",
292
304
  "destination": ".github/instructions/project-forge-web-guidance.instructions.md"
@@ -3,73 +3,297 @@
3
3
  "schemaVersion": 1,
4
4
  "description": "Reusable deployment tooling for generated Project Forge projects.",
5
5
  "mappings": [
6
- {"source": "distribution/project-forge-deploy.py", "destination": "tools/project-forge-deployment/project-forge-deploy.py"},
7
- {"source": "src/project_forge_deployment/__init__.py", "destination": "tools/project-forge-deployment/project_forge_deployment/__init__.py"},
8
- {"source": "src/project_forge_deployment/__main__.py", "destination": "tools/project-forge-deployment/project_forge_deployment/__main__.py"},
9
- {"source": "src/project_forge_deployment/access_cli.py", "destination": "tools/project-forge-deployment/project_forge_deployment/access_cli.py"},
10
- {"source": "src/project_forge_deployment/agent_session.py", "destination": "tools/project-forge-deployment/project_forge_deployment/agent_session.py"},
11
- {"source": "src/project_forge_deployment/access_diagnosis.py", "destination": "tools/project-forge-deployment/project_forge_deployment/access_diagnosis.py"},
12
- {"source": "src/project_forge_deployment/app_cli.py", "destination": "tools/project-forge-deployment/project_forge_deployment/app_cli.py"},
13
- {"source": "src/project_forge_deployment/app_deployment.py", "destination": "tools/project-forge-deployment/project_forge_deployment/app_deployment.py"},
14
- {"source": "src/project_forge_deployment/app_runtime.py", "destination": "tools/project-forge-deployment/project_forge_deployment/app_runtime.py"},
15
- {"source": "src/project_forge_deployment/app_runtime_remote.py", "destination": "tools/project-forge-deployment/project_forge_deployment/app_runtime_remote.py"},
16
- {"source": "src/project_forge_deployment/app_runtime_workstation.py", "destination": "tools/project-forge-deployment/project_forge_deployment/app_runtime_workstation.py"},
17
- {"source": "src/project_forge_deployment/box_platform.py", "destination": "tools/project-forge-deployment/project_forge_deployment/box_platform.py"},
18
- {"source": "src/project_forge_deployment/box_platform_assets.py", "destination": "tools/project-forge-deployment/project_forge_deployment/box_platform_assets.py"},
19
- {"source": "src/project_forge_deployment/box_platform_remote.py", "destination": "tools/project-forge-deployment/project_forge_deployment/box_platform_remote.py"},
20
- {"source": "src/project_forge_deployment/cloudflare_api.py", "destination": "tools/project-forge-deployment/project_forge_deployment/cloudflare_api.py"},
21
- {"source": "src/project_forge_deployment/cloudflare_ingress.py", "destination": "tools/project-forge-deployment/project_forge_deployment/cloudflare_ingress.py"},
22
- {"source": "src/project_forge_deployment/cloudflare_ingress_remote.py", "destination": "tools/project-forge-deployment/project_forge_deployment/cloudflare_ingress_remote.py"},
23
- {"source": "src/project_forge_deployment/cloudflare_route_apply.py", "destination": "tools/project-forge-deployment/project_forge_deployment/cloudflare_route_apply.py"},
24
- {"source": "src/project_forge_deployment/cli.py", "destination": "tools/project-forge-deployment/project_forge_deployment/cli.py"},
25
- {"source": "src/project_forge_deployment/doctor.py", "destination": "tools/project-forge-deployment/project_forge_deployment/doctor.py"},
26
- {"source": "src/project_forge_deployment/entrypoint.py", "destination": "tools/project-forge-deployment/project_forge_deployment/entrypoint.py"},
27
- {"source": "src/project_forge_deployment/environment_cli.py", "destination": "tools/project-forge-deployment/project_forge_deployment/environment_cli.py"},
28
- {"source": "src/project_forge_deployment/environment_isolation.py", "destination": "tools/project-forge-deployment/project_forge_deployment/environment_isolation.py"},
29
- {"source": "src/project_forge_deployment/environment_probe.py", "destination": "tools/project-forge-deployment/project_forge_deployment/environment_probe.py"},
30
- {"source": "src/project_forge_deployment/environment_setup.py", "destination": "tools/project-forge-deployment/project_forge_deployment/environment_setup.py"},
31
- {"source": "src/project_forge_deployment/errors.py", "destination": "tools/project-forge-deployment/project_forge_deployment/errors.py"},
32
- {"source": "src/project_forge_deployment/home_lab.py", "destination": "tools/project-forge-deployment/project_forge_deployment/home_lab.py"},
33
- {"source": "src/project_forge_deployment/image_transfer.py", "destination": "tools/project-forge-deployment/project_forge_deployment/image_transfer.py"},
34
- {"source": "src/project_forge_deployment/ingress_cli.py", "destination": "tools/project-forge-deployment/project_forge_deployment/ingress_cli.py"},
35
- {"source": "src/project_forge_deployment/keys.py", "destination": "tools/project-forge-deployment/project_forge_deployment/keys.py"},
36
- {"source": "src/project_forge_deployment/local_cli.py", "destination": "tools/project-forge-deployment/project_forge_deployment/local_cli.py"},
37
- {"source": "src/project_forge_deployment/local_extensions.py", "destination": "tools/project-forge-deployment/project_forge_deployment/local_extensions.py"},
38
- {"source": "src/project_forge_deployment/local_runtime.py", "destination": "tools/project-forge-deployment/project_forge_deployment/local_runtime.py"},
39
- {"source": "src/project_forge_deployment/local_spec.py", "destination": "tools/project-forge-deployment/project_forge_deployment/local_spec.py"},
40
- {"source": "src/project_forge_deployment/local_sqlite.py", "destination": "tools/project-forge-deployment/project_forge_deployment/local_sqlite.py"},
41
- {"source": "src/project_forge_deployment/portable_profile.py", "destination": "tools/project-forge-deployment/project_forge_deployment/portable_profile.py"},
42
- {"source": "src/project_forge_deployment/profile_migration.py", "destination": "tools/project-forge-deployment/project_forge_deployment/profile_migration.py"},
43
- {"source": "src/project_forge_deployment/profile_repository.py", "destination": "tools/project-forge-deployment/project_forge_deployment/profile_repository.py"},
44
- {"source": "src/project_forge_deployment/profiles.py", "destination": "tools/project-forge-deployment/project_forge_deployment/profiles.py"},
45
- {"source": "src/project_forge_deployment/project_topology.py", "destination": "tools/project-forge-deployment/project_forge_deployment/project_topology.py"},
46
- {"source": "src/project_forge_deployment/proof_receipt.py", "destination": "tools/project-forge-deployment/project_forge_deployment/proof_receipt.py"},
47
- {"source": "src/project_forge_deployment/proxy_peer.py", "destination": "tools/project-forge-deployment/project_forge_deployment/proxy_peer.py"},
48
- {"source": "src/project_forge_deployment/recovery_scope.py", "destination": "tools/project-forge-deployment/project_forge_deployment/recovery_scope.py"},
49
- {"source": "src/project_forge_deployment/registry_access.py", "destination": "tools/project-forge-deployment/project_forge_deployment/registry_access.py"},
50
- {"source": "src/project_forge_deployment/registry_cli.py", "destination": "tools/project-forge-deployment/project_forge_deployment/registry_cli.py"},
51
- {"source": "src/project_forge_deployment/route_registry.py", "destination": "tools/project-forge-deployment/project_forge_deployment/route_registry.py"},
52
- {"source": "src/project_forge_deployment/route_registry_remote.py", "destination": "tools/project-forge-deployment/project_forge_deployment/route_registry_remote.py"},
53
- {"source": "src/project_forge_deployment/safe_diagnostics.py", "destination": "tools/project-forge-deployment/project_forge_deployment/safe_diagnostics.py"},
54
- {"source": "src/project_forge_deployment/security.py", "destination": "tools/project-forge-deployment/project_forge_deployment/security.py"},
55
- {"source": "src/project_forge_deployment/sqlite_adapter.py", "destination": "tools/project-forge-deployment/project_forge_deployment/sqlite_adapter.py"},
56
- {"source": "src/project_forge_deployment/sqlite_adapter_remote.py", "destination": "tools/project-forge-deployment/project_forge_deployment/sqlite_adapter_remote.py"},
57
- {"source": "src/project_forge_deployment/sqlite_cli.py", "destination": "tools/project-forge-deployment/project_forge_deployment/sqlite_cli.py"},
58
- {"source": "src/project_forge_deployment/sqlite_import_recovery.py", "destination": "tools/project-forge-deployment/project_forge_deployment/sqlite_import_recovery.py"},
59
- {"source": "src/project_forge_deployment/ssh.py", "destination": "tools/project-forge-deployment/project_forge_deployment/ssh.py"},
60
- {"source": "src/project_forge_deployment/teardown.py", "destination": "tools/project-forge-deployment/project_forge_deployment/teardown.py"},
61
- {"source": "src/project_forge_deployment/teardown_cli.py", "destination": "tools/project-forge-deployment/project_forge_deployment/teardown_cli.py"},
62
- {"source": "src/project_forge_deployment/teardown_remote.py", "destination": "tools/project-forge-deployment/project_forge_deployment/teardown_remote.py"},
63
- {"source": "src/project_forge_deployment/topology_cli.py", "destination": "tools/project-forge-deployment/project_forge_deployment/topology_cli.py"},
64
- {"source": "src/project_forge_deployment/trust.py", "destination": "tools/project-forge-deployment/project_forge_deployment/trust.py"},
65
- {"source": "docs/CLOUDFLARE_INGRESS.md", "destination": "docs/project-forge/CLOUDFLARE_INGRESS.md"},
66
- {"source": "docs/DEVELOPER_ENVIRONMENTS.md", "destination": "docs/project-forge/DEVELOPER_ENVIRONMENTS.md"},
67
- {"source": "docs/WORKSPACE_INSTANCES.md", "destination": "docs/project-forge/WORKSPACE_INSTANCES.md"},
68
- {"source": "docs/ENVIRONMENT_PROOF.md", "destination": "docs/project-forge/ENVIRONMENT_PROOF.md"},
69
- {"source": "docs/PROJECT_TOPOLOGY_BINDING.md", "destination": "docs/project-forge/PROJECT_TOPOLOGY_BINDING.md"},
70
- {"source": "docs/RECOVERY_READINESS.md", "destination": "docs/project-forge/RECOVERY_READINESS.md"},
71
- {"source": "docs/images/developer-environment-journey.svg", "destination": "docs/project-forge/images/developer-environment-journey.svg"},
72
- {"source": "docs/images/personal-environment-architecture.svg", "destination": "docs/project-forge/images/personal-environment-architecture.svg"},
73
- {"source": "docs/images/project-environment-model.svg", "destination": "docs/project-forge/images/project-environment-model.svg"}
6
+ {
7
+ "source": "distribution/project-forge-deploy.py",
8
+ "destination": "tools/project-forge-deployment/project-forge-deploy.py"
9
+ },
10
+ {
11
+ "source": "src/project_forge_deployment/__init__.py",
12
+ "destination": "tools/project-forge-deployment/project_forge_deployment/__init__.py"
13
+ },
14
+ {
15
+ "source": "src/project_forge_deployment/__main__.py",
16
+ "destination": "tools/project-forge-deployment/project_forge_deployment/__main__.py"
17
+ },
18
+ {
19
+ "source": "src/project_forge_deployment/access_cli.py",
20
+ "destination": "tools/project-forge-deployment/project_forge_deployment/access_cli.py"
21
+ },
22
+ {
23
+ "source": "src/project_forge_deployment/agent_session.py",
24
+ "destination": "tools/project-forge-deployment/project_forge_deployment/agent_session.py"
25
+ },
26
+ {
27
+ "source": "src/project_forge_deployment/access_diagnosis.py",
28
+ "destination": "tools/project-forge-deployment/project_forge_deployment/access_diagnosis.py"
29
+ },
30
+ {
31
+ "source": "src/project_forge_deployment/app_cli.py",
32
+ "destination": "tools/project-forge-deployment/project_forge_deployment/app_cli.py"
33
+ },
34
+ {
35
+ "source": "src/project_forge_deployment/app_deployment.py",
36
+ "destination": "tools/project-forge-deployment/project_forge_deployment/app_deployment.py"
37
+ },
38
+ {
39
+ "source": "src/project_forge_deployment/app_runtime.py",
40
+ "destination": "tools/project-forge-deployment/project_forge_deployment/app_runtime.py"
41
+ },
42
+ {
43
+ "source": "src/project_forge_deployment/app_runtime_remote.py",
44
+ "destination": "tools/project-forge-deployment/project_forge_deployment/app_runtime_remote.py"
45
+ },
46
+ {
47
+ "source": "src/project_forge_deployment/app_runtime_workstation.py",
48
+ "destination": "tools/project-forge-deployment/project_forge_deployment/app_runtime_workstation.py"
49
+ },
50
+ {
51
+ "source": "src/project_forge_deployment/box_platform.py",
52
+ "destination": "tools/project-forge-deployment/project_forge_deployment/box_platform.py"
53
+ },
54
+ {
55
+ "source": "src/project_forge_deployment/box_platform_assets.py",
56
+ "destination": "tools/project-forge-deployment/project_forge_deployment/box_platform_assets.py"
57
+ },
58
+ {
59
+ "source": "src/project_forge_deployment/box_platform_remote.py",
60
+ "destination": "tools/project-forge-deployment/project_forge_deployment/box_platform_remote.py"
61
+ },
62
+ {
63
+ "source": "src/project_forge_deployment/cloudflare_api.py",
64
+ "destination": "tools/project-forge-deployment/project_forge_deployment/cloudflare_api.py"
65
+ },
66
+ {
67
+ "source": "src/project_forge_deployment/cloudflare_ingress.py",
68
+ "destination": "tools/project-forge-deployment/project_forge_deployment/cloudflare_ingress.py"
69
+ },
70
+ {
71
+ "source": "src/project_forge_deployment/cloudflare_ingress_remote.py",
72
+ "destination": "tools/project-forge-deployment/project_forge_deployment/cloudflare_ingress_remote.py"
73
+ },
74
+ {
75
+ "source": "src/project_forge_deployment/cloudflare_route_apply.py",
76
+ "destination": "tools/project-forge-deployment/project_forge_deployment/cloudflare_route_apply.py"
77
+ },
78
+ {
79
+ "source": "src/project_forge_deployment/cli.py",
80
+ "destination": "tools/project-forge-deployment/project_forge_deployment/cli.py"
81
+ },
82
+ {
83
+ "source": "src/project_forge_deployment/doctor.py",
84
+ "destination": "tools/project-forge-deployment/project_forge_deployment/doctor.py"
85
+ },
86
+ {
87
+ "source": "src/project_forge_deployment/entrypoint.py",
88
+ "destination": "tools/project-forge-deployment/project_forge_deployment/entrypoint.py"
89
+ },
90
+ {
91
+ "source": "src/project_forge_deployment/environment_cli.py",
92
+ "destination": "tools/project-forge-deployment/project_forge_deployment/environment_cli.py"
93
+ },
94
+ {
95
+ "source": "src/project_forge_deployment/environment_isolation.py",
96
+ "destination": "tools/project-forge-deployment/project_forge_deployment/environment_isolation.py"
97
+ },
98
+ {
99
+ "source": "src/project_forge_deployment/environment_probe.py",
100
+ "destination": "tools/project-forge-deployment/project_forge_deployment/environment_probe.py"
101
+ },
102
+ {
103
+ "source": "src/project_forge_deployment/environment_setup.py",
104
+ "destination": "tools/project-forge-deployment/project_forge_deployment/environment_setup.py"
105
+ },
106
+ {
107
+ "source": "src/project_forge_deployment/errors.py",
108
+ "destination": "tools/project-forge-deployment/project_forge_deployment/errors.py"
109
+ },
110
+ {
111
+ "source": "src/project_forge_deployment/home_lab.py",
112
+ "destination": "tools/project-forge-deployment/project_forge_deployment/home_lab.py"
113
+ },
114
+ {
115
+ "source": "src/project_forge_deployment/image_transfer.py",
116
+ "destination": "tools/project-forge-deployment/project_forge_deployment/image_transfer.py"
117
+ },
118
+ {
119
+ "source": "src/project_forge_deployment/ingress_cli.py",
120
+ "destination": "tools/project-forge-deployment/project_forge_deployment/ingress_cli.py"
121
+ },
122
+ {
123
+ "source": "src/project_forge_deployment/keys.py",
124
+ "destination": "tools/project-forge-deployment/project_forge_deployment/keys.py"
125
+ },
126
+ {
127
+ "source": "src/project_forge_deployment/local_cli.py",
128
+ "destination": "tools/project-forge-deployment/project_forge_deployment/local_cli.py"
129
+ },
130
+ {
131
+ "source": "src/project_forge_deployment/local_extensions.py",
132
+ "destination": "tools/project-forge-deployment/project_forge_deployment/local_extensions.py"
133
+ },
134
+ {
135
+ "source": "src/project_forge_deployment/local_runtime.py",
136
+ "destination": "tools/project-forge-deployment/project_forge_deployment/local_runtime.py"
137
+ },
138
+ {
139
+ "source": "src/project_forge_deployment/local_spec.py",
140
+ "destination": "tools/project-forge-deployment/project_forge_deployment/local_spec.py"
141
+ },
142
+ {
143
+ "source": "src/project_forge_deployment/local_sqlite.py",
144
+ "destination": "tools/project-forge-deployment/project_forge_deployment/local_sqlite.py"
145
+ },
146
+ {
147
+ "source": "src/project_forge_deployment/portable_profile.py",
148
+ "destination": "tools/project-forge-deployment/project_forge_deployment/portable_profile.py"
149
+ },
150
+ {
151
+ "source": "src/project_forge_deployment/profile_migration.py",
152
+ "destination": "tools/project-forge-deployment/project_forge_deployment/profile_migration.py"
153
+ },
154
+ {
155
+ "source": "src/project_forge_deployment/profile_repository.py",
156
+ "destination": "tools/project-forge-deployment/project_forge_deployment/profile_repository.py"
157
+ },
158
+ {
159
+ "source": "src/project_forge_deployment/profiles.py",
160
+ "destination": "tools/project-forge-deployment/project_forge_deployment/profiles.py"
161
+ },
162
+ {
163
+ "source": "src/project_forge_deployment/project_topology.py",
164
+ "destination": "tools/project-forge-deployment/project_forge_deployment/project_topology.py"
165
+ },
166
+ {
167
+ "source": "src/project_forge_deployment/proof_receipt.py",
168
+ "destination": "tools/project-forge-deployment/project_forge_deployment/proof_receipt.py"
169
+ },
170
+ {
171
+ "source": "src/project_forge_deployment/proxy_peer.py",
172
+ "destination": "tools/project-forge-deployment/project_forge_deployment/proxy_peer.py"
173
+ },
174
+ {
175
+ "source": "src/project_forge_deployment/auth_recovery_guard.py",
176
+ "destination": "tools/project-forge-deployment/project_forge_deployment/auth_recovery_guard.py"
177
+ },
178
+ {
179
+ "source": "src/project_forge_deployment/auth_recovery_capture.py",
180
+ "destination": "tools/project-forge-deployment/project_forge_deployment/auth_recovery_capture.py"
181
+ },
182
+ {
183
+ "source": "src/project_forge_deployment/auth_recovery_lifecycle.py",
184
+ "destination": "tools/project-forge-deployment/project_forge_deployment/auth_recovery_lifecycle.py"
185
+ },
186
+ {
187
+ "source": "src/project_forge_deployment/auth_recovery_schedule.py",
188
+ "destination": "tools/project-forge-deployment/project_forge_deployment/auth_recovery_schedule.py"
189
+ },
190
+ {
191
+ "source": "src/project_forge_deployment/auth_recovery_retention.py",
192
+ "destination": "tools/project-forge-deployment/project_forge_deployment/auth_recovery_retention.py"
193
+ },
194
+ {
195
+ "source": "src/project_forge_deployment/recovery_scope.py",
196
+ "destination": "tools/project-forge-deployment/project_forge_deployment/recovery_scope.py"
197
+ },
198
+ {
199
+ "source": "src/project_forge_deployment/registry_access.py",
200
+ "destination": "tools/project-forge-deployment/project_forge_deployment/registry_access.py"
201
+ },
202
+ {
203
+ "source": "src/project_forge_deployment/registry_cli.py",
204
+ "destination": "tools/project-forge-deployment/project_forge_deployment/registry_cli.py"
205
+ },
206
+ {
207
+ "source": "src/project_forge_deployment/route_registry.py",
208
+ "destination": "tools/project-forge-deployment/project_forge_deployment/route_registry.py"
209
+ },
210
+ {
211
+ "source": "src/project_forge_deployment/route_registry_remote.py",
212
+ "destination": "tools/project-forge-deployment/project_forge_deployment/route_registry_remote.py"
213
+ },
214
+ {
215
+ "source": "src/project_forge_deployment/safe_diagnostics.py",
216
+ "destination": "tools/project-forge-deployment/project_forge_deployment/safe_diagnostics.py"
217
+ },
218
+ {
219
+ "source": "src/project_forge_deployment/security.py",
220
+ "destination": "tools/project-forge-deployment/project_forge_deployment/security.py"
221
+ },
222
+ {
223
+ "source": "src/project_forge_deployment/sqlite_adapter.py",
224
+ "destination": "tools/project-forge-deployment/project_forge_deployment/sqlite_adapter.py"
225
+ },
226
+ {
227
+ "source": "src/project_forge_deployment/sqlite_adapter_remote.py",
228
+ "destination": "tools/project-forge-deployment/project_forge_deployment/sqlite_adapter_remote.py"
229
+ },
230
+ {
231
+ "source": "src/project_forge_deployment/sqlite_cli.py",
232
+ "destination": "tools/project-forge-deployment/project_forge_deployment/sqlite_cli.py"
233
+ },
234
+ {
235
+ "source": "src/project_forge_deployment/sqlite_import_recovery.py",
236
+ "destination": "tools/project-forge-deployment/project_forge_deployment/sqlite_import_recovery.py"
237
+ },
238
+ {
239
+ "source": "src/project_forge_deployment/ssh.py",
240
+ "destination": "tools/project-forge-deployment/project_forge_deployment/ssh.py"
241
+ },
242
+ {
243
+ "source": "src/project_forge_deployment/teardown.py",
244
+ "destination": "tools/project-forge-deployment/project_forge_deployment/teardown.py"
245
+ },
246
+ {
247
+ "source": "src/project_forge_deployment/teardown_cli.py",
248
+ "destination": "tools/project-forge-deployment/project_forge_deployment/teardown_cli.py"
249
+ },
250
+ {
251
+ "source": "src/project_forge_deployment/teardown_remote.py",
252
+ "destination": "tools/project-forge-deployment/project_forge_deployment/teardown_remote.py"
253
+ },
254
+ {
255
+ "source": "src/project_forge_deployment/topology_cli.py",
256
+ "destination": "tools/project-forge-deployment/project_forge_deployment/topology_cli.py"
257
+ },
258
+ {
259
+ "source": "src/project_forge_deployment/trust.py",
260
+ "destination": "tools/project-forge-deployment/project_forge_deployment/trust.py"
261
+ },
262
+ {
263
+ "source": "docs/CLOUDFLARE_INGRESS.md",
264
+ "destination": "docs/project-forge/CLOUDFLARE_INGRESS.md"
265
+ },
266
+ {
267
+ "source": "docs/DEVELOPER_ENVIRONMENTS.md",
268
+ "destination": "docs/project-forge/DEVELOPER_ENVIRONMENTS.md"
269
+ },
270
+ {
271
+ "source": "docs/WORKSPACE_INSTANCES.md",
272
+ "destination": "docs/project-forge/WORKSPACE_INSTANCES.md"
273
+ },
274
+ {
275
+ "source": "docs/ENVIRONMENT_PROOF.md",
276
+ "destination": "docs/project-forge/ENVIRONMENT_PROOF.md"
277
+ },
278
+ {
279
+ "source": "docs/PROJECT_TOPOLOGY_BINDING.md",
280
+ "destination": "docs/project-forge/PROJECT_TOPOLOGY_BINDING.md"
281
+ },
282
+ {
283
+ "source": "docs/RECOVERY_READINESS.md",
284
+ "destination": "docs/project-forge/RECOVERY_READINESS.md"
285
+ },
286
+ {
287
+ "source": "docs/images/developer-environment-journey.svg",
288
+ "destination": "docs/project-forge/images/developer-environment-journey.svg"
289
+ },
290
+ {
291
+ "source": "docs/images/personal-environment-architecture.svg",
292
+ "destination": "docs/project-forge/images/personal-environment-architecture.svg"
293
+ },
294
+ {
295
+ "source": "docs/images/project-environment-model.svg",
296
+ "destination": "docs/project-forge/images/project-environment-model.svg"
297
+ }
74
298
  ]
75
299
  }