agentera 3.0.0-dev.26 → 3.0.0-dev.28
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/LICENSE +201 -0
- package/README.md +13 -3
- package/bundle/CHANGELOG.md +14 -1
- package/bundle/DESIGN.md +3 -7
- package/bundle/README.md +1 -4
- package/bundle/UPGRADE.md +33 -0
- package/bundle/fixtures/routing/hybrid-corpus.yaml +154 -0
- package/bundle/references/adapters/package-registry.yaml +2 -0
- package/bundle/references/adapters/package-surface-characterization.md +10 -5
- package/bundle/references/analysis/benchmark.md +4 -0
- package/bundle/references/analysis/verification-policy.yaml +142 -0
- package/bundle/references/artifacts/state-storage-authority.yaml +303 -14
- package/bundle/references/cli/capability-instruction-structure.md +2 -2
- package/bundle/references/cli/hybrid-route-contract.yaml +416 -0
- package/bundle/references/cli/prime-consumer-compatibility.yaml +77 -32
- package/bundle/references/cli/routing-model.md +136 -91
- package/bundle/references/cli/trigger-schema-enrichment.md +50 -46
- package/bundle/references/cli/vocabulary.md +7 -9
- package/bundle/references/meta/documentation-inventory.md +2 -2
- package/bundle/skills/agentera/SKILL.md +50 -18
- package/bundle/skills/agentera/capabilities/audit/schemas/triggers.yaml +13 -35
- package/bundle/skills/agentera/capabilities/build/schemas/triggers.yaml +14 -36
- package/bundle/skills/agentera/capabilities/design/schemas/triggers.yaml +5 -34
- package/bundle/skills/agentera/capabilities/discuss/schemas/triggers.yaml +6 -40
- package/bundle/skills/agentera/capabilities/document/schemas/triggers.yaml +5 -34
- package/bundle/skills/agentera/capabilities/optimize/schemas/triggers.yaml +4 -35
- package/bundle/skills/agentera/capabilities/orchestrate/schemas/artifacts.yaml +3 -2
- package/bundle/skills/agentera/capabilities/orchestrate/schemas/exit.yaml +1 -1
- package/bundle/skills/agentera/capabilities/orchestrate/schemas/triggers.yaml +5 -37
- package/bundle/skills/agentera/capabilities/plan/schemas/triggers.yaml +8 -31
- package/bundle/skills/agentera/capabilities/profile/schemas/triggers.yaml +8 -37
- package/bundle/skills/agentera/capabilities/research/schemas/triggers.yaml +5 -29
- package/bundle/skills/agentera/capabilities/status/schemas/triggers.yaml +7 -47
- package/bundle/skills/agentera/capabilities/vision/schemas/triggers.yaml +7 -39
- package/bundle/skills/agentera/capability_schema_contract.yaml +29 -29
- package/bundle/skills/agentera/route-phrases.yaml +81 -0
- package/bundle/skills/agentera/schemas/artifacts/plan.yaml +23 -5
- package/dist/analytics/extractCorpus/cli.js.map +1 -1
- package/dist/analytics/extractCorpus/copilotSessions.js.map +1 -1
- package/dist/analytics/extractCorpus/core.js.map +1 -1
- package/dist/analytics/extractCorpus/corpus.js.map +1 -1
- package/dist/analytics/extractCorpus/coverageAudit.js.map +1 -1
- package/dist/analytics/extractCorpus/cursorSessions.js.map +1 -1
- package/dist/analytics/extractCorpus/evidenceTiers.js.map +1 -1
- package/dist/analytics/extractCorpus/extractCorpusParity.js +1 -1
- package/dist/analytics/extractCorpus/extractCorpusParity.js.map +1 -1
- package/dist/analytics/extractCorpus/filesystemSources.js.map +1 -1
- package/dist/analytics/extractCorpus/index.js.map +1 -1
- package/dist/analytics/extractCorpus/jsonlSessions.js.map +1 -1
- package/dist/analytics/extractCorpus/sqliteCaps.js.map +1 -1
- package/dist/analytics/extractCorpus/sqliteSessions.js.map +1 -1
- package/dist/analytics/extractCorpus/tierReader.js.map +1 -1
- package/dist/analytics/extractCorpus.js.map +1 -1
- package/dist/analytics/profileSignals.js.map +1 -1
- package/dist/analytics/usageStats.js.map +1 -1
- package/dist/bin/agentera.js.map +1 -1
- package/dist/capabilities/audit/instructions.js.map +1 -1
- package/dist/capabilities/build/instructions.js.map +1 -1
- package/dist/capabilities/design/instructions.js.map +1 -1
- package/dist/capabilities/discuss/instructions.js +1 -1
- package/dist/capabilities/discuss/instructions.js.map +1 -1
- package/dist/capabilities/document/instructions.js.map +1 -1
- package/dist/capabilities/index.js.map +1 -1
- package/dist/capabilities/optimize/instructions.js.map +1 -1
- package/dist/capabilities/orchestrate/instructions.js +1 -1
- package/dist/capabilities/orchestrate/instructions.js.map +1 -1
- package/dist/capabilities/plan/instructions.js +1 -1
- package/dist/capabilities/plan/instructions.js.map +1 -1
- package/dist/capabilities/profile/instructions.js.map +1 -1
- package/dist/capabilities/research/instructions.js.map +1 -1
- package/dist/capabilities/status/instructions.js.map +1 -1
- package/dist/capabilities/status/startupInstructions.js.map +1 -1
- package/dist/capabilities/vision/instructions.js.map +1 -1
- package/dist/cli/appContext.js.map +1 -1
- package/dist/cli/argvalidate.js.map +1 -1
- package/dist/cli/capabilityContext/benchmark.js.map +1 -1
- package/dist/cli/capabilityContext/bespoke.js.map +1 -1
- package/dist/cli/capabilityContext/build.js.map +1 -1
- package/dist/cli/capabilityContext/closeout.js.map +1 -1
- package/dist/cli/capabilityContext/contract.js.map +1 -1
- package/dist/cli/capabilityContext/evidence.js +1 -1
- package/dist/cli/capabilityContext/evidence.js.map +1 -1
- package/dist/cli/capabilityContext/index.js.map +1 -1
- package/dist/cli/capabilityContext/orchestration.js +15 -5
- package/dist/cli/capabilityContext/orchestration.js.map +1 -1
- package/dist/cli/capabilityContext/planState.js +1 -1
- package/dist/cli/capabilityContext/planState.js.map +1 -1
- package/dist/cli/capabilityContext/progress.js.map +1 -1
- package/dist/cli/capabilityContext/shared.js.map +1 -1
- package/dist/cli/capabilityContext/slim.js +16 -3
- package/dist/cli/capabilityContext/slim.js.map +1 -1
- package/dist/cli/capabilityContext/startup.js +3 -0
- package/dist/cli/capabilityContext/startup.js.map +1 -1
- package/dist/cli/capabilityContext/types.js.map +1 -1
- package/dist/cli/capabilityContext.js.map +1 -1
- package/dist/cli/commands/appHome.js.map +1 -1
- package/dist/cli/commands/capability.js.map +1 -1
- package/dist/cli/commands/compact.js.map +1 -1
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/durability.js.map +1 -1
- package/dist/cli/commands/entityMigrate.js +7 -3
- package/dist/cli/commands/entityMigrate.js.map +1 -1
- package/dist/cli/commands/lint.js.map +1 -1
- package/dist/cli/commands/prime/briefOrientation.js +33 -8
- package/dist/cli/commands/prime/briefOrientation.js.map +1 -1
- package/dist/cli/commands/prime/bundleStatus.js.map +1 -1
- package/dist/cli/commands/prime/collectEntityOrientation.js +117 -18
- package/dist/cli/commands/prime/collectEntityOrientation.js.map +1 -1
- package/dist/cli/commands/prime/collectOrientationState.js +4 -2
- package/dist/cli/commands/prime/collectOrientationState.js.map +1 -1
- package/dist/cli/commands/prime/orientationOutput.js +47 -18
- package/dist/cli/commands/prime/orientationOutput.js.map +1 -1
- package/dist/cli/commands/prime/types.js.map +1 -1
- package/dist/cli/commands/prime/v1Migration.js.map +1 -1
- package/dist/cli/commands/prime.js +47 -23
- package/dist/cli/commands/prime.js.map +1 -1
- package/dist/cli/commands/query.js.map +1 -1
- package/dist/cli/commands/report.js.map +1 -1
- package/dist/cli/commands/route.js +142 -0
- package/dist/cli/commands/route.js.map +1 -0
- package/dist/cli/commands/schema.js.map +1 -1
- package/dist/cli/commands/state/decisions.js.map +1 -1
- package/dist/cli/commands/state/docs.js.map +1 -1
- package/dist/cli/commands/state/experimentRecords.js.map +1 -1
- package/dist/cli/commands/state/experiments.js.map +1 -1
- package/dist/cli/commands/state/get.js.map +1 -1
- package/dist/cli/commands/state/health.js.map +1 -1
- package/dist/cli/commands/state/index.js.map +1 -1
- package/dist/cli/commands/state/list.js.map +1 -1
- package/dist/cli/commands/state/objective.js.map +1 -1
- package/dist/cli/commands/state/plan.js.map +1 -1
- package/dist/cli/commands/state/planTasks.js.map +1 -1
- package/dist/cli/commands/state/plans.js.map +1 -1
- package/dist/cli/commands/state/progress.js.map +1 -1
- package/dist/cli/commands/state/shared.js.map +1 -1
- package/dist/cli/commands/state/todo.js.map +1 -1
- package/dist/cli/commands/state/write.js +21 -2
- package/dist/cli/commands/state/write.js.map +1 -1
- package/dist/cli/commands/upgrade.js.map +1 -1
- package/dist/cli/commands/upgradeVerify.js.map +1 -1
- package/dist/cli/commands/validate.js.map +1 -1
- package/dist/cli/commands/verify.js +17 -1
- package/dist/cli/commands/verify.js.map +1 -1
- package/dist/cli/contracts/bundleStatus.js.map +1 -1
- package/dist/cli/contracts/orientationState.js.map +1 -1
- package/dist/cli/dispatch/argvParser.js.map +1 -1
- package/dist/cli/dispatch/check.js.map +1 -1
- package/dist/cli/dispatch/commands.js.map +1 -1
- package/dist/cli/dispatch/index.js +18 -0
- package/dist/cli/dispatch/index.js.map +1 -1
- package/dist/cli/dispatch/lifecycle.js.map +1 -1
- package/dist/cli/dispatch/prime.js.map +1 -1
- package/dist/cli/dispatch/shared.js.map +1 -1
- package/dist/cli/dispatch/state.js.map +1 -1
- package/dist/cli/dispatch.js.map +1 -1
- package/dist/cli/errors.js +2 -2
- package/dist/cli/errors.js.map +1 -1
- package/dist/cli/help.js +20 -1
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/migrationRequired.js +1 -1
- package/dist/cli/migrationRequired.js.map +1 -1
- package/dist/cli/orientation/attention.js.map +1 -1
- package/dist/cli/orientation/corpusCoverage.js.map +1 -1
- package/dist/cli/orientation.js +18 -4
- package/dist/cli/orientation.js.map +1 -1
- package/dist/cli/planArtifacts.js.map +1 -1
- package/dist/cli/planEvidence.js.map +1 -1
- package/dist/cli/planLifecycleState.js.map +1 -1
- package/dist/cli/planTaskIndex.js +12 -0
- package/dist/cli/planTaskIndex.js.map +1 -0
- package/dist/cli/prime-blob.js +1 -1
- package/dist/cli/prime-blob.js.map +1 -1
- package/dist/cli/startupCompletenessContract.js.map +1 -1
- package/dist/cli/stateQuery.js.map +1 -1
- package/dist/cli/structured.js.map +1 -1
- package/dist/cli/todoMarkdown.js.map +1 -1
- package/dist/cli/todoSeverity.js.map +1 -1
- package/dist/core/atomicWriter.js.map +1 -1
- package/dist/core/difflib.js.map +1 -1
- package/dist/core/envPaths.js.map +1 -1
- package/dist/core/jsonValue.js.map +1 -1
- package/dist/core/paths.js.map +1 -1
- package/dist/core/pyjson.js.map +1 -1
- package/dist/core/skillIdentity.js.map +1 -1
- package/dist/core/sourceRoot.js.map +1 -1
- package/dist/core/text.js.map +1 -1
- package/dist/core/toml.js.map +1 -1
- package/dist/core/yaml.js.map +1 -1
- package/dist/eval/evalSkills.js.map +1 -1
- package/dist/eval/hybridRouteEvaluation.js +156 -0
- package/dist/eval/hybridRouteEvaluation.js.map +1 -0
- package/dist/eval/semanticEval.js.map +1 -1
- package/dist/eval/semanticFixtures.js.map +1 -1
- package/dist/hooks/common.js.map +1 -1
- package/dist/hooks/compaction/apply.js.map +1 -1
- package/dist/hooks/compaction/dryRun.js.map +1 -1
- package/dist/hooks/compaction/index.js.map +1 -1
- package/dist/hooks/compaction/parse.js.map +1 -1
- package/dist/hooks/compaction/retention.js.map +1 -1
- package/dist/hooks/compaction/status.js.map +1 -1
- package/dist/hooks/compaction/types.js.map +1 -1
- package/dist/hooks/cursorPreToolUse.js.map +1 -1
- package/dist/hooks/cursorSessionStart.js.map +1 -1
- package/dist/hooks/projectHookInput.js.map +1 -1
- package/dist/hooks/sessionStart.js.map +1 -1
- package/dist/hooks/sessionStop.js.map +1 -1
- package/dist/hooks/validateArtifact/agentFacing.js.map +1 -1
- package/dist/hooks/validateArtifact/index.js.map +1 -1
- package/dist/hooks/validateArtifact/markdown.js.map +1 -1
- package/dist/hooks/validateArtifact/runtime.js.map +1 -1
- package/dist/hooks/validateArtifact/schema.js.map +1 -1
- package/dist/hooks/validateArtifact/traversal.js.map +1 -1
- package/dist/hooks/validateArtifact/violations.js.map +1 -1
- package/dist/migrate/v2HandoffManifest.js.map +1 -1
- package/dist/registries/artifactProtocolIds.js.map +1 -1
- package/dist/registries/artifactRegistry.js.map +1 -1
- package/dist/registries/capabilityContract.js +5 -20
- package/dist/registries/capabilityContract.js.map +1 -1
- package/dist/registries/evaluatorHandoffContract.js.map +1 -1
- package/dist/registries/evidenceTierContract.js.map +1 -1
- package/dist/registries/hybridRoute.js +203 -0
- package/dist/registries/hybridRoute.js.map +1 -0
- package/dist/registries/hybridRouteReceipt.js +221 -0
- package/dist/registries/hybridRouteReceipt.js.map +1 -0
- package/dist/registries/packageRegistry.js.map +1 -1
- package/dist/registries/triggerLoader.js +7 -43
- package/dist/registries/triggerLoader.js.map +1 -1
- package/dist/registries/verbosityBudgetContract.js.map +1 -1
- package/dist/release/releaseMetadata.js +2 -0
- package/dist/release/releaseMetadata.js.map +1 -1
- package/dist/runtime/lifecycleAdapterContract.js.map +1 -1
- package/dist/runtime/lifecycleAdapters.js.map +1 -1
- package/dist/runtime/lifecycleAuthority.js.map +1 -1
- package/dist/runtime/lifecycleOperationContract.js.map +1 -1
- package/dist/runtime/lifecycleOperations.js.map +1 -1
- package/dist/runtime/lifecycleOwnershipJournal.js.map +1 -1
- package/dist/runtime/lifecyclePublication.js.map +1 -1
- package/dist/runtime/lifecycleSnapshot.js.map +1 -1
- package/dist/runtime/retiredRuntimeCleanup.js.map +1 -1
- package/dist/setup/codex/agents.js.map +1 -1
- package/dist/setup/codex/cli.js.map +1 -1
- package/dist/setup/codex/configToml.js.map +1 -1
- package/dist/setup/codex/constants.js.map +1 -1
- package/dist/setup/codex/installRoot.js.map +1 -1
- package/dist/setup/codex/state.js.map +1 -1
- package/dist/setup/codex.js.map +1 -1
- package/dist/setup/opencode.js.map +1 -1
- package/dist/setup/opencodeConstants.js.map +1 -1
- package/dist/setup/sharedSkill.js.map +1 -1
- package/dist/setup/smokeChecks.js.map +1 -1
- package/dist/state/archiveDiscovery.js +24 -35
- package/dist/state/archiveDiscovery.js.map +1 -1
- package/dist/state/archivePublication.js.map +1 -1
- package/dist/state/archiveRecovery.js.map +1 -1
- package/dist/state/archiveReplay.js.map +1 -1
- package/dist/state/canonicalMigrationRecord.js +37 -0
- package/dist/state/canonicalMigrationRecord.js.map +1 -0
- package/dist/state/decisionEntities.js +73 -33
- package/dist/state/decisionEntities.js.map +1 -1
- package/dist/state/decisionLegacyValidation.js +31 -0
- package/dist/state/decisionLegacyValidation.js.map +1 -1
- package/dist/state/decisionMigrationProvenance.js +117 -0
- package/dist/state/decisionMigrationProvenance.js.map +1 -0
- package/dist/state/decisionOverlay.js.map +1 -1
- package/dist/state/decisionRevision.js.map +1 -1
- package/dist/state/decisionRevisionPublication.js.map +1 -1
- package/dist/state/directRetrieval.js.map +1 -1
- package/dist/state/durability.js +24 -5
- package/dist/state/durability.js.map +1 -1
- package/dist/state/entityCutover.js +2 -2
- package/dist/state/entityCutover.js.map +1 -1
- package/dist/state/entityCutoverGit.js.map +1 -1
- package/dist/state/entityMigrationCausality.js +99 -0
- package/dist/state/entityMigrationCausality.js.map +1 -0
- package/dist/state/entityMigrationPreview.js +141 -80
- package/dist/state/entityMigrationPreview.js.map +1 -1
- package/dist/state/entityPublicationContext.js.map +1 -1
- package/dist/state/entityStorage.js +81 -26
- package/dist/state/entityStorage.js.map +1 -1
- package/dist/state/experimentArchive.js.map +1 -1
- package/dist/state/experimentIdentity.js.map +1 -1
- package/dist/state/experimentRetrieval.js.map +1 -1
- package/dist/state/healthEntities.js +28 -31
- package/dist/state/healthEntities.js.map +1 -1
- package/dist/state/healthEntityValidation.js.map +1 -1
- package/dist/state/healthRepair.js.map +1 -1
- package/dist/state/installRoot.js.map +1 -1
- package/dist/state/legacyEntityCutoverEvidence.js.map +1 -1
- package/dist/state/legacyIdentity.js.map +1 -1
- package/dist/state/legacySummaryRecord.js +7 -0
- package/dist/state/legacySummaryRecord.js.map +1 -0
- package/dist/state/listAccounting.js.map +1 -1
- package/dist/state/listClassification.js.map +1 -1
- package/dist/state/listCursor.js +43 -0
- package/dist/state/listCursor.js.map +1 -0
- package/dist/state/listRetrieval.js.map +1 -1
- package/dist/state/migrationSourceBinding.js +29 -0
- package/dist/state/migrationSourceBinding.js.map +1 -0
- package/dist/state/objectiveExperimentEntities.js.map +1 -1
- package/dist/state/planEntities.js +46 -2
- package/dist/state/planEntities.js.map +1 -1
- package/dist/state/planIdentity.js.map +1 -1
- package/dist/state/planRetrieval.js.map +1 -1
- package/dist/state/planTaskRetrieval.js.map +1 -1
- package/dist/state/progressEntities.js +35 -59
- package/dist/state/progressEntities.js.map +1 -1
- package/dist/state/projectRoot.js.map +1 -1
- package/dist/state/projectionPolicy.js.map +1 -1
- package/dist/state/retrievalAuthority.js +10 -0
- package/dist/state/retrievalAuthority.js.map +1 -1
- package/dist/state/safeProjectFile.js.map +1 -1
- package/dist/state/startupAnalysis/benchmark.js.map +1 -1
- package/dist/state/startupAnalysis/contract.js.map +1 -1
- package/dist/state/startupAnalysis/helpers.js.map +1 -1
- package/dist/state/startupAnalysis/index.js.map +1 -1
- package/dist/state/startupAnalysis/metrics.js.map +1 -1
- package/dist/state/startupAnalysis/records.js.map +1 -1
- package/dist/state/startupAnalysis/report.js.map +1 -1
- package/dist/state/startupAnalysis/threshold.js.map +1 -1
- package/dist/state/startupAnalysis.js.map +1 -1
- package/dist/state/startupProjection.js +2 -1
- package/dist/state/startupProjection.js.map +1 -1
- package/dist/state/stateMode.js.map +1 -1
- package/dist/state/summaryEntityRead.js +26 -0
- package/dist/state/summaryEntityRead.js.map +1 -0
- package/dist/state/summaryMigrationProvenance.js +67 -0
- package/dist/state/summaryMigrationProvenance.js.map +1 -0
- package/dist/state/summarySourceRowAuthority.js +37 -0
- package/dist/state/summarySourceRowAuthority.js.map +1 -0
- package/dist/state/todoDocsEntities.js.map +1 -1
- package/dist/state/todoDocsEntityValidation.js.map +1 -1
- package/dist/state/write/assign.js.map +1 -1
- package/dist/state/write/candidateMutation.js.map +1 -1
- package/dist/state/write/errors.js.map +1 -1
- package/dist/state/write/experimentPublication.js.map +1 -1
- package/dist/state/write/explain.js +9 -3
- package/dist/state/write/explain.js.map +1 -1
- package/dist/state/write/fields.js.map +1 -1
- package/dist/state/write/helpers.js.map +1 -1
- package/dist/state/write/index.js.map +1 -1
- package/dist/state/write/input.js.map +1 -1
- package/dist/state/write/lock.js.map +1 -1
- package/dist/state/write/mutation.js.map +1 -1
- package/dist/state/write/operations.js +6 -0
- package/dist/state/write/operations.js.map +1 -1
- package/dist/state/write/planEvaluation.js +19 -5
- package/dist/state/write/planEvaluation.js.map +1 -1
- package/dist/state/write/planPublication.js +7 -0
- package/dist/state/write/planPublication.js.map +1 -1
- package/dist/state/write/serialize.js.map +1 -1
- package/dist/state/write/transaction.js +2 -1
- package/dist/state/write/transaction.js.map +1 -1
- package/dist/state/write/validate.js.map +1 -1
- package/dist/upgrade/appContentRefresh.js +15 -20
- package/dist/upgrade/appContentRefresh.js.map +1 -1
- package/dist/upgrade/appModel.js.map +1 -1
- package/dist/upgrade/atomicWriter.js.map +1 -1
- package/dist/upgrade/bundleEvidence.js.map +1 -1
- package/dist/upgrade/channels.js.map +1 -1
- package/dist/upgrade/coexistenceProbe.js.map +1 -1
- package/dist/upgrade/compatibility.js.map +1 -1
- package/dist/upgrade/doctor.js.map +1 -1
- package/dist/upgrade/doctorClassifier.js.map +1 -1
- package/dist/upgrade/installedHooksRetirement.js.map +1 -1
- package/dist/upgrade/legacyAgentCleanup.js.map +1 -1
- package/dist/upgrade/lifecycleUpgrade.js.map +1 -1
- package/dist/upgrade/migrateArtifactsV2ToV3.js.map +1 -1
- package/dist/upgrade/migrationPublication.js.map +1 -1
- package/dist/upgrade/nextMajorDoctor.js.map +1 -1
- package/dist/upgrade/npxPlatformStatus.js.map +1 -1
- package/dist/upgrade/projectIntegration.js.map +1 -1
- package/dist/upgrade/projectIntegrationDecision.js.map +1 -1
- package/dist/upgrade/runtimeMigration.js.map +1 -1
- package/dist/upgrade/upgradeCommands.js.map +1 -1
- package/dist/upgrade/upgradeLock.js.map +1 -1
- package/dist/upgrade/upgradeOrchestrator.js.map +1 -1
- package/dist/upgrade/v3CapabilitySurface.js.map +1 -1
- package/dist/upgrade/versionResolution.js.map +1 -1
- package/dist/validate/appHomeContract.js.map +1 -1
- package/dist/validate/capability.js +11 -2
- package/dist/validate/capability.js.map +1 -1
- package/dist/validate/crossCapability.js.map +1 -1
- package/dist/validate/selfAudit.js.map +1 -1
- package/dist/validate/vocabularyAuthority.js.map +1 -1
- package/package.json +19 -6
|
@@ -0,0 +1,416 @@
|
|
|
1
|
+
schema_version: agentera.hybrid_route_contract.v3
|
|
2
|
+
status: normative
|
|
3
|
+
purpose: >-
|
|
4
|
+
Define the portable, two-phase request-to-capability route contract. The CLI
|
|
5
|
+
implements deterministic resolution and receipt validation; the host supplies
|
|
6
|
+
open-ended semantic judgment only after deterministic abstention.
|
|
7
|
+
ownership:
|
|
8
|
+
cli: >-
|
|
9
|
+
The CLI owns request validation, deterministic terminal selections, receipt
|
|
10
|
+
validation, and all startup authorization.
|
|
11
|
+
host: >-
|
|
12
|
+
The portable shared skill is the only host integration. A host may make a
|
|
13
|
+
semantic judgment only after semantic_required and must submit a receipt.
|
|
14
|
+
prohibited: [runtime_specific_adapter, host_bypasses_receipt_validation]
|
|
15
|
+
phrase_registry: skills/agentera/route-phrases.yaml
|
|
16
|
+
semantic_intent: references/cli/trigger-schema-enrichment.md
|
|
17
|
+
evaluation_corpus: fixtures/routing/hybrid-corpus.yaml
|
|
18
|
+
|
|
19
|
+
protocol:
|
|
20
|
+
request:
|
|
21
|
+
version: agentera.route_request.v1
|
|
22
|
+
required_fields: [request]
|
|
23
|
+
request: >-
|
|
24
|
+
The transient, unmodified user message. It is accepted for routing and is
|
|
25
|
+
never persisted by this protocol.
|
|
26
|
+
cli_seam:
|
|
27
|
+
command: agentera route request --input PATH --format json
|
|
28
|
+
input: >-
|
|
29
|
+
A YAML or JSON mapping supplied by --input PATH or --input -. The request
|
|
30
|
+
field is never accepted in argv; --input - reads it from stdin.
|
|
31
|
+
output: >-
|
|
32
|
+
The versioned route response is emitted as JSON on stdout. Diagnostics do
|
|
33
|
+
not include request or topic text, and routing writes no state or report.
|
|
34
|
+
exit_codes: { ok: 0, invalid_input: 2, authority_conflict: 2 }
|
|
35
|
+
response:
|
|
36
|
+
version: agentera.route_response.v1
|
|
37
|
+
outcomes: [deterministic_selection, semantic_required]
|
|
38
|
+
deterministic_selection:
|
|
39
|
+
required_fields: [capability, tier, recognized_span, topic_span, provenance]
|
|
40
|
+
tiers: [bare, direct, phrase]
|
|
41
|
+
semantic_required:
|
|
42
|
+
required_fields: [request_sha256, semantic_capsule, semantic_capsule_sha256, provenance]
|
|
43
|
+
semantic_capsule: >-
|
|
44
|
+
The active trigger intent documentation and contract version needed for
|
|
45
|
+
a host judgment. It contains no state-derived next_action and no raw
|
|
46
|
+
request text beyond the host's transient input.
|
|
47
|
+
semantic_capsule_sha256: >-
|
|
48
|
+
SHA-256 of the contract-owned canonical JSON representation of exactly
|
|
49
|
+
semantic_capsule. The host returns this value unchanged in its receipt.
|
|
50
|
+
semantic_capsule_canonicalization:
|
|
51
|
+
source: semantic_capsule
|
|
52
|
+
serialization: >-
|
|
53
|
+
UTF-8 JSON with recursively lexicographically sorted object keys and
|
|
54
|
+
no insignificant whitespace; array order is the order presented in
|
|
55
|
+
semantic_capsule.
|
|
56
|
+
included_inputs: [contract_version, capabilities, capability, triggers, id, description, priority, disambiguates_against, hint]
|
|
57
|
+
excluded_inputs: [request, request_sha256, provenance, diagnostics, next_action, phrase_registry, raw_trigger_matchers]
|
|
58
|
+
binding: >-
|
|
59
|
+
The digest binds the bounded classification inputs presented to the
|
|
60
|
+
host, not route diagnostics, state, private raw request duplication,
|
|
61
|
+
or any authority the host did not see.
|
|
62
|
+
receipt:
|
|
63
|
+
version: agentera.route_receipt.v1
|
|
64
|
+
required_fields: [version, request_sha256, semantic_capsule_sha256, outcome]
|
|
65
|
+
cli_seam:
|
|
66
|
+
command: agentera route receipt --input PATH --format json
|
|
67
|
+
input: >-
|
|
68
|
+
A YAML or JSON mapping supplied by --input PATH or --input -. It has the
|
|
69
|
+
transient original request in request and the complete nullable host output
|
|
70
|
+
in receipt. Neither field is accepted in argv or persisted.
|
|
71
|
+
output: >-
|
|
72
|
+
JSON startup authorization only: selected capability, one clarification,
|
|
73
|
+
or explicit status fallback. A preserved remainder includes its exact span
|
|
74
|
+
and transient text for the receiving host; diagnostics never echo input.
|
|
75
|
+
exit_codes: { ok: 0, invalid_input: 2, invalid_receipt: 64 }
|
|
76
|
+
outcomes: [select, clarify, no_match]
|
|
77
|
+
select:
|
|
78
|
+
required_fields: [capability, compound]
|
|
79
|
+
forbidden_fields: [question]
|
|
80
|
+
clarify:
|
|
81
|
+
required_fields: [question]
|
|
82
|
+
forbidden_fields: [capability, compound, remainder_span]
|
|
83
|
+
no_match:
|
|
84
|
+
forbidden_fields: [capability, question, compound, remainder_span]
|
|
85
|
+
validation_authority:
|
|
86
|
+
name: agentera.route_receipt_schema.v1
|
|
87
|
+
dialect: json_schema_draft_2020_12
|
|
88
|
+
canonical_capability_source: &canonical_capability_source skills/agentera/capability_schema_contract.yaml#route_aliases.primary_aliases
|
|
89
|
+
request_binding: sha256_of_original_utf8_request_bytes
|
|
90
|
+
semantic_capsule_binding: sha256_of_canonical_semantic_required.semantic_capsule
|
|
91
|
+
request_bound_fields:
|
|
92
|
+
remainder_span:
|
|
93
|
+
encoding: utf8_bytes
|
|
94
|
+
relation: 0 <= start < end = original_request_utf8_byte_length
|
|
95
|
+
exact_suffix: >-
|
|
96
|
+
start and end are UTF-8 code-point boundaries. The suffix bytes decode
|
|
97
|
+
with fatal UTF-8 handling and are returned unchanged, without
|
|
98
|
+
truncation or replacement characters.
|
|
99
|
+
schema: &agentera_route_receipt_schema
|
|
100
|
+
type: object
|
|
101
|
+
additionalProperties: false
|
|
102
|
+
required: [version, request_sha256, semantic_capsule_sha256, outcome]
|
|
103
|
+
properties:
|
|
104
|
+
version: { const: agentera.route_receipt.v1 }
|
|
105
|
+
request_sha256: { type: string, pattern: '^[a-f0-9]{64}$' }
|
|
106
|
+
semantic_capsule_sha256: { type: string, pattern: '^[a-f0-9]{64}$' }
|
|
107
|
+
outcome: { enum: [select, clarify, no_match] }
|
|
108
|
+
capability: { type: string }
|
|
109
|
+
compound: { enum: [none, preserve] }
|
|
110
|
+
question: { type: string, minLength: 1, maxLength: 280 }
|
|
111
|
+
remainder_span:
|
|
112
|
+
type: object
|
|
113
|
+
additionalProperties: false
|
|
114
|
+
required: [start, end]
|
|
115
|
+
properties:
|
|
116
|
+
start: { type: integer, minimum: 0 }
|
|
117
|
+
end: { type: integer, minimum: 0 }
|
|
118
|
+
allOf:
|
|
119
|
+
- if: { properties: { outcome: { const: select } }, required: [outcome] }
|
|
120
|
+
then:
|
|
121
|
+
required: [capability, compound]
|
|
122
|
+
not: { required: [question] }
|
|
123
|
+
- if: { properties: { outcome: { const: clarify } }, required: [outcome] }
|
|
124
|
+
then:
|
|
125
|
+
required: [question]
|
|
126
|
+
allOf:
|
|
127
|
+
- not: { required: [capability] }
|
|
128
|
+
- not: { required: [compound] }
|
|
129
|
+
- not: { required: [remainder_span] }
|
|
130
|
+
- if: { properties: { outcome: { const: no_match } }, required: [outcome] }
|
|
131
|
+
then:
|
|
132
|
+
allOf:
|
|
133
|
+
- not: { required: [capability] }
|
|
134
|
+
- not: { required: [question] }
|
|
135
|
+
- not: { required: [compound] }
|
|
136
|
+
- not: { required: [remainder_span] }
|
|
137
|
+
- if:
|
|
138
|
+
properties: { outcome: { const: select }, compound: { const: preserve } }
|
|
139
|
+
required: [outcome, compound]
|
|
140
|
+
then: { required: [remainder_span] }
|
|
141
|
+
- if:
|
|
142
|
+
properties: { outcome: { const: select }, compound: { const: none } }
|
|
143
|
+
required: [outcome, compound]
|
|
144
|
+
then: { not: { required: [remainder_span] } }
|
|
145
|
+
host_output_shape:
|
|
146
|
+
name: agentera_route_receipt
|
|
147
|
+
purpose: >-
|
|
148
|
+
The portable nullable host receipt shape. It validates the complete
|
|
149
|
+
receipt object only; the CLI receipt schema remains authoritative for
|
|
150
|
+
outcome relationships, request binding, and capability authorization.
|
|
151
|
+
canonical_capability_values_source: *canonical_capability_source
|
|
152
|
+
schema: &agentera_route_receipt_host_schema
|
|
153
|
+
type: object
|
|
154
|
+
additionalProperties: false
|
|
155
|
+
required: [version, request_sha256, semantic_capsule_sha256, outcome, capability, compound, question, remainder_span]
|
|
156
|
+
properties:
|
|
157
|
+
version: { type: string, enum: [agentera.route_receipt.v1] }
|
|
158
|
+
request_sha256: { type: string, pattern: '^[a-f0-9]{64}$' }
|
|
159
|
+
semantic_capsule_sha256: { type: string, pattern: '^[a-f0-9]{64}$' }
|
|
160
|
+
outcome: { type: string, enum: [select, clarify, no_match] }
|
|
161
|
+
capability:
|
|
162
|
+
type: [string, "null"]
|
|
163
|
+
enum: [status, vision, discuss, research, plan, build, optimize, audit, document, profile, design, orchestrate, null]
|
|
164
|
+
compound:
|
|
165
|
+
type: [string, "null"]
|
|
166
|
+
enum: [none, preserve, null]
|
|
167
|
+
question: { type: [string, "null"], maxLength: 280 }
|
|
168
|
+
remainder_span:
|
|
169
|
+
type: [object, "null"]
|
|
170
|
+
additionalProperties: false
|
|
171
|
+
required: [start, end]
|
|
172
|
+
properties:
|
|
173
|
+
start: { type: integer }
|
|
174
|
+
end: { type: integer }
|
|
175
|
+
host_to_cli_normalization:
|
|
176
|
+
name: agentera.route_receipt_host_to_cli.v1
|
|
177
|
+
purpose: >-
|
|
178
|
+
Project the host-required nullable shape into the authoritative CLI
|
|
179
|
+
receipt shape without changing any non-null value.
|
|
180
|
+
input:
|
|
181
|
+
first_step: >-
|
|
182
|
+
Validate the unmodified host receipt against host_output_shape.schema.
|
|
183
|
+
Reject it on any host-shape failure before projecting any field.
|
|
184
|
+
accepted_keys: [version, request_sha256, semantic_capsule_sha256, outcome, capability, compound, question, remainder_span]
|
|
185
|
+
projection:
|
|
186
|
+
operation: >-
|
|
187
|
+
Copy every non-null field unchanged, including its exact string bytes
|
|
188
|
+
and numeric values; remove only a null field listed as inapplicable by
|
|
189
|
+
the matching outcome rule.
|
|
190
|
+
outcome_rules:
|
|
191
|
+
select:
|
|
192
|
+
required_non_null: [version, request_sha256, semantic_capsule_sha256, outcome, capability, compound]
|
|
193
|
+
removable_nulls:
|
|
194
|
+
question: always
|
|
195
|
+
remainder_span: when_compound_none
|
|
196
|
+
clarify:
|
|
197
|
+
required_non_null: [version, request_sha256, semantic_capsule_sha256, outcome, question]
|
|
198
|
+
removable_nulls:
|
|
199
|
+
capability: always
|
|
200
|
+
compound: always
|
|
201
|
+
remainder_span: always
|
|
202
|
+
no_match:
|
|
203
|
+
required_non_null: [version, request_sha256, semantic_capsule_sha256, outcome]
|
|
204
|
+
removable_nulls:
|
|
205
|
+
capability: always
|
|
206
|
+
compound: always
|
|
207
|
+
question: always
|
|
208
|
+
remainder_span: always
|
|
209
|
+
rejection:
|
|
210
|
+
unsupported_key: reject
|
|
211
|
+
unexpected_null: reject
|
|
212
|
+
projection_bypass: reject
|
|
213
|
+
downstream_validation: >-
|
|
214
|
+
Pass only the projected receipt to agentera.route_receipt_schema.v1, then
|
|
215
|
+
rerun deterministic routing against the supplied request and source
|
|
216
|
+
authority, require semantic_required with the same request digest and
|
|
217
|
+
semantic_capsule_sha256, then apply canonical-capability, request-digest,
|
|
218
|
+
semantic-capsule, span, and startup-authorization checks. Normalization
|
|
219
|
+
does not authorize startup and does not weaken any CLI cross-field rule.
|
|
220
|
+
request_binding: >-
|
|
221
|
+
The host sends the original request transiently beside the receipt. The
|
|
222
|
+
CLI recomputes SHA-256 over its UTF-8 bytes and requires an exact match to
|
|
223
|
+
request_sha256. No session, nonce, or receipt is stored.
|
|
224
|
+
validation_result:
|
|
225
|
+
terminal_outcomes: [selected, clarification, status_fallback, invalid_receipt]
|
|
226
|
+
startup_authorization:
|
|
227
|
+
selected: selected capability only
|
|
228
|
+
clarification: none
|
|
229
|
+
status_fallback: status only
|
|
230
|
+
invalid_receipt: none
|
|
231
|
+
invalid_receipt_exit: 64
|
|
232
|
+
result_schema:
|
|
233
|
+
version: agentera.route_receipt_result.v1
|
|
234
|
+
selected: >-
|
|
235
|
+
Emits the selected canonical capability, bounded semantic-receipt
|
|
236
|
+
provenance, and agentera prime --context <capability> --format json as
|
|
237
|
+
the existing startup path. It authorizes that capability only.
|
|
238
|
+
clarification: >-
|
|
239
|
+
Emits exactly one validated question and semantic-receipt provenance; it
|
|
240
|
+
authorizes no startup.
|
|
241
|
+
status_fallback: >-
|
|
242
|
+
Emits status with status_reason no_match and the existing status startup
|
|
243
|
+
path. It is not a readiness classification.
|
|
244
|
+
|
|
245
|
+
precedence:
|
|
246
|
+
- order: 1
|
|
247
|
+
name: bare
|
|
248
|
+
condition: /agentera with no additional text
|
|
249
|
+
response: deterministic_selection
|
|
250
|
+
capability: status
|
|
251
|
+
tier: bare
|
|
252
|
+
- order: 2
|
|
253
|
+
name: direct
|
|
254
|
+
condition: >-
|
|
255
|
+
An explicit canonical capability name, or a primary alias, before any
|
|
256
|
+
topic under the existing direct-route grammar.
|
|
257
|
+
response: deterministic_selection
|
|
258
|
+
tier: direct
|
|
259
|
+
- order: 3
|
|
260
|
+
name: curated_phrase
|
|
261
|
+
condition: >-
|
|
262
|
+
A globally unique active phrase from the phrase registry exactly matches
|
|
263
|
+
the normalized leading token sequence.
|
|
264
|
+
response: deterministic_selection
|
|
265
|
+
tier: phrase
|
|
266
|
+
- order: 4
|
|
267
|
+
name: deterministic_abstention
|
|
268
|
+
condition: Any request not selected by orders 1 through 3.
|
|
269
|
+
response: semantic_required
|
|
270
|
+
rule: >-
|
|
271
|
+
The deterministic tier does not infer meaning, score candidates, match
|
|
272
|
+
substrings, or use regexes, thresholds, bands, state, or next_action.
|
|
273
|
+
- order: 5
|
|
274
|
+
name: semantic_receipt
|
|
275
|
+
condition: A valid receipt for a semantic_required response.
|
|
276
|
+
response: select, clarify, or no_match as validated below
|
|
277
|
+
|
|
278
|
+
receipt_semantics:
|
|
279
|
+
select:
|
|
280
|
+
result: selected
|
|
281
|
+
startup: The selected capability starts after validation.
|
|
282
|
+
clarify:
|
|
283
|
+
result: clarification
|
|
284
|
+
startup: No capability starts; the host asks exactly the supplied question.
|
|
285
|
+
no_match:
|
|
286
|
+
result: status_fallback
|
|
287
|
+
startup: Status starts for orientation only, after validation.
|
|
288
|
+
invalid_receipt:
|
|
289
|
+
result: invalid_receipt
|
|
290
|
+
startup: No capability starts; return a bounded correction naming the invalid field.
|
|
291
|
+
|
|
292
|
+
compound_intent:
|
|
293
|
+
principle: >-
|
|
294
|
+
A route selects at most one capability. Remainder is preserved and is never
|
|
295
|
+
silently chained, dispatched, or executed.
|
|
296
|
+
deterministic: >-
|
|
297
|
+
A direct or phrase route passes its exact topic_span to the selected
|
|
298
|
+
capability without classifying it as a follow-on request.
|
|
299
|
+
semantic:
|
|
300
|
+
dispositions: [none, preserve]
|
|
301
|
+
clarification: >-
|
|
302
|
+
clarify is a receipt outcome only, never a compound disposition. It is used
|
|
303
|
+
when one primary capability cannot safely be named.
|
|
304
|
+
preserve: >-
|
|
305
|
+
A select receipt with compound=preserve MUST include a non-empty
|
|
306
|
+
remainder_span inside the original request. The CLI carries that exact
|
|
307
|
+
original slice as deferred intent; it does not start another capability.
|
|
308
|
+
clarify: >-
|
|
309
|
+
Independent or consequential requests that cannot safely name one primary
|
|
310
|
+
capability require a clarify receipt, not a select receipt.
|
|
311
|
+
|
|
312
|
+
phrase_matching:
|
|
313
|
+
comparison_view: >-
|
|
314
|
+
Decode the request as valid UTF-8, then split it into source tokens at
|
|
315
|
+
Unicode whitespace. Apply Unicode NFKC and locale-independent Unicode case
|
|
316
|
+
folding to each source-token comparison segment; join phrase segments with
|
|
317
|
+
one ASCII space. The final source token may be partitioned at its first
|
|
318
|
+
permitted separator; only its prefix participates in phrase comparison.
|
|
319
|
+
leading_only: >-
|
|
320
|
+
The registry phrase must equal the first normalized comparison-token
|
|
321
|
+
sequence. For every source token except the final phrase token, the whole
|
|
322
|
+
normalized token must match. The final phrase token either matches whole or
|
|
323
|
+
ends immediately before its first permitted separator. A permitted separator
|
|
324
|
+
is a source code point whose NFKC form is exactly `:`, `-`, or `—`; it is
|
|
325
|
+
not consumed and need not be followed by whitespace. No other attached
|
|
326
|
+
punctuation terminates a token. Quotation, negation, a phrase later in a
|
|
327
|
+
sentence, and a partial token abstain.
|
|
328
|
+
recognized_span: >-
|
|
329
|
+
Return half-open UTF-8 byte offsets from the first matched source token
|
|
330
|
+
through the final matched-token prefix. The exact original bytes between
|
|
331
|
+
source tokens, including whitespace, belong to this span; leading whitespace
|
|
332
|
+
and a separator do not. Decoding that byte slice reproduces the recognized
|
|
333
|
+
text exactly.
|
|
334
|
+
topic_span: >-
|
|
335
|
+
The topic is the exact original UTF-8 byte slice from recognized_span.end to
|
|
336
|
+
request_byte_length. It begins at the permitted separator when one ended the
|
|
337
|
+
final phrase token, otherwise at the end of that token. It preserves every
|
|
338
|
+
separator, whitespace character, and remainder byte; it is not normalized,
|
|
339
|
+
trimmed, or interpreted.
|
|
340
|
+
example:
|
|
341
|
+
request: " HELP\tME decide: migrate the store"
|
|
342
|
+
normalized_leading_phrase: help me decide
|
|
343
|
+
recognized_span: { utf8_start: 2, utf8_end: 16, text: "HELP\tME decide" }
|
|
344
|
+
topic_span: { utf8_start: 16, utf8_end: 35, text: ": migrate the store" }
|
|
345
|
+
|
|
346
|
+
phrase_ownership:
|
|
347
|
+
active_phrase_source: skills/agentera/route-phrases.yaml
|
|
348
|
+
collision_rule: >-
|
|
349
|
+
Every normalized phrase is globally unique across every registry entry,
|
|
350
|
+
including deprecated entries. A collision fails validation; precedence must
|
|
351
|
+
never choose a phrase owner.
|
|
352
|
+
direct_route_rule: >-
|
|
353
|
+
A phrase must not duplicate a canonical capability name or primary alias and
|
|
354
|
+
must not begin with one under the direct-route grammar. Direct routes always
|
|
355
|
+
retain order-2 precedence.
|
|
356
|
+
trigger_rule: >-
|
|
357
|
+
Trigger descriptions are semantic documentation only. They neither create
|
|
358
|
+
phrase ownership nor alter phrase precedence.
|
|
359
|
+
|
|
360
|
+
privacy:
|
|
361
|
+
default_persistence: forbidden
|
|
362
|
+
transient_data: [request, topic, receipt, request_sha256, semantic_capsule_sha256]
|
|
363
|
+
retained_evaluation_evidence: >-
|
|
364
|
+
Retain only corpus version, case ID, partition, expected and observed
|
|
365
|
+
outcome, capability ID, tier, timing, model profile, and aggregate metrics.
|
|
366
|
+
Do not retain raw private request text, topic text, receipt question, or
|
|
367
|
+
semantic rationale by default.
|
|
368
|
+
permitted_corpus_text: >-
|
|
369
|
+
Frozen corpus text is synthetic or explicitly consented, and each corpus
|
|
370
|
+
declares its text provenance. Private production prompts are never imported.
|
|
371
|
+
|
|
372
|
+
evaluation:
|
|
373
|
+
conformance_owner: packages/cli/test/registries/hybridRouteContract.test.ts
|
|
374
|
+
visible_corpus_entrypoint: agentera route evaluate --format json
|
|
375
|
+
visible_corpus_exit_codes: { pass: 0, failed_evaluation: 1, authority_conflict: 2 }
|
|
376
|
+
visible_corpus_output: >-
|
|
377
|
+
agentera.hybrid_route_evaluation.v1 reports only case IDs, partitions,
|
|
378
|
+
expected/observed outcomes, routing tier, capability ID, timings, authority
|
|
379
|
+
hashes, and aggregate metrics. It never writes a report or emits request,
|
|
380
|
+
topic, receipt-question, or rationale text.
|
|
381
|
+
corpus_partitions: { development: frozen, adversarial: frozen }
|
|
382
|
+
corpus_scope: >-
|
|
383
|
+
The frozen synthetic development and adversarial corpus is the sole
|
|
384
|
+
implementation conformance corpus. It has no hidden, sealed, or vendor-host
|
|
385
|
+
companion corpus.
|
|
386
|
+
semantic_host: >-
|
|
387
|
+
A host may make the semantic judgment and submit the portable nullable host
|
|
388
|
+
receipt shape. Host selection, model quality, and latency are host-dependent
|
|
389
|
+
and unmeasured by this offline evaluator; no host invocation is required.
|
|
390
|
+
local_latency_caveat: >-
|
|
391
|
+
Deterministic and receipt-validation p95 values are run-specific local
|
|
392
|
+
conformance measurements, not semantic-host or end-to-end latency claims.
|
|
393
|
+
target_gates:
|
|
394
|
+
deterministic_phase1_p95: 25_ms
|
|
395
|
+
receipt_validation_p95: 25_ms
|
|
396
|
+
harmful_misroutes: 0
|
|
397
|
+
deterministic_fixture_accuracy: 100_percent
|
|
398
|
+
harmful_misroute_taxonomy:
|
|
399
|
+
- wrong_capability_starts_a_state_changing_or_destructive_flow
|
|
400
|
+
- a_compound_remainder_is_executed_or_chained_without_user_consent
|
|
401
|
+
- a_no_match_or_clarify_request_starts_non_status_work
|
|
402
|
+
- private_request_text_is_persisted_or_exported
|
|
403
|
+
execution_status: >-
|
|
404
|
+
Offline implementation acceptance requires frozen deterministic and
|
|
405
|
+
receipt-validation conformance only. The visible corpus proves protocol
|
|
406
|
+
conformance, not semantic generalization. Semantic host quality and latency
|
|
407
|
+
are explicitly unmeasured and do not block implementation acceptance.
|
|
408
|
+
|
|
409
|
+
deprecations:
|
|
410
|
+
decision_76: >-
|
|
411
|
+
Superseded by Decision mpulyomlyl only for the order-3 curated literal fast
|
|
412
|
+
path. Decision 76 continues to assign open-ended language and ambiguity
|
|
413
|
+
judgment to the LLM host; legacy trigger patterns, regexes, scores,
|
|
414
|
+
thresholds, and bands stay retired.
|
|
415
|
+
legacy_matchers: prohibited_from_active_routing
|
|
416
|
+
route_contract_changes: Require a new schema_version and a new frozen corpus version.
|
|
@@ -24,9 +24,9 @@ exclusions:
|
|
|
24
24
|
consumers:
|
|
25
25
|
- id: status_dashboard_renderer
|
|
26
26
|
startup_command: agentera prime --context status --format json
|
|
27
|
-
evidence: skills/agentera/SKILL.md:
|
|
27
|
+
evidence: skills/agentera/SKILL.md:83
|
|
28
28
|
dashboard_evidence: packages/cli/src/capabilities/status/instructions.ts
|
|
29
|
-
state_evidence: packages/cli/src/cli/commands/prime/orientationOutput.ts:
|
|
29
|
+
state_evidence: packages/cli/src/cli/commands/prime/orientationOutput.ts:209
|
|
30
30
|
consumed_fields:
|
|
31
31
|
- capability_context.instructions
|
|
32
32
|
- capability_context.context.status_context.health
|
|
@@ -39,16 +39,17 @@ consumers:
|
|
|
39
39
|
- capability_context.context.status_context.state_presence
|
|
40
40
|
- capability_context.context.status_context.source_contract
|
|
41
41
|
notes: >-
|
|
42
|
-
Bare `/agentera` and
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
42
|
+
Bare `/agentera` and status orientation run one status-context call.
|
|
43
|
+
Deterministic routing resolves bare, direct, and curated phrase requests;
|
|
44
|
+
every other request requires a validated semantic receipt before the
|
|
45
|
+
selected capability context starts. The status response contains the full
|
|
46
|
+
`capability_context.instructions` body and bounded
|
|
47
|
+
`capability_context.context.status_context`; omitted rich detail recovers
|
|
48
|
+
through its named command, never by raw artifact read.
|
|
48
49
|
- id: capability_context_dispatcher
|
|
49
50
|
startup_command: agentera prime --context <capability> --format json
|
|
50
|
-
evidence: packages/cli/src/cli/capabilityContext/startup.ts:
|
|
51
|
-
skill_evidence: skills/agentera/SKILL.md:
|
|
51
|
+
evidence: packages/cli/src/cli/capabilityContext/startup.ts:264
|
|
52
|
+
skill_evidence: skills/agentera/SKILL.md:77-96
|
|
52
53
|
consumed_fields:
|
|
53
54
|
- command
|
|
54
55
|
- status
|
|
@@ -100,7 +101,7 @@ consumers:
|
|
|
100
101
|
from the retired `prose` field to the v3 `capability_context.instructions`
|
|
101
102
|
field after the second Task 1 evaluation found this guidance was the one
|
|
102
103
|
remaining live consumer contradiction. Runtime authority
|
|
103
|
-
(capabilityContext/startup.ts:
|
|
104
|
+
(capabilityContext/startup.ts:264) and SKILL.md (lines 112-114) both use
|
|
104
105
|
`capability_context.instructions`. The
|
|
105
106
|
`documentation_drift` guard below prevents this guidance from drifting
|
|
106
107
|
back to `prose`; it does not execute a prime command.
|
|
@@ -112,12 +113,13 @@ consumers:
|
|
|
112
113
|
# (public_output_policy.canonical_field_set). Each list below now derives from
|
|
113
114
|
# that authority, so schema discovery, the emitted JSON source_contract.fields,
|
|
114
115
|
# the text-mode fields line, and the agent-ready-state contract advertise the
|
|
115
|
-
# same canonical 27-field set. The `issues` deprecated transition
|
|
116
|
-
#
|
|
117
|
-
#
|
|
118
|
-
#
|
|
119
|
-
#
|
|
120
|
-
#
|
|
116
|
+
# same canonical 27-field set. The `issues` deprecated transition field preserves
|
|
117
|
+
# the four legacy severity counts (`critical`, `degraded`, `normal`, `annoying`)
|
|
118
|
+
# with a stderr deprecation warning, but intentionally excludes canonical
|
|
119
|
+
# `todo.detail` so bounded detail is serialized once. It remains until the 3.0.0
|
|
120
|
+
# stable cut and is excluded from the canonical advertised
|
|
121
|
+
# `source_contract.fields` set (`todo` is canonical). It is NOT selector-only: it
|
|
122
|
+
# ships in the default bare briefing as bounded CLI transition compatibility.
|
|
121
123
|
# ---------------------------------------------------------------------------
|
|
122
124
|
field_authorities:
|
|
123
125
|
- id: orientation_output_emission
|
|
@@ -127,9 +129,9 @@ field_authorities:
|
|
|
127
129
|
role: actual_emission_authority
|
|
128
130
|
notes: >-
|
|
129
131
|
Emits PRIME_STRUCTURED_FIELDS as source_contract.fields; the keys actually
|
|
130
|
-
serialized by buildOrientationJsonPayload. `issues`
|
|
131
|
-
|
|
132
|
-
canonical set.
|
|
132
|
+
serialized by buildOrientationJsonPayload. `issues` emits only `todo`'s
|
|
133
|
+
four legacy severity counts with a stderr warning; canonical `todo.detail`
|
|
134
|
+
is not duplicated. `issues` is not a member of the canonical set.
|
|
133
135
|
- id: schema_advertised
|
|
134
136
|
location: packages/cli/src/cli/commands/schema.ts
|
|
135
137
|
authority: packages/cli/src/cli/stateQuery.ts:PRIME_STRUCTURED_FIELDS
|
|
@@ -287,9 +289,11 @@ field_classification:
|
|
|
287
289
|
- field: issues
|
|
288
290
|
status: deprecated_transition
|
|
289
291
|
rationale: >-
|
|
290
|
-
Deprecated
|
|
291
|
-
|
|
292
|
-
|
|
292
|
+
Deprecated count-only compatibility projection of `todo`. It preserves
|
|
293
|
+
critical, degraded, normal, and annoying for legacy consumers while
|
|
294
|
+
excluding canonical `todo.detail` to prevent startup payload duplication.
|
|
295
|
+
No current consumer in this inventory reads it; the projection remains
|
|
296
|
+
until its owning contract removes it.
|
|
293
297
|
- field: bundle
|
|
294
298
|
status: retired
|
|
295
299
|
rationale: >-
|
|
@@ -307,9 +311,21 @@ public_output_policy:
|
|
|
307
311
|
authority for the bare prime briefing. Task 2 reconciles schema.ts, the text
|
|
308
312
|
briefing hardcoded list, and agent-ready-state-contract.yaml hej.fields to
|
|
309
313
|
this set, removing the four-way drift documented above.
|
|
310
|
-
deprecated_alias_rule:
|
|
311
|
-
|
|
312
|
-
|
|
314
|
+
deprecated_alias_rule:
|
|
315
|
+
field: issues
|
|
316
|
+
status: retained_until_3_0_0_stable_cut
|
|
317
|
+
retained_fields:
|
|
318
|
+
- critical
|
|
319
|
+
- degraded
|
|
320
|
+
- normal
|
|
321
|
+
- annoying
|
|
322
|
+
excluded_fields:
|
|
323
|
+
- detail
|
|
324
|
+
rationale: >-
|
|
325
|
+
`issues` preserves the four legacy severity counts with a stderr
|
|
326
|
+
deprecation warning. Canonical bounded detail belongs only to `todo.detail`
|
|
327
|
+
and is intentionally excluded to prevent duplicate startup payload. No
|
|
328
|
+
task in this plan may remove the compatibility projection before the cut.
|
|
313
329
|
default_only_omission_rule: >-
|
|
314
330
|
Fields classified conditional or diagnostic may be omitted by Task 2 when
|
|
315
331
|
they are in their default/empty state, provided missing-versus-empty
|
|
@@ -327,17 +343,41 @@ public_output_policy:
|
|
|
327
343
|
Task 4 folds the bounded state into one `agentera prime --context status
|
|
328
344
|
--format json` response (<=25000 bytes) so the status dashboard needs no
|
|
329
345
|
separate bare-prime call or raw artifact read. The `--context` capsule
|
|
330
|
-
contract (command/status/capability_context) is unchanged
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
346
|
+
contract (command/status/capability_context) is unchanged, including
|
|
347
|
+
contract-owned state declarations, inventory, included/missing families,
|
|
348
|
+
schema diagnostics, and first-invocation reads. The status capsule assembles
|
|
349
|
+
and measures that fixed envelope first, then bounds
|
|
350
|
+
`capability_context.context.status_context` to the remaining complete-capsule
|
|
351
|
+
budget. If a projection leaves the complete envelope over budget, the next
|
|
352
|
+
allowance is set one byte below that projection's actual serialized size,
|
|
353
|
+
forcing a strictly smaller bounded form; projection continues monotonically
|
|
354
|
+
until the capsule fits or the routing-preserving irreducible form fails
|
|
355
|
+
explicitly. The status-specific degraded envelope retains TODO
|
|
356
|
+
aggregate/detail recovery, attention, and next_action rather than collapsing
|
|
357
|
+
to non-routing metadata. App/project integration and shared-skill diagnosis
|
|
358
|
+
remain available through the bounded status state while unrelated rich
|
|
359
|
+
copies are omitted.
|
|
335
360
|
status_context_contract:
|
|
336
361
|
startup_command: agentera prime --context status --format json
|
|
337
362
|
state_path: capability_context.context.status_context
|
|
338
363
|
instructions_path: capability_context.instructions
|
|
339
364
|
max_utf8_bytes: 25000
|
|
340
365
|
measurement: Buffer.byteLength(JSON.stringify(payload, null, 2) + "\n", "utf8")
|
|
366
|
+
budget_allocation: >-
|
|
367
|
+
Assemble contract-owned capability metadata, instructions, and context
|
|
368
|
+
keys and measure the complete envelope. When it is over budget, set the
|
|
369
|
+
next status_context allowance one byte below the current nested
|
|
370
|
+
projection's measured serialized size. Every accepted retry is therefore
|
|
371
|
+
strictly smaller; terminate only with a <=25000-byte capsule or explicit
|
|
372
|
+
irreducible routing-envelope failure.
|
|
373
|
+
required_capability_metadata:
|
|
374
|
+
- capability_context.state.declared_read_needs
|
|
375
|
+
- capability_context.state.declared_write_targets
|
|
376
|
+
- capability_context.state.artifact_inventory
|
|
377
|
+
- capability_context.state.included
|
|
378
|
+
- capability_context.state.schema_error
|
|
379
|
+
- capability_context.context.first_invocation_read
|
|
380
|
+
- capability_context.context.schema_error
|
|
341
381
|
required_state:
|
|
342
382
|
- health
|
|
343
383
|
- todo
|
|
@@ -347,6 +387,10 @@ public_output_policy:
|
|
|
347
387
|
- attention
|
|
348
388
|
- state_presence
|
|
349
389
|
- source_contract
|
|
390
|
+
budget_fallback_retains:
|
|
391
|
+
- todo
|
|
392
|
+
- attention
|
|
393
|
+
- next_action
|
|
350
394
|
omitted_detail_recovery: capability_context.context.status_context.brief.omitted_rich_state
|
|
351
395
|
raw_artifact_reads_required: false
|
|
352
396
|
fail_visible_rule: >-
|
|
@@ -437,7 +481,8 @@ default_emission_omission_contract:
|
|
|
437
481
|
history, shared_skill, project_integration, decision_attention, and
|
|
438
482
|
the bespoke context pointers (kept null on the bare surface). The
|
|
439
483
|
conditional v1_migration/docs/objective are retained when active (see
|
|
440
|
-
omitted_when_default). issues ships as the deprecated
|
|
484
|
+
omitted_when_default). issues ships as the deprecated count-only
|
|
485
|
+
transition projection and excludes canonical todo.detail.
|
|
441
486
|
projected_subdetail:
|
|
442
487
|
- field: plan.tasks
|
|
443
488
|
reason: plan_task_detail
|