pi-daddy 0.22.0 → 0.24.0
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/CHANGELOG.md +40 -0
- package/README.md +12 -6
- package/contracts/daily-view/v1/README.md +114 -0
- package/contracts/daily-view/v1/fixtures/view.json +525 -0
- package/contracts/daily-view/v1/fixtures/view.txt +75 -0
- package/contracts/daily-view/v1/fixtures/work.jsonl +17 -0
- package/contracts/daily-view/v1/p03/README.md +26 -0
- package/contracts/daily-view/v1/p03/fixtures/retained-executions.json +241 -0
- package/contracts/daily-view/v1/p03/projection.schema.json +194 -0
- package/contracts/daily-view/v1/p03/provenance.json +21 -0
- package/contracts/dashboard-host/v1/README.md +176 -0
- package/contracts/debrief/v1/README.md +146 -0
- package/contracts/debrief/v1/intervention/README.md +32 -0
- package/contracts/debrief/v1/intervention/fixtures/artifact-3ee11136beb864f518252e5024dae9197421fbf97b6e981d3243c782b5c44bd0.txt +1 -0
- package/contracts/debrief/v1/intervention/fixtures/artifact-58905d872dd3c54a9705f67b05fa82edbad7af6476ae8993faf1a7b9fadfb905.txt +1 -0
- package/contracts/debrief/v1/intervention/fixtures/assessment.json +29 -0
- package/contracts/debrief/v1/intervention/fixtures/blind-view.json +20 -0
- package/contracts/debrief/v1/intervention/fixtures/choice.json +7 -0
- package/contracts/debrief/v1/intervention/fixtures/manifest.json +57 -0
- package/contracts/debrief/v1/intervention/fixtures/reveal.json +39 -0
- package/contracts/debrief/v1/provenance.json +89 -0
- package/contracts/debrief/v1/work-capture/README.md +38 -0
- package/contracts/debrief/v1/work-capture/fixtures/batch.json +17 -0
- package/contracts/debrief/v1/work-capture/fixtures/cases.json +184 -0
- package/contracts/debrief/v1/work-capture/fixtures/review.json +184 -0
- package/contracts/debrief/v1/work-capture/review-request.schema.json +41 -0
- package/contracts/debrief/v1/work-capture/work-case.schema.json +190 -0
- package/contracts/debrief/v2/README.md +71 -0
- package/contracts/debrief/v2/input-pin.json +66 -0
- package/contracts/debrief/v2/intervention-upstream.md +40 -0
- package/contracts/debrief/v2/work-signals-upstream.md +22 -0
- package/contracts/dispatch-control/v1/README.md +109 -0
- package/contracts/dispatch-control/v1/request.schema.json +19 -0
- package/contracts/effect-profile/v1/README.md +124 -0
- package/contracts/execution-retention/v1/README.md +109 -0
- package/contracts/execution-retention/v2/README.md +148 -0
- package/contracts/execution-retention/v2/fixtures/interrupted-native-bytes.json +91 -0
- package/contracts/execution-retention/v2/fixtures/missing-native-session.json +91 -0
- package/contracts/execution-retention/v2/fixtures/native-file-unknown-branch.json +91 -0
- package/contracts/execution-retention/v2/fixtures/native-id-without-bytes.json +91 -0
- package/contracts/execution-retention/v2/fixtures/native-live-branch.json +90 -0
- package/contracts/execution-retention/v2/fixtures/replaced-native-session.json +92 -0
- package/contracts/execution-retention/v2/fixtures/result-82c620cdfeb8ca6b858cf653d7f5e2eedca5315d6244216d60e8b36f03223d6a.bin +1 -0
- package/contracts/execution-retention/v2/fixtures/session-2ec1f134bc739984434f7fca689e1c3d1c39fce2dcadae709e9b6faedfcc4ac7.bin +3 -0
- package/contracts/execution-retention/v2/fixtures/session-9bdb4bd16a901da31580acf056bda525225259e15ec409e0410480109011772f.bin +3 -0
- package/contracts/execution-retention/v2/manifest.schema.json +858 -0
- package/contracts/experiment/v1/README.md +164 -0
- package/contracts/factory-order/v1/README.md +151 -0
- package/contracts/factory-order/v1/adoption-pin.json +8 -0
- package/contracts/intent-control/v1/README.md +135 -0
- package/contracts/intent-control/v1/request.schema.json +1096 -0
- package/contracts/intent-control/v2/README.md +34 -0
- package/contracts/intent-control/v2/request.schema.json +1070 -0
- package/contracts/ledger/v4/README.md +241 -0
- package/contracts/ledger/v4/fixtures/layout-options.json +428 -0
- package/contracts/ledger/v4/fixtures/work-acceptance.json +57 -0
- package/contracts/ledger/v4/fixtures/work-occurrence.json +44 -0
- package/contracts/ledger/v4/fixtures/work-revision.json +26 -0
- package/contracts/ledger/v4/fixtures/work-snapshot.json +73 -0
- package/contracts/ledger/v4/ledger-event.schema.json +162 -0
- package/contracts/ordinary-control/v1/README.md +59 -0
- package/contracts/producer-ipc/v1/README.md +137 -0
- package/dist/check-runner.d.ts +5 -0
- package/dist/check-runner.d.ts.map +1 -1
- package/dist/check-runner.js +16 -2
- package/dist/check-runner.js.map +1 -1
- package/dist/cli.d.ts +3 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +49 -3
- package/dist/cli.js.map +1 -1
- package/dist/control-journal.d.ts +20 -0
- package/dist/control-journal.d.ts.map +1 -0
- package/dist/control-journal.js +73 -0
- package/dist/control-journal.js.map +1 -0
- package/dist/daily-dashboard-host.d.ts +99 -0
- package/dist/daily-dashboard-host.d.ts.map +1 -0
- package/dist/daily-dashboard-host.js +71 -0
- package/dist/daily-dashboard-host.js.map +1 -0
- package/dist/daily-view-input.d.ts +44 -0
- package/dist/daily-view-input.d.ts.map +1 -0
- package/dist/daily-view-input.js +68 -0
- package/dist/daily-view-input.js.map +1 -0
- package/dist/daily-view-render.d.ts +4 -0
- package/dist/daily-view-render.d.ts.map +1 -0
- package/dist/daily-view-render.js +41 -0
- package/dist/daily-view-render.js.map +1 -0
- package/dist/daily-view.d.ts +74 -0
- package/dist/daily-view.d.ts.map +1 -0
- package/dist/daily-view.js +170 -0
- package/dist/daily-view.js.map +1 -0
- package/dist/dashboard-cli.d.ts +26 -1
- package/dist/dashboard-cli.d.ts.map +1 -1
- package/dist/dashboard-cli.js +128 -3
- package/dist/dashboard-cli.js.map +1 -1
- package/dist/dashboard-harness.d.ts +22 -0
- package/dist/dashboard-harness.d.ts.map +1 -0
- package/dist/dashboard-harness.js +89 -0
- package/dist/dashboard-harness.js.map +1 -0
- package/dist/dashboard-herdr.d.ts.map +1 -1
- package/dist/dashboard-herdr.js +7 -2
- package/dist/dashboard-herdr.js.map +1 -1
- package/dist/dashboard-host-contract.d.ts +116 -0
- package/dist/dashboard-host-contract.d.ts.map +1 -0
- package/dist/dashboard-host-contract.js +14 -0
- package/dist/dashboard-host-contract.js.map +1 -0
- package/dist/dashboard-host-transport.d.ts +16 -0
- package/dist/dashboard-host-transport.d.ts.map +1 -0
- package/dist/dashboard-host-transport.js +124 -0
- package/dist/dashboard-host-transport.js.map +1 -0
- package/dist/dashboard-host.d.ts +203 -0
- package/dist/dashboard-host.d.ts.map +1 -0
- package/dist/dashboard-host.js +376 -0
- package/dist/dashboard-host.js.map +1 -0
- package/dist/dashboard-observation.d.ts +28 -0
- package/dist/dashboard-observation.d.ts.map +1 -0
- package/dist/dashboard-observation.js +86 -0
- package/dist/dashboard-observation.js.map +1 -0
- package/dist/debrief-contract.d.ts +65 -0
- package/dist/debrief-contract.d.ts.map +1 -0
- package/dist/debrief-contract.js +151 -0
- package/dist/debrief-contract.js.map +1 -0
- package/dist/debrief-fixture.d.ts +16 -0
- package/dist/debrief-fixture.d.ts.map +1 -0
- package/dist/debrief-fixture.js +41 -0
- package/dist/debrief-fixture.js.map +1 -0
- package/dist/debrief-host.d.ts +59 -0
- package/dist/debrief-host.d.ts.map +1 -0
- package/dist/debrief-host.js +49 -0
- package/dist/debrief-host.js.map +1 -0
- package/dist/debrief-render.d.ts +5 -0
- package/dist/debrief-render.d.ts.map +1 -0
- package/dist/debrief-render.js +65 -0
- package/dist/debrief-render.js.map +1 -0
- package/dist/debrief.d.ts +90 -0
- package/dist/debrief.d.ts.map +1 -0
- package/dist/debrief.js +263 -0
- package/dist/debrief.js.map +1 -0
- package/dist/delegate-types.d.ts +2 -0
- package/dist/delegate-types.d.ts.map +1 -1
- package/dist/delegate-types.js.map +1 -1
- package/dist/delegate.d.ts.map +1 -1
- package/dist/delegate.js +1 -0
- package/dist/delegate.js.map +1 -1
- package/dist/dispatch-control.d.ts +45 -0
- package/dist/dispatch-control.d.ts.map +1 -0
- package/dist/dispatch-control.js +76 -0
- package/dist/dispatch-control.js.map +1 -0
- package/dist/effect-profile-runtime.d.ts +40 -0
- package/dist/effect-profile-runtime.d.ts.map +1 -0
- package/dist/effect-profile-runtime.js +51 -0
- package/dist/effect-profile-runtime.js.map +1 -0
- package/dist/effect-profile.d.ts +40 -0
- package/dist/effect-profile.d.ts.map +1 -0
- package/dist/effect-profile.js +152 -0
- package/dist/effect-profile.js.map +1 -0
- package/dist/execution-retention.d.ts +90 -0
- package/dist/execution-retention.d.ts.map +1 -0
- package/dist/execution-retention.js +247 -0
- package/dist/execution-retention.js.map +1 -0
- package/dist/experiment-contract.d.ts +56 -0
- package/dist/experiment-contract.d.ts.map +1 -0
- package/dist/experiment-contract.js +80 -0
- package/dist/experiment-contract.js.map +1 -0
- package/dist/experiment-state.d.ts +22 -0
- package/dist/experiment-state.d.ts.map +1 -0
- package/dist/experiment-state.js +79 -0
- package/dist/experiment-state.js.map +1 -0
- package/dist/experiment-store.d.ts +30 -0
- package/dist/experiment-store.d.ts.map +1 -0
- package/dist/experiment-store.js +147 -0
- package/dist/experiment-store.js.map +1 -0
- package/dist/experiment.d.ts +65 -0
- package/dist/experiment.d.ts.map +1 -0
- package/dist/experiment.js +357 -0
- package/dist/experiment.js.map +1 -0
- package/dist/factory-contract.d.ts +79 -0
- package/dist/factory-contract.d.ts.map +1 -0
- package/dist/factory-contract.js +89 -0
- package/dist/factory-contract.js.map +1 -0
- package/dist/factory-migration.d.ts +20 -0
- package/dist/factory-migration.d.ts.map +1 -0
- package/dist/factory-migration.js +55 -0
- package/dist/factory-migration.js.map +1 -0
- package/dist/factory-order.d.ts +848 -0
- package/dist/factory-order.d.ts.map +1 -0
- package/dist/factory-order.js +83 -0
- package/dist/factory-order.js.map +1 -0
- package/dist/factory-registry.d.ts +121 -0
- package/dist/factory-registry.d.ts.map +1 -0
- package/dist/factory-registry.js +133 -0
- package/dist/factory-registry.js.map +1 -0
- package/dist/file-lock.d.ts +8 -2
- package/dist/file-lock.d.ts.map +1 -1
- package/dist/file-lock.js +78 -19
- package/dist/file-lock.js.map +1 -1
- package/dist/herdr-poll.d.ts +8 -0
- package/dist/herdr-poll.d.ts.map +1 -1
- package/dist/herdr-poll.js +23 -0
- package/dist/herdr-poll.js.map +1 -1
- package/dist/index.d.ts +20 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -1
- package/dist/intent-application.d.ts +17 -0
- package/dist/intent-application.d.ts.map +1 -0
- package/dist/intent-application.js +113 -0
- package/dist/intent-application.js.map +1 -0
- package/dist/intent-control.d.ts +201 -0
- package/dist/intent-control.d.ts.map +1 -0
- package/dist/intent-control.js +110 -0
- package/dist/intent-control.js.map +1 -0
- package/dist/intent-scheduling.d.ts +9 -0
- package/dist/intent-scheduling.d.ts.map +1 -0
- package/dist/intent-scheduling.js +15 -0
- package/dist/intent-scheduling.js.map +1 -0
- package/dist/ledger-append.d.ts +15 -0
- package/dist/ledger-append.d.ts.map +1 -0
- package/dist/ledger-append.js +94 -0
- package/dist/ledger-append.js.map +1 -0
- package/dist/ledger.d.ts +11 -0
- package/dist/ledger.d.ts.map +1 -1
- package/dist/ledger.js +3 -7
- package/dist/ledger.js.map +1 -1
- package/dist/native-session-target.d.ts +9 -0
- package/dist/native-session-target.d.ts.map +1 -0
- package/dist/native-session-target.js +29 -0
- package/dist/native-session-target.js.map +1 -0
- package/dist/native-session.d.ts +59 -0
- package/dist/native-session.d.ts.map +1 -0
- package/dist/native-session.js +154 -0
- package/dist/native-session.js.map +1 -0
- package/dist/order-schedule.d.ts +37 -0
- package/dist/order-schedule.d.ts.map +1 -0
- package/dist/order-schedule.js +81 -0
- package/dist/order-schedule.js.map +1 -0
- package/dist/ordinary-children.d.ts +52 -0
- package/dist/ordinary-children.d.ts.map +1 -0
- package/dist/ordinary-children.js +93 -0
- package/dist/ordinary-children.js.map +1 -0
- package/dist/producer-ipc-contract.d.ts +29 -0
- package/dist/producer-ipc-contract.d.ts.map +1 -0
- package/dist/producer-ipc-contract.js +29 -0
- package/dist/producer-ipc-contract.js.map +1 -0
- package/dist/producer-ipc.d.ts +55 -0
- package/dist/producer-ipc.d.ts.map +1 -0
- package/dist/producer-ipc.js +143 -0
- package/dist/producer-ipc.js.map +1 -0
- package/dist/resource-budget.d.ts +334 -0
- package/dist/resource-budget.d.ts.map +1 -0
- package/dist/resource-budget.js +415 -0
- package/dist/resource-budget.js.map +1 -0
- package/dist/retention-contract.d.ts +73 -0
- package/dist/retention-contract.d.ts.map +1 -0
- package/dist/retention-contract.js +104 -0
- package/dist/retention-contract.js.map +1 -0
- package/dist/retention-json.d.ts +3 -0
- package/dist/retention-json.d.ts.map +1 -0
- package/dist/retention-json.js +32 -0
- package/dist/retention-json.js.map +1 -0
- package/dist/run-child.d.ts +4 -0
- package/dist/run-child.d.ts.map +1 -1
- package/dist/run-child.js +16 -2
- package/dist/run-child.js.map +1 -1
- package/dist/run-herdr.d.ts +6 -0
- package/dist/run-herdr.d.ts.map +1 -1
- package/dist/run-herdr.js +19 -6
- package/dist/run-herdr.js.map +1 -1
- package/dist/vendor/adoption.d.ts +129 -0
- package/dist/vendor/adoption.d.ts.map +1 -0
- package/dist/vendor/adoption.js +102 -0
- package/dist/vendor/adoption.js.map +1 -0
- package/dist/work-command.d.ts +30 -0
- package/dist/work-command.d.ts.map +1 -0
- package/dist/work-command.js +148 -0
- package/dist/work-command.js.map +1 -0
- package/dist/work-ledger-destination.d.ts +20 -0
- package/dist/work-ledger-destination.d.ts.map +1 -0
- package/dist/work-ledger-destination.js +131 -0
- package/dist/work-ledger-destination.js.map +1 -0
- package/dist/work-ledger-json.d.ts +25 -0
- package/dist/work-ledger-json.d.ts.map +1 -0
- package/dist/work-ledger-json.js +267 -0
- package/dist/work-ledger-json.js.map +1 -0
- package/dist/work-ledger-occurrences.d.ts +227 -0
- package/dist/work-ledger-occurrences.d.ts.map +1 -0
- package/dist/work-ledger-occurrences.js +115 -0
- package/dist/work-ledger-occurrences.js.map +1 -0
- package/dist/work-ledger-projection.d.ts +295 -0
- package/dist/work-ledger-projection.d.ts.map +1 -0
- package/dist/work-ledger-projection.js +237 -0
- package/dist/work-ledger-projection.js.map +1 -0
- package/dist/work-ledger-snapshot.d.ts +29 -0
- package/dist/work-ledger-snapshot.d.ts.map +1 -0
- package/dist/work-ledger-snapshot.js +267 -0
- package/dist/work-ledger-snapshot.js.map +1 -0
- package/dist/work-ledger-types.d.ts +261 -0
- package/dist/work-ledger-types.d.ts.map +1 -0
- package/dist/work-ledger-types.js +13 -0
- package/dist/work-ledger-types.js.map +1 -0
- package/dist/work-ledger-validation.d.ts +14 -0
- package/dist/work-ledger-validation.d.ts.map +1 -0
- package/dist/work-ledger-validation.js +226 -0
- package/dist/work-ledger-validation.js.map +1 -0
- package/dist/work-ledger.d.ts +43 -0
- package/dist/work-ledger.d.ts.map +1 -0
- package/dist/work-ledger.js +225 -0
- package/dist/work-ledger.js.map +1 -0
- package/extensions/daily-dashboard-session.ts +30 -0
- package/extensions/daily-work-session.ts +20 -0
- package/extensions/delegate-chain.ts +1 -0
- package/extensions/delegation-native.ts +12 -0
- package/extensions/delegation.ts +25 -11
- package/extensions/execute-child.ts +44 -5
- package/extensions/executor-session.ts +9 -0
- package/extensions/grants-command.ts +14 -15
- package/extensions/grants-connected-command.ts +19 -0
- package/extensions/grants.ts +26 -2
- package/extensions/ordinary-runtime.ts +14 -0
- package/extensions/primary-shadow.ts +11 -0
- package/extensions/run-delegation.ts +9 -7
- package/extensions/session.ts +10 -20
- package/extensions/work-runtime.ts +44 -0
- package/package.json +78 -4
- package/src/check-runner.ts +20 -2
- package/src/cli.ts +41 -4
- package/src/control-journal.ts +26 -0
- package/src/daily-dashboard-host.ts +49 -0
- package/src/daily-view-input.ts +59 -0
- package/src/daily-view-render.ts +44 -0
- package/src/daily-view.ts +152 -0
- package/src/dashboard-cli.ts +108 -4
- package/src/dashboard-harness.ts +37 -0
- package/src/dashboard-herdr.ts +7 -2
- package/src/dashboard-host-contract.ts +45 -0
- package/src/dashboard-host-transport.ts +40 -0
- package/src/dashboard-host.ts +191 -0
- package/src/dashboard-observation.ts +45 -0
- package/src/debrief-contract.ts +127 -0
- package/src/debrief-fixture.ts +29 -0
- package/src/debrief-host.ts +53 -0
- package/src/debrief-render.ts +49 -0
- package/src/debrief.ts +198 -0
- package/src/delegate-types.ts +2 -0
- package/src/delegate.ts +1 -0
- package/src/dispatch-control.ts +81 -0
- package/src/effect-profile-runtime.ts +46 -0
- package/src/effect-profile.ts +129 -0
- package/src/execution-retention.ts +230 -0
- package/src/experiment-contract.ts +66 -0
- package/src/experiment-state.ts +44 -0
- package/src/experiment-store.ts +98 -0
- package/src/experiment.ts +231 -0
- package/src/factory-contract.ts +47 -0
- package/src/factory-migration.ts +29 -0
- package/src/factory-order.ts +56 -0
- package/src/factory-registry.ts +60 -0
- package/src/file-lock.ts +47 -11
- package/src/herdr-poll.ts +18 -0
- package/src/index.ts +32 -0
- package/src/intent-application.ts +90 -0
- package/src/intent-control.ts +107 -0
- package/src/intent-scheduling.ts +14 -0
- package/src/ledger-append.ts +72 -0
- package/src/ledger.ts +3 -9
- package/src/native-session-target.ts +23 -0
- package/src/native-session.ts +139 -0
- package/src/order-schedule.ts +42 -0
- package/src/ordinary-children.ts +59 -0
- package/src/producer-ipc-contract.ts +26 -0
- package/src/producer-ipc.ts +107 -0
- package/src/resource-budget.ts +349 -0
- package/src/retention-contract.ts +84 -0
- package/src/retention-json.ts +20 -0
- package/src/run-child.ts +13 -2
- package/src/run-herdr.ts +11 -7
- package/src/vendor/adoption.ts +109 -0
- package/src/work-command.ts +179 -0
- package/src/work-ledger-destination.ts +113 -0
- package/src/work-ledger-json.ts +228 -0
- package/src/work-ledger-occurrences.ts +99 -0
- package/src/work-ledger-projection.ts +262 -0
- package/src/work-ledger-snapshot.ts +246 -0
- package/src/work-ledger-types.ts +229 -0
- package/src/work-ledger-validation.ts +174 -0
- package/src/work-ledger.ts +186 -0
|
@@ -0,0 +1,357 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { MAX_CHILDREN_PER_CALL } from "./fanout.js";
|
|
4
|
+
import { openResourceBudget, resourceBindingDigest } from "./resource-budget.js";
|
|
5
|
+
import { isDigestProfile, reserveDigestProfileBatch } from "./effect-profile.js";
|
|
6
|
+
import { readIntentWork, resolveIntent } from "./intent-application.js";
|
|
7
|
+
import { freezeWork } from "./work-ledger-json.js";
|
|
8
|
+
import { byteHash, cloneExperiment, experimentAuthority, experimentCancellation, experimentCancellationDigest, experimentCharter, experimentCharterDigest } from "./experiment-contract.js";
|
|
9
|
+
import { createExperimentStore, experimentBindingDigest, experimentStore, ownedDirectory, readExperimentFile, writeExperimentFile } from "./experiment-store.js";
|
|
10
|
+
import { evaluateOrder, factoryDecision, factoryDecisionDigest } from "./order-schedule.js";
|
|
11
|
+
import { replayExperiment } from "./experiment-state.js";
|
|
12
|
+
export { experimentCharterDigest, experimentCancellationDigest, parseExperimentCharter } from "./experiment-contract.js";
|
|
13
|
+
export { experimentBindingDigest } from "./experiment-store.js";
|
|
14
|
+
function approved(a, b, c) {
|
|
15
|
+
if (!a || a.authorityDigest !== b.authorityDigest || !a.charterDigests.includes(experimentCharterDigest(c)))
|
|
16
|
+
throw new Error("independent exact experiment authority unavailable");
|
|
17
|
+
}
|
|
18
|
+
async function common(c, bytes) {
|
|
19
|
+
if (bytes.length !== c.common.bytes || byteHash(bytes) !== c.common.sha256)
|
|
20
|
+
throw new Error("common input drift");
|
|
21
|
+
if (c.common.work) {
|
|
22
|
+
const text = await readIntentWork(c.common.work);
|
|
23
|
+
if (byteHash(text) !== c.common.workTextDigest)
|
|
24
|
+
throw new Error("common P01 work drift");
|
|
25
|
+
resolveIntent(text, c.common.work.selection, c.common.work.priorities);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
export async function createExperiment(input) {
|
|
29
|
+
if (!(input.bytes instanceof Uint8Array) || input.bytes.length > 16384)
|
|
30
|
+
throw new TypeError("bounded common bytes required");
|
|
31
|
+
const c = experimentCharter(input.charter), budget = openResourceBudget(input.budget).binding, a = experimentAuthority(input.authority), bytes = Buffer.from(input.bytes), directory = input.directory;
|
|
32
|
+
if (budget.version !== "4.0" || resourceBindingDigest(budget) !== c.budgetDigest)
|
|
33
|
+
throw new Error("explicit experiment budget required");
|
|
34
|
+
approved(a, budget, c);
|
|
35
|
+
await common(c, bytes);
|
|
36
|
+
await openResourceBudget(budget).inspect();
|
|
37
|
+
return createExperimentStore(directory, budget, c, bytes);
|
|
38
|
+
}
|
|
39
|
+
const controllers = new WeakSet();
|
|
40
|
+
export const isExperimentController = (value) => typeof value === "object" && value !== null && controllers.has(value);
|
|
41
|
+
/** A separate owned controller, not delegate_all and not a model-facing launch/callback loader. */
|
|
42
|
+
export function openExperiment(input, hostAuthority) {
|
|
43
|
+
const store = experimentStore(input), b = store.binding, c = b.charter, a = experimentAuthority(hostAuthority), owner = randomUUID(), digest = experimentBindingDigest(b);
|
|
44
|
+
const budget = openResourceBudget(b.budget), handles = new Map();
|
|
45
|
+
let live = null, starting = false, wake = null, epoch = 0;
|
|
46
|
+
let fault = false, failureAcknowledged = null;
|
|
47
|
+
const notify = () => { epoch++; wake?.(); wake = null; };
|
|
48
|
+
const artifact = (id) => join(b.directory, "variant-" + byteHash(id), "result.json");
|
|
49
|
+
const load = async () => {
|
|
50
|
+
const data = await store.read(), state = replayExperiment(c, data.events);
|
|
51
|
+
if (state.cancellations.some(r => r.bindingDigest !== digest))
|
|
52
|
+
throw new Error("cancellation binding mismatch");
|
|
53
|
+
return state;
|
|
54
|
+
};
|
|
55
|
+
const append = (event) => store.transaction(async (events, write) => { replayExperiment(c, [...events, cloneExperiment(event)]); await write(event); });
|
|
56
|
+
const unknown = () => ({ version: "experiment-view-v1", experimentId: c.experimentId, mode: c.mode,
|
|
57
|
+
variants: c.variants.map(v => ({ variantId: v.variantId, kind: v.kind, operation: v.operation, executionId: v.executionId, state: "unknown", artifactDigest: null, spawned: false })), budget: null, cancellations: [], control: "unknown", diagnostics: ["controller-or-storage-unknown", ...(fault ? ["controller-failure-observed"] : [])], acceptance: "not-assessed", configuration: { model: null, effort: null, skills: null }, freshness: "snapshot-unknown" });
|
|
58
|
+
const inspect = async (control = false) => {
|
|
59
|
+
const state = await load(), diagnostics = [], accounting = await (control ? budget.controlSnapshot() : budget.inspect());
|
|
60
|
+
if (state.controllerFailed)
|
|
61
|
+
diagnostics.push("controller-failure-record-observed");
|
|
62
|
+
if (fault)
|
|
63
|
+
diagnostics.push("controller-failure-observed");
|
|
64
|
+
if (failureAcknowledged === false)
|
|
65
|
+
diagnostics.push("controller-failure-recording-unacknowledged");
|
|
66
|
+
for (const v of state.variants) {
|
|
67
|
+
if (v.artifactDigest) {
|
|
68
|
+
try {
|
|
69
|
+
await ownedDirectory(join(b.directory, "variant-" + byteHash(v.executionId)));
|
|
70
|
+
if (byteHash(await readExperimentFile(artifact(v.executionId), 16384)) !== v.artifactDigest)
|
|
71
|
+
throw new Error("artifact mismatch");
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
diagnostics.push("artifact-unavailable:" + v.executionId);
|
|
75
|
+
v.state = "unknown";
|
|
76
|
+
v.artifactDigest = null;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
else if (state.claim && (!handles.has(v.executionId) || state.claim.owner !== owner))
|
|
80
|
+
v.state = "unknown";
|
|
81
|
+
}
|
|
82
|
+
return freezeWork({ version: "experiment-view-v1", experimentId: c.experimentId, mode: c.mode, variants: state.variants, budget: accounting,
|
|
83
|
+
cancellations: state.cancellations.map(request => {
|
|
84
|
+
const v = state.variants.find(v => v.executionId === request.executionId);
|
|
85
|
+
return { request,
|
|
86
|
+
outcome: v.state === "cancelled" ? "observed-cancelled" : v.artifactDigest ? "finished-without-cancel" : "requested-or-unknown" };
|
|
87
|
+
}),
|
|
88
|
+
control: state.controllerFailed || fault ? "failed" : "not-assessed", diagnostics, acceptance: "not-assessed", configuration: { model: null, effort: null, skills: null }, freshness: "snapshot-unknown" });
|
|
89
|
+
};
|
|
90
|
+
const computeOrder = async (control = false) => {
|
|
91
|
+
if (!c.order)
|
|
92
|
+
throw new Error("not an order controller");
|
|
93
|
+
const view = await inspect(control), state = await load(), digests = new Map();
|
|
94
|
+
for (const v of view.variants)
|
|
95
|
+
if (v.artifactDigest) {
|
|
96
|
+
try {
|
|
97
|
+
const bytes = await readExperimentFile(artifact(v.executionId), 16384);
|
|
98
|
+
if (byteHash(bytes) !== v.artifactDigest)
|
|
99
|
+
throw new Error("changed artifact");
|
|
100
|
+
const result = JSON.parse(bytes.toString());
|
|
101
|
+
if (result.attemptId !== v.executionId)
|
|
102
|
+
throw new Error("wrong execution artifact");
|
|
103
|
+
digests.set(v.executionId, typeof result.digest === "string" && result.output?.code === 0 && !result.output.aborted && !result.output.timedOut && !result.output.spawnError ? result.digest : null);
|
|
104
|
+
}
|
|
105
|
+
catch { /* frozen view: use a detached unknown row below */
|
|
106
|
+
digests.set(v.executionId, "unavailable");
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
const variants = view.variants.map(v => digests.get(v.executionId) === "unavailable" ? { ...v, state: "unknown" } : v);
|
|
110
|
+
return { view, nodes: evaluateOrder(c.order, variants, digests, state.decisions).map(n => view.control === "not-assessed" ? n : { ...n, action: "stakeholder" }), superseded: state.superseded };
|
|
111
|
+
};
|
|
112
|
+
const orderView = () => computeOrder(false);
|
|
113
|
+
const api = Object.freeze({ binding: b, inspect: () => inspect(false), reconcile: () => inspect(false), orderView,
|
|
114
|
+
async decideOrder(input, authority) {
|
|
115
|
+
const request = factoryDecision(input);
|
|
116
|
+
approved(a, b.budget, c);
|
|
117
|
+
if (!authority || authority.id !== request.authorityId || !authority.digests.includes(factoryDecisionDigest(request)) || request.bindingDigest !== digest)
|
|
118
|
+
throw new Error("independent decision authority required");
|
|
119
|
+
const fresh = await store.transaction(async (events, write) => {
|
|
120
|
+
const state = replayExperiment(c, events), old = state.decisions.find(d => d.requestId === request.requestId);
|
|
121
|
+
if (old) {
|
|
122
|
+
if (factoryDecisionDigest(old) !== factoryDecisionDigest(request))
|
|
123
|
+
throw new Error("conflicting decision ID");
|
|
124
|
+
return false;
|
|
125
|
+
}
|
|
126
|
+
await common(c, await readExperimentFile(join(b.directory, "common.bin"), 16384));
|
|
127
|
+
const row = (await computeOrder(true)).nodes.find(n => n.nodeId === request.nodeId);
|
|
128
|
+
if (!row || row.state !== "decision-required" || row.evidenceDigest !== request.evidenceDigest)
|
|
129
|
+
throw new Error("stale decision or unavailable evidence");
|
|
130
|
+
replayExperiment(c, [...events, { type: "order-decision", request }]);
|
|
131
|
+
await write({ type: "order-decision", request });
|
|
132
|
+
return true;
|
|
133
|
+
});
|
|
134
|
+
if (fresh)
|
|
135
|
+
notify();
|
|
136
|
+
return orderView();
|
|
137
|
+
},
|
|
138
|
+
async readArtifact(executionId) {
|
|
139
|
+
const row = (await load()).variants.find(v => v.executionId === executionId);
|
|
140
|
+
if (!row?.artifactDigest)
|
|
141
|
+
throw new Error("exact byte-backed artifact unavailable");
|
|
142
|
+
await ownedDirectory(join(b.directory, "variant-" + byteHash(executionId)));
|
|
143
|
+
const bytes = await readExperimentFile(artifact(executionId), 16384);
|
|
144
|
+
if (byteHash(bytes) !== row.artifactDigest)
|
|
145
|
+
throw new Error("artifact digest mismatch");
|
|
146
|
+
return Uint8Array.from(bytes);
|
|
147
|
+
},
|
|
148
|
+
async cancel(input, hostAuthority) {
|
|
149
|
+
const request = experimentCancellation(input), cancellationAuthority = hostAuthority === undefined ? a : experimentAuthority(hostAuthority);
|
|
150
|
+
approved(cancellationAuthority, b.budget, c);
|
|
151
|
+
if (request.bindingDigest !== digest || !c.variants.some(v => v.executionId === request.executionId) || !cancellationAuthority.cancellationDigests.includes(experimentCancellationDigest(request)))
|
|
152
|
+
throw new Error("independent exact cancellation authority unavailable");
|
|
153
|
+
const fresh = await store.transaction(async (events, write) => {
|
|
154
|
+
const state = replayExperiment(c, events), old = state.cancellations.find(r => r.requestId === request.requestId);
|
|
155
|
+
if (old) {
|
|
156
|
+
if (experimentCancellationDigest(old) !== experimentCancellationDigest(request))
|
|
157
|
+
throw new Error("conflicting cancellation ID");
|
|
158
|
+
return false;
|
|
159
|
+
}
|
|
160
|
+
replayExperiment(c, [...events, { type: "cancel", request }]);
|
|
161
|
+
await write({ type: "cancel", request });
|
|
162
|
+
return true;
|
|
163
|
+
});
|
|
164
|
+
if (fresh)
|
|
165
|
+
handles.get(request.executionId)?.abort("operator-cancellation"); // Only an original live handle; no PID/idle/pane lookup.
|
|
166
|
+
// Cancellation is a control operation: serialize its readback with controller appends
|
|
167
|
+
// and original budget settlement. Public inspect/reconcile remain unlocked, fallible reads.
|
|
168
|
+
return store.transaction(async () => inspect(true));
|
|
169
|
+
},
|
|
170
|
+
async start(profile) {
|
|
171
|
+
approved(a, b.budget, c);
|
|
172
|
+
if (!isDigestProfile(profile) || profile.bindingDigest !== c.budgetDigest)
|
|
173
|
+
throw new Error("profile budget mismatch");
|
|
174
|
+
if (live)
|
|
175
|
+
return live;
|
|
176
|
+
if (starting)
|
|
177
|
+
throw new Error("controller start pending; inspect, do not retry effects");
|
|
178
|
+
starting = true;
|
|
179
|
+
let reserved = [];
|
|
180
|
+
try {
|
|
181
|
+
const bytes = await readExperimentFile(join(b.directory, "common.bin"), 16384);
|
|
182
|
+
await common(c, bytes);
|
|
183
|
+
const claimed = await store.transaction(async (events, write) => {
|
|
184
|
+
const state = replayExperiment(c, events);
|
|
185
|
+
if (state.superseded)
|
|
186
|
+
throw new Error("order migrated; no old dispatch");
|
|
187
|
+
if (state.claim)
|
|
188
|
+
return false;
|
|
189
|
+
await write({ type: "claim", owner, deadlineAt: Date.now() + c.deadlineMs });
|
|
190
|
+
return true;
|
|
191
|
+
});
|
|
192
|
+
if (!claimed) {
|
|
193
|
+
const view = await inspect();
|
|
194
|
+
return Object.freeze({ primary: Promise.resolve(view.variants[0]), completion: Promise.resolve(view), boundary: Promise.resolve(view), started: [] });
|
|
195
|
+
}
|
|
196
|
+
reserved = await reserveDigestProfileBatch(profile, c.variants.map(v => ({ attempt: { attemptId: v.executionId, orderId: c.orderId, experimentId: c.experimentId, kind: v.kind, parentAttemptId: v.parentExecutionId }, bytes: Buffer.concat([bytes, Buffer.from(v.suffixBase64, "base64")]), operation: v.operation })));
|
|
197
|
+
await append({ type: "admitted" });
|
|
198
|
+
const state = await load(), used = new Set();
|
|
199
|
+
let resolvePrimary;
|
|
200
|
+
const primary = { promise: new Promise(resolve => { resolvePrimary = resolve; }), resolve: (value) => resolvePrimary(value) };
|
|
201
|
+
for (const v of c.variants) {
|
|
202
|
+
const handle = new AbortController();
|
|
203
|
+
handles.set(v.executionId, handle);
|
|
204
|
+
if (state.cancellations.some(r => r.executionId === v.executionId))
|
|
205
|
+
handle.abort("operator-cancellation");
|
|
206
|
+
}
|
|
207
|
+
// Close the read-to-handle-install race without adding a control/observation transport.
|
|
208
|
+
for (const request of (await load()).cancellations)
|
|
209
|
+
handles.get(request.executionId)?.abort("operator-cancellation");
|
|
210
|
+
const abort = (reason = "controller-failure") => { handles.forEach(h => h.abort(reason)); notify(); };
|
|
211
|
+
const timer = setTimeout(() => abort("deadline"), Math.max(1, state.claim.deadlineAt - Date.now()));
|
|
212
|
+
const settled = c.variants.map(() => {
|
|
213
|
+
let resolve;
|
|
214
|
+
return { promise: new Promise(done => { resolve = done; }), done: (success) => resolve(success) };
|
|
215
|
+
});
|
|
216
|
+
const one = async (i) => {
|
|
217
|
+
const v = c.variants[i];
|
|
218
|
+
let success = false, launched = false, primaryResult = null;
|
|
219
|
+
try {
|
|
220
|
+
if (!c.order && v.kind === "retry" && await settled[c.variants.findIndex(p => p.executionId === v.parentExecutionId)].promise)
|
|
221
|
+
handles.get(v.executionId).abort("retry-not-needed");
|
|
222
|
+
await append({ type: "dispatch", executionId: v.executionId });
|
|
223
|
+
used.add(i);
|
|
224
|
+
launched = true;
|
|
225
|
+
const running = reserved[i].run(handles.get(v.executionId).signal);
|
|
226
|
+
// Consume both promises even on bookkeeping failure. No untracked rejection or worker.
|
|
227
|
+
const observed = reserved[i].started.then(async (value) => { if (value === "spawned")
|
|
228
|
+
await append({ type: "spawn", executionId: v.executionId }); });
|
|
229
|
+
const [result, observation] = await Promise.allSettled([running, observed]);
|
|
230
|
+
if (result.status === "rejected" || observation.status === "rejected")
|
|
231
|
+
throw new Error("runtime/accounting/observation unknown");
|
|
232
|
+
const data = Buffer.from(JSON.stringify(result.value) + "\n"), out = result.value.output;
|
|
233
|
+
const cancelled = out.aborted && (Boolean(out.signal) || await reserved[i].started === "settled-without-spawn");
|
|
234
|
+
await ownedDirectory(join(b.directory, "variant-" + byteHash(v.executionId)));
|
|
235
|
+
await writeExperimentFile(artifact(v.executionId), data);
|
|
236
|
+
const state = out.timedOut || cancelled && handles.get(v.executionId)?.signal.reason === "deadline" ? "timed-out" : cancelled ? "cancelled" : result.value.digest ? "completed" : "failed";
|
|
237
|
+
// Original worker/artifact outcome, NOT a successful controller acknowledgement.
|
|
238
|
+
primaryResult = { variantId: v.variantId, kind: v.kind, operation: v.operation, executionId: v.executionId, state, artifactDigest: byteHash(data), spawned: await reserved[i].started === "spawned" };
|
|
239
|
+
await append({ type: "result", executionId: v.executionId, artifactDigest: byteHash(data), state });
|
|
240
|
+
success = Boolean(result.value.digest);
|
|
241
|
+
}
|
|
242
|
+
catch {
|
|
243
|
+
fault = true;
|
|
244
|
+
abort();
|
|
245
|
+
// Failed dispatch acknowledgement still consumes the ORIGINAL unused permit without
|
|
246
|
+
// spawning and resolves started, including when the control journal stays locked.
|
|
247
|
+
if (!launched) {
|
|
248
|
+
used.add(i);
|
|
249
|
+
await reserved[i].run(AbortSignal.abort()).catch(() => { });
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
finally {
|
|
253
|
+
settled[i].done(success);
|
|
254
|
+
handles.delete(v.executionId);
|
|
255
|
+
if (i === 0)
|
|
256
|
+
primary.resolve(primaryResult ? freezeWork(primaryResult) : unknown().variants[0]);
|
|
257
|
+
}
|
|
258
|
+
};
|
|
259
|
+
let resolveBoundary;
|
|
260
|
+
const boundary = new Promise(resolve => { resolveBoundary = resolve; });
|
|
261
|
+
const orderRunning = new Set();
|
|
262
|
+
const completion = (async () => {
|
|
263
|
+
try {
|
|
264
|
+
if (c.order) {
|
|
265
|
+
const running = orderRunning;
|
|
266
|
+
while (true) {
|
|
267
|
+
const before = epoch;
|
|
268
|
+
await common(c, await readExperimentFile(join(b.directory, "common.bin"), 16384));
|
|
269
|
+
const status = await store.transaction(async () => computeOrder(true));
|
|
270
|
+
if (fault || Date.now() >= state.claim.deadlineAt) {
|
|
271
|
+
abort("deadline");
|
|
272
|
+
await Promise.all(running);
|
|
273
|
+
break;
|
|
274
|
+
}
|
|
275
|
+
const eligible = status.nodes.filter(n => n.action === "dispatch").map(n => c.variants.findIndex(v => v.executionId === n.executionId)).filter(i => !used.has(i));
|
|
276
|
+
for (const i of eligible.slice(0, MAX_CHILDREN_PER_CALL - running.size)) {
|
|
277
|
+
used.add(i);
|
|
278
|
+
const task = one(i);
|
|
279
|
+
running.add(task);
|
|
280
|
+
void task.then(() => { running.delete(task); notify(); }, () => { running.delete(task); notify(); });
|
|
281
|
+
}
|
|
282
|
+
if (running.size) {
|
|
283
|
+
await Promise.race(running);
|
|
284
|
+
continue;
|
|
285
|
+
}
|
|
286
|
+
if (!status.nodes.some(n => n.state === "decision-required"))
|
|
287
|
+
break;
|
|
288
|
+
resolveBoundary(status.view);
|
|
289
|
+
if (epoch !== before)
|
|
290
|
+
continue;
|
|
291
|
+
await new Promise(resolve => { wake = resolve; });
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
else
|
|
295
|
+
for (let i = 0; i < c.variants.length; i += MAX_CHILDREN_PER_CALL) {
|
|
296
|
+
await common(c, await readExperimentFile(join(b.directory, "common.bin"), 16384));
|
|
297
|
+
await Promise.all(c.variants.slice(i, i + MAX_CHILDREN_PER_CALL).map((_, n) => one(i + n)));
|
|
298
|
+
if (fault)
|
|
299
|
+
break;
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
catch {
|
|
303
|
+
fault = true;
|
|
304
|
+
abort();
|
|
305
|
+
}
|
|
306
|
+
finally {
|
|
307
|
+
clearTimeout(timer);
|
|
308
|
+
abort();
|
|
309
|
+
await Promise.allSettled(orderRunning);
|
|
310
|
+
for (let i = 0; i < reserved.length; i++)
|
|
311
|
+
if (!used.has(i)) {
|
|
312
|
+
if (c.order) {
|
|
313
|
+
handles.get(c.variants[i].executionId)?.abort("unused-order-reservation");
|
|
314
|
+
await one(i);
|
|
315
|
+
}
|
|
316
|
+
else {
|
|
317
|
+
used.add(i);
|
|
318
|
+
await reserved[i].run(AbortSignal.abort()).catch(() => { fault = true; });
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
handles.clear();
|
|
322
|
+
if (fault) {
|
|
323
|
+
try {
|
|
324
|
+
await append({ type: "controller-unknown" });
|
|
325
|
+
failureAcknowledged = true;
|
|
326
|
+
}
|
|
327
|
+
catch {
|
|
328
|
+
failureAcknowledged = false;
|
|
329
|
+
} // No fabricated durable acknowledgement.
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
const view = await inspect().catch(unknown);
|
|
333
|
+
primary.resolve(view.variants[0]);
|
|
334
|
+
resolveBoundary(view);
|
|
335
|
+
return view;
|
|
336
|
+
})();
|
|
337
|
+
live = Object.freeze({ primary: primary.promise, completion, boundary: c.order ? boundary : completion, started: Object.freeze(reserved.map(r => r.started)) });
|
|
338
|
+
return live;
|
|
339
|
+
}
|
|
340
|
+
catch (error) {
|
|
341
|
+
fault = true;
|
|
342
|
+
for (const run of reserved)
|
|
343
|
+
await run.run(AbortSignal.abort()).catch(() => { });
|
|
344
|
+
const state = await load().catch(() => null);
|
|
345
|
+
if (state?.claim?.owner === owner)
|
|
346
|
+
await append({ type: "controller-unknown" }).catch(() => { });
|
|
347
|
+
throw error;
|
|
348
|
+
}
|
|
349
|
+
finally {
|
|
350
|
+
starting = false;
|
|
351
|
+
}
|
|
352
|
+
},
|
|
353
|
+
});
|
|
354
|
+
controllers.add(api);
|
|
355
|
+
return api;
|
|
356
|
+
}
|
|
357
|
+
//# sourceMappingURL=experiment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"experiment.js","sourceRoot":"","sources":["../src/experiment.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { type ExperimentCharter } from "./experiment-contract.ts";
|
|
2
|
+
import { type ExperimentBudgetBinding } from "./resource-budget.ts";
|
|
3
|
+
import type { WorkIntentBinding } from "./intent-control.ts";
|
|
4
|
+
import type { WorkFrozen, RevisionRef } from "./work-ledger-types.ts";
|
|
5
|
+
import type { AdoptionAuthority, AdoptionFacts, AdoptionBinding, AdoptionReceipt } from "./vendor/adoption.ts";
|
|
6
|
+
export { factoryDecisionDigest, type FactoryDecision } from "./order-schedule.ts";
|
|
7
|
+
export interface FixedPolicy {
|
|
8
|
+
version: "fixed-policy-v1";
|
|
9
|
+
suffixBase64: string;
|
|
10
|
+
acceptancePolicyDigest: string;
|
|
11
|
+
grants: readonly string[];
|
|
12
|
+
effects: readonly "fixed-digest"[];
|
|
13
|
+
model: null;
|
|
14
|
+
effort: null;
|
|
15
|
+
skills: readonly string[];
|
|
16
|
+
}
|
|
17
|
+
export declare const fixedPolicyDigest: (p: FixedPolicy) => string;
|
|
18
|
+
export declare function fixedPolicy(value: FixedPolicy): FixedPolicy;
|
|
19
|
+
export interface FactoryOrderCharter {
|
|
20
|
+
version: "factory-order-v1";
|
|
21
|
+
orderId: string;
|
|
22
|
+
directory: string;
|
|
23
|
+
budget: ExperimentBudgetBinding;
|
|
24
|
+
work: WorkFrozen<WorkIntentBinding>;
|
|
25
|
+
workTextDigest: string;
|
|
26
|
+
scopeDigest: string;
|
|
27
|
+
commonBase64: string;
|
|
28
|
+
deadlineMs: number;
|
|
29
|
+
pin: {
|
|
30
|
+
revision: number;
|
|
31
|
+
candidateDigest: string;
|
|
32
|
+
};
|
|
33
|
+
nodes: readonly {
|
|
34
|
+
nodeId: string;
|
|
35
|
+
obligation: RevisionRef;
|
|
36
|
+
dependencies: readonly string[];
|
|
37
|
+
attempts: readonly {
|
|
38
|
+
executionId: string;
|
|
39
|
+
suffixBase64: string;
|
|
40
|
+
operation: "digest" | "hold";
|
|
41
|
+
}[];
|
|
42
|
+
expectedDigest: string;
|
|
43
|
+
decision: {
|
|
44
|
+
decisionId: string;
|
|
45
|
+
authorityId: string;
|
|
46
|
+
} | null;
|
|
47
|
+
}[];
|
|
48
|
+
}
|
|
49
|
+
/** Digest of the entire bounded proposal; validation at application is separate. */
|
|
50
|
+
export declare const factoryOrderDigest: (c: FactoryOrderCharter) => string;
|
|
51
|
+
export interface FactoryAuthority {
|
|
52
|
+
id: string;
|
|
53
|
+
orderDigests: readonly string[];
|
|
54
|
+
decisionDigests: readonly string[];
|
|
55
|
+
cancellationDigests?: readonly string[];
|
|
56
|
+
activationDigests: readonly string[];
|
|
57
|
+
migrationDigests: readonly string[];
|
|
58
|
+
adoption: AdoptionAuthority | null;
|
|
59
|
+
facts: readonly {
|
|
60
|
+
bindingId: string;
|
|
61
|
+
facts: AdoptionFacts;
|
|
62
|
+
}[];
|
|
63
|
+
}
|
|
64
|
+
export declare function factoryAuthority(value: FactoryAuthority | null): FactoryAuthority | null;
|
|
65
|
+
export declare function requireFactoryAuthority(a: FactoryAuthority | null, id: string): FactoryAuthority;
|
|
66
|
+
export interface ActivationRequest {
|
|
67
|
+
version: "factory-activation-v1";
|
|
68
|
+
requestId: string;
|
|
69
|
+
expectedRevision: number;
|
|
70
|
+
expectedCandidateDigest: string;
|
|
71
|
+
candidate: FixedPolicy;
|
|
72
|
+
binding: AdoptionBinding;
|
|
73
|
+
receipt: AdoptionReceipt;
|
|
74
|
+
}
|
|
75
|
+
export declare const activationRequestDigest: (r: ActivationRequest) => string;
|
|
76
|
+
export declare function factoryCharter(value: FactoryOrderCharter): FactoryOrderCharter;
|
|
77
|
+
export declare const parseFactoryOrder: (text: string) => FactoryOrderCharter;
|
|
78
|
+
export declare function compileFactoryOrder(value: FactoryOrderCharter, candidate: FixedPolicy): Promise<ExperimentCharter>;
|
|
79
|
+
//# sourceMappingURL=factory-contract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory-contract.d.ts","sourceRoot":"","sources":["../src/factory-contract.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { cloneExperiment, closed, experimentHash, experimentCharter, byteHash } from "./experiment-contract.js";
|
|
2
|
+
import { resourceBindingDigest } from "./resource-budget.js";
|
|
3
|
+
import { workIntentBinding, readIntentWork, resolveIntent } from "./intent-application.js";
|
|
4
|
+
import { parseWorkJson } from "./work-ledger-json.js";
|
|
5
|
+
import { orderSchedule } from "./order-schedule.js";
|
|
6
|
+
export { factoryDecisionDigest } from "./order-schedule.js";
|
|
7
|
+
export const fixedPolicyDigest = (p) => experimentHash(fixedPolicy(p));
|
|
8
|
+
const hex = (x) => typeof x === "string" && /^[a-f0-9]{64}$/.test(x);
|
|
9
|
+
export function fixedPolicy(value) {
|
|
10
|
+
const p = cloneExperiment(value);
|
|
11
|
+
closed(p, ["version", "suffixBase64", "acceptancePolicyDigest", "grants", "effects", "model", "effort", "skills"]);
|
|
12
|
+
if (p.version !== "fixed-policy-v1" || !hex(p.acceptancePolicyDigest) || typeof p.suffixBase64 !== "string" || p.suffixBase64.length > 2048 || Buffer.from(p.suffixBase64, "base64").toString("base64") !== p.suffixBase64 || JSON.stringify(p.grants) !== "[]" || JSON.stringify(p.effects) !== '["fixed-digest"]' || p.model !== null || p.effort !== null || JSON.stringify(p.skills) !== "[]")
|
|
13
|
+
throw new Error("unsupported policy or grant expansion");
|
|
14
|
+
return p;
|
|
15
|
+
}
|
|
16
|
+
/** Digest of the entire bounded proposal; validation at application is separate. */
|
|
17
|
+
export const factoryOrderDigest = (c) => experimentHash(c);
|
|
18
|
+
export function factoryAuthority(value) {
|
|
19
|
+
if (value === null)
|
|
20
|
+
return null;
|
|
21
|
+
const a = cloneExperiment(value);
|
|
22
|
+
closed(a, ["id", "orderDigests", "decisionDigests", "activationDigests", "migrationDigests", "adoption", "facts", ...(Object.hasOwn(a, "cancellationDigests") ? ["cancellationDigests"] : [])]);
|
|
23
|
+
if (typeof a.id !== "string" || !/^[a-zA-Z0-9:_-]{1,128}$/.test(a.id) || [a.orderDigests, a.decisionDigests, a.activationDigests, a.migrationDigests, ...(Object.hasOwn(a, "cancellationDigests") ? [a.cancellationDigests] : [])].some(xs => !Array.isArray(xs) || xs.length > 128 || xs.some(x => !hex(x))) || !Array.isArray(a.facts) || a.facts.length > 128)
|
|
24
|
+
throw new Error("invalid independent factory authority");
|
|
25
|
+
const ids = new Set();
|
|
26
|
+
for (const f of a.facts) {
|
|
27
|
+
closed(f, ["bindingId", "facts"]);
|
|
28
|
+
if (!hex(f.bindingId) || ids.has(f.bindingId))
|
|
29
|
+
throw new Error("ambiguous independent facts");
|
|
30
|
+
ids.add(f.bindingId);
|
|
31
|
+
}
|
|
32
|
+
if (a.adoption !== null) {
|
|
33
|
+
closed(a.adoption, ["id", "adoptions", "rollbacks"]);
|
|
34
|
+
if (a.adoption.id !== a.id)
|
|
35
|
+
throw new Error("independent authority identity mismatch");
|
|
36
|
+
}
|
|
37
|
+
return a;
|
|
38
|
+
}
|
|
39
|
+
export function requireFactoryAuthority(a, id) { if (!a || a.id !== id)
|
|
40
|
+
throw new Error("independent factory authority required"); return a; }
|
|
41
|
+
export const activationRequestDigest = (r) => experimentHash(r);
|
|
42
|
+
export function factoryCharter(value) {
|
|
43
|
+
const c = cloneExperiment(value);
|
|
44
|
+
closed(c, ["version", "orderId", "directory", "budget", "work", "workTextDigest", "scopeDigest", "commonBase64", "deadlineMs", "pin", "nodes"]);
|
|
45
|
+
closed(c.pin, ["revision", "candidateDigest"]);
|
|
46
|
+
if (c.version !== "factory-order-v1" || !/^[a-zA-Z0-9:_-]{1,128}$/.test(c.orderId) || typeof c.directory !== "string" || !hex(c.workTextDigest) || !hex(c.scopeDigest) || !hex(c.pin.candidateDigest) || !Number.isSafeInteger(c.pin.revision) || c.pin.revision < 0 || typeof c.commonBase64 !== "string" || c.commonBase64.length > 22000 || Buffer.from(c.commonBase64, "base64").toString("base64") !== c.commonBase64 || Buffer.byteLength(JSON.stringify(c)) > 48000 || c.budget.version !== "4.0")
|
|
47
|
+
throw new Error("invalid bounded factory charter");
|
|
48
|
+
c.work = workIntentBinding(JSON.parse(JSON.stringify(c.work)));
|
|
49
|
+
if (c.scopeDigest !== experimentHash(c.work.selection.snapshot))
|
|
50
|
+
throw new Error("changed scope");
|
|
51
|
+
if (!Array.isArray(c.nodes) || !c.nodes.length || c.nodes.length > 16)
|
|
52
|
+
throw new Error("bounded nodes required");
|
|
53
|
+
for (const n of c.nodes) {
|
|
54
|
+
closed(n, ["nodeId", "obligation", "dependencies", "attempts", "expectedDigest", "decision"]);
|
|
55
|
+
if (!Array.isArray(n.attempts) || !n.attempts.length || n.attempts.length > 3)
|
|
56
|
+
throw new Error("bounded recovery required");
|
|
57
|
+
for (const a of n.attempts) {
|
|
58
|
+
closed(a, ["executionId", "suffixBase64", "operation"]);
|
|
59
|
+
if (typeof a.suffixBase64 !== "string" || a.suffixBase64.length > 22000 || Buffer.from(a.suffixBase64, "base64").toString("base64") !== a.suffixBase64)
|
|
60
|
+
throw new Error("invalid attempt byte suffix");
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
orderSchedule({ version: "order-schedule-v1", policyDigest: c.pin.candidateDigest, nodes: c.nodes.map(n => ({ nodeId: n.nodeId, dependencies: n.dependencies, executions: n.attempts.map(a => a.executionId), expectedDigest: n.expectedDigest, decision: n.decision })) }, c.nodes.flatMap(n => n.attempts.map(a => a.executionId)));
|
|
64
|
+
return c;
|
|
65
|
+
}
|
|
66
|
+
export const parseFactoryOrder = (text) => factoryCharter(parseWorkJson(text));
|
|
67
|
+
export async function compileFactoryOrder(value, candidate) {
|
|
68
|
+
const c = factoryCharter(value), p = fixedPolicy(candidate), text = await readIntentWork(c.work);
|
|
69
|
+
if (byteHash(text) !== c.workTextDigest || fixedPolicyDigest(p) !== c.pin.candidateDigest)
|
|
70
|
+
throw new Error("work or candidate drift");
|
|
71
|
+
const intent = resolveIntent(text, c.work.selection, c.work.priorities), refs = intent.snapshot.bindings.map(b => experimentHash(b.obligation)).sort();
|
|
72
|
+
if (JSON.stringify(refs) !== JSON.stringify(c.nodes.map(n => experimentHash(n.obligation)).sort()))
|
|
73
|
+
throw new Error("order must cover exact selected obligations");
|
|
74
|
+
for (const n of c.nodes) {
|
|
75
|
+
const rev = intent.revisions.find(r => experimentHash({ kind: r.kind, id: r.id, revision: r.revision, digest: r.digest }) === experimentHash(n.obligation));
|
|
76
|
+
if (!rev || !rev.permittedEffects.includes("read"))
|
|
77
|
+
throw new Error("unsupported obligation effects");
|
|
78
|
+
for (const dep of rev.dependencies.filter(d => d.kind === "obligation")) {
|
|
79
|
+
const parent = c.nodes.find(m => experimentHash(m.obligation) === experimentHash(dep));
|
|
80
|
+
if (!parent || !n.dependencies.includes(parent.nodeId))
|
|
81
|
+
throw new Error("required intent dependency omitted");
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
const bytes = Buffer.from(c.commonBase64, "base64");
|
|
85
|
+
return experimentCharter({ version: "fixed-experiment-v2", experimentId: c.orderId, orderId: c.orderId, budgetDigest: resourceBindingDigest(c.budget), profile: "linux-bwrap-digest-v1", common: { bytes: bytes.length, sha256: byteHash(bytes), work: c.work, workTextDigest: c.workTextDigest }, mode: "bounded-waves", deadlineMs: c.deadlineMs,
|
|
86
|
+
variants: c.nodes.flatMap(n => n.attempts.map((a, i) => ({ variantId: a.executionId, executionId: a.executionId, kind: i ? "retry" : "primary", parentExecutionId: i ? n.attempts[i - 1].executionId : null, suffixBase64: Buffer.concat([Buffer.from(p.suffixBase64, "base64"), Buffer.from(a.suffixBase64, "base64")]).toString("base64"), operation: a.operation, configuration: { model: null, effort: null, skills: null } }))),
|
|
87
|
+
order: { version: "order-schedule-v1", policyDigest: p.acceptancePolicyDigest, nodes: c.nodes.map(n => ({ nodeId: n.nodeId, dependencies: n.dependencies, executions: n.attempts.map(a => a.executionId), expectedDigest: n.expectedDigest, decision: n.decision })) } });
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=factory-contract.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory-contract.js","sourceRoot":"","sources":["../src/factory-contract.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { type FactoryAuthority, type FactoryOrderCharter } from "./factory-contract.ts";
|
|
2
|
+
import { type FactoryRegistryBinding } from "./factory-registry.ts";
|
|
3
|
+
export interface FactoryMigration {
|
|
4
|
+
version: "factory-migration-v1";
|
|
5
|
+
requestId: string;
|
|
6
|
+
sourceOrderId: string;
|
|
7
|
+
successor: FactoryOrderCharter;
|
|
8
|
+
}
|
|
9
|
+
export declare const factoryMigrationDigest: (request: FactoryMigration) => string;
|
|
10
|
+
/** Only unstarted controllers can be superseded. An original claim is a refusal, never an idle/PID guess. */
|
|
11
|
+
export declare function migrateFactoryOrder(inputRegistry: FactoryRegistryBinding, input: FactoryMigration, host: FactoryAuthority | null): Promise<{
|
|
12
|
+
requestId: string;
|
|
13
|
+
grantExpansion: boolean;
|
|
14
|
+
acceptanceTransfer: "none";
|
|
15
|
+
digest: string;
|
|
16
|
+
sourceOrderId: string;
|
|
17
|
+
targetOrderId: string;
|
|
18
|
+
application: string;
|
|
19
|
+
}>;
|
|
20
|
+
//# sourceMappingURL=factory-migration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory-migration.d.ts","sourceRoot":"","sources":["../src/factory-migration.ts"],"names":[],"mappings":"AAGA,OAAO,EAAiF,KAAK,gBAAgB,EAAE,KAAK,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACvK,OAAO,EAAwC,KAAK,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAE1G,MAAM,WAAW,gBAAgB;IAAE,OAAO,EAAC,sBAAsB,CAAC;IAAA,SAAS,EAAC,MAAM,CAAC;IAAA,aAAa,EAAC,MAAM,CAAC;IAAA,SAAS,EAAC,mBAAmB,CAAA;CAAC;AACtI,eAAO,MAAM,sBAAsB,GAAE,SAAQ,gBAAgB,WAA0B,CAAC;AACxF,6GAA6G;AAC7G,wBAAsB,mBAAmB,CAAC,aAAa,EAAC,sBAAsB,EAAC,KAAK,EAAC,gBAAgB,EAAC,IAAI,EAAC,gBAAgB,GAAC,IAAI;;;;;;;;GAmB/H"}
|