agentera 3.0.0-dev.27 → 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/bundle/CHANGELOG.md +10 -0
- 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 +2 -2
- package/bundle/references/analysis/benchmark.md +2 -9
- package/bundle/references/artifacts/state-storage-authority.yaml +298 -13
- 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 +12 -11
- 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 +1 -3
- 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/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 +1 -1
- package/dist/capabilities/discuss/instructions.js +1 -1
- package/dist/capabilities/discuss/instructions.js.map +1 -1
- package/dist/capabilities/plan/instructions.js +1 -1
- package/dist/capabilities/plan/instructions.js.map +1 -1
- package/dist/cli/capabilityContext/evidence.js +1 -1
- package/dist/cli/capabilityContext/evidence.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/prime/briefOrientation.js +10 -3
- package/dist/cli/commands/prime/briefOrientation.js.map +1 -1
- package/dist/cli/commands/prime/collectEntityOrientation.js +64 -4
- package/dist/cli/commands/prime/collectEntityOrientation.js.map +1 -1
- package/dist/cli/commands/prime/orientationOutput.js +41 -15
- package/dist/cli/commands/prime/orientationOutput.js.map +1 -1
- package/dist/cli/commands/prime.js +4 -3
- package/dist/cli/commands/prime.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/state/write.js +19 -0
- package/dist/cli/commands/state/write.js.map +1 -1
- package/dist/cli/commands/verify.js +17 -1
- package/dist/cli/commands/verify.js.map +1 -1
- package/dist/cli/dispatch/index.js +18 -0
- package/dist/cli/dispatch/index.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/eval/hybridRouteEvaluation.js +156 -0
- package/dist/eval/hybridRouteEvaluation.js.map +1 -0
- package/dist/registries/capabilityContract.js +5 -20
- package/dist/registries/capabilityContract.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/triggerLoader.js +7 -43
- package/dist/registries/triggerLoader.js.map +1 -1
- package/dist/release/releaseMetadata.js +2 -0
- package/dist/release/releaseMetadata.js.map +1 -1
- package/dist/state/archiveDiscovery.js +24 -35
- package/dist/state/archiveDiscovery.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/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/entityMigrationCausality.js +99 -0
- package/dist/state/entityMigrationCausality.js.map +1 -0
- package/dist/state/entityMigrationPreview.js +138 -77
- package/dist/state/entityMigrationPreview.js.map +1 -1
- package/dist/state/entityStorage.js +59 -24
- package/dist/state/entityStorage.js.map +1 -1
- package/dist/state/healthEntities.js +28 -31
- package/dist/state/healthEntities.js.map +1 -1
- package/dist/state/legacySummaryRecord.js +7 -0
- package/dist/state/legacySummaryRecord.js.map +1 -0
- package/dist/state/listCursor.js +43 -0
- package/dist/state/listCursor.js.map +1 -0
- package/dist/state/migrationSourceBinding.js +29 -0
- package/dist/state/migrationSourceBinding.js.map +1 -0
- package/dist/state/progressEntities.js +35 -59
- package/dist/state/progressEntities.js.map +1 -1
- package/dist/state/retrievalAuthority.js +10 -0
- package/dist/state/retrievalAuthority.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/validate/capability.js +11 -2
- package/dist/validate/capability.js.map +1 -1
- package/package.json +2 -2
- package/bundle/references/analysis/analytics-boundary-proportional-2026-07-20.yaml +0 -74
- package/bundle/references/analysis/evidence/analytics-boundary-proportional-2026-07-20/source-focused-1.json.gz +0 -0
- package/bundle/references/analysis/evidence/analytics-boundary-proportional-2026-07-20/source-focused-2.json.gz +0 -0
- package/bundle/references/analysis/evidence/analytics-boundary-proportional-2026-07-20/source-focused-3.json.gz +0 -0
- package/bundle/references/analysis/evidence/migration-pagination-proportional-2026-07-20/source-focused-1.json.gz +0 -0
- package/bundle/references/analysis/evidence/migration-pagination-proportional-2026-07-20/source-focused-2.json.gz +0 -0
- package/bundle/references/analysis/evidence/migration-pagination-proportional-2026-07-20/source-focused-3.json.gz +0 -0
- package/bundle/references/analysis/evidence/verification-baseline-2026-07-20/precommit-cli-route.log.gz +0 -0
- package/bundle/references/analysis/evidence/verification-baseline-2026-07-20/precommit-cli.log.gz +0 -0
- package/bundle/references/analysis/evidence/verification-baseline-2026-07-20/precommit-documentation.log.gz +0 -0
- package/bundle/references/analysis/evidence/verification-baseline-2026-07-20/recompute.mjs +0 -98
- package/bundle/references/analysis/evidence/verification-baseline-2026-07-20/source-1.json.gz +0 -0
- package/bundle/references/analysis/evidence/verification-baseline-2026-07-20/source-2.json.gz +0 -0
- package/bundle/references/analysis/evidence/verification-baseline-2026-07-20/source-3.json.gz +0 -0
- package/bundle/references/analysis/migration-pagination-proportional-2026-07-20.yaml +0 -64
- package/bundle/references/analysis/verification-baseline-2026-07-20.yaml +0 -313
- package/bundle/references/analysis/verification-final-proof-2026-07-21.yaml +0 -340
- package/bundle/references/analysis/worker-policy-2026-07-21.yaml +0 -207
package/bundle/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,15 @@
|
|
|
4
4
|
|
|
5
5
|
### Changed
|
|
6
6
|
|
|
7
|
+
- `agentera route receipt` now requires the phase-one `semantic_capsule_sha256` as well as `request_sha256`; it fails closed when the current trigger-intent capsule differs, preventing startup from a receipt classified against stale routing authority.
|
|
8
|
+
- Defined the portable routing boundary: `agentera route request` deterministically resolves bare `/agentera`, explicit capability names or aliases, and curated leading phrases to a capability; every other request remains host-owned open-ended semantic classification. `agentera route receipt` validates the host result before authorizing startup, while `agentera route evaluate` and `agentera check verify eval routing` gate implementation with the frozen offline synthetic corpus; Agentera ships no built-in model service or live benchmark.
|
|
9
|
+
- Added ordinary progress, decision, and health reads plus startup handling for
|
|
10
|
+
immutable v2-compaction summaries. Summary-only history now remains explicitly
|
|
11
|
+
degraded with source provenance and caveats instead of appearing as current
|
|
12
|
+
detail. Migration preview now separates corrupt source roots from generated
|
|
13
|
+
relationship dependents, and a Git-backed lifecycle proof covers interrupted
|
|
14
|
+
retry without changing aggregate source bytes. The contract excludes
|
|
15
|
+
reconstruction, dual authority, and repair/import commands.
|
|
7
16
|
- Changed the v2-to-v3 development upgrade to one full Git-backed command that converts unchanged tracked input directly into canonical entities, accepts exact partial targets on retry, validates the complete graph, and activates entity authority last. Runtime blockers are reported as post-activation action-required work without modifying the blocked resource. The optional dry-run is read-only; cross-major apply is one-way and has no staging graph, recovery journal, rollback, restore, non-Git, or partial workflow.
|
|
8
17
|
- Cut ordinary project state over to one canonical writer-owned file per entity. Public records now use only bare `id` and `artifact` identity, bounded `list` and exact `get --id` reads, and typed writers discovered through `agentera state <artifact> explain`; aggregate state files and ordinal selectors remain migration or historical evidence only.
|
|
9
18
|
- Split lifecycle validation orchestration from the public validation facade while preserving its import surface and validation behavior.
|
|
@@ -74,6 +83,7 @@
|
|
|
74
83
|
|
|
75
84
|
### Fixed
|
|
76
85
|
|
|
86
|
+
- Fixed natural-language capability routing to select from the user's expressed intent and trigger metadata before capability startup; status `next_action` now remains an orientation readiness suggestion rather than a classifier for non-status requests.
|
|
77
87
|
- Fixed overlapping source, build, and package verification to use isolated construction and one atomically selected `dist` + `bundle` generation; clean source no longer requires checkout output, package proof still runs from an extracted tarball, and `pnpm -C packages/cli run pack:dry-run` replaces direct checkout `npm pack`.
|
|
78
88
|
- Fixed `agentera prime --context status` to report severity totals across every open TODO while keeping attention and routing detail bounded with explicit omission recovery.
|
|
79
89
|
- Fixed `agentera prime --context status` to exclude resolved entity TODOs before bounded pagination, so severity counts, attention, and next-action routing reflect only open work.
|
package/bundle/DESIGN.md
CHANGED
|
@@ -1,18 +1,14 @@
|
|
|
1
1
|
# Agentera
|
|
2
2
|
|
|
3
|
-
Visual identity system for Agentera
|
|
3
|
+
Visual identity system for Agentera's CLI and agent-rendered Markdown.
|
|
4
4
|
|
|
5
5
|
## Surface register
|
|
6
6
|
|
|
7
|
-
One brand (Agentera),
|
|
7
|
+
One brand (Agentera), with brand-vs-product output registers and suite-vs-project design authorities.
|
|
8
8
|
|
|
9
9
|
| Surface | Authority | Renders |
|
|
10
10
|
| --- | --- | --- |
|
|
11
11
|
| `terminal` | This file (`DESIGN.md`) | CLI dashboard, capability introductions, structured artifact headers in Markdown |
|
|
12
|
-
| `mobile` | `packages/mobile/DESIGN.md` | Touch UI, smart bar, sidebar, chat composer, responsive layouts |
|
|
13
|
-
|
|
14
|
-
Shared across surfaces: product name, capability glyphs, sharp-colleague voice.
|
|
15
|
-
Not shared: box-drawing logo usage (terminal key moments only), terminal severity arrows in mobile UI, Tailwind touch targets in terminal output.
|
|
16
12
|
|
|
17
13
|
## Output Registers
|
|
18
14
|
|
|
@@ -65,7 +61,7 @@ Governs the **host repository's own product** — web UI, the user's coding-agen
|
|
|
65
61
|
- Design in a host project writes **project** `DESIGN.md` only; never merge suite design sources into it.
|
|
66
62
|
- Status reads project design for **status metadata** (exists, stale, missing) — not to style suite chrome.
|
|
67
63
|
- When both authorities apply in one session, suite chrome follows suite sources; the host product follows project `DESIGN.md`.
|
|
68
|
-
- In the Agentera repository, root `DESIGN.md` is suite terminal dogfood
|
|
64
|
+
- In the Agentera repository, root `DESIGN.md` is the suite terminal dogfood and brand register.
|
|
69
65
|
|
|
70
66
|
## Philosophy
|
|
71
67
|
|
package/bundle/README.md
CHANGED
|
@@ -117,13 +117,11 @@ The intentional singleton project state is:
|
|
|
117
117
|
| ♾ | profile | Reusable decision profile |
|
|
118
118
|
| ⎈ | orchestrate | Autonomous plan execution with evaluation |
|
|
119
119
|
|
|
120
|
-
##
|
|
120
|
+
## Package
|
|
121
121
|
|
|
122
122
|
| Package | Role |
|
|
123
123
|
| --- | --- |
|
|
124
124
|
| `packages/cli` (`agentera`) | Primary TypeScript CLI and bundled runtime data |
|
|
125
|
-
| `packages/web` (`@agentera/web`) | Marketing and Starlight documentation site |
|
|
126
|
-
| `packages/mobile` (`@agentera/mobile`) | Docs-only mobile product stub |
|
|
127
125
|
|
|
128
126
|
Contributor commands and repository rules live in [AGENTS.md](./AGENTS.md).
|
|
129
127
|
Migration and recovery details live in [UPGRADE.md](./UPGRADE.md).
|
|
@@ -132,7 +130,6 @@ Migration and recovery details live in [UPGRADE.md](./UPGRADE.md).
|
|
|
132
130
|
pnpm -C packages/cli test
|
|
133
131
|
pnpm -C packages/cli run typecheck
|
|
134
132
|
pnpm -C packages/cli build
|
|
135
|
-
vp run web:check
|
|
136
133
|
```
|
|
137
134
|
|
|
138
135
|
License: [Apache-2.0](./LICENSE) · Author: Jonathan Gabor
|
package/bundle/UPGRADE.md
CHANGED
|
@@ -112,6 +112,39 @@ Forward migration is one-way. Returning to the Python 2.x line is unsupported,
|
|
|
112
112
|
and cross-major apply has no rollback, restore, non-Git, or partial workflow.
|
|
113
113
|
If apply is interrupted, rerun the same full apply command.
|
|
114
114
|
|
|
115
|
+
### Compacted v2 summaries
|
|
116
|
+
|
|
117
|
+
Entity-cutover publication for valid v2 compaction output is implemented for
|
|
118
|
+
`progress`, `decisions`, and `health`. Each valid summary becomes one immutable,
|
|
119
|
+
read-only canonical
|
|
120
|
+
`progress_summary`, `decision_summary`, or `health_summary` entity. The entity
|
|
121
|
+
requires `summary`, preserves every source-retained field except forbidden
|
|
122
|
+
identity aliases, and records the source path plus source-record SHA-256.
|
|
123
|
+
|
|
124
|
+
Ordinary summary readers and startup projection are implemented. Reads report
|
|
125
|
+
`detail_availability: summary`, `compatibility: degraded`, record-level source
|
|
126
|
+
provenance, and applicable caveats; startup presents summary-only history as
|
|
127
|
+
degraded history rather than current detail. Full records retain their existing
|
|
128
|
+
temporal order; the degraded-summary segment follows in deterministic canonical-ID
|
|
129
|
+
order and makes no chronology claim. Retained decision-summary satisfaction is
|
|
130
|
+
inline and read-only, may be absent, and never creates a standalone satisfaction
|
|
131
|
+
target. Preview reports independent source roots separately from generated
|
|
132
|
+
relationship dependents: `root_blockers + dependent_blockers = blockers`, and
|
|
133
|
+
each dependent names its stable `root_source_identity`. A Git-backed regression
|
|
134
|
+
copies the supported `progress`, `decisions`, and `health` sources from pinned
|
|
135
|
+
v2.7.11 compaction output; its protected experiment evidence remains unchanged
|
|
136
|
+
and excluded. It verifies preview bindings and target hashes, marker-last
|
|
137
|
+
publication and interrupted exact-target retry, canonical validation, ordinary
|
|
138
|
+
list/get reads for retained full and summary entries, human/JSON prime, and
|
|
139
|
+
repeated no-change upgrade behavior while aggregate source hashes remain stable.
|
|
140
|
+
Inherited full-decision `high`, `medium`, and `low` confidence remains readable
|
|
141
|
+
with a legacy caveat; newly supplied or amended confidence remains strict.
|
|
142
|
+
|
|
143
|
+
Protected objective experiments, runtime-local session state, and compacted TODO
|
|
144
|
+
rows that already satisfy the canonical TODO shape are outside this summary
|
|
145
|
+
scope. This contract does not reconstruct Git history, normalize source records,
|
|
146
|
+
create dual authority, or add a repair or import command.
|
|
147
|
+
|
|
115
148
|
## Unsupported legacy state
|
|
116
149
|
|
|
117
150
|
Pending v1 Markdown state and unknown marker-absent state are not automatic
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
schema_version: agentera.hybrid_routing_corpus.v3
|
|
2
|
+
status: frozen
|
|
3
|
+
text_provenance: All request text in this fixture is synthetic and authored for conformance testing.
|
|
4
|
+
retention_policy: >-
|
|
5
|
+
This fixture may contain only synthetic or explicitly consented text. Evaluation
|
|
6
|
+
reports retain case IDs and aggregate metrics, never private request strings.
|
|
7
|
+
freeze_policy: >-
|
|
8
|
+
Development and adversarial entries are the sole frozen synthetic implementation
|
|
9
|
+
corpus. Additions or expectation changes require a new schema_version and a new
|
|
10
|
+
corpus file; no hidden, sealed, or vendor-host corpus is required.
|
|
11
|
+
partitions:
|
|
12
|
+
development: { status: frozen, purpose: phrase inventory and structural contract development }
|
|
13
|
+
adversarial: { status: frozen, purpose: "abstention, separator, and invalid-receipt safety" }
|
|
14
|
+
|
|
15
|
+
route_cases:
|
|
16
|
+
- { id: DEV-PHRASE-STATUS, partition: development, request: "show project briefing for the checkout", expected: { phase1: deterministic_selection, tier: phrase, capability: status } }
|
|
17
|
+
- { id: DEV-PHRASE-VISION, partition: development, request: "define product direction for collaboration", expected: { phase1: deterministic_selection, tier: phrase, capability: vision } }
|
|
18
|
+
- { id: DEV-PHRASE-DISCUSS, partition: development, request: "help me decide: cache or queue", expected: { phase1: deterministic_selection, tier: phrase, capability: discuss, topic: ": cache or queue" } }
|
|
19
|
+
- { id: DEV-PHRASE-RESEARCH, partition: development, request: "study external patterns for durable jobs", expected: { phase1: deterministic_selection, tier: phrase, capability: research } }
|
|
20
|
+
- { id: DEV-PHRASE-PLAN, partition: development, request: "make an implementation plan for import safety", expected: { phase1: deterministic_selection, tier: phrase, capability: plan } }
|
|
21
|
+
- { id: DEV-PHRASE-BUILD, partition: development, request: "implement the approved plan for task one", expected: { phase1: deterministic_selection, tier: phrase, capability: build } }
|
|
22
|
+
- { id: DEV-PHRASE-OPTIMIZE, partition: development, request: "improve a measured bottleneck in startup", expected: { phase1: deterministic_selection, tier: phrase, capability: optimize } }
|
|
23
|
+
- { id: DEV-PHRASE-AUDIT, partition: development, request: "check codebase health before release", expected: { phase1: deterministic_selection, tier: phrase, capability: audit } }
|
|
24
|
+
- { id: DEV-PHRASE-DOCUMENT, partition: development, request: "refresh project documentation for setup", expected: { phase1: deterministic_selection, tier: phrase, capability: document } }
|
|
25
|
+
- { id: DEV-PHRASE-PROFILE, partition: development, request: "save a decision profile for local work", expected: { phase1: deterministic_selection, tier: phrase, capability: profile } }
|
|
26
|
+
- { id: DEV-PHRASE-DESIGN, partition: development, request: "shape the interface for review", expected: { phase1: deterministic_selection, tier: phrase, capability: design } }
|
|
27
|
+
- { id: DEV-PHRASE-ORCHESTRATE, partition: development, request: "execute the approved plan for phase two", expected: { phase1: deterministic_selection, tier: phrase, capability: orchestrate } }
|
|
28
|
+
- { id: DEV-ABSTAIN-STATUS, partition: development, request: "show project briefings", expected: { phase1: semantic_required, reason: literal_abstention, boundary: status } }
|
|
29
|
+
- { id: DEV-ABSTAIN-VISION, partition: development, request: "define our product direction", expected: { phase1: semantic_required, reason: literal_abstention, boundary: vision } }
|
|
30
|
+
- { id: DEV-ABSTAIN-DISCUSS, partition: development, request: "help us decide", expected: { phase1: semantic_required, reason: literal_abstention, boundary: discuss } }
|
|
31
|
+
- { id: DEV-ABSTAIN-RESEARCH, partition: development, request: "research patterns", expected: { phase1: semantic_required, reason: literal_abstention, boundary: research } }
|
|
32
|
+
- { id: DEV-ABSTAIN-PLAN, partition: development, request: "make implementation plan", expected: { phase1: semantic_required, reason: literal_abstention, boundary: plan } }
|
|
33
|
+
- { id: DEV-ABSTAIN-BUILD, partition: development, request: "implement approved plan", expected: { phase1: semantic_required, reason: literal_abstention, boundary: build } }
|
|
34
|
+
- { id: DEV-ABSTAIN-OPTIMIZE, partition: development, request: "optimize measured bottleneck", expected: { phase1: semantic_required, reason: literal_abstention, boundary: optimize } }
|
|
35
|
+
- { id: DEV-ABSTAIN-AUDIT, partition: development, request: "audit the codebase health", expected: { phase1: semantic_required, reason: literal_abstention, boundary: audit } }
|
|
36
|
+
- { id: DEV-ABSTAIN-DOCUMENT, partition: development, request: "update documentation", expected: { phase1: semantic_required, reason: literal_abstention, boundary: document } }
|
|
37
|
+
- { id: DEV-ABSTAIN-PROFILE, partition: development, request: "save decision profile", expected: { phase1: semantic_required, reason: literal_abstention, boundary: profile } }
|
|
38
|
+
- { id: DEV-ABSTAIN-DESIGN, partition: development, request: "design an interface", expected: { phase1: semantic_required, reason: literal_abstention, boundary: design } }
|
|
39
|
+
- { id: DEV-ABSTAIN-ORCHESTRATE, partition: development, request: "execute approved plan", expected: { phase1: semantic_required, reason: literal_abstention, boundary: orchestrate } }
|
|
40
|
+
- { id: DEV-BARE, partition: development, request: "/agentera", expected: { phase1: deterministic_selection, tier: bare, capability: status } }
|
|
41
|
+
- { id: DEV-DIRECT, partition: development, request: "/agentera plan import safety", expected: { phase1: deterministic_selection, tier: direct, capability: plan } }
|
|
42
|
+
- { id: ADV-BARE-WITH-TEXT, partition: adversarial, request: "/agentera what time is it", expected: { phase1: semantic_required, reason: nonbare_request, boundary: bare } }
|
|
43
|
+
- { id: ADV-DIRECT-PARTIAL, partition: adversarial, request: "/agentera planner import safety", expected: { phase1: semantic_required, reason: invalid_direct_name, boundary: direct } }
|
|
44
|
+
- { id: ADV-QUOTED-PHRASE, partition: adversarial, request: 'The words "help me decide" appear in this quote.', expected: { phase1: semantic_required, reason: nonleading_phrase } }
|
|
45
|
+
- { id: ADV-NEGATED-PHRASE, partition: adversarial, request: "Do not help me decide; just show alternatives.", expected: { phase1: semantic_required, reason: nonleading_phrase } }
|
|
46
|
+
- { id: ADV-PUNCTUATED-PHRASE, partition: adversarial, request: "help me decide: now", expected: { phase1: deterministic_selection, tier: phrase, capability: discuss, topic: ": now" } }
|
|
47
|
+
- { id: ADV-EMDASH-SEPARATOR, partition: adversarial, request: "help me decide—now", expected: { phase1: deterministic_selection, tier: phrase, capability: discuss, topic: "—now" } }
|
|
48
|
+
- { id: ADV-FULLWIDTH-PHRASE, partition: adversarial, request: "HELP ME DECIDE: cache", expected: { phase1: deterministic_selection, tier: phrase, capability: discuss, topic: ": cache" } }
|
|
49
|
+
- { id: ADV-REPEATED-WHITESPACE, partition: adversarial, request: "help\t\tme decide\ncache", expected: { phase1: deterministic_selection, tier: phrase, capability: discuss, topic: "\ncache" } }
|
|
50
|
+
- { id: ADV-PARTIAL-PHRASE, partition: adversarial, request: "help me deciding now", expected: { phase1: semantic_required, reason: partial_token } }
|
|
51
|
+
- { id: ADV-UNSUPPORTED-PUNCTUATION, partition: adversarial, request: "help me decide! now", expected: { phase1: semantic_required, reason: unsupported_separator } }
|
|
52
|
+
|
|
53
|
+
receipt_cases:
|
|
54
|
+
- id: DEV-RECEIPT-SELECT-PASS
|
|
55
|
+
partition: development
|
|
56
|
+
valid: true
|
|
57
|
+
request: "How should we divide the import work?"
|
|
58
|
+
expected_terminal: selected
|
|
59
|
+
receipt: { version: agentera.route_receipt.v1, request_sha256: c28396095a91d6b3f0f6485f8cc4a898f7d012a1d01d000653786fa869626b70, semantic_capsule_sha256: f885d882a3d08a59aac28cebbb9a3270a28096b6f411f55f99e8772c3ce7637e, outcome: select, capability: plan, compound: none }
|
|
60
|
+
- id: ADV-RECEIPT-SELECT-MISSING-CAPABILITY
|
|
61
|
+
partition: adversarial
|
|
62
|
+
valid: false
|
|
63
|
+
request: "How should we divide the import work?"
|
|
64
|
+
expected_terminal: invalid_receipt
|
|
65
|
+
error: required.capability
|
|
66
|
+
receipt: { version: agentera.route_receipt.v1, request_sha256: c28396095a91d6b3f0f6485f8cc4a898f7d012a1d01d000653786fa869626b70, semantic_capsule_sha256: f885d882a3d08a59aac28cebbb9a3270a28096b6f411f55f99e8772c3ce7637e, outcome: select, compound: none }
|
|
67
|
+
- id: DEV-RECEIPT-CLARIFY-PASS
|
|
68
|
+
partition: development
|
|
69
|
+
valid: true
|
|
70
|
+
request: "Make it better"
|
|
71
|
+
expected_terminal: clarification
|
|
72
|
+
receipt: { version: agentera.route_receipt.v1, request_sha256: d71e91121b85d9e84a5dea968dc995878667e4b631b92f8742622427a23cdaa6, semantic_capsule_sha256: f885d882a3d08a59aac28cebbb9a3270a28096b6f411f55f99e8772c3ce7637e, outcome: clarify, question: "Do you want a plan or implementation?" }
|
|
73
|
+
- id: ADV-RECEIPT-CLARIFY-MISSING-QUESTION
|
|
74
|
+
partition: adversarial
|
|
75
|
+
valid: false
|
|
76
|
+
request: "Make it better"
|
|
77
|
+
expected_terminal: invalid_receipt
|
|
78
|
+
error: required.question
|
|
79
|
+
receipt: { version: agentera.route_receipt.v1, request_sha256: d71e91121b85d9e84a5dea968dc995878667e4b631b92f8742622427a23cdaa6, semantic_capsule_sha256: f885d882a3d08a59aac28cebbb9a3270a28096b6f411f55f99e8772c3ce7637e, outcome: clarify }
|
|
80
|
+
- id: DEV-RECEIPT-NO-MATCH-PASS
|
|
81
|
+
partition: development
|
|
82
|
+
valid: true
|
|
83
|
+
request: "What time is the train?"
|
|
84
|
+
expected_terminal: status_fallback
|
|
85
|
+
receipt: { version: agentera.route_receipt.v1, request_sha256: b712acb8d881cc37a94f06c8ec9efb91f6ce24fa4e7349883dbbb36b57c5d7bc, semantic_capsule_sha256: f885d882a3d08a59aac28cebbb9a3270a28096b6f411f55f99e8772c3ce7637e, outcome: no_match }
|
|
86
|
+
- id: ADV-RECEIPT-NO-MATCH-FORBIDDEN-CAPABILITY
|
|
87
|
+
partition: adversarial
|
|
88
|
+
valid: false
|
|
89
|
+
request: "What time is the train?"
|
|
90
|
+
expected_terminal: invalid_receipt
|
|
91
|
+
error: not
|
|
92
|
+
receipt: { version: agentera.route_receipt.v1, request_sha256: b712acb8d881cc37a94f06c8ec9efb91f6ce24fa4e7349883dbbb36b57c5d7bc, semantic_capsule_sha256: f885d882a3d08a59aac28cebbb9a3270a28096b6f411f55f99e8772c3ce7637e, outcome: no_match, capability: plan }
|
|
93
|
+
- id: DEV-RECEIPT-COMPOUND-PRESERVE-PASS
|
|
94
|
+
partition: development
|
|
95
|
+
valid: true
|
|
96
|
+
request: "Plan the migration and then implement it"
|
|
97
|
+
expected_terminal: selected
|
|
98
|
+
receipt: { version: agentera.route_receipt.v1, request_sha256: f26da5835071b706a176032b263b0131817a56dcd2965f4198e57e2e23b0ac60, semantic_capsule_sha256: f885d882a3d08a59aac28cebbb9a3270a28096b6f411f55f99e8772c3ce7637e, outcome: select, capability: plan, compound: preserve, remainder_span: { start: 4, end: 40 } }
|
|
99
|
+
- id: ADV-RECEIPT-COMPOUND-INVALID
|
|
100
|
+
partition: adversarial
|
|
101
|
+
valid: false
|
|
102
|
+
request: "Plan the migration and then implement it"
|
|
103
|
+
expected_terminal: invalid_receipt
|
|
104
|
+
error: compound.enum
|
|
105
|
+
receipt: { version: agentera.route_receipt.v1, request_sha256: f26da5835071b706a176032b263b0131817a56dcd2965f4198e57e2e23b0ac60, semantic_capsule_sha256: f885d882a3d08a59aac28cebbb9a3270a28096b6f411f55f99e8772c3ce7637e, outcome: select, capability: plan, compound: clarify }
|
|
106
|
+
- id: ADV-RECEIPT-MISSING-VERSION
|
|
107
|
+
partition: adversarial
|
|
108
|
+
valid: false
|
|
109
|
+
request: "Map the migration before implementation."
|
|
110
|
+
expected_terminal: invalid_receipt
|
|
111
|
+
error: required.version
|
|
112
|
+
receipt: { request_sha256: fc8dfdefc423ea7c375669b044a01c443b48be880e0c4e769579d296ef048f74, semantic_capsule_sha256: f885d882a3d08a59aac28cebbb9a3270a28096b6f411f55f99e8772c3ce7637e, outcome: select, capability: plan, compound: none }
|
|
113
|
+
- id: ADV-RECEIPT-INVALID-DIGEST
|
|
114
|
+
partition: adversarial
|
|
115
|
+
valid: false
|
|
116
|
+
request: "Which capability should handle this?"
|
|
117
|
+
expected_terminal: invalid_receipt
|
|
118
|
+
error: request_sha256.pattern
|
|
119
|
+
receipt: { version: agentera.route_receipt.v1, request_sha256: not-a-digest, semantic_capsule_sha256: f885d882a3d08a59aac28cebbb9a3270a28096b6f411f55f99e8772c3ce7637e, outcome: select, capability: plan, compound: none }
|
|
120
|
+
- id: ADV-RECEIPT-UNKNOWN-CAPABILITY
|
|
121
|
+
partition: adversarial
|
|
122
|
+
valid: false
|
|
123
|
+
request: "Which capability should handle this?"
|
|
124
|
+
expected_terminal: invalid_receipt
|
|
125
|
+
error: binding.capability
|
|
126
|
+
receipt: { version: agentera.route_receipt.v1, request_sha256: 9516783492db2d389ec305dfea5f60d23e6d136c7cd27e236bbc29daeca427df, semantic_capsule_sha256: f885d882a3d08a59aac28cebbb9a3270a28096b6f411f55f99e8772c3ce7637e, outcome: select, capability: unknown, compound: none }
|
|
127
|
+
- id: ADV-RECEIPT-OUT-OF-BOUNDS-SPAN
|
|
128
|
+
partition: adversarial
|
|
129
|
+
valid: false
|
|
130
|
+
request: "Keep the second request deferred."
|
|
131
|
+
expected_terminal: invalid_receipt
|
|
132
|
+
error: binding.remainder_span
|
|
133
|
+
receipt: { version: agentera.route_receipt.v1, request_sha256: 8b5ea821ff9831f5d5c9a87e2b5a2eefbfbbce54032d2f1bc160ada48eb82180, semantic_capsule_sha256: f885d882a3d08a59aac28cebbb9a3270a28096b6f411f55f99e8772c3ce7637e, outcome: select, capability: plan, compound: preserve, remainder_span: { start: 0, end: 999 } }
|
|
134
|
+
- id: ADV-RECEIPT-MISSING-CAPSULE-DIGEST
|
|
135
|
+
partition: adversarial
|
|
136
|
+
valid: false
|
|
137
|
+
request: "Which capability should handle this?"
|
|
138
|
+
expected_terminal: invalid_receipt
|
|
139
|
+
error: required.semantic_capsule_sha256
|
|
140
|
+
receipt: { version: agentera.route_receipt.v1, request_sha256: 9516783492db2d389ec305dfea5f60d23e6d136c7cd27e236bbc29daeca427df, outcome: select, capability: plan, compound: none }
|
|
141
|
+
- id: ADV-RECEIPT-INVALID-CAPSULE-DIGEST
|
|
142
|
+
partition: adversarial
|
|
143
|
+
valid: false
|
|
144
|
+
request: "Which capability should handle this?"
|
|
145
|
+
expected_terminal: invalid_receipt
|
|
146
|
+
error: semantic_capsule_sha256.pattern
|
|
147
|
+
receipt: { version: agentera.route_receipt.v1, request_sha256: 9516783492db2d389ec305dfea5f60d23e6d136c7cd27e236bbc29daeca427df, semantic_capsule_sha256: not-a-digest, outcome: select, capability: plan, compound: none }
|
|
148
|
+
- id: ADV-RECEIPT-STALE-CAPSULE-DIGEST
|
|
149
|
+
partition: adversarial
|
|
150
|
+
valid: false
|
|
151
|
+
request: "Which capability should handle this?"
|
|
152
|
+
expected_terminal: invalid_receipt
|
|
153
|
+
error: binding.semantic_capsule_sha256
|
|
154
|
+
receipt: { version: agentera.route_receipt.v1, request_sha256: 9516783492db2d389ec305dfea5f60d23e6d136c7cd27e236bbc29daeca427df, semantic_capsule_sha256: "0000000000000000000000000000000000000000000000000000000000000000", outcome: select, capability: plan, compound: none }
|
|
@@ -30,8 +30,8 @@ by [`docs/packaging/v3-packaging.md`](../../docs/packaging/v3-packaging.md).
|
|
|
30
30
|
|
|
31
31
|
The self-contained npm package ships `dist/` plus `bundle/`. Bundle data
|
|
32
32
|
includes the canonical `skills/` tree, required `references/`, `registry.json`,
|
|
33
|
-
and package guidance. Compiled commands
|
|
34
|
-
includes its capability schemas, artifact schemas, and canonical
|
|
33
|
+
the frozen routing evaluation corpus, and package guidance. Compiled commands
|
|
34
|
+
ship in `dist/`. The shared-skill tree includes its capability schemas, artifact schemas, and canonical
|
|
35
35
|
`skills/agentera/agents/*.toml` descriptors.
|
|
36
36
|
|
|
37
37
|
The package lane's isolated package fixture invokes `npm pack --json
|
|
@@ -23,16 +23,9 @@ contract validators, and runtime smoke checks.
|
|
|
23
23
|
| --- | --- | --- | --- |
|
|
24
24
|
| Startup state benchmark | `mage bench:startupState` | Measures how often Agentera CLI state reads are followed by raw artifact access during startup/state gathering. | Manual only; forbidden in normal CI. |
|
|
25
25
|
|
|
26
|
-
Verification
|
|
27
|
-
|
|
28
|
-
production-scale ownership map, and unresolved worker/lane criteria live in
|
|
29
|
-
[`verification-baseline-2026-07-20.yaml`](./verification-baseline-2026-07-20.yaml).
|
|
30
|
-
That baseline remains measurement authority. Current test ownership, independent
|
|
31
|
-
owner commands, mixed-file separation markers, conservative routing, and named
|
|
32
|
-
execution-policy compositions live in
|
|
26
|
+
Verification ownership, independent owner commands, mixed-file separation
|
|
27
|
+
markers, conservative routing, and named execution-policy compositions live in
|
|
33
28
|
[`verification-policy.yaml`](./verification-policy.yaml).
|
|
34
|
-
Losslessly compressed raw reports live beside a dependency-free recomputation
|
|
35
|
-
command under `references/analysis/evidence/verification-baseline-2026-07-20/`.
|
|
36
29
|
|
|
37
30
|
The startup benchmark is an optimization signal for Decision 51 and Decision 52.
|
|
38
31
|
It does not implement a startup state envelope or change runtime behavior.
|