@principles/pd-cli 1.152.11 → 1.152.13
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.
- package/dist/commands/candidate.d.ts +3 -3
- package/dist/commands/candidate.d.ts.map +1 -1
- package/dist/commands/candidate.js +9 -21
- package/dist/commands/candidate.js.map +1 -1
- package/dist/index.js +0 -0
- package/dist/services/rulehost-pipeline-runner.d.ts.map +1 -1
- package/dist/services/rulehost-pipeline-runner.js +4 -17
- package/dist/services/rulehost-pipeline-runner.js.map +1 -1
- package/package.json +13 -7
- package/dist/commands/__tests__/intent-flag-wiring.test.d.ts +0 -9
- package/dist/commands/__tests__/intent-flag-wiring.test.d.ts.map +0 -1
- package/dist/commands/__tests__/intent-flag-wiring.test.js +0 -237
- package/dist/commands/__tests__/intent-flag-wiring.test.js.map +0 -1
- package/dist/commands/__tests__/legacy-cleanup.test.d.ts +0 -18
- package/dist/commands/__tests__/legacy-cleanup.test.d.ts.map +0 -1
- package/dist/commands/__tests__/legacy-cleanup.test.js +0 -467
- package/dist/commands/__tests__/legacy-cleanup.test.js.map +0 -1
- package/dist/commands/__tests__/mvp-smoke.test.d.ts +0 -15
- package/dist/commands/__tests__/mvp-smoke.test.d.ts.map +0 -1
- package/dist/commands/__tests__/mvp-smoke.test.js +0 -262
- package/dist/commands/__tests__/mvp-smoke.test.js.map +0 -1
- package/dist/commands/__tests__/pain-retry-maxTokens-flag.test.d.ts +0 -2
- package/dist/commands/__tests__/pain-retry-maxTokens-flag.test.d.ts.map +0 -1
- package/dist/commands/__tests__/pain-retry-maxTokens-flag.test.js +0 -60
- package/dist/commands/__tests__/pain-retry-maxTokens-flag.test.js.map +0 -1
- package/dist/commands/__tests__/rulecode-flag-wiring.test.d.ts +0 -21
- package/dist/commands/__tests__/rulecode-flag-wiring.test.d.ts.map +0 -1
- package/dist/commands/__tests__/rulecode-flag-wiring.test.js +0 -186
- package/dist/commands/__tests__/rulecode-flag-wiring.test.js.map +0 -1
- package/dist/commands/__tests__/rulecode-handler.test.d.ts +0 -16
- package/dist/commands/__tests__/rulecode-handler.test.d.ts.map +0 -1
- package/dist/commands/__tests__/rulecode-handler.test.js +0 -285
- package/dist/commands/__tests__/rulecode-handler.test.js.map +0 -1
- package/dist/commands/__tests__/run-rulehost-flag-wiring.test.d.ts +0 -24
- package/dist/commands/__tests__/run-rulehost-flag-wiring.test.d.ts.map +0 -1
- package/dist/commands/__tests__/run-rulehost-flag-wiring.test.js +0 -232
- package/dist/commands/__tests__/run-rulehost-flag-wiring.test.js.map +0 -1
- package/dist/commands/__tests__/runtime-activation-nextaction.test.d.ts +0 -15
- package/dist/commands/__tests__/runtime-activation-nextaction.test.d.ts.map +0 -1
- package/dist/commands/__tests__/runtime-activation-nextaction.test.js +0 -73
- package/dist/commands/__tests__/runtime-activation-nextaction.test.js.map +0 -1
- package/dist/commands/__tests__/runtime-probe-config.test.d.ts +0 -20
- package/dist/commands/__tests__/runtime-probe-config.test.d.ts.map +0 -1
- package/dist/commands/__tests__/runtime-probe-config.test.js +0 -389
- package/dist/commands/__tests__/runtime-probe-config.test.js.map +0 -1
- package/dist/commands/__tests__/telemetry-flag-wiring.test.d.ts +0 -9
- package/dist/commands/__tests__/telemetry-flag-wiring.test.d.ts.map +0 -1
- package/dist/commands/__tests__/telemetry-flag-wiring.test.js +0 -76
- package/dist/commands/__tests__/telemetry-flag-wiring.test.js.map +0 -1
- package/dist/commands/__tests__/version.test.d.ts +0 -2
- package/dist/commands/__tests__/version.test.d.ts.map +0 -1
- package/dist/commands/__tests__/version.test.js +0 -238
- package/dist/commands/__tests__/version.test.js.map +0 -1
- package/dist/commands/runtime-uat.guard.test.d.ts +0 -2
- package/dist/commands/runtime-uat.guard.test.d.ts.map +0 -1
- package/dist/commands/runtime-uat.guard.test.js +0 -153
- package/dist/commands/runtime-uat.guard.test.js.map +0 -1
- package/dist/services/__tests__/cli-output.test.d.ts +0 -18
- package/dist/services/__tests__/cli-output.test.d.ts.map +0 -1
- package/dist/services/__tests__/cli-output.test.js +0 -103
- package/dist/services/__tests__/cli-output.test.js.map +0 -1
- package/dist/services/__tests__/evaluator-runner-deps.test.d.ts +0 -2
- package/dist/services/__tests__/evaluator-runner-deps.test.d.ts.map +0 -1
- package/dist/services/__tests__/evaluator-runner-deps.test.js +0 -343
- package/dist/services/__tests__/evaluator-runner-deps.test.js.map +0 -1
- package/dist/services/__tests__/rulehost-readiness.test.d.ts +0 -2
- package/dist/services/__tests__/rulehost-readiness.test.d.ts.map +0 -1
- package/dist/services/__tests__/rulehost-readiness.test.js +0 -311
- package/dist/services/__tests__/rulehost-readiness.test.js.map +0 -1
- package/dist/services/__tests__/runtime-adapter-resolver.test.d.ts +0 -18
- package/dist/services/__tests__/runtime-adapter-resolver.test.d.ts.map +0 -1
- package/dist/services/__tests__/runtime-adapter-resolver.test.js +0 -673
- package/dist/services/__tests__/runtime-adapter-resolver.test.js.map +0 -1
- package/dist/utils/production-workspace-guard.test.d.ts +0 -2
- package/dist/utils/production-workspace-guard.test.d.ts.map +0 -1
- package/dist/utils/production-workspace-guard.test.js +0 -137
- package/dist/utils/production-workspace-guard.test.js.map +0 -1
- package/scripts/llm-dogfood.ts +0 -456
- package/scripts/migrate-illegal-expected-decision.ts +0 -252
- package/src/commands/__tests__/intent-flag-wiring.test.ts +0 -282
- package/src/commands/__tests__/legacy-cleanup.test.ts +0 -602
- package/src/commands/__tests__/mvp-smoke.test.ts +0 -300
- package/src/commands/__tests__/pain-retry-maxTokens-flag.test.ts +0 -73
- package/src/commands/__tests__/rulecode-flag-wiring.test.ts +0 -237
- package/src/commands/__tests__/rulecode-handler.test.ts +0 -369
- package/src/commands/__tests__/run-rulehost-flag-wiring.test.ts +0 -292
- package/src/commands/__tests__/runtime-activation-nextaction.test.ts +0 -81
- package/src/commands/__tests__/runtime-probe-config.test.ts +0 -432
- package/src/commands/__tests__/telemetry-flag-wiring.test.ts +0 -84
- package/src/commands/__tests__/version.test.ts +0 -251
- package/src/commands/admission-gate.ts +0 -30
- package/src/commands/artifact.ts +0 -82
- package/src/commands/build-trajectory-evidence.ts +0 -298
- package/src/commands/candidate.ts +0 -1260
- package/src/commands/codex-ingest-catchup.ts +0 -114
- package/src/commands/codex-ingest-quarantine.ts +0 -127
- package/src/commands/codex-reconcile.ts +0 -84
- package/src/commands/codex-setup.ts +0 -476
- package/src/commands/codex-worker.ts +0 -185
- package/src/commands/command-helpers.ts +0 -24
- package/src/commands/config-doctor.ts +0 -193
- package/src/commands/console.ts +0 -797
- package/src/commands/context.ts +0 -72
- package/src/commands/demo-story-a.ts +0 -241
- package/src/commands/diagnose.ts +0 -756
- package/src/commands/errors-list.ts +0 -441
- package/src/commands/evolution-tasks-list.ts +0 -48
- package/src/commands/evolution-tasks-show.ts +0 -62
- package/src/commands/flow.ts +0 -60
- package/src/commands/health-codex.ts +0 -576
- package/src/commands/health.ts +0 -315
- package/src/commands/history.ts +0 -63
- package/src/commands/intent.ts +0 -457
- package/src/commands/legacy-cleanup.ts +0 -531
- package/src/commands/legacy-import.ts +0 -104
- package/src/commands/mvp-smoke.ts +0 -160
- package/src/commands/pain-evidence.ts +0 -226
- package/src/commands/pain-list.ts +0 -239
- package/src/commands/pain-record.ts +0 -612
- package/src/commands/pain-retry.ts +0 -916
- package/src/commands/principles-stats.ts +0 -700
- package/src/commands/proven-channel-baseline.ts +0 -115
- package/src/commands/quality-scorecard.ts +0 -272
- package/src/commands/remediation-output.ts +0 -66
- package/src/commands/rulecode.ts +0 -465
- package/src/commands/run.ts +0 -89
- package/src/commands/runtime-activation.ts +0 -1629
- package/src/commands/runtime-artifact-repair.ts +0 -524
- package/src/commands/runtime-canary.ts +0 -395
- package/src/commands/runtime-compatibility-scan.ts +0 -105
- package/src/commands/runtime-diagnostics-export.ts +0 -229
- package/src/commands/runtime-features.ts +0 -153
- package/src/commands/runtime-gfi-snapshot.ts +0 -135
- package/src/commands/runtime-health-snapshot.ts +0 -108
- package/src/commands/runtime-init.ts +0 -429
- package/src/commands/runtime-internalization-enqueue-successors.ts +0 -530
- package/src/commands/runtime-internalization-integrity-repair.ts +0 -79
- package/src/commands/runtime-internalization-integrity.ts +0 -107
- package/src/commands/runtime-internalization-queue.ts +0 -135
- package/src/commands/runtime-internalization-retry.ts +0 -191
- package/src/commands/runtime-internalization-run-once.ts +0 -791
- package/src/commands/runtime-internalization-run-rulehost.ts +0 -749
- package/src/commands/runtime-internalization-wake-once.ts +0 -87
- package/src/commands/runtime-pain-flood-simulation.ts +0 -121
- package/src/commands/runtime-pruning.ts +0 -438
- package/src/commands/runtime-recovery-failed-tasks.ts +0 -258
- package/src/commands/runtime-recovery.ts +0 -109
- package/src/commands/runtime-synthetic-baseline.ts +0 -70
- package/src/commands/runtime-uat.guard.test.ts +0 -175
- package/src/commands/runtime-uat.ts +0 -380
- package/src/commands/runtime.ts +0 -473
- package/src/commands/samples-list.ts +0 -39
- package/src/commands/samples-review.ts +0 -36
- package/src/commands/task.ts +0 -271
- package/src/commands/telemetry.ts +0 -349
- package/src/commands/trace.ts +0 -174
- package/src/commands/trajectory-db-unavailable.ts +0 -19
- package/src/commands/trajectory.ts +0 -64
- package/src/commands/version.ts +0 -49
- package/src/config-reader.ts +0 -122
- package/src/index.ts +0 -1276
- package/src/legacy/legacy-import.ts +0 -179
- package/src/legacy/session-history-import.ts +0 -203
- package/src/resolve-workspace.ts +0 -106
- package/src/services/__tests__/cli-output.test.ts +0 -130
- package/src/services/__tests__/evaluator-runner-deps.test.ts +0 -382
- package/src/services/__tests__/rulehost-readiness.test.ts +0 -363
- package/src/services/__tests__/runtime-adapter-resolver.test.ts +0 -793
- package/src/services/cli-output.ts +0 -95
- package/src/services/config-doctor.ts +0 -697
- package/src/services/console-launcher.ts +0 -537
- package/src/services/demo-rule-compiler.ts +0 -40
- package/src/services/demo-story-a-runner.ts +0 -471
- package/src/services/mainline-snapshot-assembler.ts +0 -579
- package/src/services/pain-flood-simulation-runner.ts +0 -462
- package/src/services/pd-config-loader.ts +0 -433
- package/src/services/proven-channel-baseline-runner.ts +0 -157
- package/src/services/quality-scorecard/data-extractor.ts +0 -150
- package/src/services/quality-scorecard/local-evaluator.ts +0 -142
- package/src/services/quality-scorecard/strong-model-gate.ts +0 -202
- package/src/services/resolve-runtime-from-pd-config.ts +0 -230
- package/src/services/rulehost-pipeline-runner.ts +0 -1216
- package/src/services/rulehost-readiness.ts +0 -326
- package/src/services/runtime-adapter-resolver.ts +0 -364
- package/src/services/synthetic-baseline-runner.ts +0 -400
- package/src/services/version-report.ts +0 -253
- package/src/services/workspace-tool-semantics.ts +0 -26
- package/src/utils/path-security.ts +0 -96
- package/src/utils/production-workspace-guard.test.ts +0 -157
- package/src/utils/production-workspace-guard.ts +0 -210
- package/tests/bdd/cli-contract.steps.ts +0 -346
- package/tests/bdd/principles-stats.steps.ts +0 -211
- package/tests/bdd/support/gherkin-loader.ts +0 -147
- package/tests/bdd/support/repo-root.ts +0 -62
- package/tests/bdd/support/vitest-bdd.ts +0 -179
- package/tests/commands/admission-gate-coverage.test.ts +0 -79
- package/tests/commands/build-trajectory-evidence.test.ts +0 -508
- package/tests/commands/candidate-audit-repair.test.ts +0 -421
- package/tests/commands/candidate-intake.test.ts +0 -732
- package/tests/commands/candidate-internalization-backfill.test.ts +0 -548
- package/tests/commands/candidate-internalize-lineage.test.ts +0 -565
- package/tests/commands/candidate-internalize.test.ts +0 -299
- package/tests/commands/candidate-route.test.ts +0 -329
- package/tests/commands/candidate-show.test.ts +0 -95
- package/tests/commands/cli-command-tree.test.ts +0 -144
- package/tests/commands/cli-help-snapshot.test.ts +0 -155
- package/tests/commands/cli-skill-contract.test.ts +0 -121
- package/tests/commands/codex-consent-reversibility.steps.test.ts +0 -299
- package/tests/commands/codex-ingest-quarantine.test.ts +0 -136
- package/tests/commands/codex-setup.test.ts +0 -297
- package/tests/commands/codex-worker-daemon.test.ts +0 -95
- package/tests/commands/codex-worker-registration.test.ts +0 -207
- package/tests/commands/config-doctor.test.ts +0 -336
- package/tests/commands/console-launcher-edge-cases.test.ts +0 -388
- package/tests/commands/console-open.test.ts +0 -1381
- package/tests/commands/context.test.ts +0 -114
- package/tests/commands/demo-story-a.test.ts +0 -318
- package/tests/commands/diagnose.test.ts +0 -1803
- package/tests/commands/errors-list.test.ts +0 -679
- package/tests/commands/evolution-tasks-list.test.ts +0 -41
- package/tests/commands/evolution-tasks-show.test.ts +0 -46
- package/tests/commands/health-codex.test.ts +0 -349
- package/tests/commands/health-host-wiring.test.ts +0 -76
- package/tests/commands/health-reliability.test.ts +0 -99
- package/tests/commands/health.test.ts +0 -413
- package/tests/commands/intent.test.ts +0 -321
- package/tests/commands/legacy-cleanup.test.ts +0 -148
- package/tests/commands/pain-evidence.test.ts +0 -518
- package/tests/commands/pain-list.test.ts +0 -219
- package/tests/commands/pain-record-async.test.ts +0 -335
- package/tests/commands/pain-record-session-parser.test.ts +0 -228
- package/tests/commands/pain-record.test.ts +0 -851
- package/tests/commands/pain-retry.test.ts +0 -1121
- package/tests/commands/plugin-config-resolution-cutover.test.ts +0 -229
- package/tests/commands/pri-393-runtime-config-unification.test.ts +0 -443
- package/tests/commands/principles-stats-wiring.test.ts +0 -135
- package/tests/commands/principles-stats.test.ts +0 -274
- package/tests/commands/product-path-regression.test.ts +0 -86
- package/tests/commands/proven-channel-baseline.test.ts +0 -441
- package/tests/commands/rulecode.test.ts +0 -177
- package/tests/commands/run-rulehost-handler.test.ts +0 -908
- package/tests/commands/runtime-activation-approve-flag-wiring.test.ts +0 -227
- package/tests/commands/runtime-activation-deactivate-flag-wiring.test.ts +0 -167
- package/tests/commands/runtime-activation-dispatch-flag-wiring.test.ts +0 -262
- package/tests/commands/runtime-activation-governance-audit.test.ts +0 -95
- package/tests/commands/runtime-activation-list-flag-wiring.test.ts +0 -193
- package/tests/commands/runtime-activation-promote-flag-wiring.test.ts +0 -248
- package/tests/commands/runtime-activation-shadow-telemetry.test.ts +0 -130
- package/tests/commands/runtime-activation.test.ts +0 -2052
- package/tests/commands/runtime-artifact-repair-registration.test.ts +0 -74
- package/tests/commands/runtime-artifact-repair.test.ts +0 -404
- package/tests/commands/runtime-canary.test.ts +0 -430
- package/tests/commands/runtime-compatibility-scan.test.ts +0 -146
- package/tests/commands/runtime-diagnostics-export.test.ts +0 -175
- package/tests/commands/runtime-features.test.ts +0 -249
- package/tests/commands/runtime-health-snapshot.test.ts +0 -358
- package/tests/commands/runtime-init-empty-workspace.test.ts +0 -252
- package/tests/commands/runtime-init.test.ts +0 -420
- package/tests/commands/runtime-internalization-enqueue-successors.test.ts +0 -782
- package/tests/commands/runtime-internalization-integrity-repair.test.ts +0 -239
- package/tests/commands/runtime-internalization-integrity.test.ts +0 -140
- package/tests/commands/runtime-internalization-queue.test.ts +0 -380
- package/tests/commands/runtime-internalization-retry-owner-authority.test.ts +0 -431
- package/tests/commands/runtime-internalization-run-once-evaluator-parity.test.ts +0 -269
- package/tests/commands/runtime-internalization-run-once-language.test.ts +0 -303
- package/tests/commands/runtime-internalization-run-once-real-config.test.ts +0 -237
- package/tests/commands/runtime-internalization-run-once-rollout-parity.test.ts +0 -706
- package/tests/commands/runtime-internalization-run-once.test.ts +0 -1791
- package/tests/commands/runtime-internalization-wake-once.test.ts +0 -171
- package/tests/commands/runtime-internalization.test.ts +0 -53
- package/tests/commands/runtime-pain-flood-simulation.test.ts +0 -418
- package/tests/commands/runtime-pruning.test.ts +0 -694
- package/tests/commands/runtime-recovery-failed-tasks.test.ts +0 -328
- package/tests/commands/runtime-recovery.test.ts +0 -120
- package/tests/commands/runtime-synthetic-baseline.test.ts +0 -249
- package/tests/commands/runtime-uat.test.ts +0 -397
- package/tests/commands/runtime.test.ts +0 -392
- package/tests/commands/samples-list.test.ts +0 -43
- package/tests/commands/samples-review.test.ts +0 -41
- package/tests/commands/task.test.ts +0 -153
- package/tests/commands/telemetry.test.ts +0 -190
- package/tests/commands/trace.test.ts +0 -316
- package/tests/config-reader.test.ts +0 -143
- package/tests/e2e/candidate-intake-e2e.test.ts +0 -338
- package/tests/e2e/cli-full-flow.test.ts +0 -233
- package/tests/e2e/cross-package-acceptance.test.ts +0 -635
- package/tests/helpers/pd-cli-path.ts +0 -5
- package/tests/pd-cli-smoke.test.ts +0 -13
- package/tests/resolve-workspace.test.ts +0 -196
- package/tests/services/config-doctor-signal-health.test.ts +0 -109
- package/tests/services/console-launcher.test.ts +0 -114
- package/tests/services/demo-rule-compiler.test.ts +0 -242
- package/tests/services/mainline-snapshot-assembler.test.ts +0 -572
- package/tests/services/pd-config-loader.test.ts +0 -505
- package/tests/services/proven-channel-baseline-runner.test.ts +0 -30
- package/tests/services/quality-scorecard/strong-model-gate.test.ts +0 -133
- package/tests/services/resolve-runtime-from-pd-config.test.ts +0 -485
- package/tests/services/rulehost-pipeline-e2e.test.ts +0 -538
- package/tests/services/rulehost-pipeline-runner.test.ts +0 -1175
- package/tests/services/workspace-tool-semantics.test.ts +0 -76
- package/tests/utils/path-security.test.ts +0 -180
- package/tsconfig.json +0 -26
- package/vitest.config.ts +0 -9
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* pd codex ingest catch-up command implementation (Codex Governance Closure
|
|
3
|
-
* Slice C, PRI-624; SPEC §13/§15 recovery command).
|
|
4
|
-
*
|
|
5
|
-
* Performs ONE bounded non-destructive catch-up pass over the workspace's
|
|
6
|
-
* durable Codex checkpoints: resolves each previously-authenticated rollout
|
|
7
|
-
* by exact uuid, re-authorizes the transcript path, and resumes the bounded
|
|
8
|
-
* incremental ingestion from the checkpoint — then feeds any admission
|
|
9
|
-
* candidates through the same Slice B admission/continuation pass the hook
|
|
10
|
-
* uses. Flag-off (`codex_conversation_ingestion=false`) performs ZERO
|
|
11
|
-
* transcript filesystem I/O and reports a structured skip.
|
|
12
|
-
*
|
|
13
|
-
* This is the manual-mode counterpart of the Companion worker's catch-up
|
|
14
|
-
* step (worker cycle step 2); it creates no LLM execution.
|
|
15
|
-
*
|
|
16
|
-
* CLI gate compliance:
|
|
17
|
-
* - cli-1: --json outputs exactly one parseable JSON object on stdout.
|
|
18
|
-
* - cli-2: exit paths stop execution.
|
|
19
|
-
* - cli-5/6: skipped/degraded results carry reason + nextAction; nothing is
|
|
20
|
-
* mutated on failure (the ingestion seam is transactional per rollout).
|
|
21
|
-
*/
|
|
22
|
-
import { resolveWorkspaceDir } from '../resolve-workspace.js';
|
|
23
|
-
import { catchUpCodexIngestion, type CodexCatchUpResult } from '@principles/codex-adapter';
|
|
24
|
-
|
|
25
|
-
interface CodexIngestCatchUpOptions {
|
|
26
|
-
workspace?: string;
|
|
27
|
-
json?: boolean;
|
|
28
|
-
maxRollouts?: number;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
export interface CodexIngestCatchUpReport {
|
|
32
|
-
generatedAt: string;
|
|
33
|
-
host: 'codex';
|
|
34
|
-
workspace: string;
|
|
35
|
-
status: 'ok' | 'degraded' | 'skipped';
|
|
36
|
-
reason?: string;
|
|
37
|
-
nextAction?: string;
|
|
38
|
-
rolloutsProcessed: number;
|
|
39
|
-
remainingLagRollouts: string[];
|
|
40
|
-
unexaminedRollouts: string[];
|
|
41
|
-
degradations: string[];
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
function buildReport(generatedAt: string, workspace: string, result: CodexCatchUpResult): CodexIngestCatchUpReport {
|
|
45
|
-
if (result.status === 'skipped') {
|
|
46
|
-
return {
|
|
47
|
-
generatedAt,
|
|
48
|
-
host: 'codex',
|
|
49
|
-
workspace,
|
|
50
|
-
status: 'skipped',
|
|
51
|
-
reason: result.reason,
|
|
52
|
-
nextAction: result.nextAction,
|
|
53
|
-
rolloutsProcessed: 0,
|
|
54
|
-
remainingLagRollouts: [],
|
|
55
|
-
unexaminedRollouts: [],
|
|
56
|
-
degradations: [],
|
|
57
|
-
};
|
|
58
|
-
}
|
|
59
|
-
const degradations: string[] = [];
|
|
60
|
-
for (const rollout of result.rollouts) {
|
|
61
|
-
for (const degradation of rollout.admissionDegradations) {
|
|
62
|
-
degradations.push(`${rollout.rolloutIdentity}: ${degradation.reason}`);
|
|
63
|
-
}
|
|
64
|
-
if (rollout.outcome.status === 'degraded') {
|
|
65
|
-
degradations.push(`${rollout.rolloutIdentity}: ${rollout.outcome.reason}`);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
return {
|
|
69
|
-
generatedAt,
|
|
70
|
-
host: 'codex',
|
|
71
|
-
workspace,
|
|
72
|
-
status: result.status,
|
|
73
|
-
rolloutsProcessed: result.rollouts.length,
|
|
74
|
-
remainingLagRollouts: [...result.remainingLagRollouts],
|
|
75
|
-
unexaminedRollouts: [...result.unexaminedRollouts],
|
|
76
|
-
degradations: degradations.slice(0, 10),
|
|
77
|
-
...(degradations.length > 0 && result.status === 'degraded'
|
|
78
|
-
? { reason: 'one or more rollouts degraded; committed observations remain durable', nextAction: 'Inspect the per-rollout degradations; re-run catch-up after fixing the underlying condition (Slice D adds the audited quarantine command).' }
|
|
79
|
-
: {}),
|
|
80
|
-
};
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
export async function handleCodexIngestCatchUp(options: CodexIngestCatchUpOptions): Promise<void> {
|
|
84
|
-
const generatedAt = new Date().toISOString();
|
|
85
|
-
const workspace = resolveWorkspaceDir(options.workspace);
|
|
86
|
-
|
|
87
|
-
const result = await catchUpCodexIngestion({
|
|
88
|
-
workspaceDir: workspace,
|
|
89
|
-
env: { CODEX_HOME: process.env.CODEX_HOME },
|
|
90
|
-
...(typeof options.maxRollouts === 'number' ? { maxRollouts: options.maxRollouts } : {}),
|
|
91
|
-
});
|
|
92
|
-
|
|
93
|
-
const report = buildReport(generatedAt, workspace, result);
|
|
94
|
-
if (options.json) {
|
|
95
|
-
console.log(JSON.stringify(report));
|
|
96
|
-
if (report.status === 'degraded') process.exitCode = 1;
|
|
97
|
-
return;
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
const lines = [
|
|
101
|
-
`Codex ingestion catch-up (${workspace})`,
|
|
102
|
-
` status: ${report.status}`,
|
|
103
|
-
` rollouts processed: ${report.rolloutsProcessed}`,
|
|
104
|
-
` remaining lag: ${report.remainingLagRollouts.length}`,
|
|
105
|
-
` unexamined (bound): ${report.unexaminedRollouts.length}`,
|
|
106
|
-
];
|
|
107
|
-
for (const degradation of report.degradations) {
|
|
108
|
-
lines.push(` degradation: ${degradation}`);
|
|
109
|
-
}
|
|
110
|
-
if (report.reason !== undefined) lines.push(` reason: ${report.reason}`);
|
|
111
|
-
if (report.nextAction !== undefined) lines.push(` next action: ${report.nextAction}`);
|
|
112
|
-
console.log(lines.join('\n'));
|
|
113
|
-
if (report.status === 'degraded') process.exitCode = 1;
|
|
114
|
-
}
|
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* pd codex ingest quarantine — audited recovery for permanently invalid
|
|
3
|
-
* governance observations (Codex Governance Closure Slice D, PRI-625;
|
|
4
|
-
* SPEC rev 2 §15).
|
|
5
|
-
*
|
|
6
|
-
* Contract (§15 verbatim requirements):
|
|
7
|
-
* - dry run by DEFAULT; `--confirm` is required to actually quarantine;
|
|
8
|
-
* - the quarantine record captures digest, reason, operator, timestamp, and
|
|
9
|
-
* the neighbor gap;
|
|
10
|
-
* - the Codex transcript is NEVER edited or read (only the workspace
|
|
11
|
-
* trajectory.db opens — asserted by the store tests via a port spy);
|
|
12
|
-
* - promoted (Owner-decided) evidence is refused;
|
|
13
|
-
* - --json emits exactly one documented object; failed validation mutates
|
|
14
|
-
* nothing.
|
|
15
|
-
*
|
|
16
|
-
* CLI gate compliance: cli-1 (single JSON object), cli-2 (exit paths stop),
|
|
17
|
-
* cli-5 (failed validation performs no mutation), cli-6 (reason + nextAction
|
|
18
|
-
* on every refusal).
|
|
19
|
-
*/
|
|
20
|
-
import * as os from 'os';
|
|
21
|
-
import { quarantineGovernanceObservation } from '@principles/host-runtime';
|
|
22
|
-
import { resolveWorkspaceDir } from '../resolve-workspace.js';
|
|
23
|
-
|
|
24
|
-
interface CodexIngestQuarantineOptions {
|
|
25
|
-
workspace?: string;
|
|
26
|
-
rollout?: string;
|
|
27
|
-
record?: string;
|
|
28
|
-
reason?: string;
|
|
29
|
-
operator?: string;
|
|
30
|
-
confirm?: boolean;
|
|
31
|
-
json?: boolean;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
function defaultOperator(): string {
|
|
35
|
-
try {
|
|
36
|
-
return os.userInfo().username.slice(0, 40) || 'unknown';
|
|
37
|
-
} catch {
|
|
38
|
-
return 'unknown';
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
export async function handleCodexIngestQuarantine(options: CodexIngestQuarantineOptions): Promise<void> {
|
|
43
|
-
const generatedAt = new Date().toISOString();
|
|
44
|
-
|
|
45
|
-
const refuse = (reason: string, nextAction: string): void => {
|
|
46
|
-
const report = { generatedAt, host: 'codex', op: 'quarantine', status: 'refused', confirmed: options.confirm === true, reason, nextAction };
|
|
47
|
-
if (options.json) {
|
|
48
|
-
console.log(JSON.stringify(report));
|
|
49
|
-
} else {
|
|
50
|
-
console.log('Codex observation quarantine');
|
|
51
|
-
console.log(` status: ${report.status}`);
|
|
52
|
-
console.log(` reason: ${reason}`);
|
|
53
|
-
console.log(` next action: ${nextAction}`);
|
|
54
|
-
}
|
|
55
|
-
process.exitCode = 1;
|
|
56
|
-
};
|
|
57
|
-
|
|
58
|
-
const rollout = typeof options.rollout === 'string' ? options.rollout.trim() : '';
|
|
59
|
-
if (rollout.length === 0) {
|
|
60
|
-
refuse('rollout_required', 'Pass --rollout <id> (the rollout identity whose record is invalid).');
|
|
61
|
-
return;
|
|
62
|
-
}
|
|
63
|
-
const recordRaw = typeof options.record === 'string' ? options.record.trim() : '';
|
|
64
|
-
const recordId = /^\d+$/.test(recordRaw) ? Number.parseInt(recordRaw, 10) : Number.NaN;
|
|
65
|
-
if (!Number.isInteger(recordId) || recordId <= 0) {
|
|
66
|
-
refuse('record_required', 'Pass --record <id> with the numeric governance_observations.id to quarantine.');
|
|
67
|
-
return;
|
|
68
|
-
}
|
|
69
|
-
const reason = typeof options.reason === 'string' ? options.reason.trim() : '';
|
|
70
|
-
if (reason.length === 0 || reason.length > 200) {
|
|
71
|
-
refuse('reason_required', 'Pass --reason "<why>" (1-200 chars) describing why the record is permanently invalid.');
|
|
72
|
-
return;
|
|
73
|
-
}
|
|
74
|
-
const operator = (typeof options.operator === 'string' && options.operator.trim().length > 0 ? options.operator.trim() : defaultOperator()).slice(0, 80);
|
|
75
|
-
|
|
76
|
-
// resolveWorkspaceDir throws when no workspace can be determined — wrap so
|
|
77
|
-
// --json still emits exactly one structured refusal (cli-1/cli-6).
|
|
78
|
-
let workspaceDir: string;
|
|
79
|
-
try {
|
|
80
|
-
workspaceDir = resolveWorkspaceDir(options.workspace);
|
|
81
|
-
} catch (error) {
|
|
82
|
-
const message = error instanceof Error ? error.message.slice(0, 160) : String(error);
|
|
83
|
-
refuse('workspace_unresolved: ' + message, 'Run from inside a PD workspace or pass -w/--workspace <path> with an initialized .pd directory.');
|
|
84
|
-
return;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
const result = quarantineGovernanceObservation({
|
|
88
|
-
workspaceDir,
|
|
89
|
-
hostKind: 'codex',
|
|
90
|
-
rolloutIdentity: rollout,
|
|
91
|
-
recordId,
|
|
92
|
-
reason,
|
|
93
|
-
operator,
|
|
94
|
-
confirm: options.confirm === true,
|
|
95
|
-
});
|
|
96
|
-
|
|
97
|
-
if (!result.ok) {
|
|
98
|
-
refuse(result.reason, result.nextAction);
|
|
99
|
-
return;
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
const report = {
|
|
103
|
-
generatedAt,
|
|
104
|
-
host: 'codex',
|
|
105
|
-
op: 'quarantine',
|
|
106
|
-
status: 'ok',
|
|
107
|
-
dryRun: result.dryRun,
|
|
108
|
-
alreadyQuarantined: result.alreadyQuarantined,
|
|
109
|
-
confirmed: options.confirm === true,
|
|
110
|
-
record: result.record,
|
|
111
|
-
...(result.dryRun ? { nextAction: 'Dry run only — nothing was mutated. Re-run with --confirm to quarantine this record.' } : {}),
|
|
112
|
-
transcriptTouched: false,
|
|
113
|
-
};
|
|
114
|
-
if (options.json) {
|
|
115
|
-
console.log(JSON.stringify(report));
|
|
116
|
-
} else {
|
|
117
|
-
console.log('Codex observation quarantine');
|
|
118
|
-
console.log(` status: ${result.dryRun ? 'dry-run' : 'quarantined'}`);
|
|
119
|
-
if (result.alreadyQuarantined) console.log(' note: record was already quarantined (idempotent)');
|
|
120
|
-
console.log(` record id: ${result.record.id} (${result.record.kind}, ${result.record.retentionClass})`);
|
|
121
|
-
console.log(` logical key: ${result.record.logicalKey}`);
|
|
122
|
-
console.log(` observed at: ${result.record.observedAt}`);
|
|
123
|
-
console.log(` digest: ${result.record.digest}`);
|
|
124
|
-
console.log(` gap: ${result.record.gap}`);
|
|
125
|
-
if (result.dryRun) console.log(' next action: Dry run only — nothing was mutated. Re-run with --confirm to quarantine this record.');
|
|
126
|
-
}
|
|
127
|
-
}
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* pd codex reconcile command implementation (Codex Governance Closure
|
|
3
|
-
* Slice B, PRI-623; SPEC §13/§20).
|
|
4
|
-
*
|
|
5
|
-
* Runs the narrow idempotent reconciliation pass between the governance
|
|
6
|
-
* admission markers (trajectory.db) and the Runtime V2 task store
|
|
7
|
-
* (.pd/state.db): creates missing Diagnostician tasks for admitted pains,
|
|
8
|
-
* repairs task links, retries pending promotion tails, and reports stale
|
|
9
|
-
* tails — without a background worker (the Slice C Companion worker will
|
|
10
|
-
* call the same seam).
|
|
11
|
-
*
|
|
12
|
-
* CLI gate compliance:
|
|
13
|
-
* - cli-1: --json outputs exactly one parseable JSON object on stdout.
|
|
14
|
-
* - cli-2: exit paths stop execution.
|
|
15
|
-
* - cli-6: degraded results include reason + nextAction.
|
|
16
|
-
*/
|
|
17
|
-
import { resolveWorkspaceDir } from '../resolve-workspace.js';
|
|
18
|
-
import { reconcileGovernanceContinuation } from '@principles/host-runtime';
|
|
19
|
-
|
|
20
|
-
interface CodexReconcileOptions {
|
|
21
|
-
workspace?: string;
|
|
22
|
-
json?: boolean;
|
|
23
|
-
limit?: number;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
export interface CodexReconcileReport {
|
|
27
|
-
generatedAt: string;
|
|
28
|
-
host: 'codex';
|
|
29
|
-
workspace: string;
|
|
30
|
-
ok: boolean;
|
|
31
|
-
reason?: string;
|
|
32
|
-
nextAction?: string;
|
|
33
|
-
tasksEnsured: number;
|
|
34
|
-
linksRepaired: number;
|
|
35
|
-
pendingTails: number;
|
|
36
|
-
completedTails: number;
|
|
37
|
-
staleTails: number;
|
|
38
|
-
degradations: string[];
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
export async function handleCodexReconcile(options: CodexReconcileOptions): Promise<void> {
|
|
42
|
-
const generatedAt = new Date().toISOString();
|
|
43
|
-
const workspace = resolveWorkspaceDir(options.workspace);
|
|
44
|
-
|
|
45
|
-
const result = await reconcileGovernanceContinuation({
|
|
46
|
-
workspaceDir: workspace,
|
|
47
|
-
...(typeof options.limit === 'number' ? { limit: options.limit } : {}),
|
|
48
|
-
});
|
|
49
|
-
|
|
50
|
-
const report: CodexReconcileReport = {
|
|
51
|
-
generatedAt,
|
|
52
|
-
host: 'codex',
|
|
53
|
-
workspace,
|
|
54
|
-
ok: result.ok,
|
|
55
|
-
tasksEnsured: result.tasksEnsured,
|
|
56
|
-
linksRepaired: result.linksRepaired,
|
|
57
|
-
pendingTails: result.pendingTails,
|
|
58
|
-
completedTails: result.completedTails,
|
|
59
|
-
staleTails: result.staleTails,
|
|
60
|
-
degradations: [...result.degradations],
|
|
61
|
-
...(result.ok ? {} : { reason: result.reason ?? 'reconciliation_failed', nextAction: result.nextAction ?? 'Inspect the listed degradations; admitted pains and evidence remain durable.' }),
|
|
62
|
-
};
|
|
63
|
-
|
|
64
|
-
if (options.json) {
|
|
65
|
-
console.log(JSON.stringify(report));
|
|
66
|
-
if (!report.ok) process.exitCode = 1;
|
|
67
|
-
return;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
const lines = [
|
|
71
|
-
`Codex governance reconciliation (${workspace})`,
|
|
72
|
-
` tasks ensured: ${report.tasksEnsured} (links repaired: ${report.linksRepaired})`,
|
|
73
|
-
` promotion tails: pending=${report.pendingTails} completed-now=${report.completedTails} stale=${report.staleTails}`,
|
|
74
|
-
];
|
|
75
|
-
for (const degradation of report.degradations) {
|
|
76
|
-
lines.push(` degradation: ${degradation}`);
|
|
77
|
-
}
|
|
78
|
-
if (!report.ok) {
|
|
79
|
-
lines.push(` reason: ${report.reason}`);
|
|
80
|
-
lines.push(` next action: ${report.nextAction}`);
|
|
81
|
-
}
|
|
82
|
-
console.log(lines.join('\n'));
|
|
83
|
-
if (!report.ok) process.exitCode = 1;
|
|
84
|
-
}
|