@amalgm/shell 0.1.164-preview.36072132286 → 0.1.164-preview.36809057014
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/PURPOSE.md +642 -128
- package/README.md +10 -8
- package/dist/accepted-tail.d.ts +26 -0
- package/dist/accepted-tail.js +37 -0
- package/dist/accepted-tail.js.map +1 -0
- package/dist/agent-execution.d.ts +16 -1
- package/dist/agent-execution.js +13 -5
- package/dist/agent-execution.js.map +1 -1
- package/dist/apply-cleanup.d.ts +28 -0
- package/dist/apply-cleanup.js +166 -0
- package/dist/apply-cleanup.js.map +1 -0
- package/dist/apply-recovery.d.ts +47 -0
- package/dist/apply-recovery.js +99 -0
- package/dist/apply-recovery.js.map +1 -0
- package/dist/apply-rows.d.ts +72 -0
- package/dist/apply-rows.js +150 -0
- package/dist/apply-rows.js.map +1 -0
- package/dist/apply-saves.d.ts +85 -0
- package/dist/apply-saves.js +238 -0
- package/dist/apply-saves.js.map +1 -0
- package/dist/boot.js +2 -1
- package/dist/boot.js.map +1 -1
- package/dist/capture-work.d.ts +8 -0
- package/dist/capture-work.js +67 -0
- package/dist/capture-work.js.map +1 -0
- package/dist/cargo-group.d.ts +45 -0
- package/dist/cargo-group.js +88 -0
- package/dist/cargo-group.js.map +1 -0
- package/dist/channel-session.d.ts +4 -2
- package/dist/channel-session.js +4 -3
- package/dist/channel-session.js.map +1 -1
- package/dist/chat-composition.d.ts +2 -0
- package/dist/chat-composition.js +1 -0
- package/dist/chat-composition.js.map +1 -1
- package/dist/cli.js +20 -1
- package/dist/cli.js.map +1 -1
- package/dist/construct-apply-host.d.ts +4 -2
- package/dist/construct-apply-host.js +8 -3
- package/dist/construct-apply-host.js.map +1 -1
- package/dist/construct-door.js +1 -1
- package/dist/construct-door.js.map +1 -1
- package/dist/construct-ledger.d.ts +6 -1
- package/dist/construct-ledger.js +21 -33
- package/dist/construct-ledger.js.map +1 -1
- package/dist/content-cache-collection.d.ts +18 -0
- package/dist/content-cache-collection.js +99 -0
- package/dist/content-cache-collection.js.map +1 -0
- package/dist/content-cache-host.d.ts +83 -17
- package/dist/content-cache-host.js +335 -95
- package/dist/content-cache-host.js.map +1 -1
- package/dist/content-cache-namespace.d.ts +59 -0
- package/dist/content-cache-namespace.js +210 -0
- package/dist/content-cache-namespace.js.map +1 -0
- package/dist/content-cache-ownership.d.ts +13 -0
- package/dist/content-cache-ownership.js +75 -0
- package/dist/content-cache-ownership.js.map +1 -0
- package/dist/content-cache-retention.d.ts +23 -0
- package/dist/content-cache-retention.js +195 -0
- package/dist/content-cache-retention.js.map +1 -0
- package/dist/content-capture-pool.d.ts +287 -0
- package/dist/content-capture-pool.js +461 -0
- package/dist/content-capture-pool.js.map +1 -0
- package/dist/content-capture-worker.d.ts +8 -0
- package/dist/content-capture-worker.js +109 -0
- package/dist/content-capture-worker.js.map +1 -0
- package/dist/content-clock.d.ts +42 -0
- package/dist/content-clock.js +166 -0
- package/dist/content-clock.js.map +1 -0
- package/dist/content-direct.d.ts +2 -0
- package/dist/content-direct.js +12 -0
- package/dist/content-direct.js.map +1 -1
- package/dist/content-failure.d.ts +18 -0
- package/dist/content-failure.js +38 -0
- package/dist/content-failure.js.map +1 -0
- package/dist/content-stream-thread.d.ts +60 -0
- package/dist/content-stream-thread.js +95 -0
- package/dist/content-stream-thread.js.map +1 -0
- package/dist/content-stream-worker.d.ts +7 -0
- package/dist/content-stream-worker.js +52 -0
- package/dist/content-stream-worker.js.map +1 -0
- package/dist/declaration-absorption.d.ts +37 -0
- package/dist/declaration-absorption.js +119 -0
- package/dist/declaration-absorption.js.map +1 -0
- package/dist/declaration-chain.d.ts +36 -0
- package/dist/declaration-chain.js +96 -0
- package/dist/declaration-chain.js.map +1 -0
- package/dist/declaration-commit.d.ts +31 -0
- package/dist/declaration-commit.js +49 -0
- package/dist/declaration-commit.js.map +1 -0
- package/dist/declaration-hold.d.ts +22 -0
- package/dist/declaration-hold.js +24 -0
- package/dist/declaration-hold.js.map +1 -0
- package/dist/declaration-journal.d.ts +62 -0
- package/dist/declaration-journal.js +99 -0
- package/dist/declaration-journal.js.map +1 -0
- package/dist/declaration-save.d.ts +31 -0
- package/dist/declaration-save.js +134 -0
- package/dist/declaration-save.js.map +1 -0
- package/dist/detection/accepted-result.d.ts +19 -1
- package/dist/detection/accepted-result.js +36 -5
- package/dist/detection/accepted-result.js.map +1 -1
- package/dist/detection/admission-save.d.ts +55 -0
- package/dist/detection/admission-save.js +48 -0
- package/dist/detection/admission-save.js.map +1 -0
- package/dist/detection/admission-units.d.ts +66 -0
- package/dist/detection/admission-units.js +322 -0
- package/dist/detection/admission-units.js.map +1 -0
- package/dist/detection/alias-discovery.d.ts +12 -0
- package/dist/detection/alias-discovery.js +80 -0
- package/dist/detection/alias-discovery.js.map +1 -0
- package/dist/detection/alias-examination.d.ts +30 -0
- package/dist/detection/alias-examination.js +49 -0
- package/dist/detection/alias-examination.js.map +1 -0
- package/dist/detection/apply-ownership.d.ts +81 -0
- package/dist/detection/apply-ownership.js +232 -0
- package/dist/detection/apply-ownership.js.map +1 -0
- package/dist/detection/basis-advanced.d.ts +11 -0
- package/dist/detection/basis-advanced.js +26 -0
- package/dist/detection/basis-advanced.js.map +1 -0
- package/dist/detection/capture-outcome.d.ts +16 -0
- package/dist/detection/capture-outcome.js +92 -0
- package/dist/detection/capture-outcome.js.map +1 -0
- package/dist/detection/container-membership.d.ts +32 -0
- package/dist/detection/container-membership.js +49 -0
- package/dist/detection/container-membership.js.map +1 -0
- package/dist/detection/detect-cancelled.d.ts +6 -0
- package/dist/detection/detect-cancelled.js +10 -0
- package/dist/detection/detect-cancelled.js.map +1 -0
- package/dist/detection/directory-proof.d.ts +47 -0
- package/dist/detection/directory-proof.js +77 -0
- package/dist/detection/directory-proof.js.map +1 -0
- package/dist/detection/disposition-rows.d.ts +18 -0
- package/dist/detection/disposition-rows.js +29 -0
- package/dist/detection/disposition-rows.js.map +1 -0
- package/dist/detection/dispositions.d.ts +130 -0
- package/dist/detection/dispositions.js +248 -0
- package/dist/detection/dispositions.js.map +1 -0
- package/dist/detection/git-notice.d.ts +88 -0
- package/dist/detection/git-notice.js +444 -0
- package/dist/detection/git-notice.js.map +1 -0
- package/dist/detection/ground-proof.d.ts +130 -0
- package/dist/detection/ground-proof.js +274 -0
- package/dist/detection/ground-proof.js.map +1 -0
- package/dist/detection/ground-reader.d.ts +29 -0
- package/dist/detection/ground-reader.js +102 -0
- package/dist/detection/ground-reader.js.map +1 -0
- package/dist/detection/held-territory.d.ts +51 -0
- package/dist/detection/held-territory.js +205 -0
- package/dist/detection/held-territory.js.map +1 -0
- package/dist/detection/identity-discovery.d.ts +45 -0
- package/dist/detection/identity-discovery.js +287 -0
- package/dist/detection/identity-discovery.js.map +1 -0
- package/dist/detection/maintenance-sweep.d.ts +108 -0
- package/dist/detection/maintenance-sweep.js +325 -0
- package/dist/detection/maintenance-sweep.js.map +1 -0
- package/dist/detection/name-reach.d.ts +12 -0
- package/dist/detection/name-reach.js +28 -0
- package/dist/detection/name-reach.js.map +1 -0
- package/dist/detection/notebook-basis.d.ts +5 -7
- package/dist/detection/notebook-basis.js +6 -7
- package/dist/detection/notebook-basis.js.map +1 -1
- package/dist/detection/owed-selection.d.ts +51 -0
- package/dist/detection/owed-selection.js +169 -0
- package/dist/detection/owed-selection.js.map +1 -0
- package/dist/detection/portable.d.ts +34 -34
- package/dist/detection/portable.js +67 -93
- package/dist/detection/portable.js.map +1 -1
- package/dist/detection/reconciliation-coverage.d.ts +7 -0
- package/dist/detection/reconciliation-coverage.js +16 -0
- package/dist/detection/reconciliation-coverage.js.map +1 -0
- package/dist/detection/repository-publication.d.ts +20 -0
- package/dist/detection/repository-publication.js +79 -0
- package/dist/detection/repository-publication.js.map +1 -0
- package/dist/detection/repository-routes.d.ts +43 -0
- package/dist/detection/repository-routes.js +97 -0
- package/dist/detection/repository-routes.js.map +1 -0
- package/dist/detection/root-examination.d.ts +94 -0
- package/dist/detection/root-examination.js +523 -0
- package/dist/detection/root-examination.js.map +1 -0
- package/dist/detection/runtime.d.ts +131 -64
- package/dist/detection/runtime.js +808 -1103
- package/dist/detection/runtime.js.map +1 -1
- package/dist/detection/scoped-identity-port.d.ts +34 -0
- package/dist/detection/scoped-identity-port.js +81 -0
- package/dist/detection/scoped-identity-port.js.map +1 -0
- package/dist/detection/seal-law.d.ts +66 -0
- package/dist/detection/seal-law.js +116 -0
- package/dist/detection/seal-law.js.map +1 -0
- package/dist/detection/sharing-policy.d.ts +11 -0
- package/dist/detection/sharing-policy.js +32 -0
- package/dist/detection/sharing-policy.js.map +1 -0
- package/dist/detection/thread-database.d.ts +4 -0
- package/dist/detection/thread-database.js +30 -0
- package/dist/detection/thread-database.js.map +1 -0
- package/dist/detection/unreadable.d.ts +11 -0
- package/dist/detection/unreadable.js +9 -0
- package/dist/detection/unreadable.js.map +1 -0
- package/dist/detection/verified-content.d.ts +6 -0
- package/dist/detection/verified-content.js +12 -0
- package/dist/detection/verified-content.js.map +1 -0
- package/dist/detection/walk-law.d.ts +34 -0
- package/dist/detection/walk-law.js +55 -0
- package/dist/detection/walk-law.js.map +1 -0
- package/dist/development/fly-guest.js +2 -1
- package/dist/development/fly-guest.js.map +1 -1
- package/dist/entity-apply-host.d.ts +29 -13
- package/dist/entity-apply-host.js +1426 -461
- package/dist/entity-apply-host.js.map +1 -1
- package/dist/entity-apply-store.d.ts +77 -30
- package/dist/entity-apply-store.js +221 -516
- package/dist/entity-apply-store.js.map +1 -1
- package/dist/entity-record-observability.js +2 -0
- package/dist/entity-record-observability.js.map +1 -1
- package/dist/entity-record-saves.d.ts +20 -0
- package/dist/entity-record-saves.js +91 -0
- package/dist/entity-record-saves.js.map +1 -0
- package/dist/entity-record-store.d.ts +15 -7
- package/dist/entity-record-store.js +57 -117
- package/dist/entity-record-store.js.map +1 -1
- package/dist/files-register-host.d.ts +22 -3
- package/dist/files-register-host.js +70 -31
- package/dist/files-register-host.js.map +1 -1
- package/dist/filesystem.js +3 -2
- package/dist/filesystem.js.map +1 -1
- package/dist/git-binding.d.ts +65 -0
- package/dist/git-binding.js +220 -0
- package/dist/git-binding.js.map +1 -0
- package/dist/git-capture.d.ts +39 -0
- package/dist/git-capture.js +86 -0
- package/dist/git-capture.js.map +1 -0
- package/dist/git-card.d.ts +12 -0
- package/dist/git-card.js +123 -0
- package/dist/git-card.js.map +1 -0
- package/dist/git-checkpoint-construction.d.ts +41 -0
- package/dist/git-checkpoint-construction.js +96 -0
- package/dist/git-checkpoint-construction.js.map +1 -0
- package/dist/git-checkpoint-preparation.d.ts +37 -0
- package/dist/git-checkpoint-preparation.js +145 -0
- package/dist/git-checkpoint-preparation.js.map +1 -0
- package/dist/git-command.d.ts +61 -8
- package/dist/git-command.js +217 -63
- package/dist/git-command.js.map +1 -1
- package/dist/git-configuration.d.ts +40 -0
- package/dist/git-configuration.js +217 -0
- package/dist/git-configuration.js.map +1 -0
- package/dist/git-evidence.d.ts +61 -0
- package/dist/git-evidence.js +181 -0
- package/dist/git-evidence.js.map +1 -0
- package/dist/git-index-entries.d.ts +15 -0
- package/dist/git-index-entries.js +44 -0
- package/dist/git-index-entries.js.map +1 -0
- package/dist/git-index-format.d.ts +35 -0
- package/dist/git-index-format.js +293 -0
- package/dist/git-index-format.js.map +1 -0
- package/dist/git-index-witness.d.ts +33 -0
- package/dist/git-index-witness.js +69 -0
- package/dist/git-index-witness.js.map +1 -0
- package/dist/git-literal-host.d.ts +82 -0
- package/dist/git-literal-host.js +172 -0
- package/dist/git-literal-host.js.map +1 -0
- package/dist/git-literal-read.d.ts +88 -0
- package/dist/git-literal-read.js +170 -0
- package/dist/git-literal-read.js.map +1 -0
- package/dist/git-literal-replay.d.ts +33 -0
- package/dist/git-literal-replay.js +268 -0
- package/dist/git-literal-replay.js.map +1 -0
- package/dist/git-native-file.d.ts +42 -0
- package/dist/git-native-file.js +145 -0
- package/dist/git-native-file.js.map +1 -0
- package/dist/git-native-index.d.ts +21 -0
- package/dist/git-native-index.js +44 -0
- package/dist/git-native-index.js.map +1 -0
- package/dist/git-operation-host.d.ts +48 -0
- package/dist/git-operation-host.js +127 -0
- package/dist/git-operation-host.js.map +1 -0
- package/dist/git-private-index.d.ts +11 -0
- package/dist/git-private-index.js +42 -0
- package/dist/git-private-index.js.map +1 -0
- package/dist/git-private-repository.d.ts +4 -0
- package/dist/git-private-repository.js +69 -0
- package/dist/git-private-repository.js.map +1 -0
- package/dist/git-private-view.d.ts +39 -0
- package/dist/git-private-view.js +162 -0
- package/dist/git-private-view.js.map +1 -0
- package/dist/git-ref-store.d.ts +12 -0
- package/dist/git-ref-store.js +68 -0
- package/dist/git-ref-store.js.map +1 -0
- package/dist/git-registration-host.d.ts +20 -30
- package/dist/git-registration-host.js +86 -249
- package/dist/git-registration-host.js.map +1 -1
- package/dist/git-repository-host.d.ts +148 -22
- package/dist/git-repository-host.js +633 -650
- package/dist/git-repository-host.js.map +1 -1
- package/dist/git-worktree-host.d.ts +2 -0
- package/dist/git-worktree-host.js +16 -0
- package/dist/git-worktree-host.js.map +1 -0
- package/dist/graph-publication.d.ts +75 -0
- package/dist/graph-publication.js +203 -0
- package/dist/graph-publication.js.map +1 -0
- package/dist/ground-basis.d.ts +242 -0
- package/dist/ground-basis.js +1023 -0
- package/dist/ground-basis.js.map +1 -0
- package/dist/ground-checkpoint-worker.d.ts +1 -0
- package/dist/ground-checkpoint-worker.js +84 -0
- package/dist/ground-checkpoint-worker.js.map +1 -0
- package/dist/ground-checkpoints.d.ts +16 -0
- package/dist/ground-checkpoints.js +45 -0
- package/dist/ground-checkpoints.js.map +1 -0
- package/dist/ground-coordination.d.ts +107 -3
- package/dist/ground-coordination.js +249 -24
- package/dist/ground-coordination.js.map +1 -1
- package/dist/ground-database.d.ts +42 -0
- package/dist/ground-database.js +290 -0
- package/dist/ground-database.js.map +1 -0
- package/dist/ground-differences.d.ts +23 -0
- package/dist/ground-differences.js +47 -0
- package/dist/ground-differences.js.map +1 -0
- package/dist/ground-holders.d.ts +4 -0
- package/dist/ground-holders.js +15 -0
- package/dist/ground-holders.js.map +1 -0
- package/dist/ground-initialization-worker.d.ts +1 -0
- package/dist/ground-initialization-worker.js +20 -0
- package/dist/ground-initialization-worker.js.map +1 -0
- package/dist/ground-initialization.d.ts +35 -0
- package/dist/ground-initialization.js +102 -0
- package/dist/ground-initialization.js.map +1 -0
- package/dist/ground-install-saves.d.ts +63 -0
- package/dist/ground-install-saves.js +139 -0
- package/dist/ground-install-saves.js.map +1 -0
- package/dist/ground-inventory-schema.d.ts +18 -0
- package/dist/ground-inventory-schema.js +168 -0
- package/dist/ground-inventory-schema.js.map +1 -0
- package/dist/ground-profile.d.ts +7 -0
- package/dist/ground-profile.js +52 -0
- package/dist/ground-profile.js.map +1 -0
- package/dist/ground-root-index.d.ts +2 -1
- package/dist/ground-root-index.js +16 -14
- package/dist/ground-root-index.js.map +1 -1
- package/dist/ground-row.d.ts +62 -0
- package/dist/ground-row.js +70 -0
- package/dist/ground-row.js.map +1 -0
- package/dist/ground-save-ops.d.ts +44 -0
- package/dist/ground-save-ops.js +41 -0
- package/dist/ground-save-ops.js.map +1 -0
- package/dist/ground-saver-worker.d.ts +1 -0
- package/dist/ground-saver-worker.js +156 -0
- package/dist/ground-saver-worker.js.map +1 -0
- package/dist/ground-saver.d.ts +75 -0
- package/dist/ground-saver.js +216 -0
- package/dist/ground-saver.js.map +1 -0
- package/dist/ground-store.d.ts +84 -0
- package/dist/ground-store.js +473 -0
- package/dist/ground-store.js.map +1 -0
- package/dist/ground-territory.d.ts +130 -0
- package/dist/ground-territory.js +511 -0
- package/dist/ground-territory.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js.map +1 -1
- package/dist/installation/ownership.d.ts +0 -2
- package/dist/installation/ownership.js +3 -15
- package/dist/installation/ownership.js.map +1 -1
- package/dist/machine-host.d.ts +3 -2
- package/dist/machine-host.js +28 -16
- package/dist/machine-host.js.map +1 -1
- package/dist/materialized-graph.d.ts +7 -7
- package/dist/materialized-graph.js +11 -23
- package/dist/materialized-graph.js.map +1 -1
- package/dist/module-thread.d.ts +9 -0
- package/dist/module-thread.js +10 -0
- package/dist/module-thread.js.map +1 -0
- package/dist/native/fsevents-stream.node +0 -0
- package/dist/physical-path-witness.d.ts +64 -0
- package/dist/physical-path-witness.js +168 -0
- package/dist/physical-path-witness.js.map +1 -0
- package/dist/register-upload-fusion.d.ts +5 -4
- package/dist/register-upload-fusion.js +9 -6
- package/dist/register-upload-fusion.js.map +1 -1
- package/dist/registry-graph.d.ts +3 -2
- package/dist/registry-graph.js +9 -6
- package/dist/registry-graph.js.map +1 -1
- package/dist/registry-page-cache.d.ts +5 -2
- package/dist/registry-page-cache.js.map +1 -1
- package/dist/repository-identity-steps.d.ts +5 -0
- package/dist/repository-identity-steps.js +33 -0
- package/dist/repository-identity-steps.js.map +1 -0
- package/dist/runtime-node-flags.d.ts +10 -0
- package/dist/runtime-node-flags.js +11 -0
- package/dist/runtime-node-flags.js.map +1 -0
- package/dist/service/adapter.d.ts +1 -1
- package/dist/service/adapter.js +1 -1
- package/dist/service/adapter.js.map +1 -1
- package/dist/service/cli.js +16 -20
- package/dist/service/cli.js.map +1 -1
- package/dist/service/control.d.ts +2 -2
- package/dist/service/keepalive.d.ts +4 -11
- package/dist/service/keepalive.js +65 -118
- package/dist/service/keepalive.js.map +1 -1
- package/dist/service/policy.d.ts +36 -0
- package/dist/service/policy.js +25 -0
- package/dist/service/policy.js.map +1 -0
- package/dist/service/portable.d.ts +1 -1
- package/dist/service/portable.js +1 -1
- package/dist/service/portable.js.map +1 -1
- package/dist/service/recovery.d.ts +10 -9
- package/dist/service/recovery.js +29 -19
- package/dist/service/recovery.js.map +1 -1
- package/dist/service/windows-action.d.ts +5 -3
- package/dist/service/windows-action.js +6 -9
- package/dist/service/windows-action.js.map +1 -1
- package/dist/service/windows-task.js +5 -5
- package/dist/service/windows-task.js.map +1 -1
- package/dist/sharing-admission.d.ts +17 -0
- package/dist/sharing-admission.js +128 -0
- package/dist/sharing-admission.js.map +1 -0
- package/dist/snapshot-delivery-baseline.d.ts +12 -3
- package/dist/snapshot-delivery-baseline.js +41 -42
- package/dist/snapshot-delivery-baseline.js.map +1 -1
- package/dist/source-proof.d.ts +36 -0
- package/dist/source-proof.js +70 -0
- package/dist/source-proof.js.map +1 -0
- package/dist/source-signature.d.ts +56 -0
- package/dist/source-signature.js +56 -0
- package/dist/source-signature.js.map +1 -0
- package/dist/source-witness.d.ts +15 -0
- package/dist/source-witness.js +29 -0
- package/dist/source-witness.js.map +1 -0
- package/dist/sqlite-durability.d.ts +31 -0
- package/dist/sqlite-durability.js +28 -0
- package/dist/sqlite-durability.js.map +1 -0
- package/dist/sqlite.d.ts +8 -2
- package/dist/sqlite.js +27 -4
- package/dist/sqlite.js.map +1 -1
- package/dist/sync-address.d.ts +19 -0
- package/dist/sync-address.js +52 -0
- package/dist/sync-address.js.map +1 -0
- package/dist/sync-setting.d.ts +15 -0
- package/dist/sync-setting.js +13 -0
- package/dist/sync-setting.js.map +1 -1
- package/dist/turns.d.ts +42 -0
- package/dist/turns.js +112 -0
- package/dist/turns.js.map +1 -0
- package/dist/updates/bootstrap.d.ts +53 -7
- package/dist/updates/bootstrap.js +224 -137
- package/dist/updates/bootstrap.js.map +1 -1
- package/dist/updates/controller.d.ts +8 -0
- package/dist/updates/controller.js +27 -3
- package/dist/updates/controller.js.map +1 -1
- package/dist/updates/store.d.ts +3 -0
- package/dist/updates/store.js +12 -0
- package/dist/updates/store.js.map +1 -1
- package/dist/user-ground-host.d.ts +364 -69
- package/dist/user-ground-host.js +5231 -3366
- package/dist/user-ground-host.js.map +1 -1
- package/dist/watching/fsevents.d.ts +52 -1
- package/dist/watching/fsevents.js +60 -25
- package/dist/watching/fsevents.js.map +1 -1
- package/dist/watching/host.d.ts +129 -5
- package/dist/watching/host.js +433 -80
- package/dist/watching/host.js.map +1 -1
- package/dist/watching/index.d.ts +1 -1
- package/dist/wire-binary.d.ts +3 -2
- package/dist/wire-binary.js +10 -8
- package/dist/wire-binary.js.map +1 -1
- package/dist/wire-client.d.ts +3 -4
- package/dist/wire-client.js +18 -44
- package/dist/wire-client.js.map +1 -1
- package/dist/wire-outbox.d.ts +34 -0
- package/dist/wire-outbox.js +127 -0
- package/dist/wire-outbox.js.map +1 -0
- package/dist/workspace-host.d.ts +4 -0
- package/dist/workspace-host.js +12 -1
- package/dist/workspace-host.js.map +1 -1
- package/examinations/fixtures/private-wire-authority.js +133 -10
- package/npm-shrinkwrap.json +43 -56
- package/package.json +26 -13
package/PURPOSE.md
CHANGED
|
@@ -10,6 +10,56 @@ At the completed brick/mortar boundary, compatible bricks advance through indepe
|
|
|
10
10
|
remains the mortar; publishing a brick must not require publishing unchanged
|
|
11
11
|
Shell code.
|
|
12
12
|
|
|
13
|
+
## Detect and Apply attribution
|
|
14
|
+
|
|
15
|
+
An originating machine may resolve its own accepted publication without
|
|
16
|
+
claiming that every local byte matches the shared result. The proof is the
|
|
17
|
+
exact acknowledged Outbox record, its authoritative Inbox position, and the
|
|
18
|
+
still-current admission attached to the sharing baseline. A new sharing
|
|
19
|
+
decision invalidates the previous admission even if it returns to equal values;
|
|
20
|
+
a metadata refresh does not. Covered member changes invalidate their repository
|
|
21
|
+
owner's admission, while an independent nested repository head does not change
|
|
22
|
+
the outer repository's placement. This outcome preserves physical observation,
|
|
23
|
+
the sharing baseline, and the last verified materialization. Existing effect
|
|
24
|
+
recovery must finish before this shortcut can resolve history. This boundary
|
|
25
|
+
is being implemented; the full native Apply examination has not passed it yet.
|
|
26
|
+
|
|
27
|
+
One read-only view of bound, nonterminal Apply recovery receipts protects original
|
|
28
|
+
participants and source/destination cones during Detect. Root and path coverage
|
|
29
|
+
remain distinct from ownership: the walk leaves each owned cone unread inside its
|
|
30
|
+
root and admits the root's independent units; only a cone containing the root, or
|
|
31
|
+
Register and first-login declaration, defer the whole root. No deferred row is
|
|
32
|
+
refreshed, erased, or admitted through ignore policy. Register and declaration
|
|
33
|
+
recheck exact ownership answers, including absence, alongside the physical and
|
|
34
|
+
SQLite basis; a unit walk relies on its lease, which every later Apply effect
|
|
35
|
+
crosses under its ground hold.
|
|
36
|
+
Terminal commit wakes original receipt scopes before private cleanup. A self-owned
|
|
37
|
+
capture enters original-effect cancellation; a foreign-owned capture releases its
|
|
38
|
+
attempt and waits on the named Apply producer. Neither means the edit was recorded.
|
|
39
|
+
Fresh Apply attempt UUIDs prevent delayed proof from acting on a replacement intent.
|
|
40
|
+
Apply admission and terminal preparation obey that same ownership predicate;
|
|
41
|
+
matching bytes do not release another attempt's recovery responsibility. Original
|
|
42
|
+
participants retain protection at their currently attributed addresses. An
|
|
43
|
+
unfinished Apply holds only its own root: identity continuity is root-local, so
|
|
44
|
+
an object it owns is named within its binding, and an inode number it freed that
|
|
45
|
+
the filesystem gives another root's file holds nothing back there. Detect's
|
|
46
|
+
identity candidates are likewise one root's rows at an object, and a shared
|
|
47
|
+
object joins admission units only within one root; an object's names across
|
|
48
|
+
roots are hard-link aliases, examined each in its own root. Capture
|
|
49
|
+
completion waits only on its actual Watch roots. A binding that cannot be reached
|
|
50
|
+
now is inaccessible, not wrong: its durable intent still owns the ground bound
|
|
51
|
+
there while its receipt, kept in that binding's control tree, waits unread. A
|
|
52
|
+
binding proved to be another object is unsafe. Neither poisons unrelated roots.
|
|
53
|
+
One preimage association represents source roots (including leaves) and descendant
|
|
54
|
+
directories. Primary and collateral renames use one placement checker; cancellation
|
|
55
|
+
repairs only proved O addresses under their actual binding, never B or accepted
|
|
56
|
+
history. Admission and receipt binding share one SQLite write transaction, including
|
|
57
|
+
physical aliases whose pathname leases do not overlap. Private unbound receipt
|
|
58
|
+
files grant no effects and cannot be adopted as earlier effect evidence.
|
|
59
|
+
Controlled full-ideal checks cover these recovery paths, including a stopped
|
|
60
|
+
primary rename and a second Apply targeting a still-owned collateral participant.
|
|
61
|
+
Complete native and multi-machine convergence remain unproved.
|
|
62
|
+
|
|
13
63
|
## Operating axioms
|
|
14
64
|
|
|
15
65
|
For outgoing email, Shell supplies its source computer and home directory to
|
|
@@ -33,9 +83,10 @@ migration is out of scope because no existing Engine users need it.
|
|
|
33
83
|
- **O2 — Failure stays with its owner.** A failed workload degrades its own
|
|
34
84
|
capability and declared dependants without restarting its parent or unrelated
|
|
35
85
|
capabilities.
|
|
36
|
-
- **O3 —
|
|
37
|
-
|
|
38
|
-
|
|
86
|
+
- **O3 — The runtime is always on.** Only an operator stop ends it. Every
|
|
87
|
+
other exit is a crash, and a crash is retried forever after a delay capped
|
|
88
|
+
at five minutes; a slow runtime is alive, and only sustained silence ends a
|
|
89
|
+
generation. An update is a trial: the last good release is home.
|
|
39
90
|
- **O4 — Health observation stays available.** Local control and liveness
|
|
40
91
|
perform bounded work independently of product readiness, cloud connectivity,
|
|
41
92
|
and workload size.
|
|
@@ -52,6 +103,140 @@ gap to resolve at its owning SDK, not a reason to perpetuate the violation.
|
|
|
52
103
|
|
|
53
104
|
## Axioms
|
|
54
105
|
|
|
106
|
+
Detect observes physical truth so local files keep their identity whether or not
|
|
107
|
+
sharing policy selects them. Record admits only a coherent selected result;
|
|
108
|
+
Send retries that immutable promise. Physical associations and the sharing
|
|
109
|
+
baseline are distinct inventories, with one permanent UUID domain. The physical
|
|
110
|
+
index retains last-proven-positive associations. Unresolved disappearance keeps
|
|
111
|
+
that association until a complete examination distinguishes a move from removal;
|
|
112
|
+
proved removal releases it, while nonreused UUID revisions and shared history
|
|
113
|
+
remain. An absent row never proves disk absence. Watch/coverage and Add/Apply
|
|
114
|
+
intents own uncertainty; no parallel absent-entity inventory is introduced.
|
|
115
|
+
Every Detect lane now reads physical identity from this index and compares changes
|
|
116
|
+
against the separate sharing baseline. Sharing rows never supply a missing
|
|
117
|
+
physical address or inode association. One explicit
|
|
118
|
+
ground store derives affected dependency keys from actual before/after writes;
|
|
119
|
+
a transaction advances each affected key once and no-op writes advance none.
|
|
120
|
+
An unrelated content edit cannot invalidate another entity's structural basis.
|
|
121
|
+
Every database fact used by one observation must remain jointly valid at
|
|
122
|
+
admission, alongside its closing source proof. An adaptive observer may add a
|
|
123
|
+
previously unread dependency in a short read transaction; it never renews an
|
|
124
|
+
existing dependency token. Admission closes the read set and checks every token
|
|
125
|
+
and complete query predicate together before any write. Apply
|
|
126
|
+
invalidates old observation permission before changing bytes, while its intent
|
|
127
|
+
retains ownership of incomplete effects. Every Detect lane implements selection
|
|
128
|
+
before Record; native completion with excluded local Git state remains open.
|
|
129
|
+
`ground-store.ts` now owns all projection writes and atomic slot permutations.
|
|
130
|
+
`ground-basis.ts` records short coherent original read receipts, with per-UUID
|
|
131
|
+
revisions that survive row removal. Broad Record checks both physical and sharing
|
|
132
|
+
bases. The named lane now accumulates indexed path, candidate, ancestor and
|
|
133
|
+
subtree receipts before closing the read set. Bound Apply receipts protect physical
|
|
134
|
+
attribution. Snapshot callbacks cannot write through the same connection, and repeated reads
|
|
135
|
+
retain their first dependency token. Scoped creation requires a never-used UUID;
|
|
136
|
+
a missing historical UUID needs its own original expectation. Failed
|
|
137
|
+
batches roll back even if their caller catches an individual placement error.
|
|
138
|
+
A shared content edit does not invalidate a separate parent's namespace proof.
|
|
139
|
+
Optional examination evidence preserves each admission batch's original and final
|
|
140
|
+
ground rows and exact appended records after its outer commit, including B-only
|
|
141
|
+
changes. It never reconstructs a prior admission from later database state and
|
|
142
|
+
never becomes another product journal or admission dependency.
|
|
143
|
+
An observation owns every capture it starts until that read settles. Capture
|
|
144
|
+
admission backpressures the walk at its fixed concurrency; failure stops new
|
|
145
|
+
admission and drains already started work before the attempt returns. The same
|
|
146
|
+
capture owner serves Register without changing its enrollment or upload journey.
|
|
147
|
+
Independent read failures survive draining; source churn cannot hide an I/O error.
|
|
148
|
+
Publication ownership never erases known sharing lineage. A child leaving a Git
|
|
149
|
+
parcel requires complete standalone cargo and one record even when unchanged;
|
|
150
|
+
its selected parent transition and required records commit together.
|
|
151
|
+
A pending logical root must have an observed physical coverage owner before
|
|
152
|
+
broad reconciliation can settle it; a missing owner is requested for the next
|
|
153
|
+
held pass without consuming the nested responsibility.
|
|
154
|
+
A named observation retains its physical source evidence until Record; reading
|
|
155
|
+
another file or sealing a repository cannot make an earlier unvalidated read
|
|
156
|
+
safe. Closing proof checks only the retained paths and ancestry, and retains
|
|
157
|
+
owned values rather than caller-mutable Stats objects. Re-proving unchanged
|
|
158
|
+
content retains its already sufficient content-read timestamp; access time alone
|
|
159
|
+
is not a projection mutation or an invalidation of another observation.
|
|
160
|
+
|
|
161
|
+
Each admission closes an original source proof once at its final requested
|
|
162
|
+
position; distinct proof owners and the physical opening/closing bracket remain
|
|
163
|
+
separate. Later phases must recheck the same original evidence. A retained Git
|
|
164
|
+
reuse proof rereads semantic config and stash, then closes all its original
|
|
165
|
+
file, absence, namespace and invocation witnesses. It never replaces a failed
|
|
166
|
+
original with a newly equal digest. Optional seal eligibility may fail without
|
|
167
|
+
discarding independently proved full capture; required reuse failure refuses
|
|
168
|
+
admission. No working-file content or parcel is retained by this proof owner.
|
|
169
|
+
Ongoing broad collection may prepare a provisional reuse decision without an
|
|
170
|
+
intermediate complete close. Its enclosing root and Record boundaries must close
|
|
171
|
+
the retained proof, including zero-record passes. Standalone observations,
|
|
172
|
+
optional seal writes and cold journeys retain their closed contracts.
|
|
173
|
+
|
|
174
|
+
Missing Git metadata keeps the first proved missing entry beneath its original
|
|
175
|
+
physical parent. A missing suffix needs no invented directories. If that entry
|
|
176
|
+
appears, the original proof rejects even when a deeper entry remains absent;
|
|
177
|
+
closing never discovers a replacement reason for absence. Obstructions and read
|
|
178
|
+
errors are not absence, and an obstruction's bytes need not be read. Repository
|
|
179
|
+
availability and storage association remain separate binding obligations.
|
|
180
|
+
|
|
181
|
+
A repository's O row may carry one local configuration-observation stamp.
|
|
182
|
+
It binds the original value-bearing Git answer, invocation and physical binding
|
|
183
|
+
to that UUID and actual observed payload; it is neither shared state nor cargo.
|
|
184
|
+
The same captured configuration supplies Card remotes, so adjacent unrelated
|
|
185
|
+
reads cannot certify a false pair. GroundStore commits the pair atomically. Fresh installation is an explicit
|
|
186
|
+
repository-observation input; ordinary serialized rows may retain a still-valid
|
|
187
|
+
stamp or clear it, but cannot manufacture a new observation by changing a hash.
|
|
188
|
+
A parcel-reuse seal must compare its original configuration and semantic stash
|
|
189
|
+
answers with those that produced the captured result before closing. Two
|
|
190
|
+
independently successful observations never prove that pair. Initial native
|
|
191
|
+
binding acquisition closes once against the subsequently captured prerequisites;
|
|
192
|
+
later ordinary-layout closes retain those original inputs. Routing only compares this
|
|
193
|
+
original O fact with current configuration and never refreshes it. Unknown, changed or unsupported proof retains complete repository
|
|
194
|
+
responsibility, including disappearance of the last configuration contribution.
|
|
195
|
+
Broad parcel reuse compares its freshly proved configuration and native binding
|
|
196
|
+
against the original O stamp too. Other Git state and storage/alias proofs remain separate. Cold journeys may
|
|
197
|
+
leave the fact unknown; B, received packages and acknowledgements cannot supply it.
|
|
198
|
+
|
|
199
|
+
Apply's capture result distinguishes a completed observation from local-only
|
|
200
|
+
changes and unresolved evidence. Live separately checks durable Outbox protection.
|
|
201
|
+
Local-only work retains the intent and waits for a named Detect change before
|
|
202
|
+
further effects; observing bytes never constitutes a backup. A matching target
|
|
203
|
+
permits Verify only when its physical identity is established and no other
|
|
204
|
+
effect remains. Every remaining effect passes the same local-work, preimage
|
|
205
|
+
and destination checks under the complete ground scope. An interrupted effect
|
|
206
|
+
owns a recovery obligation, never arbitrary later edits at its address. Recovery
|
|
207
|
+
cannot be retired until its retained versions have an explicit safe disposition.
|
|
208
|
+
Startup may settle history through an explicitly installed snapshot watermark;
|
|
209
|
+
equality with a sharing row never manufactures a current materialization proof.
|
|
210
|
+
The exact Apply outcome commits before private recovery deletion. The same
|
|
211
|
+
intent then owns only a finite cleanup description; restart dispatches that
|
|
212
|
+
responsibility without current O or old cargo. Cleanup hashes survivors with
|
|
213
|
+
bounded streaming buffers, rejects replacements and unexpected objects, makes
|
|
214
|
+
removal durable, and acknowledges only the matching nonreused terminal token.
|
|
215
|
+
Collision recovery records original UUID-to-address moves and refuses retirement
|
|
216
|
+
while rows and disk disagree. Repository Verify emits only its owned frontier;
|
|
217
|
+
independent nested heads and observed/shared projections remain separate.
|
|
218
|
+
Verify retains the metadata and closing witness from the content read itself,
|
|
219
|
+
and an original database basis collected before deriving its output. Terminal
|
|
220
|
+
commit rejects changed evidence and releases only the failed attempt's lease.
|
|
221
|
+
Directory identity survives content equality: a replaced directory or ancestor
|
|
222
|
+
must be reconciled before adoption or overwrite. Private preimages retain those
|
|
223
|
+
directory identities too. Construct Verify hands its product result to the same
|
|
224
|
+
terminal owner with an explicit absence of filesystem cleanup responsibilities.
|
|
225
|
+
An immutable Apply receipt bounds every resumed effect. A changed forward plan
|
|
226
|
+
does not enlarge that authority: reconcile an explained intermediate physical
|
|
227
|
+
placement against its original basis, commit that correction with cancellation,
|
|
228
|
+
retain newer sharing values and unresolved Inbox, then replan on the same rail.
|
|
229
|
+
Recovery enters through the recorded cones before depending on a new parent or
|
|
230
|
+
package. Every original effect still needs a disposition; unexplained ground
|
|
231
|
+
retains its owner. Exact-target adoption may reach `revealed` without effects;
|
|
232
|
+
that phase alone cannot suppress a later local edit. The current recovery
|
|
233
|
+
cutover has controlled full-ideal evidence, including actual named Detect during
|
|
234
|
+
row-before-rename recovery. The scoped receipt reader, deferred coverage and
|
|
235
|
+
post-terminal wake are integrated as described above; the complete native and
|
|
236
|
+
multi-machine examinations remain open.
|
|
237
|
+
These Apply guard laws and the ignore publication host integration are being
|
|
238
|
+
completed; component evidence is not a full-host pass.
|
|
239
|
+
|
|
55
240
|
Sync has one persistent machine setting: paused or enabled. An absent setting
|
|
56
241
|
keeps the existing enabled behavior; pausing persists an explicit choice.
|
|
57
242
|
It lives outside package generations and changes only by explicit command.
|
|
@@ -77,7 +262,8 @@ authority, and Channels sends carry the trusted originating session identity.
|
|
|
77
262
|
Until the owner saves Email defaults, Channels suggests them from this
|
|
78
263
|
computer's last-used preferences; Shell offers them back only when the agent
|
|
79
264
|
is installed here, resolves with that model, and can send, keeping the
|
|
80
|
-
suggested folder only if it exists here and otherwise the agent's own
|
|
265
|
+
suggested folder only if it exists here and otherwise the agent's own, else the
|
|
266
|
+
Workspaces folder.
|
|
81
267
|
|
|
82
268
|
Registry acceptance and public installability are separate states; publication
|
|
83
269
|
waits for the exact examined bytes to become readable before recording success.
|
|
@@ -94,6 +280,10 @@ Core's snapshot/event projection together, including when Files has no cloud rai
|
|
|
94
280
|
One folder remains a direct link; a named group remembers its selected child;
|
|
95
281
|
neither registration nor removal copies, moves, or deletes the linked contents.
|
|
96
282
|
The machine workspace root exists before an unscoped chat can use it as its cwd.
|
|
283
|
+
It is the one default folder: agent runs, automation steps, terminals and Email
|
|
284
|
+
start there when nothing else is chosen, and a run started there also receives
|
|
285
|
+
every registered folder outside it as an additional directory. Shell gives Chat
|
|
286
|
+
the same folder, so a chat whose chosen folder is gone starts there instead.
|
|
97
287
|
Installed machines keep these local links and their event tail in machine state.
|
|
98
288
|
The registry file is authoritative. Replacement validates the complete registry,
|
|
99
289
|
flushes private temporary bytes and atomically renames them; a failed write cannot
|
|
@@ -110,6 +300,9 @@ A materialized row proves local observation, not completed official delivery.
|
|
|
110
300
|
An independent later observation starts from a settled basis only after earlier
|
|
111
301
|
mutations are accepted, their matching Inbox records resolve, and Apply releases
|
|
112
302
|
their intents; finite observation flushes do not promise global delivery silence.
|
|
303
|
+
Shutdown can interrupt an Apply-requested observation, but cannot report that
|
|
304
|
+
observation settled. Its exact Watch generation must be proved before the
|
|
305
|
+
capture returns successfully; otherwise the existing intent remains unresolved.
|
|
113
306
|
Apply retry reads revisit only the requested entities through indexed lookups
|
|
114
307
|
and the same current eligibility rule used by paged discovery; page position
|
|
115
308
|
cannot prevent a due entity from being reconsidered.
|
|
@@ -184,19 +377,25 @@ Every control mutation carries the expected user, binding and owner generation;
|
|
|
184
377
|
the receiving controller verifies that identity before performing the mutation.
|
|
185
378
|
Authenticating a response after an effect cannot authorize that effect.
|
|
186
379
|
Layer 1 keeps one usable runtime available while the OS session can execute.
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
380
|
+
One always-on policy (`src/service/policy.ts`) governs the copied launcher, the
|
|
381
|
+
controller and the Windows action alike: only an operator stop ends the runtime,
|
|
382
|
+
and every other exit restarts after a doubling delay capped at five minutes,
|
|
383
|
+
forever. Shell records each launch in a durable SQLite journal before spawning,
|
|
384
|
+
so controller replacement and repeated service starts neither reset the delay
|
|
385
|
+
nor make anyone wait twice; sustained ready IPC health, an explicit
|
|
386
|
+
`service retry` or an authorized update resets it. Any answer to an outstanding
|
|
387
|
+
health question proves life however late it arrives; only a long run of on-time
|
|
388
|
+
checks left unanswered ends a generation. Intentional shutdown never launches a
|
|
389
|
+
replacement, and every stop records its reason.
|
|
193
390
|
Native registration belongs to the current OS account even when the installation
|
|
194
391
|
uses another data home. Windows Task Scheduler owns a hidden action in that
|
|
195
|
-
account's logged-in session; the action owns controller exit recovery using
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
The
|
|
199
|
-
including failures before the controller can open its own log.
|
|
392
|
+
account's logged-in session; the action owns controller exit recovery using the
|
|
393
|
+
same policy. Scheduler launch retries alone cannot recover a program that
|
|
394
|
+
started successfully and then exited.
|
|
395
|
+
The copied launcher retains a bounded result and stop reason for each controller
|
|
396
|
+
launch role, including failures before the controller can open its own log. It
|
|
397
|
+
upgrades itself: a launcher that finds a newer revision installed exits at its
|
|
398
|
+
next launch boundary so the OS starts the new one.
|
|
200
399
|
Before launching any controller, the Windows action joins its own unnamed,
|
|
201
400
|
non-inheritable, kill-on-close Job Object; every descendant remains inside that
|
|
202
401
|
lifetime boundary, and only action termination releases its owning handle.
|
|
@@ -211,6 +410,23 @@ Native Watch opens the OS-resolved physical directory; portable or short-name
|
|
|
211
410
|
aliases cannot become a second path grammar inside a kernel handle.
|
|
212
411
|
Persistent SQLite handles use the OS namespace for the selected file, including
|
|
213
412
|
Windows extended paths; a host API's legacy path limit cannot select another file.
|
|
413
|
+
That namespaced name is the file's one name: every registry keyed by a ground
|
|
414
|
+
file uses the name its connections report, so no spelling selects a second
|
|
415
|
+
owner. Releasing a ground file settles only once no thread of the process holds
|
|
416
|
+
it, so the final checkpoint is part of closing and Windows can remove it after.
|
|
417
|
+
Git's environment is read with the platform's own name rules; Windows names are
|
|
418
|
+
case-insensitive, so `Path` is PATH and an inherited `git_dir` is still Git's.
|
|
419
|
+
Each requests F_FULLFSYNC where the platform has it, because a plain macOS fsync
|
|
420
|
+
can leave a commit in the drive's cache. Every write to a ground file is a
|
|
421
|
+
named save run by that file's one saver thread (`src/ground-saver.ts`): saves
|
|
422
|
+
posted while a commit flushes form the next batch, each in its own savepoint,
|
|
423
|
+
committed once at synchronous=FULL. A save settles only once the drive holds
|
|
424
|
+
it, so Send submits only durable Outbox rows; the main thread's ground
|
|
425
|
+
connections only read, so it never waits for the drive. Detect reports the
|
|
426
|
+
journal, synchronous and fullfsync settings the saver committed under.
|
|
427
|
+
Whatever launches the runtime process names the Node flags of
|
|
428
|
+
`src/runtime-node-flags.ts`: a bounded young generation keeps each of the main
|
|
429
|
+
thread's garbage-collection pauses to a few milliseconds.
|
|
214
430
|
Durability acknowledgements require the native flush to succeed through a handle
|
|
215
431
|
with the access it requires; a failed flush cannot become a successful install
|
|
216
432
|
or materialization. Each writer owns the durability of the files it creates.
|
|
@@ -372,9 +588,10 @@ links and groups persist as one validated registry replacement before events are
|
|
|
372
588
|
published. Disk remains authoritative after a failed persistence acknowledgement;
|
|
373
589
|
corrupt and unsupported documents are refused, never replaced with defaults.
|
|
374
590
|
Each streamed response owns its source through completion or client disconnect.
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
writable state;
|
|
591
|
+
The installation format, declared once as `RUNTIME_FORMAT`, reads every earlier
|
|
592
|
+
direct-link, group, and Chat journal record. Its receipt advances before any
|
|
593
|
+
product opens writable state; a runtime built for an older format cannot recover
|
|
594
|
+
after adoption.
|
|
378
595
|
|
|
379
596
|
14a. **Automations CLI is one service-owned command surface.** Shell discovers
|
|
380
597
|
the selected signed-in runtime, supplies its loopback admission credential,
|
|
@@ -407,10 +624,11 @@ writable state; format-1 and format-2 runtimes cannot recover after adoption.
|
|
|
407
624
|
cloud, and Watch work use the established owners rather than constructing a
|
|
408
625
|
second lifecycle. Register waits through graph reconciliation, healthy
|
|
409
626
|
coverage, capture of every repository parcel, immutable upload, and
|
|
410
|
-
graph-head commit before it returns. An uncapturable repository
|
|
411
|
-
|
|
412
|
-
durable
|
|
413
|
-
|
|
627
|
+
graph-head commit before it returns. An uncapturable repository refuses
|
|
628
|
+
Register, which then admits and journals nothing; Live's binding and
|
|
629
|
+
reference stay durable, so a retry declares the same workspace. No graph
|
|
630
|
+
containing a `repo.git` without its verified Card + Checkpoint transport
|
|
631
|
+
can become the cloud head. The
|
|
414
632
|
watcher established after authoritative materialization remains the one
|
|
415
633
|
ongoing watcher; the CLI never creates and immediately closes a second
|
|
416
634
|
Watch lifecycle. Closing an unchanged watcher does not invent a full scan. A
|
|
@@ -428,15 +646,23 @@ writable state; format-1 and format-2 runtimes cannot recover after adoption.
|
|
|
428
646
|
is still the same device, inode, and filesystem creation generation its
|
|
429
647
|
content handle was opened on, that handle already covers everything inside
|
|
430
648
|
and the ring adds nothing; missing ground, a lost handle, or a replaced
|
|
431
|
-
directory retires the handle
|
|
432
|
-
|
|
433
|
-
|
|
649
|
+
directory retires the handle and re-establishes coverage. The blind
|
|
650
|
+
interval could hide an effect through an alias in any root, so every root
|
|
651
|
+
is put completely in question. On macOS
|
|
652
|
+
each handle is its own FSEvents stream through Amalgm's own binding
|
|
653
|
+
(`native/fsevents/`), which asks for per-file events delivered without
|
|
654
|
+
coalescing delay, so a ring reaches Detect at the platform floor and
|
|
434
655
|
opening or closing one never interrupts another; Node's own watcher serves
|
|
435
656
|
every handle in the process from one stream that it recreates, resuming
|
|
436
657
|
from the present, on every change, and loses the events in between.
|
|
437
658
|
Initialization failure or handle death is reported as degraded, retains
|
|
438
659
|
full-root suspicion, and retries independently of Detect; it can never be
|
|
439
|
-
reported as active coverage.
|
|
660
|
+
reported as active coverage. A Linux descendant directory the tree cannot
|
|
661
|
+
enter is not lost coverage: its parent hears it. One that vanished needs
|
|
662
|
+
no handle. One this process may not read keeps any handle it already had,
|
|
663
|
+
and Detect names that ground unavailable, until an event on its name asks
|
|
664
|
+
again; entering it then ends an interval no handle heard, so its whole
|
|
665
|
+
root is put in question. Only the root's own failure is lost coverage.
|
|
440
666
|
|
|
441
667
|
17. **Independent content may travel concurrently; authority remains atomic.**
|
|
442
668
|
The host bounds parallel uploads for small immutable objects and processes
|
|
@@ -496,20 +722,79 @@ writable state; format-1 and format-2 runtimes cannot recover after adoption.
|
|
|
496
722
|
Hashes, manifests, caches, and R2 protection always prove the exact decoded
|
|
497
723
|
bytes; incompressible input travels unchanged.
|
|
498
724
|
|
|
499
|
-
21. **Watch events preserve suspicion until proof.** Watch
|
|
500
|
-
producing handle
|
|
501
|
-
|
|
502
|
-
|
|
725
|
+
21. **Watch events preserve suspicion until proof.** Watch preserves the
|
|
726
|
+
producing handle, optional path, and native evidence that widens its scope.
|
|
727
|
+
A named event preserves that hint; loss or possible hardlink effects require
|
|
728
|
+
one examination across every configured materialization root. Such a shared
|
|
729
|
+
obligation settles only when every participating root completes against the
|
|
730
|
+
same frozen Watch generation and binding set. Unavailable ground remains
|
|
731
|
+
pending; a changed binding set requires a new complete examination. Native
|
|
732
|
+
event IDs are diagnostics, never identities or settlement cutoffs. Unexpected
|
|
733
|
+
coverage loss retains one episode through repeated reopen failures; its
|
|
734
|
+
qualifying observation starts only after replacement coverage is healthy.
|
|
735
|
+
Detect waits on the existing recovery wake while coverage is unavailable.
|
|
736
|
+
A later coverage loss invalidates an in-flight recovery proof. Ordinary
|
|
737
|
+
unnamed notifications retain complete covered-root suspicion. Watch does not
|
|
738
|
+
read `.amalgmignore`, inspect `.git`, classify a file, or
|
|
503
739
|
infer create, move, rename, and delete semantics. Detect reads live policy
|
|
504
740
|
and repository evidence when it observes the suspicion. Only Core's fixed
|
|
505
|
-
`.amalgm/` control subtree is structurally outside Files ground
|
|
506
|
-
|
|
741
|
+
`.amalgm/` control subtree is structurally outside Files ground. Its named
|
|
742
|
+
notices may be dropped only after native scope ambiguity has been preserved.
|
|
743
|
+
A scan settles only the generations
|
|
507
744
|
it observed, so an event received during that scan remains pending.
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
745
|
+
An object's change is a change at every one of its names: a committed name
|
|
746
|
+
whose object changed, or which left an object with another name, rings each
|
|
747
|
+
other name the inventory holds for it, in any root, unless that alias is
|
|
748
|
+
already recorded at the committed stat. Native alias evidence names the
|
|
749
|
+
objects a name held (the FSEvents file ID is the inode); each such object
|
|
750
|
+
rings every name the inventory holds for it before the cut is proved, and
|
|
751
|
+
a hint whose objects are unknown rings the domain. Each alias is read as
|
|
752
|
+
its own name in its own root; bytes and identities never propagate between
|
|
753
|
+
names.
|
|
754
|
+
|
|
755
|
+
22. **Physical bytes supply worktree evidence.** Git's index describes stored
|
|
756
|
+
blobs, not necessarily the files on disk. Shell derives a worktree leaf's
|
|
757
|
+
type and payload from the same stable byte observation; any NUL means
|
|
758
|
+
binary, including beyond Git's preview window. Index flags, attributes
|
|
759
|
+
and checkout conversions cannot suppress that observation or choose its
|
|
760
|
+
type. A Git object identity is reusable only with proof of raw byte
|
|
761
|
+
equality. Checkpoint replay preserves those exact bytes independently of
|
|
762
|
+
receiver settings. Git ignore never becomes Amalgm Detect policy.
|
|
763
|
+
Observation cannot alter Git object timestamps either: source object
|
|
764
|
+
alternates are read-only inputs, and every object-writing command runs
|
|
765
|
+
with private storage alone. Patch writers copy only their required base
|
|
766
|
+
blobs into that private storage first.
|
|
767
|
+
Indexed and untracked inventory share one native-index observation, read
|
|
768
|
+
without a Git process and versioned by what capture means by an index:
|
|
769
|
+
its stage listing, exactly what `git ls-files --stage -z` writes
|
|
770
|
+
(`src/git-index-format.ts`). Capture asks nothing else of an index, so a
|
|
771
|
+
refresh that re-stamps stat data, a version change, or entries moving
|
|
772
|
+
between a split index and its shared base leave every answer drawn from
|
|
773
|
+
it standing; the witness keeps the bytes it decoded and decodes again
|
|
774
|
+
only when they differ. Git lists untracked names over copied index bytes,
|
|
775
|
+
and repository/storage bindings remain valid through closing capture. One Git binding owner retains the original effective
|
|
776
|
+
invocation and lexical/resolved directory associations. It re-resolves
|
|
777
|
+
through Git at each bracket; one framed batch replaces four commands, with
|
|
778
|
+
scalar fallback preserving embedded or trailing newlines. No incomplete
|
|
779
|
+
config-source list can authorize cached location reuse. Special index files are refused with nonblocking, no-follow
|
|
780
|
+
reads. Only the shared base a split index names is read, from the Git
|
|
781
|
+
directory before the index's own as Git reads it, and its checksum must
|
|
782
|
+
match the link. Observation never freshens a shared base; that timestamp
|
|
783
|
+
refresh remains Git's own work. Thin-pack export reads borrowed objects through the
|
|
784
|
+
private repository without source remote configuration. Checkpoint decoding
|
|
785
|
+
and member verification have one private preparation owner, separate from
|
|
786
|
+
index installation and working-file effects. Replay consumes and closes that
|
|
787
|
+
preparation; it does not maintain a second package validator. Sparse directory
|
|
788
|
+
entries currently cause an explicit unsupported-index refusal, never an
|
|
789
|
+
incomplete index or an alternate-enabled index writer; the native decoder
|
|
790
|
+
refuses them before any Git process could expand them. A form Git never
|
|
791
|
+
writes, or a required extension Git would not understand, is refused
|
|
792
|
+
rather than guessed. A zero split link has no shared-base dependency.
|
|
793
|
+
Fast reuse closes the complete metadata/namespace proof, whose index
|
|
794
|
+
member is its meaning; its presence tags distinguish absent files from
|
|
795
|
+
all possible bytes.
|
|
796
|
+
Shared registration inspection closes its physical and boundary witnesses
|
|
797
|
+
against that same native-index basis.
|
|
513
798
|
|
|
514
799
|
23. **Cold add never rereads a repository graph.** Download verifies and
|
|
515
800
|
seals each content-addressed transport to a file, streams its Git pack
|
|
@@ -524,6 +809,19 @@ writable state; format-1 and format-2 runtimes cannot recover after adoption.
|
|
|
524
809
|
entity identity. Missing, corrupt, or obsolete cache bytes are removed and
|
|
525
810
|
recomputed from authoritative local ground; they never become a legacy
|
|
526
811
|
compatibility requirement and never prevent the machine from resuming.
|
|
812
|
+
A cache name appears only over durable bytes: every writer makes a staged
|
|
813
|
+
file durable before renaming it into place, so an existing name already
|
|
814
|
+
holds that immutable object and a rename over it replaces identical
|
|
815
|
+
durable bytes. Staged cargo becomes durable in groups: its bytes are
|
|
816
|
+
written through to the device, and one barrier covers every writer that
|
|
817
|
+
staged before the barrier began (on macOS, one drive flush), so a burst of
|
|
818
|
+
captures never waits for one full flush per file. A barrier stalls the
|
|
819
|
+
staging still in flight, so a pass that captures a set names it together
|
|
820
|
+
once the whole set has staged, as Git batches object writes behind one
|
|
821
|
+
flush: one barrier per pass, and none while its reads run. Before Record admits
|
|
822
|
+
captured cargo it flushes the cache directories off the event loop only
|
|
823
|
+
when a required name is not yet known durable; a crash can lose an
|
|
824
|
+
unrecorded name, never leave a Record naming torn bytes.
|
|
527
825
|
A pending Send consults its capture-derived manifest and the authority's
|
|
528
826
|
immutable inventory before opening local cargo: after upload succeeded but
|
|
529
827
|
before its acknowledgement became durable, complete cloud cargo is enough
|
|
@@ -533,7 +831,9 @@ writable state; format-1 and format-2 runtimes cannot recover after adoption.
|
|
|
533
831
|
the entity's existing bytes. When the negotiated wire supports it and all
|
|
534
832
|
declared cargo is bounded, Shell supplies the cached manifest and blocks to
|
|
535
833
|
Live for the same submit frame; otherwise it uses the ordinary missing-block
|
|
536
|
-
effect.
|
|
834
|
+
effect. A cached manifest is read off the main thread and is only a hint:
|
|
835
|
+
an absent or invalid one takes the ordinary obtain-or-derive path, and the
|
|
836
|
+
cache use that protects it lasts until the read finishes. The cloud, not Shell, owns the final seal-before-number decision.
|
|
537
837
|
Cache bytes remain only while an unresolved durable operation names their
|
|
538
838
|
content head or while the current verified text or repository head is the
|
|
539
839
|
one exact base for that entity's next delta. Once Send acceptance is
|
|
@@ -649,27 +949,42 @@ writable state; format-1 and format-2 runtimes cannot recover after adoption.
|
|
|
649
949
|
older Detect transaction settles first and any newer Watch generation
|
|
650
950
|
waits until adoption finishes. Register
|
|
651
951
|
and Watch enumerate the same durable binding inventory, so a missed
|
|
652
|
-
notification for rendering the portable reference cannot
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
952
|
+
notification for rendering the portable reference cannot lose a
|
|
953
|
+
declaration. A bound root that no Register has committed is held: it is
|
|
954
|
+
covered but stays `catching-up`, and Detect neither walks nor shares it
|
|
955
|
+
or its reference until Register declares it again under the same UUID.
|
|
956
|
+
Register admits exactly its declaration — the walked workspace, its
|
|
957
|
+
reference, and any core ancestor the accepted view lacks — beside one
|
|
958
|
+
journal row, and nothing else.
|
|
959
|
+
Registering ground that encloses workspaces this machine already
|
|
960
|
+
materializes absorbs each one the authority holds as its own active root.
|
|
961
|
+
Every identity is kept. Only the absorbed root's own record changes: its
|
|
962
|
+
parentUUID and name become where the enclosing walk found it, and a
|
|
963
|
+
`workspace` becomes a `folder`. The head drops that root in the same
|
|
964
|
+
commit. Absorbed ground rides as the accepted graph and the sharing
|
|
965
|
+
baseline already hold it, so local work there stays owed to ordinary
|
|
966
|
+
Detect, and it is held with the enclosing workspace until the authority
|
|
967
|
+
accepts that declaration; a refusal keeps both held until Register runs
|
|
968
|
+
again. Enclosed ground that is still held, was never accepted, is accepted
|
|
969
|
+
inside a root the new ground does not enclose, or is not active refuses
|
|
970
|
+
Register. Ground inside a materialized workspace is refused, because that
|
|
971
|
+
graph already holds it. Overlapping registrations never create a second
|
|
972
|
+
identity family.
|
|
657
973
|
Register success is scoped to the selected workspace's SQLite row, its
|
|
658
974
|
exact durable reference row, immutable content, cloud-head membership for
|
|
659
|
-
both identities, and healthy coverage
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
suspicion.
|
|
975
|
+
both identities, and healthy coverage. It never waits for unrelated Watch
|
|
976
|
+
traffic across the machine to become silent.
|
|
977
|
+
Register's one walk of the workspace consumes the complete suspicion of
|
|
978
|
+
its new coverage. The core records it declares derive from their two
|
|
979
|
+
addresses; it never enumerates, scans, or reprojects core or unrelated
|
|
980
|
+
existing roots. Any unrelated suspicion remains ordinary ongoing work of
|
|
981
|
+
the same host.
|
|
982
|
+
Re-declaring a workspace the accepted view already holds as its own root
|
|
983
|
+
publishes no head and walks nothing: it proves cargo closure (31) and
|
|
984
|
+
returns, and Watch continues to own subsequent content changes. Ending
|
|
985
|
+
any cold command rearms a Watch generation that arrived while that
|
|
986
|
+
command temporarily suppressed Detect; a successful idempotent proof
|
|
987
|
+
cannot strand pending suspicion.
|
|
673
988
|
31. **A cold graph publication proves cargo closure under the current
|
|
674
989
|
contract.** A replacement of the selected complete logical roots is one
|
|
675
990
|
atomic cloud operation; unrelated roots already held by authority are
|
|
@@ -679,14 +994,16 @@ writable state; format-1 and format-2 runtimes cannot recover after adoption.
|
|
|
679
994
|
content sealed only under a prior content contract, whose namespace the
|
|
680
995
|
current readers never touch. Only the authority's durable seal for the
|
|
681
996
|
exact (resource, content hash, current content contract) proves an
|
|
682
|
-
artifact's cargo. Before advancing the head
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
997
|
+
artifact's cargo. Before advancing the head, the machine asks the
|
|
998
|
+
authority which content heads the declaration names are sealed under the
|
|
999
|
+
current contract and uploads exactly the remainder; every one is sealed
|
|
1000
|
+
before its journal row exists, so a replay carries only graph pages.
|
|
1001
|
+
Before answering an idempotent re-declaration, it asks the same of every
|
|
1002
|
+
content head the accepted workspace names and re-ships each lacking one
|
|
1003
|
+
that its cache or ground still holds exactly. One overtaken here already
|
|
1004
|
+
travels as its own Record; the stage names how many it could not restore.
|
|
1005
|
+
This remains true when the local materialization boundary has a portable
|
|
1006
|
+
parent outside the local projection.
|
|
690
1007
|
|
|
691
1008
|
32. **Coverage precedes recovery, and coverage is not currency.** On process
|
|
692
1009
|
start Watch first opens the same durable root topology, then Detect closes
|
|
@@ -740,12 +1057,12 @@ writable state; format-1 and format-2 runtimes cannot recover after adoption.
|
|
|
740
1057
|
35. **Container membership is version input, never cargo.** A workspace or
|
|
741
1058
|
folder derives its logical version from the UUIDs and names of active
|
|
742
1059
|
direct children, while its portable and notebook `payloadVersion` remains
|
|
743
|
-
null. Shell
|
|
744
|
-
|
|
745
|
-
therefore create, move, or rename its address, but it can never
|
|
746
|
-
membership already established by child UUID rows or emit a
|
|
747
|
-
container mutation for that derivation. Local adapter evidence can
|
|
748
|
-
masquerade as a transferable content head.
|
|
1060
|
+
null. Every Shell writer stores only the derived version, and Live's cloud
|
|
1061
|
+
codec refuses a container payload. An independently ordered container
|
|
1062
|
+
receipt may therefore create, move, or rename its address, but it can never
|
|
1063
|
+
overwrite membership already established by child UUID rows or emit a
|
|
1064
|
+
second container mutation for that derivation. Local adapter evidence can
|
|
1065
|
+
never masquerade as a transferable content head.
|
|
749
1066
|
|
|
750
1067
|
36. **Portable path grammar becomes a native path only at the host boundary.**
|
|
751
1068
|
Core and Live describe path components with `/`; Shell performs portable
|
|
@@ -786,7 +1103,24 @@ writable state; format-1 and format-2 runtimes cannot recover after adoption.
|
|
|
786
1103
|
every covered root suspect, retires native Watch handles, and then performs
|
|
787
1104
|
one final Detect/Record pass. Native events cannot make shutdown unbounded;
|
|
788
1105
|
changes after the cutoff remain inside the blind interval that startup
|
|
789
|
-
catch-up is required to close.
|
|
1106
|
+
catch-up is required to close. Neither can a writer that keeps changing
|
|
1107
|
+
ground: the final pass reads again only a racy listing, whose wait is
|
|
1108
|
+
bounded, and reports any root whose ground still moved as incomplete,
|
|
1109
|
+
never as a wait. A systemic fault fails shutdown after teardown; ground
|
|
1110
|
+
that cannot be read is unsettled, not a fault. Otherwise an incomplete
|
|
1111
|
+
answer names every cause that applies, each on its own: the unfinished
|
|
1112
|
+
Apply intents that own ground, the roots still moving, the roots that
|
|
1113
|
+
could not be read and the roots Git refused. An intent whose binding
|
|
1114
|
+
cannot be reached is named with that binding as unreadable ground; a
|
|
1115
|
+
binding proved to be another object fails shutdown, and the old intent
|
|
1116
|
+
never acts on it. One cause never erases another, and the answer does
|
|
1117
|
+
not depend on the order in which lanes parked. Network delivery is not
|
|
1118
|
+
part of the cutoff. Apply's last flush and Send's last delivery share one
|
|
1119
|
+
finite network budget; once it is spent, closing the wire cancels what is
|
|
1120
|
+
still in flight, Apply keeps its durable intent, and shutdown reports the
|
|
1121
|
+
records still saved locally, naming those sent without an answer. It
|
|
1122
|
+
never calls them synchronized: they send again under the same mutation
|
|
1123
|
+
identity when Files next starts.
|
|
790
1124
|
|
|
791
1125
|
43. **Record commits evidence before Watch settles.** The host reconciles a
|
|
792
1126
|
Watch generation against one last-verified detection notebook, writes the
|
|
@@ -806,42 +1140,36 @@ writable state; format-1 and format-2 runtimes cannot recover after adoption.
|
|
|
806
1140
|
observes fresh truth; stale evidence can never overwrite proof or create an
|
|
807
1141
|
outgoing echo.
|
|
808
1142
|
|
|
809
|
-
44. **One Detect job
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
no
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
reason: old and new addresses must reconcile in one identity pass.
|
|
840
|
-
Git's transient lock files (`index.lock`, `HEAD.lock`, ref locks) are
|
|
841
|
-
settlement evidence, not repository state: while a named lock still
|
|
842
|
-
exists, that root remains unsettled and retries without inspecting Git or
|
|
843
|
-
reading the worktree. Once the lock disappears, Detect captures Card +
|
|
844
|
-
Checkpoint once even if the OS emitted no second filename callback. Shell's
|
|
1143
|
+
44. **One Detect job owns finite original Watch cutoffs.** A pass settles
|
|
1144
|
+
only the generations it froze before reading truth. Later notifications
|
|
1145
|
+
remain pending even when they arrive during a yielding walk. Named work
|
|
1146
|
+
uses its closed dependency scope; identity ambiguity, lost attribution or
|
|
1147
|
+
coverage recovery can require a complete materialization domain. That
|
|
1148
|
+
cohort admits and settles only as a whole. Independent periodic freshness
|
|
1149
|
+
is a separate reason to examine silent roots, never a fabricated native
|
|
1150
|
+
notification. An explicit flush retains its original completion boundary
|
|
1151
|
+
across older in-flight work and later recurrence. No caller waits for the
|
|
1152
|
+
operating system to become globally silent.
|
|
1153
|
+
|
|
1154
|
+
45. **Detect scope follows its proof dependencies.** Shell holds one
|
|
1155
|
+
prepared SQLite owner for Detect. A qualified named observation uses
|
|
1156
|
+
indexed identity, original parent/sibling context, physical witnesses and
|
|
1157
|
+
changed bytes. It widens when those facts cannot close attribution; an
|
|
1158
|
+
edit through a vanished alias reaches the object's remaining names through
|
|
1159
|
+
the object native evidence saw, even when no row ever occupied that path,
|
|
1160
|
+
and widens only when that object is unknown. Old and new addresses reconcile
|
|
1161
|
+
under the same complete identity law. Ordinary structural changes still
|
|
1162
|
+
use broad reconciliation; constant-time named work is not a current claim.
|
|
1163
|
+
Git lock filenames (`index.lock`, `HEAD.lock`, ref locks) are notices,
|
|
1164
|
+
not repository state or proof that reading is unsafe. Detect reads the
|
|
1165
|
+
committed index and current physical bytes and closes their normal source
|
|
1166
|
+
witnesses even while a lock exists. A lock says only when a rung lane
|
|
1167
|
+
reads: a writer lock younger than 750 ms (the one-second Git budget less
|
|
1168
|
+
an ordinary read's 250 ms) holds its repository as moving ground until the
|
|
1169
|
+
lock's release rings or the lock stops holding, and the held lane parks
|
|
1170
|
+
for exactly that deadline. Moving evidence without a known deadline
|
|
1171
|
+
retries after 250 ms. A stale lock therefore cannot prevent completion
|
|
1172
|
+
and is never deleted by observation. Shell's
|
|
845
1173
|
own background Git reads disable optional locks so observation never rings
|
|
846
1174
|
itself merely by refreshing the index.
|
|
847
1175
|
Nameless, invalid, startup, and
|
|
@@ -878,15 +1206,17 @@ writable state; format-1 and format-2 runtimes cannot recover after adoption.
|
|
|
878
1206
|
crash-recoverable snapshot publication has its own finite local table.
|
|
879
1207
|
Detect records never enter it, and snapshot rows never enter the entity
|
|
880
1208
|
outbox. The superseded mixed mutation journal does not remain as a third
|
|
881
|
-
queue or compatibility path.
|
|
1209
|
+
queue or compatibility path. Each row owns exactly one declaration, named
|
|
1210
|
+
by its workspace, and has exactly three meanings.
|
|
882
1211
|
`pending` and unsubmitted is a local publication intent the authority has
|
|
883
1212
|
never seen; if its captured ground moves it may be deleted and re-derived,
|
|
884
|
-
and a newer
|
|
885
|
-
has an unknown authority outcome — the same mutation id
|
|
886
|
-
|
|
887
|
-
acknowledgement lost, and nothing may supersede
|
|
888
|
-
authority conclusively refused that mutation; it
|
|
889
|
-
|
|
1213
|
+
and a newer declaration of the same workspace may supersede it. `pending`
|
|
1214
|
+
and submitted has an unknown authority outcome — the same mutation id
|
|
1215
|
+
retries before any lookup reads the head, because it may already be
|
|
1216
|
+
accepted with only the acknowledgement lost, and nothing may supersede
|
|
1217
|
+
it. `rejected` means the authority conclusively refused that mutation; it
|
|
1218
|
+
is never replayed and the next Register of that workspace folds its
|
|
1219
|
+
declaration again beside a new row, transactionally (last write wins).
|
|
890
1220
|
The submitted boundary is durable before the first commit frame leaves.
|
|
891
1221
|
A permanent refusal therefore cannot wedge Register, stale local capture
|
|
892
1222
|
cannot publish old bytes, and an unacknowledged acceptance always recovers
|
|
@@ -968,9 +1298,12 @@ writable state; format-1 and format-2 runtimes cannot recover after adoption.
|
|
|
968
1298
|
result, replay, or immutable cargo remains a real local change. Watch stays
|
|
969
1299
|
active throughout, and its Apply-created ring settles to notebook equality
|
|
970
1300
|
without an outgoing echo. The Inbox may know cloud-only entities that this
|
|
971
|
-
machine
|
|
972
|
-
|
|
973
|
-
|
|
1301
|
+
machine has not selected to materialize. Materialization selection is
|
|
1302
|
+
distinct from `.amalgmignore`: that policy selects what this machine
|
|
1303
|
+
shares, from every declaration on, and never filters cold download or
|
|
1304
|
+
incoming Apply. Detect observes ignored ground like any other; sharing
|
|
1305
|
+
holds an ignored identity at its last shared result. Incoming eligibility
|
|
1306
|
+
follows materialization selection alone.
|
|
974
1307
|
|
|
975
1308
|
54. **Repository Apply is Card + Checkpoint + identity as one result.** Shell
|
|
976
1309
|
imports the immutable Git transport chain, materializes Card and
|
|
@@ -1009,10 +1342,16 @@ writable state; format-1 and format-2 runtimes cannot recover after adoption.
|
|
|
1009
1342
|
rows as the prior materialization: an accepted identity map may relocate
|
|
1010
1343
|
the same UUID into repository territory, keeps the prior source privately
|
|
1011
1344
|
recoverable through Verify, then projects the new address transactionally.
|
|
1012
|
-
Apply observes Card + Checkpoint
|
|
1013
|
-
a Git pack merely to prove equality.
|
|
1014
|
-
|
|
1015
|
-
|
|
1345
|
+
Apply observes Card + Checkpoint for each guard moment and never builds
|
|
1346
|
+
a Git pack merely to prove equality. A new observation returns with its
|
|
1347
|
+
complete source proof closed; reuse revalidates it at the later boundary.
|
|
1348
|
+
The native inventory scan owns its before/after source checks, without an
|
|
1349
|
+
immediate duplicate composite check. Address ownership excludes competing
|
|
1350
|
+
Amalgm effects, not outside editors: Verify reads fresh physical evidence
|
|
1351
|
+
after reveal. The host yields before guards and fresh Verify so completed
|
|
1352
|
+
phases service Watch and transport; it inserts no scheduling gap between
|
|
1353
|
+
a final guard and reveal. This does not bound a single synchronous effect.
|
|
1354
|
+
A visible repository rewrite carries
|
|
1016
1355
|
`.git/amalgm-reveal` from its first Git mutation until exact Verify; Detect
|
|
1017
1356
|
treats that marker as unsettled private Apply ground, and restart resumes the
|
|
1018
1357
|
same durable intent before the marker is removed. Incremental materialization
|
|
@@ -1064,8 +1403,13 @@ writable state; format-1 and format-2 runtimes cannot recover after adoption.
|
|
|
1064
1403
|
at or below `N` are retained history, never filesystem work, and only
|
|
1065
1404
|
later records may Apply. When publication folds that tail, final ancestry
|
|
1066
1405
|
in the complete prefix places every result: a container created after the
|
|
1067
|
-
snapshot can own later children, and a
|
|
1068
|
-
old
|
|
1406
|
+
snapshot can own later children, and a result whose final ancestry lies in
|
|
1407
|
+
another root leaves its old root's pages, so no UUID is filed in two roots;
|
|
1408
|
+
old snapshot membership alone never chooses the result's root. That
|
|
1409
|
+
placement serves an enclosing Register's re-rooting; it is not identity
|
|
1410
|
+
continuity. Identity is root-local, no producer emits a same-UUID record
|
|
1411
|
+
across independently materialized roots, and such a record is unsupported:
|
|
1412
|
+
the fold does not carry its subtree into the other root. The settled
|
|
1069
1413
|
fold passes through the repository parcel projection exactly as publication
|
|
1070
1414
|
does: a tail that turns a container into a repository retires that
|
|
1071
1415
|
container's snapshot children into its parcel, and a tail that turns a
|
|
@@ -1085,8 +1429,9 @@ writable state; format-1 and format-2 runtimes cannot recover after adoption.
|
|
|
1085
1429
|
head operation plus the changed pages needed to replay that publication;
|
|
1086
1430
|
it never writes a second whole-registry snapshot into SQLite or rebuilds
|
|
1087
1431
|
roots Live did not select. A submitted intent keeps its mutation identity
|
|
1088
|
-
across restart
|
|
1089
|
-
|
|
1432
|
+
across restart. A journal in any earlier shape names no declaration: an
|
|
1433
|
+
empty one is recreated, and a non-empty one refuses to open rather than
|
|
1434
|
+
drop an unknown authority outcome.
|
|
1090
1435
|
|
|
1091
1436
|
60. **Runtime binding is proved, never inferred.** A platform adapter adopts
|
|
1092
1437
|
an existing runtime only when Shell's published loopback address answers
|
|
@@ -1244,8 +1589,14 @@ writable state; format-1 and format-2 runtimes cannot recover after adoption.
|
|
|
1244
1589
|
Toolbox loadout, and Chat prepares that exact immutable agent revision
|
|
1245
1590
|
and tool deployment.
|
|
1246
1591
|
|
|
1247
|
-
73. **Git host capture distinguishes moving state from durable conflicts.**
|
|
1248
|
-
|
|
1592
|
+
73. **Git host capture distinguishes moving state from durable conflicts.**
|
|
1593
|
+
Git administrative storage does not identify its checkout owner. Detect
|
|
1594
|
+
may settle a storage notice only after every affected enrolled checkout
|
|
1595
|
+
is examined or remains explicitly pending. A named single-consumer result
|
|
1596
|
+
closes the complete original binding and exclusion proof at Record.
|
|
1597
|
+
|
|
1598
|
+
Changed native source evidence and Amalgm's own incomplete reveal refuse
|
|
1599
|
+
capture; the mere existence of a Git lock does not. A stable
|
|
1249
1600
|
unfinished merge is portable Checkpoint truth: Shell captures its
|
|
1250
1601
|
unmerged stages, worktree conflict bytes, and merge continuation through
|
|
1251
1602
|
Live's one repository contract, and restores ordinary stages only after
|
|
@@ -1256,6 +1607,30 @@ writable state; format-1 and format-2 runtimes cannot recover after adoption.
|
|
|
1256
1607
|
by the current contract and refuses explicitly rather than being mistaken
|
|
1257
1608
|
for transient work or flattened into a clean stage-zero entry.
|
|
1258
1609
|
|
|
1610
|
+
Scheduling never extends source evidence. A suspended walk retains its
|
|
1611
|
+
physical identity basis, rechecks it before repository reuse or capture,
|
|
1612
|
+
and closes all participating source proofs at Record admission. Every
|
|
1613
|
+
examined result carries that proof; an unexamined result authorizes no
|
|
1614
|
+
writes. All Git dependencies precede the final physical sweep, and parent
|
|
1615
|
+
witnesses close after their descendants. This is a bounded source check,
|
|
1616
|
+
not an atomic filesystem snapshot or a no-traversal guarantee. Retained
|
|
1617
|
+
validators own witnesses rather than captured content buffers. Inspection
|
|
1618
|
+
fingerprints working files through the shared bounded reader; it never
|
|
1619
|
+
allocates file-sized content that it does not consume. A changed
|
|
1620
|
+
basis retries the observation without persisting its stale associations.
|
|
1621
|
+
A native-index collection is unclosed until its owning observation checks
|
|
1622
|
+
the original semantic binding, index meaning and fresh untracked namespace
|
|
1623
|
+
together. Internal inventory reads keep local invocation/path and file
|
|
1624
|
+
checks; one semantic bracket closes each public result and each later reuse.
|
|
1625
|
+
Physical and ownership witnesses close after the last Git subprocess.
|
|
1626
|
+
Neither returned buffers nor a caller's mutable scope may alter retained
|
|
1627
|
+
evidence. No successful close is cached across an admission boundary.
|
|
1628
|
+
A captured binding path disappearing or becoming obstructed is source
|
|
1629
|
+
change and retains its original cause; access and I/O failures stay faults.
|
|
1630
|
+
Private Checkpoint preparation proves package contents; the installer still
|
|
1631
|
+
checks current independent repository boundaries after preparation and before
|
|
1632
|
+
changing receiver objects, metadata or files.
|
|
1633
|
+
|
|
1259
1634
|
74. **Same-slot records keep identity and derive distinct disk addresses.**
|
|
1260
1635
|
Shell never rewrites a portable name to settle concurrent identities.
|
|
1261
1636
|
Cold materialization and Apply derive the same UUID-ordered suffixes from
|
|
@@ -1265,6 +1640,18 @@ writable state; format-1 and format-2 runtimes cannot recover after adoption.
|
|
|
1265
1640
|
destination cone, with row addresses committed before disk movement so a
|
|
1266
1641
|
crash can only re-prove the same portable identities.
|
|
1267
1642
|
|
|
1643
|
+
75. **Ground storage has one initializer and one visible generation per root.**
|
|
1644
|
+
A ground file's migration and its process epoch run once per file per
|
|
1645
|
+
process, on a bootstrap thread under one owner, never on the main thread.
|
|
1646
|
+
The outcome is known only after that thread exits and its committed result
|
|
1647
|
+
is confirmed. Every opener requires that confirmation, and a failed start
|
|
1648
|
+
records nothing. Both inventories are read through read-only views over
|
|
1649
|
+
`(uuid, generation)` storage; `ground_roots` names each root's one visible
|
|
1650
|
+
generation, and writes touch only that generation. A flat file converts in
|
|
1651
|
+
one transaction that proves the views reproduce it exactly, or it stays as
|
|
1652
|
+
it was. The qualified profile gathers no planner statistics, but
|
|
1653
|
+
statistics already present are kept, never treated as corruption.
|
|
1654
|
+
|
|
1268
1655
|
## Relationship to amalgm-engine
|
|
1269
1656
|
|
|
1270
1657
|
Stage 1 cut the bricks out of the engine. Stage 2 proves them here, composed.
|
|
@@ -1275,3 +1662,130 @@ Automations hosted independently and claimed by its target Shell. The Engine
|
|
|
1275
1662
|
`https://automations.amalgm.ai/e/<capability>` and never depend on the target
|
|
1276
1663
|
machine being online. Later services cross the same parity gate without
|
|
1277
1664
|
creating a second runtime for anything already released.
|
|
1665
|
+
|
|
1666
|
+
## Ongoing Files reconciliation boundaries
|
|
1667
|
+
|
|
1668
|
+
The complete repository payload combines Git state and the member UUID map;
|
|
1669
|
+
its hash is separate from the incremental package hash. Register, cold transfer,
|
|
1670
|
+
Add and Watch setup retain their existing journeys. Their shared entity rows
|
|
1671
|
+
use that complete payload hash. Construct product adapters and the installed
|
|
1672
|
+
pause/resume switch keep their existing responsibilities.
|
|
1673
|
+
|
|
1674
|
+
The Git effect adapter observes private versus common Git storage. Ongoing
|
|
1675
|
+
Apply requires independent checkout storage; shared worktrees and unsupported
|
|
1676
|
+
unfinished Git continuations are named capability waits. The enclosing
|
|
1677
|
+
repository cannot remove an independently materialized nested repository's
|
|
1678
|
+
identity. Its own accepted move or type change must satisfy that prerequisite.
|
|
1679
|
+
Live's existing Apply coordinator owns the wait and wake-up; Shell supplies
|
|
1680
|
+
physical evidence and reports the prerequisite through Files stage diagnostics.
|
|
1681
|
+
|
|
1682
|
+
Git history export uses the captured object format and shallow boundary, and
|
|
1683
|
+
packs exactly what the receiver lacks, as upload-pack does. The receiver holds
|
|
1684
|
+
each previous tip's closure under the horizon it received, so those tips
|
|
1685
|
+
exclude history even when the boundary changed. A boundary the new horizon
|
|
1686
|
+
moved past (Git's unshallow) is a commit the receiver holds, if at all,
|
|
1687
|
+
without its parents: each one this state reaches wants its parents, so the
|
|
1688
|
+
history newly exposed beneath it travels, and each one the receiver holds is
|
|
1689
|
+
an edge, so its tree never travels again. Patch operations are read from machine patch headers, never from a
|
|
1690
|
+
human summary where filename bytes can resemble instructions.
|
|
1691
|
+
|
|
1692
|
+
### Notification-independent observation
|
|
1693
|
+
|
|
1694
|
+
Active Files must eventually notice persistent local changes even when native
|
|
1695
|
+
Watch is silent. Native36 and its independent raw-native complete-ground control
|
|
1696
|
+
show missed equal-length writes through a held descriptor. Healthy handles and
|
|
1697
|
+
an empty notification backlog are not physical freshness. The Files host
|
|
1698
|
+
therefore runs a metadata maintenance sweep (`detection/maintenance-sweep.ts`),
|
|
1699
|
+
paused with the Files host. One visit at a time compares a Watch root's
|
|
1700
|
+
metadata with O and reads no bytes; each difference becomes a request in
|
|
1701
|
+
Live's maintenance ledger that the ordinary scoped lanes serve, and the sweep
|
|
1702
|
+
writes no row or Record. A receipt proves the comparison completed and its
|
|
1703
|
+
work was handled, never a byte reread. Visits follow cadence C: an owner's
|
|
1704
|
+
next visit is due one freshly drawn interval, one hour times uniform
|
|
1705
|
+
[0.75, 1.25), after its last. That is a configured inter-visit interval, not a
|
|
1706
|
+
mutation→Record bound; Watch's loss evidence still suspects its root
|
|
1707
|
+
immediately, meaning immediate responsibility and scheduling, not single-pass
|
|
1708
|
+
completion. Foreground work comes first, never forever: the longest-waiting
|
|
1709
|
+
due owner goes first, and a root already owed a complete proof defers its
|
|
1710
|
+
visit by at most 10 s. `UserGroundHost.requestVisit` asks for one visit that
|
|
1711
|
+
begins after the request and settles once the lanes discharged what it found
|
|
1712
|
+
through Detect → Record, or with a typed reason it cannot (`not-ready`,
|
|
1713
|
+
`removed`, `stopped`, `unreadable`); it jumps the schedule within the one
|
|
1714
|
+
slot and is never a content reread. Apply-owned ground is a gap. An empty
|
|
1715
|
+
binding set has no owner. Native notices
|
|
1716
|
+
keep their narrow fast path, and a later visit cannot revoke a completed
|
|
1717
|
+
finite boundary. One frozen native batch receives service, including one
|
|
1718
|
+
necessary widening to the complete domain. That widening is the
|
|
1719
|
+
invocation's only immediate retry. It freezes the wider cutoff before
|
|
1720
|
+
releasing narrow leases, then yields: the complete examination starts in its
|
|
1721
|
+
own dispatcher activation and reads a new basis over the wider scope. Later
|
|
1722
|
+
notices retain their own cutoffs. Failure, deferral and repeated widening
|
|
1723
|
+
cannot replenish foreground priority. Every examination may reuse proven
|
|
1724
|
+
content: a leaf is reused only while its signature is unchanged and both its
|
|
1725
|
+
times precede the boundary of a content clock stamped on the root's own
|
|
1726
|
+
filesystem in `.amalgm/content-clock` before the reads (`content-clock.ts`).
|
|
1727
|
+
The boundary is the stamp less its profile's margin; a time with no
|
|
1728
|
+
subsecond part stands for its whole second. A racy leaf is reread; only that
|
|
1729
|
+
reread clears it. A stamp behind the root's previous one, or under another
|
|
1730
|
+
profile than the previous stamp names, retires every proof under the root;
|
|
1731
|
+
a conclusion drawn before that retirement at, above or beneath the root fails
|
|
1732
|
+
its admission and is read again, and a unit that consumed an identity
|
|
1733
|
+
discovery reads and stands on that discovery's whole scope.
|
|
1734
|
+
Directory listings close on the same rule: a racy listing names no complete
|
|
1735
|
+
membership until a fresh listing under a later stamp, and only filesystems
|
|
1736
|
+
`ground-profile.ts` names qualify at all. A listing no stamp can qualify
|
|
1737
|
+
closes only when a fresh listing taken after the whole walk names exactly
|
|
1738
|
+
what the walk listed while the directory held still on both sides; only an
|
|
1739
|
+
entry moved and moved back across both listings inside its directories'
|
|
1740
|
+
clock ticks escapes that, and each such move is a later Watch generation.
|
|
1741
|
+
The control tree carries a `.gitignore` of `*`, written once per root per
|
|
1742
|
+
process when absent or different, so a registered repository's Git status
|
|
1743
|
+
never shows it. Ground without a qualified clock (another device, a root that
|
|
1744
|
+
cannot hold a stamp, a clock that went backwards) is read by every
|
|
1745
|
+
examination and closes each listing by reading it again: it loses shortcuts,
|
|
1746
|
+
never conclusions. Qualifying further filesystems, NTFS and ReFS among them,
|
|
1747
|
+
is unfinished.
|
|
1748
|
+
A write through a writable `MAP_SHARED` mapping can change bytes while the
|
|
1749
|
+
signature stays equal, through flush, unmap and fsync: that mapped-write
|
|
1750
|
+
limitation is outside the metadata-only guarantee, and a faster stat tier
|
|
1751
|
+
would not reveal it.
|
|
1752
|
+
No lane preempts a complete
|
|
1753
|
+
examination; only shutdown stops it. Detect leases hold no ground, so Apply
|
|
1754
|
+
may reveal while collection reads. Admission runs per unit in bounded batches
|
|
1755
|
+
and yields between them. Participating rails dispatch at most one ready work
|
|
1756
|
+
chunk per dispatcher activation and return to the event loop before
|
|
1757
|
+
dispatching another. Asynchronous operations do not occupy the dispatcher
|
|
1758
|
+
while waiting. The participating rails are Detect, Send, Receive, Apply and
|
|
1759
|
+
cache maintenance (`turns.ts`): each Detect stage, network answer, download
|
|
1760
|
+
and capture-thread reply resumes in its own activation. The dispatcher
|
|
1761
|
+
controls participating application continuations. It does not control all
|
|
1762
|
+
work in a Node iteration. A long named or routing preparation continues past
|
|
1763
|
+
an already-valid boundary (between names, between collection and
|
|
1764
|
+
preparation, after a retained snapshot) only within its activation's budget;
|
|
1765
|
+
admission's basis check, writes and commit, and an assessment's install with
|
|
1766
|
+
its cutoff bookkeeping, are never split. A committed Record is an immutable
|
|
1767
|
+
fact: finalizing its assessment and draining the next rail start in later
|
|
1768
|
+
activations, and recheck what they publish. Each unit's
|
|
1769
|
+
physical closure, binding, SQL-revision and source proofs close together in
|
|
1770
|
+
its own transaction. A unit that fails them is left out and retried by timer
|
|
1771
|
+
while the others admit. Unreadable or
|
|
1772
|
+
Apply-owned ground is a scoped gap, never absence: it defers only the units
|
|
1773
|
+
that need its facts, withholds the complete receipt, and never voids the other
|
|
1774
|
+
admissions of the same domain. A protected attempt remains subject to real
|
|
1775
|
+
source/coverage failures. This scheduling bound does not claim
|
|
1776
|
+
short tail latency: blocking Git calls and complete closing cost remain measured
|
|
1777
|
+
limitations. Register, Add and watcher placement retain
|
|
1778
|
+
their journeys. Integrated correctness and cadence/service-cost qualification
|
|
1779
|
+
are pending; this setting grants no performance pass.
|
|
1780
|
+
|
|
1781
|
+
Fresh observation reads mutable content without copying unchanged files into
|
|
1782
|
+
the cache. Only selected new content is sealed before Record, against the same
|
|
1783
|
+
original physical proof. Cache existence or size alone is never content proof.
|
|
1784
|
+
Source reads refuse special-file substitutions without waiting for another
|
|
1785
|
+
process, and release every owned resource even when another cleanup fails.
|
|
1786
|
+
Git parcel reuse requires equal fresh worktree and Card evidence. The Card's
|
|
1787
|
+
own stash reader supplies stash evidence; conventional reflog filenames cannot
|
|
1788
|
+
stand in for Git's semantic answer. Effective configuration and stash reads
|
|
1789
|
+
close before their original physical prerequisites. Internal Git owns its
|
|
1790
|
+
piped output settings, so an interactive display preference cannot alter its
|
|
1791
|
+
storage eligibility; unrepresented Git inputs still require full capture.
|