agentera 3.0.0-dev.25 → 3.0.0-dev.26
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/README.md +16 -20
- package/bundle/CHANGELOG.md +15 -25
- package/bundle/README.md +13 -34
- package/bundle/UPGRADE.md +71 -165
- package/bundle/references/adapters/package-manifest-interface-model.yaml +40 -241
- package/bundle/references/adapters/package-registry.yaml +0 -145
- package/bundle/references/adapters/package-surface-characterization.md +13 -38
- package/bundle/references/adapters/runtime-lifecycle-adapters.yaml +5 -219
- package/bundle/references/adapters/runtime-lifecycle-authority.yaml +2 -29
- package/bundle/references/adapters/runtime-lifecycle-operation-contract.yaml +1 -1
- package/bundle/references/artifacts/state-storage-authority.yaml +43 -447
- package/bundle/references/cli/agent-ready-state-contract.yaml +9 -9
- package/bundle/references/cli/app-lifecycle-vocabulary.yaml +3 -4
- package/bundle/references/cli/bundle-skill-vocabulary.yaml +9 -18
- package/bundle/references/cli/capability-tool-classification.yaml +2 -2
- package/bundle/references/cli/prime-consumer-compatibility.yaml +28 -98
- package/bundle/references/cli/routing-execution-vocabulary.yaml +4 -22
- package/bundle/references/cli/upgrade-repair-wording.md +8 -28
- package/bundle/references/cli/v3-handoff-manifest.schema.yaml +2 -3
- package/bundle/references/cli/vocabulary.md +18 -23
- package/bundle/references/meta/documentation-inventory.md +1 -1
- package/bundle/skills/agentera/schemas/artifacts/docs.yaml +3 -11
- package/bundle/skills/agentera/schemas/artifacts/plan.yaml +1 -1
- package/dist/cli/capabilityContext/bespoke.js +8 -2
- package/dist/cli/capabilityContext/bespoke.js.map +1 -1
- package/dist/cli/capabilityContext/closeout.js +3 -3
- package/dist/cli/capabilityContext/closeout.js.map +1 -1
- package/dist/cli/capabilityContext/evidence.js +52 -40
- package/dist/cli/capabilityContext/evidence.js.map +1 -1
- package/dist/cli/capabilityContext/startup.js +1 -1
- package/dist/cli/capabilityContext/startup.js.map +1 -1
- package/dist/cli/commands/doctor.js +6 -64
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/durability.js +12 -48
- package/dist/cli/commands/durability.js.map +1 -1
- package/dist/cli/commands/prime/briefOrientation.js +2 -19
- package/dist/cli/commands/prime/briefOrientation.js.map +1 -1
- package/dist/cli/commands/prime/bundleStatus.js +8 -2
- package/dist/cli/commands/prime/bundleStatus.js.map +1 -1
- package/dist/cli/commands/prime/collectEntityOrientation.js +27 -14
- package/dist/cli/commands/prime/collectEntityOrientation.js.map +1 -1
- package/dist/cli/commands/prime/collectOrientationState.js +31 -52
- package/dist/cli/commands/prime/collectOrientationState.js.map +1 -1
- package/dist/cli/commands/prime/orientationOutput.js +3 -11
- package/dist/cli/commands/prime/orientationOutput.js.map +1 -1
- package/dist/cli/commands/prime.js +0 -5
- package/dist/cli/commands/prime.js.map +1 -1
- package/dist/cli/commands/query.js +17 -49
- package/dist/cli/commands/query.js.map +1 -1
- package/dist/cli/commands/schema.js +19 -78
- package/dist/cli/commands/schema.js.map +1 -1
- package/dist/cli/commands/state/decisions.js +11 -57
- package/dist/cli/commands/state/decisions.js.map +1 -1
- package/dist/cli/commands/state/docs.js +56 -120
- package/dist/cli/commands/state/docs.js.map +1 -1
- package/dist/cli/commands/state/experimentRecords.js +22 -121
- package/dist/cli/commands/state/experimentRecords.js.map +1 -1
- package/dist/cli/commands/state/experiments.js +9 -75
- package/dist/cli/commands/state/experiments.js.map +1 -1
- package/dist/cli/commands/state/get.js +62 -143
- package/dist/cli/commands/state/get.js.map +1 -1
- package/dist/cli/commands/state/health.js +9 -123
- package/dist/cli/commands/state/health.js.map +1 -1
- package/dist/cli/commands/state/index.js +2 -2
- package/dist/cli/commands/state/index.js.map +1 -1
- package/dist/cli/commands/state/list.js +20 -36
- package/dist/cli/commands/state/list.js.map +1 -1
- package/dist/cli/commands/state/objective.js +19 -86
- package/dist/cli/commands/state/objective.js.map +1 -1
- package/dist/cli/commands/state/plan.js +9 -388
- package/dist/cli/commands/state/plan.js.map +1 -1
- package/dist/cli/commands/state/planTasks.js +58 -93
- package/dist/cli/commands/state/planTasks.js.map +1 -1
- package/dist/cli/commands/state/plans.js +13 -40
- package/dist/cli/commands/state/plans.js.map +1 -1
- package/dist/cli/commands/state/progress.js +10 -55
- package/dist/cli/commands/state/progress.js.map +1 -1
- package/dist/cli/commands/state/todo.js +24 -133
- package/dist/cli/commands/state/todo.js.map +1 -1
- package/dist/cli/commands/state/write.js +11 -33
- package/dist/cli/commands/state/write.js.map +1 -1
- package/dist/cli/commands/upgrade.js +48 -18
- package/dist/cli/commands/upgrade.js.map +1 -1
- package/dist/cli/commands/upgradeVerify.js +21 -15
- package/dist/cli/commands/upgradeVerify.js.map +1 -1
- package/dist/cli/commands/validate.js +1 -9
- package/dist/cli/commands/validate.js.map +1 -1
- package/dist/cli/dispatch/check.js +5 -12
- package/dist/cli/dispatch/check.js.map +1 -1
- package/dist/cli/dispatch/index.js +30 -29
- package/dist/cli/dispatch/index.js.map +1 -1
- package/dist/cli/dispatch/lifecycle.js +23 -40
- package/dist/cli/dispatch/lifecycle.js.map +1 -1
- package/dist/cli/help.js +20 -100
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/migrationRequired.js +22 -19
- package/dist/cli/migrationRequired.js.map +1 -1
- package/dist/cli/orientation/attention.js +1 -97
- package/dist/cli/orientation/attention.js.map +1 -1
- package/dist/cli/stateQuery.js +1 -2
- package/dist/cli/stateQuery.js.map +1 -1
- package/dist/core/skillIdentity.js +24 -0
- package/dist/core/skillIdentity.js.map +1 -0
- package/dist/hooks/common.js +1 -1
- package/dist/hooks/common.js.map +1 -1
- package/dist/hooks/compaction/status.js +2 -1
- package/dist/hooks/compaction/status.js.map +1 -1
- package/dist/hooks/cursorSessionStart.js +4 -25
- package/dist/hooks/cursorSessionStart.js.map +1 -1
- package/dist/hooks/projectHookInput.js +26 -0
- package/dist/hooks/projectHookInput.js.map +1 -0
- package/dist/hooks/sessionStart.js +23 -239
- package/dist/hooks/sessionStart.js.map +1 -1
- package/dist/hooks/sessionStop.js +4 -12
- package/dist/hooks/sessionStop.js.map +1 -1
- package/dist/hooks/validateArtifact/traversal.js +1 -1
- package/dist/hooks/validateArtifact/traversal.js.map +1 -1
- package/dist/registries/artifactRegistry.js +2 -1
- package/dist/registries/artifactRegistry.js.map +1 -1
- package/dist/registries/packageRegistry.js +57 -231
- package/dist/registries/packageRegistry.js.map +1 -1
- package/dist/release/releaseMetadata.js +1 -13
- package/dist/release/releaseMetadata.js.map +1 -1
- package/dist/runtime/lifecycleAdapterContract.js +4 -4
- package/dist/runtime/lifecycleAdapterContract.js.map +1 -1
- package/dist/runtime/lifecycleAdapters.js +14 -2
- package/dist/runtime/lifecycleAdapters.js.map +1 -1
- package/dist/runtime/lifecycleAuthority.js +5 -43
- package/dist/runtime/lifecycleAuthority.js.map +1 -1
- package/dist/runtime/lifecycleOperationContract.js +3 -2
- package/dist/runtime/lifecycleOperationContract.js.map +1 -1
- package/dist/runtime/lifecyclePublication.js +21 -0
- package/dist/runtime/lifecyclePublication.js.map +1 -1
- package/dist/setup/opencode.js +20 -12
- package/dist/setup/opencode.js.map +1 -1
- package/dist/setup/sharedSkill.js +46 -0
- package/dist/setup/sharedSkill.js.map +1 -0
- package/dist/setup/smokeChecks.js +16 -43
- package/dist/setup/smokeChecks.js.map +1 -1
- package/dist/state/decisionEntities.js +7 -4
- package/dist/state/decisionEntities.js.map +1 -1
- package/dist/state/durability.js +4 -240
- package/dist/state/durability.js.map +1 -1
- package/dist/state/entityCutover.js +90 -186
- package/dist/state/entityCutover.js.map +1 -1
- package/dist/state/entityStorage.js +27 -8
- package/dist/state/entityStorage.js.map +1 -1
- package/dist/state/healthEntities.js +7 -4
- package/dist/state/healthEntities.js.map +1 -1
- package/dist/state/objectiveExperimentEntities.js +7 -5
- package/dist/state/objectiveExperimentEntities.js.map +1 -1
- package/dist/state/planEntities.js +14 -10
- package/dist/state/planEntities.js.map +1 -1
- package/dist/state/progressEntities.js +4 -2
- package/dist/state/progressEntities.js.map +1 -1
- package/dist/state/startupProjection.js +3 -2
- package/dist/state/startupProjection.js.map +1 -1
- package/dist/state/stateMode.js +7 -0
- package/dist/state/stateMode.js.map +1 -1
- package/dist/state/todoDocsEntities.js +6 -4
- package/dist/state/todoDocsEntities.js.map +1 -1
- package/dist/state/write/explain.js +1 -9
- package/dist/state/write/explain.js.map +1 -1
- package/dist/state/write/transaction.js +22 -532
- package/dist/state/write/transaction.js.map +1 -1
- package/dist/upgrade/appContentRefresh.js +43 -28
- package/dist/upgrade/appContentRefresh.js.map +1 -1
- package/dist/upgrade/doctor.js +5 -1
- package/dist/upgrade/doctor.js.map +1 -1
- package/dist/upgrade/installedHooksRetirement.js +46 -39
- package/dist/upgrade/installedHooksRetirement.js.map +1 -1
- package/dist/upgrade/legacyAgentCleanup.js +132 -32
- package/dist/upgrade/legacyAgentCleanup.js.map +1 -1
- package/dist/upgrade/lifecycleUpgrade.js +65 -378
- package/dist/upgrade/lifecycleUpgrade.js.map +1 -1
- package/dist/upgrade/migrateArtifactsV2ToV3.js +151 -52
- package/dist/upgrade/migrateArtifactsV2ToV3.js.map +1 -1
- package/dist/upgrade/migrationPublication.js +123 -0
- package/dist/upgrade/migrationPublication.js.map +1 -0
- package/dist/upgrade/projectIntegration.js +46 -113
- package/dist/upgrade/projectIntegration.js.map +1 -1
- package/dist/upgrade/projectIntegrationDecision.js +6 -96
- package/dist/upgrade/projectIntegrationDecision.js.map +1 -1
- package/dist/upgrade/runtimeMigration.js +222 -402
- package/dist/upgrade/runtimeMigration.js.map +1 -1
- package/dist/upgrade/upgradeCommands.js +5 -4
- package/dist/upgrade/upgradeCommands.js.map +1 -1
- package/dist/upgrade/upgradeLock.js +73 -41
- package/dist/upgrade/upgradeLock.js.map +1 -1
- package/dist/upgrade/upgradeOrchestrator.js +91 -158
- package/dist/upgrade/upgradeOrchestrator.js.map +1 -1
- package/dist/upgrade/v3CapabilitySurface.js +2 -2
- package/dist/validate/appHomeContract.js +0 -4
- package/dist/validate/appHomeContract.js.map +1 -1
- package/package.json +7 -5
- package/bundle/.codex-plugin/plugin.json +0 -92
- package/bundle/.cursor/agents/agentera.md +0 -7
- package/bundle/.cursor/hooks.json +0 -32
- package/bundle/.cursor-plugin/plugin.json +0 -34
- package/bundle/.github/hooks/postToolUse.json +0 -9
- package/bundle/.github/hooks/preToolUse.json +0 -8
- package/bundle/.github/hooks/sessionEnd.json +0 -8
- package/bundle/.github/hooks/sessionStart.json +0 -8
- package/bundle/.github/plugin/plugin.json +0 -7
- package/bundle/.opencode/agents/agentera.md +0 -12
- package/bundle/.opencode/commands/agentera.md +0 -5
- package/bundle/.opencode/package.json +0 -31
- package/bundle/.opencode/plugins/agentera.js +0 -820
- package/bundle/agents/openai.yaml +0 -87
- package/bundle/hooks/codex-hooks.json +0 -31
- package/bundle/hooks/codex-plugin-hooks.json +0 -31
- package/bundle/plugin.json +0 -13
- package/bundle/references/adapters/cursor.md +0 -224
- package/bundle/references/adapters/opencode.md +0 -529
- package/bundle/references/adapters/runtime-adapter-characterization.md +0 -44
- package/bundle/references/adapters/runtime-adapter-interface-model.yaml +0 -200
- package/bundle/references/adapters/runtime-adapter-registry.yaml +0 -387
- package/bundle/references/adapters/runtime-feature-parity.md +0 -129
- package/dist/cli/commands/backfill.js +0 -231
- package/dist/cli/commands/backfill.js.map +0 -1
- package/dist/cli/commands/migrate.js +0 -681
- package/dist/cli/commands/migrate.js.map +0 -1
- package/dist/registries/runtimeAdapterRegistry.js +0 -324
- package/dist/registries/runtimeAdapterRegistry.js.map +0 -1
- package/dist/setup/copilot.js +0 -227
- package/dist/setup/copilot.js.map +0 -1
- package/dist/setup/cursor.js +0 -129
- package/dist/setup/cursor.js.map +0 -1
- package/dist/setup/cursorSurfaces.js +0 -67
- package/dist/setup/cursorSurfaces.js.map +0 -1
- package/dist/setup/doctor/core.js +0 -296
- package/dist/setup/doctor/core.js.map +0 -1
- package/dist/setup/doctor/diagnostics.js +0 -201
- package/dist/setup/doctor/diagnostics.js.map +0 -1
- package/dist/setup/doctor/opencode.js +0 -301
- package/dist/setup/doctor/opencode.js.map +0 -1
- package/dist/setup/doctor/report.js +0 -425
- package/dist/setup/doctor/report.js.map +0 -1
- package/dist/setup/doctor.js +0 -10
- package/dist/setup/doctor.js.map +0 -1
- package/dist/state/gitBackfill.js +0 -561
- package/dist/state/gitBackfill.js.map +0 -1
- package/dist/state/gitBackfillAuthority.js +0 -141
- package/dist/state/gitBackfillAuthority.js.map +0 -1
- package/dist/state/gitBackfillHistory.js +0 -278
- package/dist/state/gitBackfillHistory.js.map +0 -1
- package/dist/state/gitBackfillOutput.js +0 -209
- package/dist/state/gitBackfillOutput.js.map +0 -1
- package/dist/state/legacyMigration.js +0 -516
- package/dist/state/legacyMigration.js.map +0 -1
- package/dist/state/legacyMigrationParser.js +0 -489
- package/dist/state/legacyMigrationParser.js.map +0 -1
- package/dist/state/migrationAuthority.js +0 -413
- package/dist/state/migrationAuthority.js.map +0 -1
- package/dist/state/migrationEnrichment.js +0 -35
- package/dist/state/migrationEnrichment.js.map +0 -1
- package/dist/state/projectionRecovery.js +0 -458
- package/dist/state/projectionRecovery.js.map +0 -1
- package/dist/upgrade/migrateArtifactsV1ToV2.js +0 -568
- package/dist/upgrade/migrateArtifactsV1ToV2.js.map +0 -1
- package/dist/validate/lifecycleAdapters/legacyPythonParity.js +0 -93
- package/dist/validate/lifecycleAdapters/legacyPythonParity.js.map +0 -1
- package/dist/validate/lifecycleAdapters/lifecycleMain.js +0 -154
- package/dist/validate/lifecycleAdapters/lifecycleMain.js.map +0 -1
- package/dist/validate/lifecycleAdapters/nodeFormChecks.js +0 -481
- package/dist/validate/lifecycleAdapters/nodeFormChecks.js.map +0 -1
- package/dist/validate/lifecycleAdapters/shared.js +0 -198
- package/dist/validate/lifecycleAdapters/shared.js.map +0 -1
- package/dist/validate/lifecycleAdapters.js +0 -10
- package/dist/validate/lifecycleAdapters.js.map +0 -1
|
@@ -16,13 +16,11 @@ authority:
|
|
|
16
16
|
implementation_boundary: >-
|
|
17
17
|
Shared entity storage plus the progress, decisions, health, plan, objective,
|
|
18
18
|
experiment, TODO-item, and documentation-inventory family writers and retrieval,
|
|
19
|
-
plus one-way
|
|
19
|
+
plus one-way forward import, are implemented but activate entity authority only
|
|
20
20
|
from the durable cutover marker. The preserved
|
|
21
21
|
singleton families remain legacy files. The
|
|
22
|
-
current numbered archive and retrieval groups remain
|
|
23
|
-
|
|
24
|
-
surface declared by api.backfill remains a separate legacy repair operation
|
|
25
|
-
and is not the Decision 94 cutover.
|
|
22
|
+
current numbered archive and retrieval groups remain migration input while
|
|
23
|
+
that marker is absent; no independent legacy repair mutation remains.
|
|
26
24
|
|
|
27
25
|
entity_target:
|
|
28
26
|
status: progress_decisions_health_plan_objective_experiment_todo_and_docs_implemented_other_families_declared
|
|
@@ -452,7 +450,7 @@ entity_target:
|
|
|
452
450
|
- immutable historical prose and evidence, except structured references explicitly declared for rewrite
|
|
453
451
|
- genuinely singleton editorial artifacts added by an authority amendment
|
|
454
452
|
measurement_contract:
|
|
455
|
-
status:
|
|
453
|
+
status: implemented
|
|
456
454
|
environment: Linux, Node.js 22 or newer, one cold CLI process per sample
|
|
457
455
|
fixtures:
|
|
458
456
|
small: 100 valid entities distributed across every declared entity boundary
|
|
@@ -491,7 +489,7 @@ entity_target:
|
|
|
491
489
|
never truncate bytes, omit required identity, or fabricate detail.
|
|
492
490
|
|
|
493
491
|
entity_migration:
|
|
494
|
-
status:
|
|
492
|
+
status: one_way_forward_import_implemented
|
|
495
493
|
decision: 94
|
|
496
494
|
kind: single_full_upgrade_cutover
|
|
497
495
|
cutover_marker:
|
|
@@ -504,6 +502,12 @@ entity_migration:
|
|
|
504
502
|
invalid_behavior: fail_without_fallback
|
|
505
503
|
detection: read_only
|
|
506
504
|
publication_owner: development_channel_v2_to_v3_upgrade
|
|
505
|
+
selection: >-
|
|
506
|
+
Project state and CLI installation state are independent dimensions. A v3
|
|
507
|
+
CLI selects this cutover for recognized marker-absent v2 aggregate state
|
|
508
|
+
whether the CLI runs from a self-contained npm package or a source
|
|
509
|
+
checkout. Pending v1 Markdown state and marker-absent state with no
|
|
510
|
+
recognized v2 entity input are rejected with manual recovery instructions.
|
|
507
511
|
invocation:
|
|
508
512
|
explicit_apply: full_upgrade_yes_only
|
|
509
513
|
dry_run: optional_read_only_preview
|
|
@@ -515,9 +519,10 @@ entity_migration:
|
|
|
515
519
|
apply_command: >-
|
|
516
520
|
npx -y agentera@next upgrade --channel development --project "$PWD" --yes
|
|
517
521
|
apply_boundary: >-
|
|
518
|
-
Full upgrade serializes through the project writer lock,
|
|
519
|
-
|
|
520
|
-
|
|
522
|
+
Full upgrade serializes through the project writer lock, validates the
|
|
523
|
+
deterministic conversion, writes each missing canonical entity or accepts
|
|
524
|
+
an exact existing match, validates the complete graph, and writes the
|
|
525
|
+
authority marker last. There is no direct
|
|
521
526
|
entity apply, public operation ID, resume, rollback, or cross-major restore.
|
|
522
527
|
git_preflight:
|
|
523
528
|
required: true
|
|
@@ -542,20 +547,21 @@ entity_migration:
|
|
|
542
547
|
or additional cutover consent. Any --only apply is rejected at this
|
|
543
548
|
cross-major boundary.
|
|
544
549
|
interruption: >-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
missing targets from recomputed staging, validates the graph, and finishes
|
|
550
|
-
the marker forward. It never deletes canonical entities.
|
|
550
|
+
A rerun recomputes the deterministic conversion from unchanged Git-bound
|
|
551
|
+
source, accepts existing canonical targets only when their bytes match,
|
|
552
|
+
writes the first missing target, validates the complete graph, and finishes
|
|
553
|
+
the marker forward. It never deletes or replaces canonical entities.
|
|
551
554
|
completed: >-
|
|
552
555
|
A valid entity marker makes legacy authority permanently inactive.
|
|
553
556
|
Repeated upgrade validates current entity state and reports a no-op;
|
|
554
557
|
normal entity writes may evolve records without reopening cutover.
|
|
555
558
|
preflight: >-
|
|
556
559
|
Upgrade plans artifact normalization, entity readiness, runtime work,
|
|
557
|
-
and cleanup read-only before any selected apply function runs.
|
|
558
|
-
blocker prevents
|
|
560
|
+
and cleanup read-only before any selected apply function runs. A detect,
|
|
561
|
+
artifact, or entity blocker prevents entity publication and activation.
|
|
562
|
+
Runtime or cleanup blockers do not prevent valid entity activation; their
|
|
563
|
+
resources remain untouched and are reported after the marker as
|
|
564
|
+
action-required work.
|
|
559
565
|
phase_filters: >-
|
|
560
566
|
Every --only apply is invalid during a v2-to-v3 boundary. Read-only
|
|
561
567
|
filtered preview may remain available.
|
|
@@ -568,7 +574,7 @@ entity_migration:
|
|
|
568
574
|
Deterministic legacy plan lifecycle normalization is part of entity
|
|
569
575
|
projection during cutover. Upgrade retains the original legacy YAML as
|
|
570
576
|
source and recovery evidence instead of rewriting it first.
|
|
571
|
-
empty_state:
|
|
577
|
+
empty_state: unsupported_unknown_source_with_manual_handoff
|
|
572
578
|
existing_entity_state: validate_then_no_op
|
|
573
579
|
source_scope:
|
|
574
580
|
included_entities: entity_target.entities
|
|
@@ -614,8 +620,7 @@ entity_migration:
|
|
|
614
620
|
domain-separated SHA-256 of the complete source fingerprint and canonical
|
|
615
621
|
source key. This is allocation of a new opaque target candidate, not
|
|
616
622
|
reconstruction of a missing source ID. A collision is a blocker. Apply
|
|
617
|
-
|
|
618
|
-
bounded forward manifest before canonical publication.
|
|
623
|
+
preserves the deterministic mapping in each canonical target path.
|
|
619
624
|
preview_digest: >-
|
|
620
625
|
SHA-256 over canonical JSON of the complete unbounded inventory, proposed
|
|
621
626
|
mapping, authority-validated final envelope byte SHA-256 values,
|
|
@@ -626,7 +631,7 @@ entity_migration:
|
|
|
626
631
|
Before preview can be ready or produce an approvable digest, every proposed
|
|
627
632
|
final envelope, record, public field vocabulary, and relationship graph is
|
|
628
633
|
validated through the same authority-backed canonical target validator used
|
|
629
|
-
|
|
634
|
+
defensively by upgrade apply and forward retry. A target failure is a corrupt blocker tied
|
|
630
635
|
to its source identity and recovery action; preserved nonentity residues are
|
|
631
636
|
excluded from target validation and publication.
|
|
632
637
|
output:
|
|
@@ -656,9 +661,9 @@ entity_migration:
|
|
|
656
661
|
open no writer or upgrade lock and create no directory, temporary file,
|
|
657
662
|
mapping, snapshot, journal, cache, or state file.
|
|
658
663
|
binding: >-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
664
|
+
Before any apply effect, recompute the complete preview and require its
|
|
665
|
+
source fingerprint and preview digest to match the Git-pinned preparation.
|
|
666
|
+
A mismatch refuses every selected effect.
|
|
662
667
|
source_outcomes:
|
|
663
668
|
valid_full:
|
|
664
669
|
outcome: ready
|
|
@@ -692,30 +697,18 @@ entity_migration:
|
|
|
692
697
|
- silent dropping, deduplication, or winner selection
|
|
693
698
|
partial_cutover_success: forbidden
|
|
694
699
|
forward_state:
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
source_fields: [head, source_fingerprint, preview_digest]
|
|
701
|
-
target_fields: [path, sha256]
|
|
702
|
-
marker_fields: [path, sha256]
|
|
703
|
-
phases: [publishing_entities, entities_published]
|
|
704
|
-
forbidden_fields:
|
|
705
|
-
- operation_id
|
|
706
|
-
- migration_id
|
|
707
|
-
- snapshots
|
|
708
|
-
- source_bytes
|
|
709
|
-
- inode_receipts
|
|
710
|
-
- rollback_state
|
|
711
|
-
publication_order: staging_then_forward_manifest_then_entities_then_marker
|
|
700
|
+
persisted_recovery_state: none
|
|
701
|
+
publication_order: exact_or_missing_entities_then_graph_validation_then_marker
|
|
702
|
+
retry_rule: accept_exact_targets_and_continue_at_first_missing_path
|
|
703
|
+
divergent_target: stop_without_replacement_and_name_first_unresolved_path
|
|
704
|
+
forbidden_fields: [operation_id, migration_id, snapshots, source_bytes, inode_receipts, rollback_state]
|
|
712
705
|
historical_evidence: >-
|
|
713
706
|
Already committed .agentera/migrations content is inert and remains
|
|
714
707
|
byte-for-byte untouched. Read-only legacy manifest parsing is retained only
|
|
715
708
|
for public validation of entity markers created by the former cutover.
|
|
716
709
|
fault_test_hook: >-
|
|
717
710
|
Tests may set NODE_ENV=test and
|
|
718
|
-
AGENTERA_FAULT_INJECT_ENTITY_MIGRATION_AFTER_PHASE to one declared
|
|
711
|
+
AGENTERA_FAULT_INJECT_ENTITY_MIGRATION_AFTER_PHASE to one declared publication
|
|
719
712
|
phase. Other environments ignore the variable.
|
|
720
713
|
lifecycle:
|
|
721
714
|
- phase: inventory
|
|
@@ -727,12 +720,9 @@ entity_migration:
|
|
|
727
720
|
- phase: git_preflight
|
|
728
721
|
mutates: false
|
|
729
722
|
exit: project root, HEAD, clean checkout, source bytes, types, and modes match
|
|
730
|
-
- phase: stage_entities
|
|
731
|
-
mutates: true
|
|
732
|
-
exit: deterministic entity bytes and graph validate under the fixed staging path
|
|
733
723
|
- phase: publishing_entities
|
|
734
724
|
mutates: true
|
|
735
|
-
exit:
|
|
725
|
+
exit: every canonical target is an exact match or is published once
|
|
736
726
|
- phase: entities_published
|
|
737
727
|
mutates: false
|
|
738
728
|
exit: canonical source-to-target parity, uniqueness, ownership, relationships, and budgets pass
|
|
@@ -1623,406 +1613,12 @@ api:
|
|
|
1623
1613
|
deterministic: >-
|
|
1624
1614
|
With unchanged local files and reachable refs, repeated checks emit the
|
|
1625
1615
|
same ordered result and do not create state or contact a remote.
|
|
1626
|
-
|
|
1627
|
-
command:
|
|
1628
|
-
|
|
1629
|
-
|
|
1630
|
-
|
|
1631
|
-
|
|
1632
|
-
default_limit: 100
|
|
1633
|
-
maximum_limit: 100
|
|
1634
|
-
maximum_commits: 500
|
|
1635
|
-
maximum_history_bytes: 16777216
|
|
1636
|
-
supported_artifacts: [progress, decisions, health]
|
|
1637
|
-
reachable_refs: [HEAD, refs/heads, refs/tags]
|
|
1638
|
-
excluded_refs: [refs/remotes, custom_refs]
|
|
1639
|
-
apply_requires: [--apply, --force, --project PATH, --artifact ARTIFACT, --number N]
|
|
1640
|
-
status_values: [complete, degraded, blocked, unavailable]
|
|
1641
|
-
response:
|
|
1642
|
-
required_fields: [command, mode, status, project, read_only, remote_contact, head, scan, counts, active_projections_unchanged, active_projection_hashes, omitted, omitted_count, omission_reason, continuation, entries, diagnostics, source_contract]
|
|
1643
|
-
entry_fields: [entry_id, artifact_id, entry_number, commit, path, blob_id, content_hash, ambiguity_reason, eligible, reachable, provenance, operation, refusal]
|
|
1644
|
-
modes:
|
|
1645
|
-
inventory: >-
|
|
1646
|
-
The default read-only mode reports up to maximum_limit final rows after
|
|
1647
|
-
combining reachable and rewritten-history occurrences. Omitted rows
|
|
1648
|
-
carry explicit omission metadata; returned rows include commit, path,
|
|
1649
|
-
blob identity, stable entry ID, canonical content hash, and an explicit
|
|
1650
|
-
ambiguity reason.
|
|
1651
|
-
preview: >-
|
|
1652
|
-
--dry-run is read-only and shows proposed immutable archive bytes only
|
|
1653
|
-
for a returned exact unique candidate, together with every matching
|
|
1654
|
-
provenance.
|
|
1655
|
-
apply: >-
|
|
1656
|
-
--apply --force is the only mutation mode. It requires one project,
|
|
1657
|
-
artifact, and entry number. A prior --dry-run is optional. Apply
|
|
1658
|
-
independently revalidates the selected project, current HEAD, allowed
|
|
1659
|
-
ref reachability, candidate path/blob/content, and immutable archive
|
|
1660
|
-
target immediately before publication, and never overwrites conflicts.
|
|
1661
|
-
ambiguity_reasons:
|
|
1662
|
-
- none
|
|
1663
|
-
- conflicting_versions
|
|
1664
|
-
- shallow_history
|
|
1665
|
-
- history_rewritten
|
|
1666
|
-
- missing_history
|
|
1667
|
-
- corrupt_history
|
|
1668
|
-
- changed_head
|
|
1669
|
-
- scan_bounded
|
|
1670
|
-
- git_unavailable
|
|
1671
|
-
- immutable_conflict
|
|
1672
|
-
- candidate_changed
|
|
1673
|
-
- no_matching_pin
|
|
1674
|
-
guarantees:
|
|
1675
|
-
read_only_inventory_and_preview: true
|
|
1676
|
-
apply_requires_force: true
|
|
1677
|
-
preview_optional: true
|
|
1678
|
-
apply_revalidation: >-
|
|
1679
|
-
Apply repeats project, HEAD, allowed-ref reachability, candidate
|
|
1680
|
-
provenance/content, and immutable-target checks immediately before
|
|
1681
|
-
publication; a failed check preserves active projections and archives.
|
|
1682
|
-
remote_contact: forbidden
|
|
1683
|
-
custom_refs: forbidden
|
|
1684
|
-
commit_fields_in_archive_records: forbidden
|
|
1685
|
-
projection_writes: forbidden
|
|
1686
|
-
immutable_conflicts: refuse_without_overwrite
|
|
1687
|
-
retry: identical_publication_is_idempotent
|
|
1688
|
-
failure_projection_rule: active_projections_remain_byte_identical
|
|
1689
|
-
omission:
|
|
1690
|
-
fields: [omitted, omitted_count, omission_reason, continuation]
|
|
1691
|
-
complete_reason: none
|
|
1692
|
-
bounded_reason: result_limit
|
|
1693
|
-
continuation: >-
|
|
1694
|
-
No cursor is issued. Use --artifact ARTIFACT --number N to retrieve an
|
|
1695
|
-
omitted entry because --limit cannot exceed maximum_limit (100).
|
|
1696
|
-
traceability:
|
|
1697
|
-
provenance_fields: [commit, path, blob_id, entry_id, content_hash, reachable]
|
|
1698
|
-
archive_record_forbids: [commit, commit_hash, git_commit, git_ref]
|
|
1699
|
-
recovery: >-
|
|
1700
|
-
Resolve the reported ambiguity, unavailable Git state, changed candidate,
|
|
1701
|
-
or immutable conflict and retry the same exact selectors. A refused
|
|
1702
|
-
operation leaves active projections and existing archives unchanged;
|
|
1703
|
-
identical publication is an idempotent replay.
|
|
1704
|
-
migrate:
|
|
1705
|
-
namespace: agentera state migrate
|
|
1706
|
-
command: >-
|
|
1707
|
-
agentera state migrate [--project PATH] [--artifact ARTIFACT]
|
|
1708
|
-
[--number N] [--path PATH] [--limit N]
|
|
1709
|
-
[--dry-run|--apply --force] --format {text,json,yaml}
|
|
1710
|
-
purpose: >-
|
|
1711
|
-
Inventory bounded, project-local legacy state and define the only
|
|
1712
|
-
authority for a later non-Git migration apply. This surface does not
|
|
1713
|
-
infer missing records, contact Git, contact a remote, or remove legacy
|
|
1714
|
-
source files.
|
|
1715
|
-
implementation_boundary: >-
|
|
1716
|
-
The runtime owns bounded, project-local candidate inventory and the
|
|
1717
|
-
explicit archive, backup, projection, and mutation flow described here.
|
|
1718
|
-
Inventory never reads Git or writes archives, backups, or projections;
|
|
1719
|
-
migration remains independent of the optional Git backfill surface.
|
|
1720
|
-
formats: [text, json, yaml]
|
|
1721
|
-
default_limit: 20
|
|
1722
|
-
maximum_limit: 100
|
|
1723
|
-
supported_artifacts: [progress, decisions, health]
|
|
1724
|
-
selectors:
|
|
1725
|
-
project:
|
|
1726
|
-
flag: --project PATH
|
|
1727
|
-
default: current_working_directory
|
|
1728
|
-
resolution: >-
|
|
1729
|
-
Resolve the selected directory to a real project root before any
|
|
1730
|
-
candidate is considered. The project root is selected explicitly or
|
|
1731
|
-
is the caller's current working directory; AGENTERA_HOME, profile
|
|
1732
|
-
paths, docs.yaml overrides, and Git worktrees do not replace it.
|
|
1733
|
-
artifact:
|
|
1734
|
-
flag: --artifact ARTIFACT
|
|
1735
|
-
required_for_apply: true
|
|
1736
|
-
valid_values: [progress, decisions, health]
|
|
1737
|
-
number:
|
|
1738
|
-
flag: --number N
|
|
1739
|
-
pattern: '^[1-9][0-9]*$'
|
|
1740
|
-
required_with: --artifact
|
|
1741
|
-
meaning: exact positive legacy entry number; never a positional offset
|
|
1742
|
-
path:
|
|
1743
|
-
flag: --path PATH
|
|
1744
|
-
pattern: '^[A-Za-z0-9][A-Za-z0-9._-]{0,63}\.(md|yaml|yml)$'
|
|
1745
|
-
relative_to: selected_project_root
|
|
1746
|
-
required_for_custom_apply: true
|
|
1747
|
-
meaning: exact candidate path pin; inventory may omit it to enumerate candidates
|
|
1748
|
-
limit:
|
|
1749
|
-
flag: --limit N
|
|
1750
|
-
default: 20
|
|
1751
|
-
minimum: 1
|
|
1752
|
-
maximum: 100
|
|
1753
|
-
meaning: maximum returned candidate summaries, not a scan escape hatch
|
|
1754
|
-
format:
|
|
1755
|
-
flag: --format FORMAT
|
|
1756
|
-
valid_values: [text, json, yaml]
|
|
1757
|
-
modes:
|
|
1758
|
-
inventory:
|
|
1759
|
-
selector: default when neither --dry-run nor --apply is present
|
|
1760
|
-
read_only: true
|
|
1761
|
-
writes: forbidden
|
|
1762
|
-
preview:
|
|
1763
|
-
selector: --dry-run
|
|
1764
|
-
read_only: true
|
|
1765
|
-
writes: forbidden
|
|
1766
|
-
output: exact proposed archive, backup, and projection operations only for addressable candidates
|
|
1767
|
-
apply:
|
|
1768
|
-
selector: --apply --force
|
|
1769
|
-
read_only: false
|
|
1770
|
-
mutation_intent: explicit_apply_and_force
|
|
1771
|
-
selectors_required: [--artifact, --number]
|
|
1772
|
-
mutation: >-
|
|
1773
|
-
The runtime publishes only after revalidating the selected candidate,
|
|
1774
|
-
project boundary, backup identity, and immutable archive identity.
|
|
1775
|
-
invalid_combinations:
|
|
1776
|
-
- flags: [--apply, --dry-run]
|
|
1777
|
-
failure_class: invalid_selector
|
|
1778
|
-
message: --apply and --dry-run are mutually exclusive
|
|
1779
|
-
- flags: [--apply]
|
|
1780
|
-
requires: --force
|
|
1781
|
-
failure_class: invalid_selector
|
|
1782
|
-
message: --apply requires explicit --force intent
|
|
1783
|
-
- flags: [--force]
|
|
1784
|
-
requires: --apply
|
|
1785
|
-
failure_class: invalid_selector
|
|
1786
|
-
message: --force requires --apply
|
|
1787
|
-
inventory:
|
|
1788
|
-
project_local: true
|
|
1789
|
-
bounded_scan:
|
|
1790
|
-
roots:
|
|
1791
|
-
- path: .
|
|
1792
|
-
maximum_depth: 1
|
|
1793
|
-
- path: .agentera
|
|
1794
|
-
maximum_depth: 1
|
|
1795
|
-
excluded_relative_paths:
|
|
1796
|
-
- .git
|
|
1797
|
-
- .agentera/archive
|
|
1798
|
-
- .agentera/overlays
|
|
1799
|
-
- .agentera/migration-backups
|
|
1800
|
-
maximum_candidate_files: 256
|
|
1801
|
-
maximum_file_bytes: 1048576
|
|
1802
|
-
maximum_total_bytes: 16777216
|
|
1803
|
-
ordering: normalized_relative_path_ascending
|
|
1804
|
-
candidate_rule: >-
|
|
1805
|
-
A candidate is a regular, non-symlink file directly under one declared
|
|
1806
|
-
scan root whose basename is ASCII and matches
|
|
1807
|
-
^[A-Za-z0-9][A-Za-z0-9._-]{0,63}\.(md|yaml|yml)$. Fixed legacy names
|
|
1808
|
-
are recognized first; every other accepted name is a custom candidate
|
|
1809
|
-
and remains project-local.
|
|
1810
|
-
fixed_names:
|
|
1811
|
-
- path: .agentera/PROGRESS.md
|
|
1812
|
-
artifact: progress
|
|
1813
|
-
- path: .agentera/DECISIONS.md
|
|
1814
|
-
artifact: decisions
|
|
1815
|
-
- path: .agentera/HEALTH.md
|
|
1816
|
-
artifact: health
|
|
1817
|
-
custom_name_rule: >-
|
|
1818
|
-
Custom names are discovered only within the declared roots and are
|
|
1819
|
-
never mapped from their basename alone. A custom candidate is
|
|
1820
|
-
addressable only when --path pins it, --artifact identifies the
|
|
1821
|
-
numbered artifact, and parsing yields exactly one supported stable
|
|
1822
|
-
identity for the requested --number. A candidate with zero, multiple,
|
|
1823
|
-
conflicting, or unsupported identities is inventory-visible but not
|
|
1824
|
-
apply-eligible.
|
|
1825
|
-
deterministic_rejections:
|
|
1826
|
-
unsafe_path: absolute paths, traversal segments, encoded traversal, URI paths, or symlink components
|
|
1827
|
-
escaping_path: realpath is outside the selected project root
|
|
1828
|
-
ambiguous_candidate: one candidate yields multiple artifact or entry identities, or identities conflict
|
|
1829
|
-
unsupported_candidate: unsupported extension, non-regular file, invalid encoding, or unsupported artifact shape
|
|
1830
|
-
scan_bounded: candidate or byte limits are exceeded; omitted candidates are reported, never silently dropped
|
|
1831
|
-
project_boundary:
|
|
1832
|
-
selected_root: resolved_realpath_of_project_selector
|
|
1833
|
-
candidate_rule: >-
|
|
1834
|
-
The candidate realpath and every existing parent must remain strictly
|
|
1835
|
-
beneath selected_root. The project root itself is not a candidate.
|
|
1836
|
-
reject: [absolute_candidate_path, traversal, encoded_traversal, uri_path, symlink_escape, outside_project]
|
|
1837
|
-
docs_mapping: forbidden
|
|
1838
|
-
remote_access: forbidden
|
|
1839
|
-
compatibility_window:
|
|
1840
|
-
name: v2_to_v3_local_state
|
|
1841
|
-
scope: numbered_progress_decisions_health_only
|
|
1842
|
-
supported_sources: [legacy_markdown, legacy_yaml, current_yaml_projection]
|
|
1843
|
-
classifications: [complete, degraded, blocked, unsupported]
|
|
1844
|
-
cases:
|
|
1845
|
-
new:
|
|
1846
|
-
classification: complete
|
|
1847
|
-
behavior: preserve current archive and projection authority
|
|
1848
|
-
legacy_full:
|
|
1849
|
-
classification: degraded
|
|
1850
|
-
behavior: archive exact parsed records and retain source provenance
|
|
1851
|
-
legacy_summary:
|
|
1852
|
-
classification: degraded
|
|
1853
|
-
behavior: preserve summary-only detail and never reconstruct absent fields
|
|
1854
|
-
non_git:
|
|
1855
|
-
classification: complete
|
|
1856
|
-
behavior: local inventory and publication do not require Git
|
|
1857
|
-
ambiguous:
|
|
1858
|
-
classification: blocked
|
|
1859
|
-
behavior: never choose between candidates; preserve all diagnostics
|
|
1860
|
-
corrupt:
|
|
1861
|
-
classification: blocked
|
|
1862
|
-
behavior: preserve source bytes and do not archive or project invalid records
|
|
1863
|
-
unsupported:
|
|
1864
|
-
classification: unsupported
|
|
1865
|
-
behavior: report a deterministic candidate diagnostic without mutation
|
|
1866
|
-
no_reconstruction: >-
|
|
1867
|
-
Missing, ambiguous, compacted, summary-only, and satisfaction-incomplete
|
|
1868
|
-
state remains explicitly classified. No fields, identity, satisfaction,
|
|
1869
|
-
provenance, or history are inferred from names, summaries, Git, or
|
|
1870
|
-
profile state. Decision 53 remains governed by overlays.decision_53_rules.
|
|
1871
|
-
backups:
|
|
1872
|
-
required_for_apply: true
|
|
1873
|
-
project_local: true
|
|
1874
|
-
root: .agentera/migration-backups
|
|
1875
|
-
path_template: .agentera/migration-backups/<sha256-relative-source>.bak
|
|
1876
|
-
bytes: exact_source_bytes_before_projection
|
|
1877
|
-
identity: sha256(relative_source_path + NUL + source_bytes)
|
|
1878
|
-
publication: exclusive_immutable_file
|
|
1879
|
-
existing_backup: >-
|
|
1880
|
-
An identical backup is an idempotent replay. Different bytes at the
|
|
1881
|
-
same backup identity are backup_conflict and block without overwrite.
|
|
1882
|
-
cleanup: forbidden
|
|
1883
|
-
required_before_projection: true
|
|
1884
|
-
publication:
|
|
1885
|
-
order:
|
|
1886
|
-
- validate_candidate_and_selector
|
|
1887
|
-
- publish_immutable_archive_record
|
|
1888
|
-
- publish_immutable_backup
|
|
1889
|
-
- publish_current_projection
|
|
1890
|
-
archive_before_projection: true
|
|
1891
|
-
archive_immutability: storage.archive.mutation_policy
|
|
1892
|
-
projection_failure: >-
|
|
1893
|
-
Leave archive, backup, and the pre-existing projection bytes unchanged
|
|
1894
|
-
except for successfully published immutable artifacts; retry must replay
|
|
1895
|
-
identical artifacts rather than restart or synthesize a new identity.
|
|
1896
|
-
monotonic_states: [inventory, previewed, archive_published, backup_published, projection_published]
|
|
1897
|
-
retry: >-
|
|
1898
|
-
Repeating the same project, selector, source bytes, and canonical record
|
|
1899
|
-
is an idempotent replay. The same stable identity with different bytes
|
|
1900
|
-
is immutable_conflict; no existing archive, backup, or projection bytes
|
|
1901
|
-
may be overwritten.
|
|
1902
|
-
git:
|
|
1903
|
-
required: false
|
|
1904
|
-
reads: forbidden
|
|
1905
|
-
remote_contact: forbidden
|
|
1906
|
-
completion_independent: true
|
|
1907
|
-
provenance: local_source_path_and_content_hash_only
|
|
1908
|
-
result:
|
|
1909
|
-
schema_version: agentera.stateMigrationResult.v1
|
|
1910
|
-
statuses: [complete, degraded, blocked, unavailable]
|
|
1911
|
-
required_fields: [schemaVersion, command, status, mode, project, read_only, mutation_intent, mutation_performed, remote_contact, inventory_performed, entries, counts, diagnostics, source_contract, omitted, omitted_count, omission_reason, retrieval]
|
|
1912
|
-
entry_fields: [candidate_id, path, artifact_id, entry_number, classification, detail_availability, compatibility, source, addressable, size_bytes, rejection, provenance]
|
|
1913
|
-
count_fields: [physical, addressable, addressable_ids, unaddressable, ambiguous, mirrored, duplicate, conflict, omitted]
|
|
1914
|
-
count_rules:
|
|
1915
|
-
physical:
|
|
1916
|
-
source: all_candidates
|
|
1917
|
-
operation: count
|
|
1918
|
-
addressable:
|
|
1919
|
-
source: visible_entries
|
|
1920
|
-
operation: count
|
|
1921
|
-
predicates: [{field: addressable, equals: true}]
|
|
1922
|
-
addressable_ids:
|
|
1923
|
-
source: visible_entries
|
|
1924
|
-
operation: distinct
|
|
1925
|
-
field: candidate_id
|
|
1926
|
-
unaddressable:
|
|
1927
|
-
source: visible_entries
|
|
1928
|
-
operation: count
|
|
1929
|
-
predicates:
|
|
1930
|
-
- {field: addressable, equals: false}
|
|
1931
|
-
- {field: classification, not_equals: ambiguous}
|
|
1932
|
-
ambiguous:
|
|
1933
|
-
source: visible_entries
|
|
1934
|
-
operation: count
|
|
1935
|
-
predicates: [{field: classification, equals: ambiguous}]
|
|
1936
|
-
mirrored:
|
|
1937
|
-
source: visible_entries
|
|
1938
|
-
operation: count
|
|
1939
|
-
predicates: [{field: classification, equals: mirrored}]
|
|
1940
|
-
duplicate:
|
|
1941
|
-
source: visible_entries
|
|
1942
|
-
operation: count
|
|
1943
|
-
predicates: [{field: classification, equals: duplicate}]
|
|
1944
|
-
conflict:
|
|
1945
|
-
source: visible_entries
|
|
1946
|
-
operation: count
|
|
1947
|
-
predicates: [{field: classification, equals: conflict}]
|
|
1948
|
-
omitted:
|
|
1949
|
-
source: omitted_count
|
|
1950
|
-
operation: value
|
|
1951
|
-
omission:
|
|
1952
|
-
fields: [omitted, omitted_count, omission_reason, retrieval]
|
|
1953
|
-
field_sources:
|
|
1954
|
-
omitted: has_omissions
|
|
1955
|
-
omitted_count: omitted_count
|
|
1956
|
-
omission_reason: omission_reason
|
|
1957
|
-
retrieval: retrieval
|
|
1958
|
-
complete_reason: none
|
|
1959
|
-
bounded_reason: scan_bounded
|
|
1960
|
-
output_bounded_reason: serialized_output_byte_budget
|
|
1961
|
-
retry: >-
|
|
1962
|
-
Retry with narrower project or selectors, or use the bounded list
|
|
1963
|
-
pointer to continue from the same normalized snapshot.
|
|
1964
|
-
output_retry: >-
|
|
1965
|
-
Retry with a smaller --limit or narrower selectors; use --path with
|
|
1966
|
-
--artifact and --number to address one omitted candidate. The omitted
|
|
1967
|
-
records remain accounted for and no state was changed by output bounding.
|
|
1968
|
-
retrieval: >-
|
|
1969
|
-
agentera state migrate --project PATH [selectors] --limit N
|
|
1970
|
-
semantics: >-
|
|
1971
|
-
Omitted candidates are represented by omitted=true, omitted_count,
|
|
1972
|
-
omission_reason, and a bounded retry/list pointer. Text, JSON, and YAML
|
|
1973
|
-
are projections of the same envelope and never contain unbounded records.
|
|
1974
|
-
failures:
|
|
1975
|
-
schema_version: agentera.stateFailure.v1
|
|
1976
|
-
deterministic: >-
|
|
1977
|
-
The same authority, project bytes, selectors, and local filesystem
|
|
1978
|
-
state produce the same failure class, syntax, example, and recovery.
|
|
1979
|
-
classes:
|
|
1980
|
-
- class: invalid_selector
|
|
1981
|
-
message: selector is missing, duplicated, malformed, or not allowed for the selected mode
|
|
1982
|
-
example: agentera state migrate --number 1 --format json
|
|
1983
|
-
recovery: add one supported --artifact selector and retry; no state was changed
|
|
1984
|
-
- class: project_boundary
|
|
1985
|
-
message: selected project or candidate path escapes the project boundary
|
|
1986
|
-
example: agentera state migrate --path ../secrets.yaml --format json
|
|
1987
|
-
recovery: select a project-local relative path; no state was changed
|
|
1988
|
-
- class: unsupported_candidate
|
|
1989
|
-
message: candidate is not a supported regular file or artifact shape
|
|
1990
|
-
example: agentera state migrate --path .agentera/state.txt --format json
|
|
1991
|
-
recovery: use a supported Markdown or YAML candidate; no state was changed
|
|
1992
|
-
- class: ambiguous_candidate
|
|
1993
|
-
message: candidate has multiple or conflicting supported identities
|
|
1994
|
-
example: agentera state migrate --artifact progress --number 1 --path CUSTOM.md --dry-run --format json
|
|
1995
|
-
recovery: resolve the candidate ambiguity before retrying; no state was changed
|
|
1996
|
-
- class: corrupt_candidate
|
|
1997
|
-
message: candidate bytes or parsed record fail the declared artifact schema
|
|
1998
|
-
example: agentera state migrate --artifact decisions --number 53 --dry-run --format json
|
|
1999
|
-
recovery: repair or preserve the source and retry only after validation; no state was changed
|
|
2000
|
-
- class: backup_conflict
|
|
2001
|
-
message: immutable backup identity already contains different source bytes
|
|
2002
|
-
example: agentera state migrate --artifact progress --number 1 --apply --force --format json
|
|
2003
|
-
recovery: preserve the existing backup and resolve the source conflict; no projection was changed
|
|
2004
|
-
- class: immutable_conflict
|
|
2005
|
-
message: immutable archive identity already contains different canonical content
|
|
2006
|
-
example: agentera state migrate --artifact progress --number 1 --apply --force --format json
|
|
2007
|
-
recovery: preserve the existing archive and resolve the identity conflict; no projection was changed
|
|
2008
|
-
- class: changed_candidate
|
|
2009
|
-
message: candidate changed between inventory, preview, and apply
|
|
2010
|
-
example: agentera state migrate --artifact health --number 1 --apply --force --format json
|
|
2011
|
-
recovery: rerun inventory and preview against the current local bytes; no projection was changed
|
|
2012
|
-
- class: scan_bounded
|
|
2013
|
-
message: bounded candidate or byte limit was exceeded
|
|
2014
|
-
example: agentera state migrate --limit 100 --format json
|
|
2015
|
-
recovery: narrow the project or selectors; omitted candidates remain reported
|
|
2016
|
-
guarantees:
|
|
2017
|
-
read_only_inventory_and_preview: true
|
|
2018
|
-
apply_requires_force: true
|
|
2019
|
-
archive_before_projection: true
|
|
2020
|
-
backups_before_projection: true
|
|
2021
|
-
monotonic_retry: true
|
|
2022
|
-
archive_immutability: true
|
|
2023
|
-
project_local: true
|
|
2024
|
-
remote_contact: forbidden
|
|
2025
|
-
git_independent: true
|
|
1616
|
+
entity_migration_discovery:
|
|
1617
|
+
command: agentera state migrate entities --project PATH --dry-run --format json
|
|
1618
|
+
implementation: implemented
|
|
1619
|
+
read_only: true
|
|
1620
|
+
writes: forbidden
|
|
1621
|
+
authority: entity_migration.read_only_preview
|
|
2026
1622
|
cursor:
|
|
2027
1623
|
syntax: opaque TOKEN returned as response.next_cursor
|
|
2028
1624
|
first_page: omit --cursor to establish a snapshot
|
|
@@ -70,21 +70,21 @@ doctor:
|
|
|
70
70
|
compatibility_alias: forbidden
|
|
71
71
|
owns:
|
|
72
72
|
- Agentera CLI self-check status
|
|
73
|
-
- installed
|
|
74
|
-
-
|
|
75
|
-
-
|
|
76
|
-
-
|
|
73
|
+
- installed app and install-root status
|
|
74
|
+
- canonical shared-skill diagnosis
|
|
75
|
+
- project integration and project-state migration diagnostics
|
|
76
|
+
- bounded offline smoke checks when requested
|
|
77
77
|
excludes:
|
|
78
78
|
- project artifact health
|
|
79
79
|
- codebase quality audit findings
|
|
80
80
|
- inspektera architecture, test, dependency, or documentation audit output
|
|
81
81
|
adjacent_surfaces:
|
|
82
82
|
codebase_audit: /agentera audit routes to inspektera
|
|
83
|
-
setup_specific_diagnostics: packages/cli/src/setup/doctor.ts
|
|
84
83
|
rationale: >-
|
|
85
84
|
Decision 45 rejects `bundle-status` as too narrow and rejects an alias for
|
|
86
|
-
release-clean vocabulary; `doctor` is the CLI
|
|
87
|
-
vocabulary, while artifact health and codebase audits
|
|
85
|
+
release-clean vocabulary; `doctor` is the CLI, app, shared-skill, and project
|
|
86
|
+
integration self-check vocabulary, while artifact health and codebase audits
|
|
87
|
+
remain separate concerns.
|
|
88
88
|
schema:
|
|
89
89
|
status: implemented_runtime_introspection
|
|
90
90
|
command: schema
|
|
@@ -237,7 +237,7 @@ structured_output:
|
|
|
237
237
|
- project_integration
|
|
238
238
|
- attention
|
|
239
239
|
- history
|
|
240
|
-
-
|
|
240
|
+
- shared_skill
|
|
241
241
|
- decision_attention
|
|
242
242
|
- next_action
|
|
243
243
|
- orchestration_context
|
|
@@ -575,7 +575,7 @@ field_selection:
|
|
|
575
575
|
- project_integration
|
|
576
576
|
- attention
|
|
577
577
|
- history
|
|
578
|
-
-
|
|
578
|
+
- shared_skill
|
|
579
579
|
- decision_attention
|
|
580
580
|
- next_action
|
|
581
581
|
- orchestration_context
|
|
@@ -25,10 +25,9 @@ scope:
|
|
|
25
25
|
- Update channel names, dist-tag resolution, and override keys.
|
|
26
26
|
- General prose outside app lifecycle metadata.
|
|
27
27
|
compatibility_boundary: >-
|
|
28
|
-
|
|
29
|
-
`activeBundleRoot`, and `--only bundle` may remain
|
|
30
|
-
|
|
31
|
-
lifecycle status vocabulary.
|
|
28
|
+
Retired v2 identifiers such as `.agentera-bundle.json`, `bundle.status`,
|
|
29
|
+
`activeBundleRoot`, and `--only bundle` may remain only in migration readers,
|
|
30
|
+
fixtures, and released history. They are not current app lifecycle vocabulary.
|
|
32
31
|
canonical_status_order:
|
|
33
32
|
- up_to_date
|
|
34
33
|
- outdated
|