diff --git a/examples/core-aggregate-team-action-health/contract.json b/examples/core-aggregate-team-action-health/contract.json index e4ff3c4f..c6bccd7a 100644 --- a/examples/core-aggregate-team-action-health/contract.json +++ b/examples/core-aggregate-team-action-health/contract.json @@ -4,17 +4,17 @@ "id": "core.aggregate-team-action-health", "namespace": "core", "name": "aggregate-team-action-health", - "version": "1.0.1", + "version": "1.1.0", "lifecycle": "active", "owner": { "team": "loop", "contact": "founders@loop.dev" }, "summary": "Aggregates open action items of a team into a health summary for managers (on-track %, overdue, overloaded owners, top pressure items).", - "description": "Pure aggregation capability used by the Manager Visibility workflow. Returns a compact health snapshot that can be rendered in a dashboard or weekly digest.\n\nImplemented and smoke-tested matrix (use_cases):\n- team pulse aggregation with overloaded owners and top pressure items\n- invalid_input when reference_date is empty\n\nKnown limitations (intentional in 1.0.1):\n- Aggregation is memory-only; no persistence or notification side effects", + "description": "Pure aggregation capability used by the Manager Visibility workflow. Returns a compact health snapshot that can be rendered in a dashboard or weekly digest.\n\nImplemented and smoke-tested matrix (use_cases):\n- team pulse aggregation with overloaded owners and top pressure items\n- invalid_input when reference_date is empty\n\nKnown limitations (intentional in 1.1.0):\n- Aggregation is memory-only; no persistence or notification side effects", "use_cases": [ { - "scenario": "As a manager, I want a quick pulse of my team's action items.", + "scenario": "As a manager, I want a quick pulse of my team's action items, so that I can spot overload without reading every thread.", "input_example": { "items": [ { @@ -68,7 +68,7 @@ "persona_ref": "collaboration-product-owner" }, { - "scenario": "As a workflow author, I want invalid_input when reference_date is empty so bad schedules fail closed.", + "scenario": "As a workflow author, I want invalid_input when reference_date is empty, so that bad schedules fail closed.", "input_example": { "items": [], "reference_date": "", @@ -202,7 +202,7 @@ "source": "ai-assisted", "author": "loop-founders + traverse-capability-author", "created_at": "2026-08-08T06:00:00Z", - "spec_ref": "core.aggregate-team-action-health@1.0.1", + "spec_ref": "core.aggregate-team-action-health@1.1.0", "adr_refs": [ "persona-council-review-2026-08-08" ], @@ -210,7 +210,7 @@ }, "evidence": [ { - "evidence_id": "core-aggregate-team-action-health-1.0.1-contract-validation", + "evidence_id": "core-aggregate-team-action-health-1.1.0-contract-validation", "type": "contract_validation", "status": "passed" } diff --git a/examples/core-aggregate-team-action-health/manifest.json b/examples/core-aggregate-team-action-health/manifest.json index f4ec7373..2ed51c6a 100644 --- a/examples/core-aggregate-team-action-health/manifest.json +++ b/examples/core-aggregate-team-action-health/manifest.json @@ -2,17 +2,17 @@ "kind": "capability_package", "schema_version": "1.0.0", "package_id": "core.aggregate-team-action-health-agent", - "version": "1.0.1", - "summary": "Capability package for core.aggregate-team-action-health@1.0.1.", + "version": "1.1.0", + "summary": "Capability package for core.aggregate-team-action-health@1.1.0.", "capability_ref": { "id": "core.aggregate-team-action-health", - "version": "1.0.1", + "version": "1.1.0", "contract_path": "./contract.json" }, "workflow_refs": [ { "workflow_id": "core.aggregate-team-action-health", - "workflow_version": "1.0.1" + "workflow_version": "1.1.0" } ], "source": { diff --git a/examples/core-aggregate-team-action-health/runtime-requests/uc01-team-pulse.json b/examples/core-aggregate-team-action-health/runtime-requests/uc01-team-pulse.json index c0751b46..7b373d36 100644 --- a/examples/core-aggregate-team-action-health/runtime-requests/uc01-team-pulse.json +++ b/examples/core-aggregate-team-action-health/runtime-requests/uc01-team-pulse.json @@ -4,7 +4,7 @@ "request_id": "core-aggregate-team-action-health-01", "intent": { "capability_id": "core.aggregate-team-action-health", - "capability_version": "1.0.1" + "capability_version": "1.1.0" }, "input": { "items": [ diff --git a/examples/core-aggregate-team-action-health/runtime-requests/uc02-invalid-input.json b/examples/core-aggregate-team-action-health/runtime-requests/uc02-invalid-input.json index 723b971f..45831398 100644 --- a/examples/core-aggregate-team-action-health/runtime-requests/uc02-invalid-input.json +++ b/examples/core-aggregate-team-action-health/runtime-requests/uc02-invalid-input.json @@ -4,7 +4,7 @@ "request_id": "core-aggregate-team-action-health-02", "intent": { "capability_id": "core.aggregate-team-action-health", - "capability_version": "1.0.1" + "capability_version": "1.1.0" }, "input": { "items": [], diff --git a/examples/core-aggregate-team-action-health/workflows/aggregate-team-action-health/workflow.json b/examples/core-aggregate-team-action-health/workflows/aggregate-team-action-health/workflow.json index 4761cfe5..67f3c774 100644 --- a/examples/core-aggregate-team-action-health/workflows/aggregate-team-action-health/workflow.json +++ b/examples/core-aggregate-team-action-health/workflows/aggregate-team-action-health/workflow.json @@ -3,7 +3,7 @@ "schema_version": "1.0.0", "id": "core.aggregate-team-action-health", "name": "aggregate-team-action-health", - "version": "1.0.1", + "version": "1.1.0", "lifecycle": "active", "owner": { "team": "loop", @@ -35,7 +35,7 @@ { "node_id": "run", "capability_id": "core.aggregate-team-action-health", - "capability_version": "1.0.1", + "capability_version": "1.1.0", "input": { "from_workflow_input": [ "items", diff --git a/examples/core-assign-ownership/contract.json b/examples/core-assign-ownership/contract.json index 737eec8a..833292b0 100644 --- a/examples/core-assign-ownership/contract.json +++ b/examples/core-assign-ownership/contract.json @@ -4,17 +4,17 @@ "id": "core.assign-ownership", "namespace": "core", "name": "assign-ownership", - "version": "1.0.1", + "version": "1.1.0", "lifecycle": "active", "owner": { "team": "loop", "contact": "founders@loop.dev" }, "summary": "Resolves and records clear ownership for an action item (single accountable person).", - "description": "Resolves a suggested owner against workspace members (id, email, name) and applies ownership_config.fallback when unresolved. Pure and deterministic.\n\nImplemented and smoke-tested matrix (use_cases):\n- name_match → ok\n- email_match → ok\n- null suggestion with fallback=creator → ok\n- unknown suggestion with fallback=fail → unresolved\n- inactive member with require_active_member → inactive_member\n- invalid fallback value → config_error\n- unknown suggestion with fallback=unassigned → ok (owner_id null)\n\nKnown limitations (intentional in 1.0.1):\n- Does not mutate storage or notify members; callers persist the decision", + "description": "Resolves a suggested owner against workspace members (id, email, name) and applies ownership_config.fallback when unresolved. Pure and deterministic.\n\nImplemented and smoke-tested matrix (use_cases):\n- name_match \u2192 ok\n- email_match \u2192 ok\n- null suggestion with fallback=creator \u2192 ok\n- unknown suggestion with fallback=fail \u2192 unresolved\n- inactive member with require_active_member \u2192 inactive_member\n- invalid fallback value \u2192 config_error\n- unknown suggestion with fallback=unassigned \u2192 ok (owner_id null)\n\nKnown limitations (intentional in 1.1.0):\n- Does not mutate storage or notify members; callers persist the decision", "use_cases": [ { - "scenario": "As the system, I want a name match to resolve to a canonical user id.", + "scenario": "As a system, I want a name match to resolve to a canonical user id, so that ownership is unambiguous downstream.", "input_example": { "suggested_owner": "Ada Lovelace", "creator_id": "user-carol", @@ -48,7 +48,7 @@ "persona_ref": "runtime-engineer" }, { - "scenario": "As the system, I want an email suggestion to resolve by email.", + "scenario": "As a system, I want an email suggestion to resolve by email, so that directory matches stay deterministic.", "input_example": { "suggested_owner": "bob@loop.dev", "creator_id": "user-carol", @@ -82,7 +82,7 @@ "persona_ref": "runtime-engineer" }, { - "scenario": "As the system, I want a null suggestion to fall back to the creator.", + "scenario": "As a system, I want a null suggestion to fall back to the creator, so that every item still has an owner path.", "input_example": { "suggested_owner": null, "creator_id": "user-carol", @@ -112,7 +112,7 @@ "persona_ref": "meeting-organizer" }, { - "scenario": "As the system, I want an unknown suggestion to fail closed when fallback is fail.", + "scenario": "As a system, I want an unknown suggestion to fail closed when fallback is fail, so that unresolved owners never silently pass.", "input_example": { "suggested_owner": "Unknown Person", "creator_id": "user-carol", @@ -142,7 +142,7 @@ "persona_ref": "runtime-engineer" }, { - "scenario": "As the system, I want an inactive member match rejected with inactive_member when require_active_member is true.", + "scenario": "As a system, I want an inactive member match rejected with inactive_member when require_active_member is true, so that inactive accounts cannot own work.", "input_example": { "suggested_owner": "user-ada", "creator_id": "user-carol", @@ -172,7 +172,7 @@ "persona_ref": "runtime-engineer" }, { - "scenario": "As the system, I want an invalid fallback value rejected with config_error.", + "scenario": "As a system, I want an invalid fallback value rejected with config_error, so that misconfiguration is visible immediately.", "input_example": { "suggested_owner": "Ada Lovelace", "creator_id": "user-carol", @@ -206,7 +206,7 @@ "persona_ref": "runtime-engineer" }, { - "scenario": "As the system, I want unknown suggestions to resolve as unassigned when fallback is unassigned.", + "scenario": "As a system, I want unknown suggestions to resolve as unassigned when fallback is unassigned, so that callers can prompt for an owner later.", "input_example": { "suggested_owner": "Unknown Person", "creator_id": "user-carol", @@ -378,7 +378,7 @@ "source": "ai-assisted", "author": "loop-founders + traverse-capability-author", "created_at": "2026-08-08T06:00:00Z", - "spec_ref": "core.assign-ownership@1.0.1", + "spec_ref": "core.assign-ownership@1.1.0", "adr_refs": [ "persona-council-review-2026-08-08" ], @@ -386,7 +386,7 @@ }, "evidence": [ { - "evidence_id": "core-assign-ownership-1.0.1-contract-validation", + "evidence_id": "core-assign-ownership-1.1.0-contract-validation", "type": "contract_validation", "status": "passed" } diff --git a/examples/core-assign-ownership/manifest.json b/examples/core-assign-ownership/manifest.json index 37f82a8f..deec7d04 100644 --- a/examples/core-assign-ownership/manifest.json +++ b/examples/core-assign-ownership/manifest.json @@ -2,17 +2,17 @@ "kind": "capability_package", "schema_version": "1.0.0", "package_id": "core.assign-ownership-agent", - "version": "1.0.1", - "summary": "Capability package for core.assign-ownership@1.0.1.", + "version": "1.1.0", + "summary": "Capability package for core.assign-ownership@1.1.0.", "capability_ref": { "id": "core.assign-ownership", - "version": "1.0.1", + "version": "1.1.0", "contract_path": "./contract.json" }, "workflow_refs": [ { "workflow_id": "core.assign-ownership", - "workflow_version": "1.0.1" + "workflow_version": "1.1.0" } ], "source": { diff --git a/examples/core-assign-ownership/runtime-requests/uc01-name-match.json b/examples/core-assign-ownership/runtime-requests/uc01-name-match.json index 01324360..5fe2dfb7 100644 --- a/examples/core-assign-ownership/runtime-requests/uc01-name-match.json +++ b/examples/core-assign-ownership/runtime-requests/uc01-name-match.json @@ -4,7 +4,7 @@ "request_id": "core-assign-ownership-01", "intent": { "capability_id": "core.assign-ownership", - "capability_version": "1.0.1" + "capability_version": "1.1.0" }, "input": { "suggested_owner": "Ada Lovelace", diff --git a/examples/core-assign-ownership/runtime-requests/uc02-email-match.json b/examples/core-assign-ownership/runtime-requests/uc02-email-match.json index 2a8121af..6380f5e6 100644 --- a/examples/core-assign-ownership/runtime-requests/uc02-email-match.json +++ b/examples/core-assign-ownership/runtime-requests/uc02-email-match.json @@ -4,7 +4,7 @@ "request_id": "core-assign-ownership-02", "intent": { "capability_id": "core.assign-ownership", - "capability_version": "1.0.1" + "capability_version": "1.1.0" }, "input": { "suggested_owner": "bob@loop.dev", diff --git a/examples/core-assign-ownership/runtime-requests/uc03-null-fallback-creator.json b/examples/core-assign-ownership/runtime-requests/uc03-null-fallback-creator.json index 8976fad5..bd7ed9ff 100644 --- a/examples/core-assign-ownership/runtime-requests/uc03-null-fallback-creator.json +++ b/examples/core-assign-ownership/runtime-requests/uc03-null-fallback-creator.json @@ -4,7 +4,7 @@ "request_id": "core-assign-ownership-03", "intent": { "capability_id": "core.assign-ownership", - "capability_version": "1.0.1" + "capability_version": "1.1.0" }, "input": { "suggested_owner": null, diff --git a/examples/core-assign-ownership/runtime-requests/uc04-unresolved-fail.json b/examples/core-assign-ownership/runtime-requests/uc04-unresolved-fail.json index ff346a50..03b6c609 100644 --- a/examples/core-assign-ownership/runtime-requests/uc04-unresolved-fail.json +++ b/examples/core-assign-ownership/runtime-requests/uc04-unresolved-fail.json @@ -4,7 +4,7 @@ "request_id": "core-assign-ownership-04", "intent": { "capability_id": "core.assign-ownership", - "capability_version": "1.0.1" + "capability_version": "1.1.0" }, "input": { "suggested_owner": "Unknown Person", diff --git a/examples/core-assign-ownership/runtime-requests/uc05-inactive-member.json b/examples/core-assign-ownership/runtime-requests/uc05-inactive-member.json index 22d7321e..77923388 100644 --- a/examples/core-assign-ownership/runtime-requests/uc05-inactive-member.json +++ b/examples/core-assign-ownership/runtime-requests/uc05-inactive-member.json @@ -4,7 +4,7 @@ "request_id": "core-assign-ownership-05", "intent": { "capability_id": "core.assign-ownership", - "capability_version": "1.0.1" + "capability_version": "1.1.0" }, "input": { "suggested_owner": "user-ada", diff --git a/examples/core-assign-ownership/runtime-requests/uc06-config-error.json b/examples/core-assign-ownership/runtime-requests/uc06-config-error.json index 736ab493..d3c3b10a 100644 --- a/examples/core-assign-ownership/runtime-requests/uc06-config-error.json +++ b/examples/core-assign-ownership/runtime-requests/uc06-config-error.json @@ -4,7 +4,7 @@ "request_id": "core-assign-ownership-06", "intent": { "capability_id": "core.assign-ownership", - "capability_version": "1.0.1" + "capability_version": "1.1.0" }, "input": { "suggested_owner": "Ada Lovelace", diff --git a/examples/core-assign-ownership/runtime-requests/uc07-fallback-unassigned.json b/examples/core-assign-ownership/runtime-requests/uc07-fallback-unassigned.json index 444491ff..85aaa4d6 100644 --- a/examples/core-assign-ownership/runtime-requests/uc07-fallback-unassigned.json +++ b/examples/core-assign-ownership/runtime-requests/uc07-fallback-unassigned.json @@ -4,7 +4,7 @@ "request_id": "core-assign-ownership-07", "intent": { "capability_id": "core.assign-ownership", - "capability_version": "1.0.1" + "capability_version": "1.1.0" }, "input": { "suggested_owner": "Unknown Person", diff --git a/examples/core-assign-ownership/workflows/assign-ownership/workflow.json b/examples/core-assign-ownership/workflows/assign-ownership/workflow.json index 42620f06..e421deeb 100644 --- a/examples/core-assign-ownership/workflows/assign-ownership/workflow.json +++ b/examples/core-assign-ownership/workflows/assign-ownership/workflow.json @@ -3,7 +3,7 @@ "schema_version": "1.0.0", "id": "core.assign-ownership", "name": "assign-ownership", - "version": "1.0.1", + "version": "1.1.0", "lifecycle": "active", "owner": { "team": "loop", @@ -34,7 +34,7 @@ { "node_id": "assign", "capability_id": "core.assign-ownership", - "capability_version": "1.0.1", + "capability_version": "1.1.0", "input": { "from_workflow_input": [ "suggested_owner", diff --git a/examples/core-authorize/contract.json b/examples/core-authorize/contract.json index 811f368c..f56cc232 100644 --- a/examples/core-authorize/contract.json +++ b/examples/core-authorize/contract.json @@ -4,14 +4,14 @@ "id": "core.authorize", "namespace": "core", "name": "authorize", - "version": "1.1.1", + "version": "1.2.0", "lifecycle": "active", "owner": { "team": "traverse-core", "contact": "capability-authors@traverse-framework.com" }, "summary": "Pure authorization evaluator: allow/deny for principal+action+resource under a caller-supplied versioned policy.", - "description": "Pure authorization evaluator: allow/deny for principal+action+resource under a caller-supplied versioned policy (RBAC/hybrid rule matching, tenant/status conditions, break-glass, obligations).\n\nImplemented and smoke-tested matrix (use_cases):\n- admin role allow (matched_allow_rule)\n- tenant isolation deny (matched_deny_rule)\n- owner update allow (matched_allow_rule)\n- suspended principal deny (matched_deny_rule)\n- allow with obligations (matched_allow_rule)\n- no matching rule → deny (no_matching_rule)\n- empty policy rules → empty_or_invalid_policy\n- break-glass override (break_glass_override)\n- missing principal.id → invalid_principal\n- missing action → invalid_action\n- missing resource.type → invalid_resource\n\nKnown limitations (intentional in 1.1.1):\n- policy.mode values abac/explicit removed from schema (not distinct evaluator modes in this binary)\n- default_effect narrowed to deny (fail-closed); allow-default not published\n- obligation severity narrowed to required\n- condition_failed / policy_evaluation_error are not emitted as distinct reason_codes\n- Condition DSL is a practical subset (eq/neq on selected attribute paths), not full XACML/Cedar", + "description": "Pure authorization evaluator: allow/deny for principal+action+resource under a caller-supplied versioned policy (RBAC/hybrid rule matching, tenant/status conditions, break-glass, obligations).\n\nImplemented and smoke-tested matrix (use_cases):\n- admin role allow (matched_allow_rule)\n- tenant isolation deny (matched_deny_rule)\n- owner update allow (matched_allow_rule)\n- suspended principal deny (matched_deny_rule)\n- allow with obligations (matched_allow_rule)\n- no matching rule \u2192 deny (no_matching_rule)\n- empty policy rules \u2192 empty_or_invalid_policy\n- break-glass override (break_glass_override)\n- missing principal.id \u2192 invalid_principal\n- missing action \u2192 invalid_action\n- missing resource.type \u2192 invalid_resource\n\nKnown limitations (intentional in 1.2.0):\n- policy.mode values abac/explicit removed from schema (not distinct evaluator modes in this binary)\n- default_effect narrowed to deny (fail-closed); allow-default not published\n- obligation severity narrowed to required\n- condition_failed / policy_evaluation_error are not emitted as distinct reason_codes\n- Condition DSL is a practical subset (eq/neq on selected attribute paths), not full XACML/Cedar", "use_cases": [ { "scenario": "As a platform security engineer, I want an admin user with the correct role to be allowed to delete a document so that privileged operations succeed when policy permits them.", @@ -77,7 +77,7 @@ "evaluation_trace": [ "policy_version=1.0 mode=hybrid default=deny", "evaluated 1 rule(s)", - "rule admin-delete matched on role+action+resource.type → allow" + "rule admin-delete matched on role+action+resource.type \u2192 allow" ], "policy_hash": "fnv1a64:3a7f...", "confidence": "high", @@ -155,7 +155,7 @@ "obligations": [], "evaluation_trace": [ "policy_version=1.0 mode=hybrid default=deny", - "rule tenant-isolation condition matched → deny (priority 200 wins)" + "rule tenant-isolation condition matched \u2192 deny (priority 200 wins)" ], "policy_hash": "fnv1a64:9c2e...", "confidence": "high", @@ -214,7 +214,7 @@ ], "obligations": [], "evaluation_trace": [ - "rule owner-update condition principal.id == resource.owner_id → allow" + "rule owner-update condition principal.id == resource.owner_id \u2192 allow" ], "policy_hash": "fnv1a64:1b4d...", "confidence": "high", @@ -285,7 +285,7 @@ ], "obligations": [], "evaluation_trace": [ - "rule suspended-deny matched on principal.attributes.status → deny (priority 300)" + "rule suspended-deny matched on principal.attributes.status \u2192 deny (priority 300)" ], "policy_hash": "fnv1a64:7e8a...", "confidence": "high", @@ -376,7 +376,7 @@ } ], "evaluation_trace": [ - "rule high-value-transfer matched → allow + 2 obligations" + "rule high-value-transfer matched \u2192 allow + 2 obligations" ], "policy_hash": "fnv1a64:4f2c...", "confidence": "high", @@ -555,7 +555,7 @@ ], "evaluation_trace": [ "break_glass attribute present and enabled in policy", - "rule break-glass-allow matched → allow + obligations" + "rule break-glass-allow matched \u2192 allow + obligations" ], "policy_hash": "fnv1a64:bg01...", "confidence": "high", @@ -601,7 +601,7 @@ "persona_ref": "client-developer" }, { - "scenario": "As a client developer, I want missing action rejected with invalid_action.", + "scenario": "As a client developer, I want missing action rejected with invalid_action, so that callers can fix request shape without guessing.", "input_example": { "principal": { "id": "user-1", @@ -653,7 +653,7 @@ "persona_ref": "runtime-engineer" }, { - "scenario": "As a client developer, I want missing resource.type rejected with invalid_resource.", + "scenario": "As a client developer, I want missing resource.type rejected with invalid_resource, so that incomplete resource descriptors fail closed.", "input_example": { "principal": { "id": "user-1", @@ -722,7 +722,7 @@ "id": { "type": "string", "minLength": 1, - "description": "Guest-enforced non-empty principal id. Omitted from principal.required so missing/empty id reaches the guest (UC-09 → invalid_principal)." + "description": "Guest-enforced non-empty principal id. Omitted from principal.required so missing/empty id reaches the guest (UC-09 \u2192 invalid_principal)." }, "roles": { "type": "array", @@ -1104,7 +1104,7 @@ "source": "ai-assisted", "author": "loop-founders + traverse-capability-author", "created_at": "2026-08-08T05:36:00Z", - "spec_ref": "core.authorize@1.1.1", + "spec_ref": "core.authorize@1.2.0", "adr_refs": [ "0001-rust-wasm-foundation", "persona-council-review-2026-08-08" @@ -1113,7 +1113,7 @@ }, "evidence": [ { - "evidence_id": "core-authorize-1.1.1-contract-validation", + "evidence_id": "core-authorize-1.2.0-contract-validation", "type": "contract_validation", "status": "passed" } diff --git a/examples/core-authorize/manifest.json b/examples/core-authorize/manifest.json index 3f49271b..86cf3112 100644 --- a/examples/core-authorize/manifest.json +++ b/examples/core-authorize/manifest.json @@ -2,17 +2,17 @@ "kind": "capability_package", "schema_version": "1.0.0", "package_id": "core.authorize-agent", - "version": "1.1.1", - "summary": "Capability package for core.authorize@1.1.1.", + "version": "1.2.0", + "summary": "Capability package for core.authorize@1.2.0.", "capability_ref": { "id": "core.authorize", - "version": "1.1.1", + "version": "1.2.0", "contract_path": "./contract.json" }, "workflow_refs": [ { "workflow_id": "core.authorize", - "workflow_version": "1.1.1" + "workflow_version": "1.2.0" } ], "source": { diff --git a/examples/core-authorize/runtime-requests/uc01-admin-delete-allow.json b/examples/core-authorize/runtime-requests/uc01-admin-delete-allow.json index 0296312e..de9c7db6 100644 --- a/examples/core-authorize/runtime-requests/uc01-admin-delete-allow.json +++ b/examples/core-authorize/runtime-requests/uc01-admin-delete-allow.json @@ -4,7 +4,7 @@ "request_id": "core-authorize-01", "intent": { "capability_id": "core.authorize", - "capability_version": "1.1.1" + "capability_version": "1.2.0" }, "input": { "principal": { diff --git a/examples/core-authorize/runtime-requests/uc02-tenant-isolation-deny.json b/examples/core-authorize/runtime-requests/uc02-tenant-isolation-deny.json index 6a2f1775..1d950465 100644 --- a/examples/core-authorize/runtime-requests/uc02-tenant-isolation-deny.json +++ b/examples/core-authorize/runtime-requests/uc02-tenant-isolation-deny.json @@ -4,7 +4,7 @@ "request_id": "core-authorize-02", "intent": { "capability_id": "core.authorize", - "capability_version": "1.1.1" + "capability_version": "1.2.0" }, "input": { "principal": { diff --git a/examples/core-authorize/runtime-requests/uc03-owner-update-allow.json b/examples/core-authorize/runtime-requests/uc03-owner-update-allow.json index 92eab3fb..4b3f538e 100644 --- a/examples/core-authorize/runtime-requests/uc03-owner-update-allow.json +++ b/examples/core-authorize/runtime-requests/uc03-owner-update-allow.json @@ -4,7 +4,7 @@ "request_id": "core-authorize-03", "intent": { "capability_id": "core.authorize", - "capability_version": "1.1.1" + "capability_version": "1.2.0" }, "input": { "principal": { diff --git a/examples/core-authorize/runtime-requests/uc04-suspended-deny.json b/examples/core-authorize/runtime-requests/uc04-suspended-deny.json index c9453604..fa5616b9 100644 --- a/examples/core-authorize/runtime-requests/uc04-suspended-deny.json +++ b/examples/core-authorize/runtime-requests/uc04-suspended-deny.json @@ -4,7 +4,7 @@ "request_id": "core-authorize-04", "intent": { "capability_id": "core.authorize", - "capability_version": "1.1.1" + "capability_version": "1.2.0" }, "input": { "principal": { diff --git a/examples/core-authorize/runtime-requests/uc05-obligations-allow.json b/examples/core-authorize/runtime-requests/uc05-obligations-allow.json index e408b794..4b200919 100644 --- a/examples/core-authorize/runtime-requests/uc05-obligations-allow.json +++ b/examples/core-authorize/runtime-requests/uc05-obligations-allow.json @@ -4,7 +4,7 @@ "request_id": "core-authorize-05", "intent": { "capability_id": "core.authorize", - "capability_version": "1.1.1" + "capability_version": "1.2.0" }, "input": { "principal": { diff --git a/examples/core-authorize/runtime-requests/uc06-no-match-deny.json b/examples/core-authorize/runtime-requests/uc06-no-match-deny.json index 617b78ad..4d729b98 100644 --- a/examples/core-authorize/runtime-requests/uc06-no-match-deny.json +++ b/examples/core-authorize/runtime-requests/uc06-no-match-deny.json @@ -4,7 +4,7 @@ "request_id": "core-authorize-06", "intent": { "capability_id": "core.authorize", - "capability_version": "1.1.1" + "capability_version": "1.2.0" }, "input": { "principal": { diff --git a/examples/core-authorize/runtime-requests/uc07-empty-policy-deny.json b/examples/core-authorize/runtime-requests/uc07-empty-policy-deny.json index 75257845..bf05be1f 100644 --- a/examples/core-authorize/runtime-requests/uc07-empty-policy-deny.json +++ b/examples/core-authorize/runtime-requests/uc07-empty-policy-deny.json @@ -4,7 +4,7 @@ "request_id": "core-authorize-07", "intent": { "capability_id": "core.authorize", - "capability_version": "1.1.1" + "capability_version": "1.2.0" }, "input": { "principal": { diff --git a/examples/core-authorize/runtime-requests/uc08-break-glass-allow.json b/examples/core-authorize/runtime-requests/uc08-break-glass-allow.json index d2045de2..51ea9f1e 100644 --- a/examples/core-authorize/runtime-requests/uc08-break-glass-allow.json +++ b/examples/core-authorize/runtime-requests/uc08-break-glass-allow.json @@ -4,7 +4,7 @@ "request_id": "core-authorize-08", "intent": { "capability_id": "core.authorize", - "capability_version": "1.1.1" + "capability_version": "1.2.0" }, "input": { "principal": { diff --git a/examples/core-authorize/runtime-requests/uc09-invalid-principal-deny.json b/examples/core-authorize/runtime-requests/uc09-invalid-principal-deny.json index f9c47910..4913cbd3 100644 --- a/examples/core-authorize/runtime-requests/uc09-invalid-principal-deny.json +++ b/examples/core-authorize/runtime-requests/uc09-invalid-principal-deny.json @@ -4,7 +4,7 @@ "request_id": "core-authorize-09", "intent": { "capability_id": "core.authorize", - "capability_version": "1.1.1" + "capability_version": "1.2.0" }, "input": { "principal": { diff --git a/examples/core-authorize/runtime-requests/uc10-invalid-action-deny.json b/examples/core-authorize/runtime-requests/uc10-invalid-action-deny.json index 8c52892e..ec409132 100644 --- a/examples/core-authorize/runtime-requests/uc10-invalid-action-deny.json +++ b/examples/core-authorize/runtime-requests/uc10-invalid-action-deny.json @@ -4,7 +4,7 @@ "request_id": "core-authorize-10", "intent": { "capability_id": "core.authorize", - "capability_version": "1.1.1" + "capability_version": "1.2.0" }, "input": { "principal": { diff --git a/examples/core-authorize/runtime-requests/uc11-invalid-resource-deny.json b/examples/core-authorize/runtime-requests/uc11-invalid-resource-deny.json index 1083976a..4f7ee7d8 100644 --- a/examples/core-authorize/runtime-requests/uc11-invalid-resource-deny.json +++ b/examples/core-authorize/runtime-requests/uc11-invalid-resource-deny.json @@ -4,7 +4,7 @@ "request_id": "core-authorize-11", "intent": { "capability_id": "core.authorize", - "capability_version": "1.1.1" + "capability_version": "1.2.0" }, "input": { "principal": { diff --git a/examples/core-authorize/workflows/authorize/workflow.json b/examples/core-authorize/workflows/authorize/workflow.json index 37eaa131..ce270b93 100644 --- a/examples/core-authorize/workflows/authorize/workflow.json +++ b/examples/core-authorize/workflows/authorize/workflow.json @@ -3,7 +3,7 @@ "schema_version": "1.0.0", "id": "core.authorize", "name": "authorize", - "version": "1.1.1", + "version": "1.2.0", "lifecycle": "active", "owner": { "team": "traverse-core", @@ -40,7 +40,7 @@ { "node_id": "authorize", "capability_id": "core.authorize", - "capability_version": "1.1.1", + "capability_version": "1.2.0", "input": { "from_workflow_input": [ "principal", diff --git a/examples/core-calculate-deadline-pressure/contract.json b/examples/core-calculate-deadline-pressure/contract.json index d3e52252..d778265e 100644 --- a/examples/core-calculate-deadline-pressure/contract.json +++ b/examples/core-calculate-deadline-pressure/contract.json @@ -4,17 +4,17 @@ "id": "core.calculate-deadline-pressure", "namespace": "core", "name": "calculate-deadline-pressure", - "version": "1.0.1", + "version": "1.1.0", "lifecycle": "active", "owner": { "team": "loop", "contact": "founders@loop.dev" }, "summary": "Computes a deterministic deadline pressure score from due date versus a reference date.", - "description": "Pure WF2 capability used after ownership assignment. Maps days-until-due into a 0.0-1.0 pressure_score and a band (low|medium|high|overdue).\n\nImplemented and smoke-tested matrix (use_cases):\n- due-soon medium pressure\n- overdue max pressure\n- missing_due_date when due_date is empty\n- invalid_date for unparseable dates\n- config_error when reference_date is empty\n\nKnown limitations (intentional in 1.0.1):\n- Band thresholds are fixed heuristic cutovers; no calendar/holiday awareness", + "description": "Pure WF2 capability used after ownership assignment. Maps days-until-due into a 0.0-1.0 pressure_score and a band (low|medium|high|overdue).\n\nImplemented and smoke-tested matrix (use_cases):\n- due-soon medium pressure\n- overdue max pressure\n- missing_due_date when due_date is empty\n- invalid_date for unparseable dates\n- config_error when reference_date is empty\n\nKnown limitations (intentional in 1.1.0):\n- Band thresholds are fixed heuristic cutovers; no calendar/holiday awareness", "use_cases": [ { - "scenario": "As the commit pipeline, I want pressure for an item due in three days.", + "scenario": "As a commit pipeline, I want pressure for an item due in three days, so that due-soon work surfaces at the right urgency band.", "input_example": { "item": { "id": "ai-1", @@ -43,7 +43,7 @@ "persona_ref": "runtime-engineer" }, { - "scenario": "As the system, I want overdue items to receive maximum pressure.", + "scenario": "As a system, I want overdue items to receive maximum pressure, so that late work is ranked above merely approaching deadlines.", "input_example": { "item": { "id": "ai-2", @@ -72,7 +72,7 @@ "persona_ref": "collaboration-product-owner" }, { - "scenario": "As WF2, I want missing_due_date when due_date is empty so undated items fail closed.", + "scenario": "As a WF2 workflow author, I want missing_due_date when due_date is empty, so that undated items fail closed.", "input_example": { "item": { "id": "ai-m", @@ -97,7 +97,7 @@ "persona_ref": "runtime-engineer" }, { - "scenario": "As WF2, I want invalid_date when due_date cannot be parsed.", + "scenario": "As a WF2 workflow author, I want invalid_date when due_date cannot be parsed, so that bad date strings never invent pressure.", "input_example": { "item": { "id": "ai-i", @@ -122,7 +122,7 @@ "persona_ref": "runtime-engineer" }, { - "scenario": "As WF2, I want config_error when reference_date is empty.", + "scenario": "As a WF2 workflow author, I want config_error when reference_date is empty, so that pressure is never computed without an anchor.", "input_example": { "item": { "id": "ai-c", @@ -284,7 +284,7 @@ "source": "ai-assisted", "author": "loop-founders + traverse-capability-author", "created_at": "2026-08-08T06:00:00Z", - "spec_ref": "core.calculate-deadline-pressure@1.0.1", + "spec_ref": "core.calculate-deadline-pressure@1.1.0", "adr_refs": [ "persona-council-review-2026-08-08" ], @@ -292,7 +292,7 @@ }, "evidence": [ { - "evidence_id": "core-calculate-deadline-pressure-1.0.1-contract-validation", + "evidence_id": "core-calculate-deadline-pressure-1.1.0-contract-validation", "type": "contract_validation", "status": "passed" } diff --git a/examples/core-calculate-deadline-pressure/manifest.json b/examples/core-calculate-deadline-pressure/manifest.json index 79a99ca8..265a705a 100644 --- a/examples/core-calculate-deadline-pressure/manifest.json +++ b/examples/core-calculate-deadline-pressure/manifest.json @@ -2,17 +2,17 @@ "kind": "capability_package", "schema_version": "1.0.0", "package_id": "core.calculate-deadline-pressure-agent", - "version": "1.0.1", - "summary": "Capability package for core.calculate-deadline-pressure@1.0.1.", + "version": "1.1.0", + "summary": "Capability package for core.calculate-deadline-pressure@1.1.0.", "capability_ref": { "id": "core.calculate-deadline-pressure", - "version": "1.0.1", + "version": "1.1.0", "contract_path": "./contract.json" }, "workflow_refs": [ { "workflow_id": "core.calculate-deadline-pressure", - "workflow_version": "1.0.1" + "workflow_version": "1.1.0" } ], "source": { diff --git a/examples/core-calculate-deadline-pressure/runtime-requests/uc01-due-soon.json b/examples/core-calculate-deadline-pressure/runtime-requests/uc01-due-soon.json index f96dae3f..0c4d5d27 100644 --- a/examples/core-calculate-deadline-pressure/runtime-requests/uc01-due-soon.json +++ b/examples/core-calculate-deadline-pressure/runtime-requests/uc01-due-soon.json @@ -4,7 +4,7 @@ "request_id": "core-calculate-deadline-pressure-01", "intent": { "capability_id": "core.calculate-deadline-pressure", - "capability_version": "1.0.1" + "capability_version": "1.1.0" }, "input": { "item": { diff --git a/examples/core-calculate-deadline-pressure/runtime-requests/uc02-overdue.json b/examples/core-calculate-deadline-pressure/runtime-requests/uc02-overdue.json index 89356563..f9a99be4 100644 --- a/examples/core-calculate-deadline-pressure/runtime-requests/uc02-overdue.json +++ b/examples/core-calculate-deadline-pressure/runtime-requests/uc02-overdue.json @@ -4,7 +4,7 @@ "request_id": "core-calculate-deadline-pressure-02", "intent": { "capability_id": "core.calculate-deadline-pressure", - "capability_version": "1.0.1" + "capability_version": "1.1.0" }, "input": { "item": { diff --git a/examples/core-calculate-deadline-pressure/runtime-requests/uc03-missing-due-date.json b/examples/core-calculate-deadline-pressure/runtime-requests/uc03-missing-due-date.json index e304a213..580c87c1 100644 --- a/examples/core-calculate-deadline-pressure/runtime-requests/uc03-missing-due-date.json +++ b/examples/core-calculate-deadline-pressure/runtime-requests/uc03-missing-due-date.json @@ -4,7 +4,7 @@ "request_id": "core-calculate-deadline-pressure-03", "intent": { "capability_id": "core.calculate-deadline-pressure", - "capability_version": "1.0.1" + "capability_version": "1.1.0" }, "input": { "item": { diff --git a/examples/core-calculate-deadline-pressure/runtime-requests/uc04-invalid-date.json b/examples/core-calculate-deadline-pressure/runtime-requests/uc04-invalid-date.json index 254e5417..871bb42e 100644 --- a/examples/core-calculate-deadline-pressure/runtime-requests/uc04-invalid-date.json +++ b/examples/core-calculate-deadline-pressure/runtime-requests/uc04-invalid-date.json @@ -4,7 +4,7 @@ "request_id": "core-calculate-deadline-pressure-04", "intent": { "capability_id": "core.calculate-deadline-pressure", - "capability_version": "1.0.1" + "capability_version": "1.1.0" }, "input": { "item": { diff --git a/examples/core-calculate-deadline-pressure/runtime-requests/uc05-config-error.json b/examples/core-calculate-deadline-pressure/runtime-requests/uc05-config-error.json index 8a5f8d70..b1fc4390 100644 --- a/examples/core-calculate-deadline-pressure/runtime-requests/uc05-config-error.json +++ b/examples/core-calculate-deadline-pressure/runtime-requests/uc05-config-error.json @@ -4,7 +4,7 @@ "request_id": "core-calculate-deadline-pressure-05", "intent": { "capability_id": "core.calculate-deadline-pressure", - "capability_version": "1.0.1" + "capability_version": "1.1.0" }, "input": { "item": { diff --git a/examples/core-calculate-deadline-pressure/workflows/calculate-deadline-pressure/workflow.json b/examples/core-calculate-deadline-pressure/workflows/calculate-deadline-pressure/workflow.json index 4b3d4801..df81941d 100644 --- a/examples/core-calculate-deadline-pressure/workflows/calculate-deadline-pressure/workflow.json +++ b/examples/core-calculate-deadline-pressure/workflows/calculate-deadline-pressure/workflow.json @@ -3,7 +3,7 @@ "schema_version": "1.0.0", "id": "core.calculate-deadline-pressure", "name": "calculate-deadline-pressure", - "version": "1.0.1", + "version": "1.1.0", "lifecycle": "active", "owner": { "team": "loop", @@ -26,7 +26,7 @@ { "node_id": "run", "capability_id": "core.calculate-deadline-pressure", - "capability_version": "1.0.1", + "capability_version": "1.1.0", "input": { "from_workflow_input": [] }, diff --git a/examples/core-calculate-price/contract.json b/examples/core-calculate-price/contract.json index 36c618f8..0a4fc3d5 100644 --- a/examples/core-calculate-price/contract.json +++ b/examples/core-calculate-price/contract.json @@ -4,17 +4,17 @@ "id": "core.calculate-price", "namespace": "core", "name": "calculate-price", - "version": "1.0.1", + "version": "1.1.0", "lifecycle": "active", "owner": { "team": "traverse-core", "contact": "capability-authors@traverse-framework.com" }, "summary": "Deterministic price/quote engine. Given line items, quantities, customer context and a versioned pricing configuration, returns unit prices, discounts, taxes and totals with an audit trail.", - "description": "Pure pricing capability: line quantity × unit_price, optional first matching percentage/fixed discount, optional exclusive tax, deterministic config_hash.\n\nImplemented and smoke-tested matrix (use_cases):\n- percentage discount + exclusive tax (ok)\n- fixed discount without tax (ok)\n- empty discount/tax rules returns base price (ok)\n- invalid_quantity when quantity <= 0\n- invalid_unit_price when unit_price < 0\n- invalid_config when currency is empty\n- currency_mismatch when top-level currency ≠ pricing_config.currency\n- empty_cart when lines is empty\n\nKnown limitations (intentional in 1.0.1):\n- Only the first matching discount rule is applied (no multi-rule stacking)\n- Discount rule `conditions` (e.g. customer segment) are ignored\n- Rounding modes other than half_up are not implemented; schema narrowed to half_up\n- Tax-inclusive extraction is not implemented (exclusive tax only)\n- calculation_error is not part of the published reason_code vocabulary", + "description": "Pure pricing capability: line quantity \u00d7 unit_price, optional first matching percentage/fixed discount, optional exclusive tax, deterministic config_hash.\n\nImplemented and smoke-tested matrix (use_cases):\n- percentage discount + exclusive tax (ok)\n- fixed discount without tax (ok)\n- empty discount/tax rules returns base price (ok)\n- invalid_quantity when quantity <= 0\n- invalid_unit_price when unit_price < 0\n- invalid_config when currency is empty\n- currency_mismatch when top-level currency \u2260 pricing_config.currency\n- empty_cart when lines is empty\n\nKnown limitations (intentional in 1.1.0):\n- Only the first matching discount rule is applied (no multi-rule stacking)\n- Discount rule `conditions` (e.g. customer segment) are ignored\n- Rounding modes other than half_up are not implemented; schema narrowed to half_up\n- Tax-inclusive extraction is not implemented (exclusive tax only)\n- calculation_error is not part of the published reason_code vocabulary", "use_cases": [ { - "scenario": "As a checkout-flow developer, I want percentage discount + exclusive tax so the UI can show a clear total.", + "scenario": "As a checkout-flow developer, I want percentage discount + exclusive tax, so that the UI can show a clear total.", "input_example": { "currency": "USD", "lines": [ @@ -111,7 +111,7 @@ "persona_ref": "runtime-engineer" }, { - "scenario": "As a billing engineer, I want a fixed discount without tax to reduce the line net deterministically.", + "scenario": "As a billing engineer, I want a fixed discount without tax to reduce the line net deterministically, so that invoices stay reproducible.", "input_example": { "currency": "USD", "lines": [ @@ -187,7 +187,7 @@ "persona_ref": "runtime-engineer" }, { - "scenario": "As a client developer, I want empty discount/tax rules to return the base price with reason_code ok.", + "scenario": "As a client developer, I want empty discount/tax rules to return the base price with reason_code ok, so that simple carts still price correctly.", "input_example": { "currency": "USD", "lines": [ @@ -247,7 +247,7 @@ "persona_ref": "meeting-organizer" }, { - "scenario": "As a checkout-flow developer, I want quantity <= 0 rejected with invalid_quantity.", + "scenario": "As a checkout-flow developer, I want quantity <= 0 rejected with invalid_quantity, so that bogus line quantities never reach totals.", "input_example": { "currency": "USD", "lines": [ @@ -293,7 +293,7 @@ "persona_ref": "runtime-engineer" }, { - "scenario": "As a platform engineer, I want a negative unit_price rejected with invalid_unit_price.", + "scenario": "As a platform engineer, I want a negative unit_price rejected with invalid_unit_price, so that underflows cannot produce fake discounts.", "input_example": { "currency": "USD", "lines": [ @@ -339,7 +339,7 @@ "persona_ref": "runtime-engineer" }, { - "scenario": "As a runtime, I want empty currency rejected with invalid_config.", + "scenario": "As a runtime, I want empty currency rejected with invalid_config, so that pricing never runs without a currency.", "input_example": { "currency": "", "lines": [ @@ -385,7 +385,7 @@ "persona_ref": "runtime-engineer" }, { - "scenario": "As a multi-currency engineer, I want currency_mismatch when request currency differs from pricing_config.currency.", + "scenario": "As a multi-currency engineer, I want currency_mismatch when request currency differs from pricing_config.currency, so that mixed-currency carts fail closed.", "input_example": { "currency": "EUR", "lines": [ @@ -431,7 +431,7 @@ "persona_ref": "runtime-engineer" }, { - "scenario": "As a checkout-flow developer, I want an empty cart rejected with empty_cart.", + "scenario": "As a checkout-flow developer, I want an empty cart rejected with empty_cart, so that checkout cannot quote zero lines as a price.", "input_example": { "currency": "USD", "lines": [], @@ -894,7 +894,7 @@ "source": "ai-assisted", "author": "loop-founders + traverse-capability-author", "created_at": "2026-08-08T05:50:00Z", - "spec_ref": "core.calculate-price@1.0.1", + "spec_ref": "core.calculate-price@1.1.0", "adr_refs": [ "persona-council-review-2026-08-08" ], @@ -902,7 +902,7 @@ }, "evidence": [ { - "evidence_id": "core-calculate-price-1.0.1-contract-validation", + "evidence_id": "core-calculate-price-1.1.0-contract-validation", "type": "contract_validation", "status": "passed" } diff --git a/examples/core-calculate-price/manifest.json b/examples/core-calculate-price/manifest.json index 89b2ee19..1a9e77f7 100644 --- a/examples/core-calculate-price/manifest.json +++ b/examples/core-calculate-price/manifest.json @@ -2,17 +2,17 @@ "kind": "capability_package", "schema_version": "1.0.0", "package_id": "core.calculate-price-agent", - "version": "1.0.1", - "summary": "Capability package for core.calculate-price@1.0.1.", + "version": "1.1.0", + "summary": "Capability package for core.calculate-price@1.1.0.", "capability_ref": { "id": "core.calculate-price", - "version": "1.0.1", + "version": "1.1.0", "contract_path": "./contract.json" }, "workflow_refs": [ { "workflow_id": "core.calculate-price", - "workflow_version": "1.0.1" + "workflow_version": "1.1.0" } ], "source": { diff --git a/examples/core-calculate-price/runtime-requests/uc01-percentage-discount-tax.json b/examples/core-calculate-price/runtime-requests/uc01-percentage-discount-tax.json index 20b08124..6b515fa1 100644 --- a/examples/core-calculate-price/runtime-requests/uc01-percentage-discount-tax.json +++ b/examples/core-calculate-price/runtime-requests/uc01-percentage-discount-tax.json @@ -4,7 +4,7 @@ "request_id": "core-calculate-price-01", "intent": { "capability_id": "core.calculate-price", - "capability_version": "1.0.1" + "capability_version": "1.1.0" }, "input": { "currency": "USD", diff --git a/examples/core-calculate-price/runtime-requests/uc02-fixed-discount.json b/examples/core-calculate-price/runtime-requests/uc02-fixed-discount.json index 0e82883b..599ddc39 100644 --- a/examples/core-calculate-price/runtime-requests/uc02-fixed-discount.json +++ b/examples/core-calculate-price/runtime-requests/uc02-fixed-discount.json @@ -4,7 +4,7 @@ "request_id": "core-calculate-price-02", "intent": { "capability_id": "core.calculate-price", - "capability_version": "1.0.1" + "capability_version": "1.1.0" }, "input": { "currency": "USD", diff --git a/examples/core-calculate-price/runtime-requests/uc03-empty-rules.json b/examples/core-calculate-price/runtime-requests/uc03-empty-rules.json index 34fd21f8..8adf99d7 100644 --- a/examples/core-calculate-price/runtime-requests/uc03-empty-rules.json +++ b/examples/core-calculate-price/runtime-requests/uc03-empty-rules.json @@ -4,7 +4,7 @@ "request_id": "core-calculate-price-03", "intent": { "capability_id": "core.calculate-price", - "capability_version": "1.0.1" + "capability_version": "1.1.0" }, "input": { "currency": "USD", diff --git a/examples/core-calculate-price/runtime-requests/uc04-invalid-quantity.json b/examples/core-calculate-price/runtime-requests/uc04-invalid-quantity.json index db4f86eb..3b338773 100644 --- a/examples/core-calculate-price/runtime-requests/uc04-invalid-quantity.json +++ b/examples/core-calculate-price/runtime-requests/uc04-invalid-quantity.json @@ -4,7 +4,7 @@ "request_id": "core-calculate-price-04", "intent": { "capability_id": "core.calculate-price", - "capability_version": "1.0.1" + "capability_version": "1.1.0" }, "input": { "currency": "USD", diff --git a/examples/core-calculate-price/runtime-requests/uc05-invalid-unit-price.json b/examples/core-calculate-price/runtime-requests/uc05-invalid-unit-price.json index 976fa258..fcc162c3 100644 --- a/examples/core-calculate-price/runtime-requests/uc05-invalid-unit-price.json +++ b/examples/core-calculate-price/runtime-requests/uc05-invalid-unit-price.json @@ -4,7 +4,7 @@ "request_id": "core-calculate-price-05", "intent": { "capability_id": "core.calculate-price", - "capability_version": "1.0.1" + "capability_version": "1.1.0" }, "input": { "currency": "USD", diff --git a/examples/core-calculate-price/runtime-requests/uc06-invalid-config.json b/examples/core-calculate-price/runtime-requests/uc06-invalid-config.json index 1d66f463..a3068ab6 100644 --- a/examples/core-calculate-price/runtime-requests/uc06-invalid-config.json +++ b/examples/core-calculate-price/runtime-requests/uc06-invalid-config.json @@ -4,7 +4,7 @@ "request_id": "core-calculate-price-06", "intent": { "capability_id": "core.calculate-price", - "capability_version": "1.0.1" + "capability_version": "1.1.0" }, "input": { "currency": "", diff --git a/examples/core-calculate-price/runtime-requests/uc07-currency-mismatch.json b/examples/core-calculate-price/runtime-requests/uc07-currency-mismatch.json index c5cd0926..e7e2b9ef 100644 --- a/examples/core-calculate-price/runtime-requests/uc07-currency-mismatch.json +++ b/examples/core-calculate-price/runtime-requests/uc07-currency-mismatch.json @@ -4,7 +4,7 @@ "request_id": "core-calculate-price-07", "intent": { "capability_id": "core.calculate-price", - "capability_version": "1.0.1" + "capability_version": "1.1.0" }, "input": { "currency": "EUR", diff --git a/examples/core-calculate-price/runtime-requests/uc08-empty-cart.json b/examples/core-calculate-price/runtime-requests/uc08-empty-cart.json index 50aca085..7298ec13 100644 --- a/examples/core-calculate-price/runtime-requests/uc08-empty-cart.json +++ b/examples/core-calculate-price/runtime-requests/uc08-empty-cart.json @@ -4,7 +4,7 @@ "request_id": "core-calculate-price-08", "intent": { "capability_id": "core.calculate-price", - "capability_version": "1.0.1" + "capability_version": "1.1.0" }, "input": { "currency": "USD", diff --git a/examples/core-calculate-price/workflows/calculate-price/workflow.json b/examples/core-calculate-price/workflows/calculate-price/workflow.json index 6c0d8f26..cf7d3d40 100644 --- a/examples/core-calculate-price/workflows/calculate-price/workflow.json +++ b/examples/core-calculate-price/workflows/calculate-price/workflow.json @@ -3,7 +3,7 @@ "schema_version": "1.0.0", "id": "core.calculate-price", "name": "calculate-price", - "version": "1.0.1", + "version": "1.1.0", "lifecycle": "active", "owner": { "team": "loop", @@ -38,7 +38,7 @@ { "node_id": "run", "capability_id": "core.calculate-price", - "capability_version": "1.0.1", + "capability_version": "1.1.0", "input": { "from_workflow_input": [ "currency", diff --git a/examples/core-decide-escalation/contract.json b/examples/core-decide-escalation/contract.json index 78f9fe0c..cd6175bb 100644 --- a/examples/core-decide-escalation/contract.json +++ b/examples/core-decide-escalation/contract.json @@ -4,17 +4,17 @@ "id": "core.decide-escalation", "namespace": "core", "name": "decide-escalation", - "version": "1.0.1", + "version": "1.1.0", "lifecycle": "active", "owner": { "team": "loop", "contact": "founders@loop.dev" }, "summary": "Decides escalate vs weekly digest from team action health, with a deliberately high bar.", - "description": "Pure WF5 capability. Consumes a health snapshot (from core.aggregate-team-action-health) and applies multi-signal thresholds to decide digest vs escalate.\n\nImplemented and smoke-tested matrix (use_cases):\n- digest when only one signal is met\n- escalate when multiple signals are met\n- invalid_input when overdue_count is negative\n\nKnown limitations (intentional in 1.0.1):\n- reason_code config_error removed; the guest does not emit that code\n- Decision only; no notification delivery", + "description": "Pure WF5 capability. Consumes a health snapshot (from core.aggregate-team-action-health) and applies multi-signal thresholds to decide digest vs escalate.\n\nImplemented and smoke-tested matrix (use_cases):\n- digest when only one signal is met\n- escalate when multiple signals are met\n- invalid_input when overdue_count is negative\n\nKnown limitations (intentional in 1.1.0):\n- reason_code config_error removed; the guest does not emit that code\n- Decision only; no notification delivery", "use_cases": [ { - "scenario": "As a manager experience, I want a single overdue item to stay in digest when other signals are calm.", + "scenario": "As a manager experience owner, I want a single overdue item to stay in digest when other signals are calm, so that quiet noise does not trigger real-time alarms.", "input_example": { "health": { "total_open": 3, @@ -57,7 +57,7 @@ "persona_ref": "collaboration-product-owner" }, { - "scenario": "As the system, I want real-time escalation only when multiple health signals fire.", + "scenario": "As a system, I want real-time escalation only when multiple health signals fire, so that managers are interrupted only for compound risk.", "input_example": { "health": { "total_open": 5, @@ -109,7 +109,7 @@ "persona_ref": "runtime-engineer" }, { - "scenario": "As WF5, I want invalid_input when overdue_count is negative.", + "scenario": "As a WF5 workflow author, I want invalid_input when overdue_count is negative, so that corrupt health snapshots fail closed.", "input_example": { "health": { "total_open": 3, @@ -287,7 +287,7 @@ "source": "ai-assisted", "author": "loop-founders + traverse-capability-author", "created_at": "2026-08-08T06:00:00Z", - "spec_ref": "core.decide-escalation@1.0.1", + "spec_ref": "core.decide-escalation@1.1.0", "adr_refs": [ "persona-council-review-2026-08-08" ], @@ -295,7 +295,7 @@ }, "evidence": [ { - "evidence_id": "core-decide-escalation-1.0.1-contract-validation", + "evidence_id": "core-decide-escalation-1.1.0-contract-validation", "type": "contract_validation", "status": "passed" } diff --git a/examples/core-decide-escalation/manifest.json b/examples/core-decide-escalation/manifest.json index 427d79c0..e90c120e 100644 --- a/examples/core-decide-escalation/manifest.json +++ b/examples/core-decide-escalation/manifest.json @@ -2,17 +2,17 @@ "kind": "capability_package", "schema_version": "1.0.0", "package_id": "core.decide-escalation-agent", - "version": "1.0.1", - "summary": "Capability package for core.decide-escalation@1.0.1.", + "version": "1.1.0", + "summary": "Capability package for core.decide-escalation@1.1.0.", "capability_ref": { "id": "core.decide-escalation", - "version": "1.0.1", + "version": "1.1.0", "contract_path": "./contract.json" }, "workflow_refs": [ { "workflow_id": "core.decide-escalation", - "workflow_version": "1.0.1" + "workflow_version": "1.1.0" } ], "source": { diff --git a/examples/core-decide-escalation/runtime-requests/uc01-digest.json b/examples/core-decide-escalation/runtime-requests/uc01-digest.json index a4835c76..46a156cd 100644 --- a/examples/core-decide-escalation/runtime-requests/uc01-digest.json +++ b/examples/core-decide-escalation/runtime-requests/uc01-digest.json @@ -4,7 +4,7 @@ "request_id": "core-decide-escalation-01", "intent": { "capability_id": "core.decide-escalation", - "capability_version": "1.0.1" + "capability_version": "1.1.0" }, "input": { "health": { diff --git a/examples/core-decide-escalation/runtime-requests/uc02-escalate.json b/examples/core-decide-escalation/runtime-requests/uc02-escalate.json index aa455849..516de86d 100644 --- a/examples/core-decide-escalation/runtime-requests/uc02-escalate.json +++ b/examples/core-decide-escalation/runtime-requests/uc02-escalate.json @@ -4,7 +4,7 @@ "request_id": "core-decide-escalation-02", "intent": { "capability_id": "core.decide-escalation", - "capability_version": "1.0.1" + "capability_version": "1.1.0" }, "input": { "health": { diff --git a/examples/core-decide-escalation/runtime-requests/uc03-invalid-input.json b/examples/core-decide-escalation/runtime-requests/uc03-invalid-input.json index 2ae040da..42a9e141 100644 --- a/examples/core-decide-escalation/runtime-requests/uc03-invalid-input.json +++ b/examples/core-decide-escalation/runtime-requests/uc03-invalid-input.json @@ -4,7 +4,7 @@ "request_id": "core-decide-escalation-03", "intent": { "capability_id": "core.decide-escalation", - "capability_version": "1.0.1" + "capability_version": "1.1.0" }, "input": { "health": { diff --git a/examples/core-decide-escalation/workflows/decide-escalation/workflow.json b/examples/core-decide-escalation/workflows/decide-escalation/workflow.json index 7c40b79a..38fa6387 100644 --- a/examples/core-decide-escalation/workflows/decide-escalation/workflow.json +++ b/examples/core-decide-escalation/workflows/decide-escalation/workflow.json @@ -3,7 +3,7 @@ "schema_version": "1.0.0", "id": "core.decide-escalation", "name": "decide-escalation", - "version": "1.0.1", + "version": "1.1.0", "lifecycle": "active", "owner": { "team": "loop", @@ -26,7 +26,7 @@ { "node_id": "run", "capability_id": "core.decide-escalation", - "capability_version": "1.0.1", + "capability_version": "1.1.0", "input": { "from_workflow_input": [] }, diff --git a/examples/core-evaluate-completion-quality/contract.json b/examples/core-evaluate-completion-quality/contract.json index a0c91e8b..40faa83f 100644 --- a/examples/core-evaluate-completion-quality/contract.json +++ b/examples/core-evaluate-completion-quality/contract.json @@ -4,17 +4,17 @@ "id": "core.evaluate-completion-quality", "namespace": "core", "name": "evaluate-completion-quality", - "version": "1.0.1", + "version": "1.1.0", "lifecycle": "active", "owner": { "team": "loop", "contact": "founders@loop.dev" }, "summary": "Scores completion quality for a done action item, with a stronger evidence bar under high pressure.", - "description": "Pure WF4 capability. Evaluates completion_note length and evidence_refs against pressure_score and config. High-pressure completions without evidence return needs_evidence.\n\nImplemented and smoke-tested matrix (use_cases):\n- pass with evidence under high pressure\n- needs_evidence verdict when evidence is missing under high pressure\n- invalid_status when status is not done/completed\n- invalid_input when item.id is empty\n\nKnown limitations (intentional in 1.0.1):\n- reason_code config_error removed; the guest does not emit that code\n- Evidence quality is presence-only; content is not validated", + "description": "Pure WF4 capability. Evaluates completion_note length and evidence_refs against pressure_score and config. High-pressure completions without evidence return needs_evidence.\n\nImplemented and smoke-tested matrix (use_cases):\n- pass with evidence under high pressure\n- needs_evidence verdict when evidence is missing under high pressure\n- invalid_status when status is not done/completed\n- invalid_input when item.id is empty\n\nKnown limitations (intentional in 1.1.0):\n- reason_code config_error removed; the guest does not emit that code\n- Evidence quality is presence-only; content is not validated", "use_cases": [ { - "scenario": "As the completion path, I want a high-pressure item with evidence to pass.", + "scenario": "As a completion path, I want a high-pressure item with evidence to pass, so that well-documented finishes clear the gate.", "input_example": { "item": { "id": "ai-1", @@ -49,7 +49,7 @@ "persona_ref": "collaboration-product-owner" }, { - "scenario": "As the system, I want high-pressure completions without evidence to fail closed.", + "scenario": "As a system, I want high-pressure completions without evidence to fail closed, so that rushed closes cannot skip proof.", "input_example": { "item": { "id": "ai-2", @@ -85,7 +85,7 @@ "persona_ref": "runtime-engineer" }, { - "scenario": "As WF4, I want invalid_status when the item is not marked done/completed.", + "scenario": "As a WF4 workflow author, I want invalid_status when the item is not marked done/completed, so that quality checks only run on completion attempts.", "input_example": { "item": { "id": "ai-1", @@ -114,7 +114,7 @@ "persona_ref": "runtime-engineer" }, { - "scenario": "As WF4, I want invalid_input when item.id is empty.", + "scenario": "As a WF4 workflow author, I want invalid_input when item.id is empty, so that anonymous completions cannot be evaluated.", "input_example": { "item": { "id": "", @@ -293,7 +293,7 @@ "source": "ai-assisted", "author": "loop-founders + traverse-capability-author", "created_at": "2026-08-08T06:00:00Z", - "spec_ref": "core.evaluate-completion-quality@1.0.1", + "spec_ref": "core.evaluate-completion-quality@1.1.0", "adr_refs": [ "persona-council-review-2026-08-08" ], @@ -301,7 +301,7 @@ }, "evidence": [ { - "evidence_id": "core-evaluate-completion-quality-1.0.1-contract-validation", + "evidence_id": "core-evaluate-completion-quality-1.1.0-contract-validation", "type": "contract_validation", "status": "passed" } diff --git a/examples/core-evaluate-completion-quality/manifest.json b/examples/core-evaluate-completion-quality/manifest.json index 17cdb258..564f69e6 100644 --- a/examples/core-evaluate-completion-quality/manifest.json +++ b/examples/core-evaluate-completion-quality/manifest.json @@ -2,17 +2,17 @@ "kind": "capability_package", "schema_version": "1.0.0", "package_id": "core.evaluate-completion-quality-agent", - "version": "1.0.1", - "summary": "Capability package for core.evaluate-completion-quality@1.0.1.", + "version": "1.1.0", + "summary": "Capability package for core.evaluate-completion-quality@1.1.0.", "capability_ref": { "id": "core.evaluate-completion-quality", - "version": "1.0.1", + "version": "1.1.0", "contract_path": "./contract.json" }, "workflow_refs": [ { "workflow_id": "core.evaluate-completion-quality", - "workflow_version": "1.0.1" + "workflow_version": "1.1.0" } ], "source": { diff --git a/examples/core-evaluate-completion-quality/runtime-requests/uc01-pass-with-evidence.json b/examples/core-evaluate-completion-quality/runtime-requests/uc01-pass-with-evidence.json index d0a2a131..24561096 100644 --- a/examples/core-evaluate-completion-quality/runtime-requests/uc01-pass-with-evidence.json +++ b/examples/core-evaluate-completion-quality/runtime-requests/uc01-pass-with-evidence.json @@ -4,7 +4,7 @@ "request_id": "core-evaluate-completion-quality-01", "intent": { "capability_id": "core.evaluate-completion-quality", - "capability_version": "1.0.1" + "capability_version": "1.1.0" }, "input": { "item": { diff --git a/examples/core-evaluate-completion-quality/runtime-requests/uc02-needs-evidence.json b/examples/core-evaluate-completion-quality/runtime-requests/uc02-needs-evidence.json index 4892fb0e..229a9b06 100644 --- a/examples/core-evaluate-completion-quality/runtime-requests/uc02-needs-evidence.json +++ b/examples/core-evaluate-completion-quality/runtime-requests/uc02-needs-evidence.json @@ -4,7 +4,7 @@ "request_id": "core-evaluate-completion-quality-02", "intent": { "capability_id": "core.evaluate-completion-quality", - "capability_version": "1.0.1" + "capability_version": "1.1.0" }, "input": { "item": { diff --git a/examples/core-evaluate-completion-quality/runtime-requests/uc03-invalid-status.json b/examples/core-evaluate-completion-quality/runtime-requests/uc03-invalid-status.json index aad835a4..92558b7d 100644 --- a/examples/core-evaluate-completion-quality/runtime-requests/uc03-invalid-status.json +++ b/examples/core-evaluate-completion-quality/runtime-requests/uc03-invalid-status.json @@ -4,7 +4,7 @@ "request_id": "core-evaluate-completion-quality-03", "intent": { "capability_id": "core.evaluate-completion-quality", - "capability_version": "1.0.1" + "capability_version": "1.1.0" }, "input": { "item": { diff --git a/examples/core-evaluate-completion-quality/runtime-requests/uc04-invalid-input.json b/examples/core-evaluate-completion-quality/runtime-requests/uc04-invalid-input.json index ac798d9d..9d766cba 100644 --- a/examples/core-evaluate-completion-quality/runtime-requests/uc04-invalid-input.json +++ b/examples/core-evaluate-completion-quality/runtime-requests/uc04-invalid-input.json @@ -4,7 +4,7 @@ "request_id": "core-evaluate-completion-quality-04", "intent": { "capability_id": "core.evaluate-completion-quality", - "capability_version": "1.0.1" + "capability_version": "1.1.0" }, "input": { "item": { diff --git a/examples/core-evaluate-completion-quality/workflows/evaluate-completion-quality/workflow.json b/examples/core-evaluate-completion-quality/workflows/evaluate-completion-quality/workflow.json index de17de05..7746e709 100644 --- a/examples/core-evaluate-completion-quality/workflows/evaluate-completion-quality/workflow.json +++ b/examples/core-evaluate-completion-quality/workflows/evaluate-completion-quality/workflow.json @@ -3,7 +3,7 @@ "schema_version": "1.0.0", "id": "core.evaluate-completion-quality", "name": "evaluate-completion-quality", - "version": "1.0.1", + "version": "1.1.0", "lifecycle": "active", "owner": { "team": "loop", @@ -26,7 +26,7 @@ { "node_id": "run", "capability_id": "core.evaluate-completion-quality", - "capability_version": "1.0.1", + "capability_version": "1.1.0", "input": { "from_workflow_input": [] }, diff --git a/examples/core-extract-action-items/contract.json b/examples/core-extract-action-items/contract.json index ef8e39ca..faca6b7e 100644 --- a/examples/core-extract-action-items/contract.json +++ b/examples/core-extract-action-items/contract.json @@ -4,17 +4,17 @@ "id": "core.extract-action-items", "namespace": "core", "name": "extract-action-items", - "version": "1.1.1", + "version": "1.2.0", "lifecycle": "active", "owner": { "team": "loop", "contact": "founders@loop.dev" }, "summary": "Extracts clean action items from meeting notes with strict confidence gating, separate 'needs review' bucket, and improved relative-date handling. Council-revised.", - "description": "Council-improved extraction capability. Key changes from 1.0.0:\n- Higher default confidence threshold\n- Explicit 'needs_human_review' list for borderline items\n- Better rejection of vague or decision-only sentences\n- Clearer relative date resolution anchored to meeting_date\n- Returns source sentence + confidence for every candidate so the UI can show provenance\n\nStill pure and deterministic. No external model calls.\n\nImplemented and smoke-tested matrix (use_cases):\n- mixed extraction with high-confidence items and vague rejection\n- no_action_items_found for discussion-only notes\n\nKnown limitations (intentional in 1.1.1):\n- Deterministic heuristic extractor only; no external model calls", + "description": "Council-improved extraction capability. Key changes from 1.0.0:\n- Higher default confidence threshold\n- Explicit 'needs_human_review' list for borderline items\n- Better rejection of vague or decision-only sentences\n- Clearer relative date resolution anchored to meeting_date\n- Returns source sentence + confidence for every candidate so the UI can show provenance\n\nStill pure and deterministic. No external model calls.\n\nImplemented and smoke-tested matrix (use_cases):\n- mixed extraction with high-confidence items and vague rejection\n- no_action_items_found for discussion-only notes\n\nKnown limitations (intentional in 1.2.0):\n- Deterministic heuristic extractor only; no external model calls", "use_cases": [ { - "scenario": "As a team lead, I want only high-confidence action items auto-suggested and borderline ones flagged for my review.", + "scenario": "As a team lead, I want only high-confidence action items auto-suggested and borderline ones flagged for my review, so that I trust the suggestions without drowning in noise.", "input_example": { "text": "Ada will send the revised proposal by Friday. We should probably look at the API at some point. Bob to review security notes next week.", "participants": [ @@ -69,7 +69,7 @@ "persona_ref": "collaboration-product-owner" }, { - "scenario": "As a user, I want pure discussion with no commitments to produce an empty high-confidence list.", + "scenario": "As a user, I want pure discussion with no commitments to produce an empty high-confidence list, so that chatty notes do not invent fake tasks.", "input_example": { "text": "We had a good discussion and aligned on the direction. No specific next steps today.", "participants": [], @@ -241,7 +241,7 @@ "source": "ai-assisted", "author": "loop-founders + traverse-capability-author", "created_at": "2026-08-08T06:20:00Z", - "spec_ref": "core.extract-action-items@1.1.1", + "spec_ref": "core.extract-action-items@1.2.0", "adr_refs": [ "persona-council-review-2026-08-08" ], @@ -249,7 +249,7 @@ }, "evidence": [ { - "evidence_id": "core-extract-action-items-1.1.1-contract-validation", + "evidence_id": "core-extract-action-items-1.2.0-contract-validation", "type": "contract_validation", "status": "passed" } diff --git a/examples/core-extract-action-items/manifest.json b/examples/core-extract-action-items/manifest.json index 7923f3be..f090a0c9 100644 --- a/examples/core-extract-action-items/manifest.json +++ b/examples/core-extract-action-items/manifest.json @@ -2,17 +2,17 @@ "kind": "capability_package", "schema_version": "1.0.0", "package_id": "core.extract-action-items-agent", - "version": "1.1.1", - "summary": "Capability package for core.extract-action-items@1.1.1.", + "version": "1.2.0", + "summary": "Capability package for core.extract-action-items@1.2.0.", "capability_ref": { "id": "core.extract-action-items", - "version": "1.1.1", + "version": "1.2.0", "contract_path": "./contract.json" }, "workflow_refs": [ { "workflow_id": "core.extract-action-items", - "workflow_version": "1.1.1" + "workflow_version": "1.2.0" } ], "source": { diff --git a/examples/core-extract-action-items/runtime-requests/uc01-extract-mixed.json b/examples/core-extract-action-items/runtime-requests/uc01-extract-mixed.json index 13434cb6..40b888cf 100644 --- a/examples/core-extract-action-items/runtime-requests/uc01-extract-mixed.json +++ b/examples/core-extract-action-items/runtime-requests/uc01-extract-mixed.json @@ -4,7 +4,7 @@ "request_id": "core-extract-action-items-01", "intent": { "capability_id": "core.extract-action-items", - "capability_version": "1.1.1" + "capability_version": "1.2.0" }, "input": { "text": "Ada will send the revised proposal by Friday. We should probably look at the API at some point. Bob to review security notes next week.", diff --git a/examples/core-extract-action-items/runtime-requests/uc02-no-actions.json b/examples/core-extract-action-items/runtime-requests/uc02-no-actions.json index 5e54c69f..3fbefffc 100644 --- a/examples/core-extract-action-items/runtime-requests/uc02-no-actions.json +++ b/examples/core-extract-action-items/runtime-requests/uc02-no-actions.json @@ -4,7 +4,7 @@ "request_id": "core-extract-action-items-02", "intent": { "capability_id": "core.extract-action-items", - "capability_version": "1.1.1" + "capability_version": "1.2.0" }, "input": { "text": "We had a good discussion and aligned on the direction. No specific next steps today.", diff --git a/examples/core-extract-action-items/workflows/extract-action-items/workflow.json b/examples/core-extract-action-items/workflows/extract-action-items/workflow.json index df949dbf..64d37098 100644 --- a/examples/core-extract-action-items/workflows/extract-action-items/workflow.json +++ b/examples/core-extract-action-items/workflows/extract-action-items/workflow.json @@ -3,7 +3,7 @@ "schema_version": "1.0.0", "id": "core.extract-action-items", "name": "extract-action-items", - "version": "1.1.1", + "version": "1.2.0", "lifecycle": "active", "owner": { "team": "loop", @@ -35,7 +35,7 @@ { "node_id": "run", "capability_id": "core.extract-action-items", - "capability_version": "1.1.1", + "capability_version": "1.2.0", "input": { "from_workflow_input": [ "text", diff --git a/examples/core-generate-nudge-message/contract.json b/examples/core-generate-nudge-message/contract.json index 392d25fa..4bfab6d5 100644 --- a/examples/core-generate-nudge-message/contract.json +++ b/examples/core-generate-nudge-message/contract.json @@ -4,17 +4,17 @@ "id": "core.generate-nudge-message", "namespace": "core", "name": "generate-nudge-message", - "version": "1.0.1", + "version": "1.1.0", "lifecycle": "active", "owner": { "team": "loop", "contact": "founders@loop.dev" }, "summary": "Generates a short, human, context-aware nudge message for an action item at a given intensity.", - "description": "Pure message generation. Takes item details + intensity + tone configuration and returns a ready-to-send message body plus subject/preview. No delivery occurs inside the capability.\n\nImplemented and smoke-tested matrix (use_cases):\n- soft + friendly tone reminder\n- escalate + direct tone escalation message\n- direct + neutral tone request\n- config_error when item.title is empty\n\nKnown limitations (intentional in 1.0.1):\n- reason_code invalid_intensity removed from the declared surface; intensity is a schema enum so host validation rejects unknown values before the guest runs\n- Delivery / sending is out of scope; callers must send the returned message", + "description": "Pure message generation. Takes item details + intensity + tone configuration and returns a ready-to-send message body plus subject/preview. No delivery occurs inside the capability.\n\nImplemented and smoke-tested matrix (use_cases):\n- soft + friendly tone reminder\n- escalate + direct tone escalation message\n- direct + neutral tone request\n- config_error when item.title is empty\n\nKnown limitations (intentional in 1.1.0):\n- reason_code invalid_intensity removed from the declared surface; intensity is a schema enum so host validation rejects unknown values before the guest runs\n- Delivery / sending is out of scope; callers must send the returned message", "use_cases": [ { - "scenario": "As the follow-up engine, I want a soft reminder that feels helpful rather than nagging.", + "scenario": "As a follow-up engine, I want a soft reminder that feels helpful rather than nagging, so that owners stay engaged without friction.", "input_example": { "item": { "id": "ai-1", @@ -33,7 +33,7 @@ } }, "output_example": { - "message": "Hey Ada — friendly reminder that “Send the revised proposal” is due tomorrow. Let us know if you need anything!", + "message": "Hey Ada \u2014 friendly reminder that \u201cSend the revised proposal\u201d is due tomorrow. Let us know if you need anything!", "preview": "Reminder: Send the revised proposal", "reason_code": "ok", "evaluation_trace": [ @@ -45,7 +45,7 @@ "persona_ref": "runtime-engineer" }, { - "scenario": "As the follow-up engine, I want an escalate-intensity message when an item has been ignored repeatedly.", + "scenario": "As a follow-up engine, I want an escalate-intensity message when an item has been ignored repeatedly, so that neglect gets a clearer ask.", "input_example": { "item": { "id": "ai-9", @@ -76,7 +76,7 @@ "persona_ref": "collaboration-product-owner" }, { - "scenario": "As the follow-up engine, I want a direct, neutral reminder when soft nudges are insufficient.", + "scenario": "As a follow-up engine, I want a direct, neutral reminder when soft nudges are insufficient, so that the ask is unambiguous.", "input_example": { "item": { "id": "ai-2", @@ -107,7 +107,7 @@ "persona_ref": "runtime-engineer" }, { - "scenario": "As the follow-up engine, I want a config_error when the item title is missing so I can skip generation.", + "scenario": "As a follow-up engine, I want a config_error when the item title is missing, so that I can skip generation instead of sending a blank nudge.", "input_example": { "item": { "id": "ai-x", @@ -258,7 +258,7 @@ "source": "ai-assisted", "author": "loop-founders + traverse-capability-author", "created_at": "2026-08-08T06:00:00Z", - "spec_ref": "core.generate-nudge-message@1.0.1", + "spec_ref": "core.generate-nudge-message@1.1.0", "adr_refs": [ "persona-council-review-2026-08-08" ], @@ -266,7 +266,7 @@ }, "evidence": [ { - "evidence_id": "core-generate-nudge-message-1.0.1-contract-validation", + "evidence_id": "core-generate-nudge-message-1.1.0-contract-validation", "type": "contract_validation", "status": "passed" } diff --git a/examples/core-generate-nudge-message/manifest.json b/examples/core-generate-nudge-message/manifest.json index f3c1c8e6..6485393f 100644 --- a/examples/core-generate-nudge-message/manifest.json +++ b/examples/core-generate-nudge-message/manifest.json @@ -2,17 +2,17 @@ "kind": "capability_package", "schema_version": "1.0.0", "package_id": "core.generate-nudge-message-agent", - "version": "1.0.1", - "summary": "Capability package for core.generate-nudge-message@1.0.1.", + "version": "1.1.0", + "summary": "Capability package for core.generate-nudge-message@1.1.0.", "capability_ref": { "id": "core.generate-nudge-message", - "version": "1.0.1", + "version": "1.1.0", "contract_path": "./contract.json" }, "workflow_refs": [ { "workflow_id": "core.generate-nudge-message", - "workflow_version": "1.0.1" + "workflow_version": "1.1.0" } ], "source": { diff --git a/examples/core-generate-nudge-message/runtime-requests/uc01-soft-friendly.json b/examples/core-generate-nudge-message/runtime-requests/uc01-soft-friendly.json index 375d81df..286f5f12 100644 --- a/examples/core-generate-nudge-message/runtime-requests/uc01-soft-friendly.json +++ b/examples/core-generate-nudge-message/runtime-requests/uc01-soft-friendly.json @@ -4,7 +4,7 @@ "request_id": "core-generate-nudge-message-01", "intent": { "capability_id": "core.generate-nudge-message", - "capability_version": "1.0.1" + "capability_version": "1.1.0" }, "input": { "item": { diff --git a/examples/core-generate-nudge-message/runtime-requests/uc02-escalate.json b/examples/core-generate-nudge-message/runtime-requests/uc02-escalate.json index f8ff907a..4bf09e05 100644 --- a/examples/core-generate-nudge-message/runtime-requests/uc02-escalate.json +++ b/examples/core-generate-nudge-message/runtime-requests/uc02-escalate.json @@ -4,7 +4,7 @@ "request_id": "core-generate-nudge-message-02", "intent": { "capability_id": "core.generate-nudge-message", - "capability_version": "1.0.1" + "capability_version": "1.1.0" }, "input": { "item": { diff --git a/examples/core-generate-nudge-message/runtime-requests/uc03-direct-neutral.json b/examples/core-generate-nudge-message/runtime-requests/uc03-direct-neutral.json index ee2cbcfc..32aefca6 100644 --- a/examples/core-generate-nudge-message/runtime-requests/uc03-direct-neutral.json +++ b/examples/core-generate-nudge-message/runtime-requests/uc03-direct-neutral.json @@ -4,7 +4,7 @@ "request_id": "core-generate-nudge-message-03", "intent": { "capability_id": "core.generate-nudge-message", - "capability_version": "1.0.1" + "capability_version": "1.1.0" }, "input": { "item": { diff --git a/examples/core-generate-nudge-message/runtime-requests/uc04-config-error.json b/examples/core-generate-nudge-message/runtime-requests/uc04-config-error.json index de5e0136..b0804b7b 100644 --- a/examples/core-generate-nudge-message/runtime-requests/uc04-config-error.json +++ b/examples/core-generate-nudge-message/runtime-requests/uc04-config-error.json @@ -4,7 +4,7 @@ "request_id": "core-generate-nudge-message-04", "intent": { "capability_id": "core.generate-nudge-message", - "capability_version": "1.0.1" + "capability_version": "1.1.0" }, "input": { "item": { diff --git a/examples/core-generate-nudge-message/workflows/generate-nudge-message/workflow.json b/examples/core-generate-nudge-message/workflows/generate-nudge-message/workflow.json index f791fddd..e014ee9b 100644 --- a/examples/core-generate-nudge-message/workflows/generate-nudge-message/workflow.json +++ b/examples/core-generate-nudge-message/workflows/generate-nudge-message/workflow.json @@ -3,7 +3,7 @@ "schema_version": "1.0.0", "id": "core.generate-nudge-message", "name": "generate-nudge-message", - "version": "1.0.1", + "version": "1.1.0", "lifecycle": "active", "owner": { "team": "loop", @@ -26,7 +26,7 @@ { "node_id": "run", "capability_id": "core.generate-nudge-message", - "capability_version": "1.0.1", + "capability_version": "1.1.0", "input": { "from_workflow_input": [ "item", diff --git a/examples/core-normalize-participants/contract.json b/examples/core-normalize-participants/contract.json index 58eb4b2c..7389401f 100644 --- a/examples/core-normalize-participants/contract.json +++ b/examples/core-normalize-participants/contract.json @@ -4,17 +4,17 @@ "id": "core.normalize-participants", "namespace": "core", "name": "normalize-participants", - "version": "1.0.1", + "version": "1.1.0", "lifecycle": "active", "owner": { "team": "loop", "contact": "founders@loop.dev" }, "summary": "Normalizes raw participant names/emails into canonical participant records for action-item ownership.", - "description": "Pure WF1 capability. Lowercases emails, trims whitespace, and matches against workspace members by email then name. Unmatched participants are retained with match_method=none.\n\nImplemented and smoke-tested matrix (use_cases):\n- mixed email match with one unmatched stranger\n- name-only match when email is null\n\nKnown limitations (intentional in 1.0.1):\n- reason_code narrowed to ok; invalid_input/config_error removed because host-required fields make those guest paths unreachable without schema weakening, and config_error is not implemented by the guest", + "description": "Pure WF1 capability. Lowercases emails, trims whitespace, and matches against workspace members by email then name. Unmatched participants are retained with match_method=none.\n\nImplemented and smoke-tested matrix (use_cases):\n- mixed email match with one unmatched stranger\n- name-only match when email is null\n\nKnown limitations (intentional in 1.1.0):\n- reason_code narrowed to ok; invalid_input/config_error removed because host-required fields make those guest paths unreachable without schema weakening, and config_error is not implemented by the guest", "use_cases": [ { - "scenario": "As the ingest pipeline, I want extracted names and emails resolved to workspace members.", + "scenario": "As an ingest pipeline, I want extracted names and emails resolved to workspace members, so that downstream ownership uses canonical ids.", "input_example": { "raw_participants": [ { @@ -79,7 +79,7 @@ "persona_ref": "meeting-organizer" }, { - "scenario": "As the system, I want a name-only match when email is absent.", + "scenario": "As a system, I want a name-only match when email is absent, so that partial participant hints still resolve when possible.", "input_example": { "raw_participants": [ { @@ -286,7 +286,7 @@ "source": "ai-assisted", "author": "loop-founders + traverse-capability-author", "created_at": "2026-08-08T06:00:00Z", - "spec_ref": "core.normalize-participants@1.0.1", + "spec_ref": "core.normalize-participants@1.1.0", "adr_refs": [ "persona-council-review-2026-08-08" ], @@ -294,7 +294,7 @@ }, "evidence": [ { - "evidence_id": "core-normalize-participants-1.0.1-contract-validation", + "evidence_id": "core-normalize-participants-1.1.0-contract-validation", "type": "contract_validation", "status": "passed" } diff --git a/examples/core-normalize-participants/manifest.json b/examples/core-normalize-participants/manifest.json index f4f7d002..a24e83a9 100644 --- a/examples/core-normalize-participants/manifest.json +++ b/examples/core-normalize-participants/manifest.json @@ -2,17 +2,17 @@ "kind": "capability_package", "schema_version": "1.0.0", "package_id": "core.normalize-participants-agent", - "version": "1.0.1", - "summary": "Capability package for core.normalize-participants@1.0.1.", + "version": "1.1.0", + "summary": "Capability package for core.normalize-participants@1.1.0.", "capability_ref": { "id": "core.normalize-participants", - "version": "1.0.1", + "version": "1.1.0", "contract_path": "./contract.json" }, "workflow_refs": [ { "workflow_id": "core.normalize-participants", - "workflow_version": "1.0.1" + "workflow_version": "1.1.0" } ], "source": { diff --git a/examples/core-normalize-participants/runtime-requests/uc01-mixed-match.json b/examples/core-normalize-participants/runtime-requests/uc01-mixed-match.json index 88a29b08..256233a6 100644 --- a/examples/core-normalize-participants/runtime-requests/uc01-mixed-match.json +++ b/examples/core-normalize-participants/runtime-requests/uc01-mixed-match.json @@ -4,7 +4,7 @@ "request_id": "core-normalize-participants-01", "intent": { "capability_id": "core.normalize-participants", - "capability_version": "1.0.1" + "capability_version": "1.1.0" }, "input": { "raw_participants": [ diff --git a/examples/core-normalize-participants/runtime-requests/uc02-name-match.json b/examples/core-normalize-participants/runtime-requests/uc02-name-match.json index 1eefad23..c72adb05 100644 --- a/examples/core-normalize-participants/runtime-requests/uc02-name-match.json +++ b/examples/core-normalize-participants/runtime-requests/uc02-name-match.json @@ -4,7 +4,7 @@ "request_id": "core-normalize-participants-02", "intent": { "capability_id": "core.normalize-participants", - "capability_version": "1.0.1" + "capability_version": "1.1.0" }, "input": { "raw_participants": [ diff --git a/examples/core-normalize-participants/workflows/normalize-participants/workflow.json b/examples/core-normalize-participants/workflows/normalize-participants/workflow.json index 6dd86daa..01b1a1e5 100644 --- a/examples/core-normalize-participants/workflows/normalize-participants/workflow.json +++ b/examples/core-normalize-participants/workflows/normalize-participants/workflow.json @@ -3,7 +3,7 @@ "schema_version": "1.0.0", "id": "core.normalize-participants", "name": "normalize-participants", - "version": "1.0.1", + "version": "1.1.0", "lifecycle": "active", "owner": { "team": "loop", @@ -26,7 +26,7 @@ { "node_id": "run", "capability_id": "core.normalize-participants", - "capability_version": "1.0.1", + "capability_version": "1.1.0", "input": { "from_workflow_input": [] }, diff --git a/examples/core-notify-stakeholders/contract.json b/examples/core-notify-stakeholders/contract.json index b1e9766b..d1faaea0 100644 --- a/examples/core-notify-stakeholders/contract.json +++ b/examples/core-notify-stakeholders/contract.json @@ -4,17 +4,17 @@ "id": "core.notify-stakeholders", "namespace": "core", "name": "notify-stakeholders", - "version": "1.0.1", + "version": "1.1.0", "lifecycle": "active", "owner": { "team": "loop", "contact": "founders@loop.dev" }, - "summary": "Prepares notification intents for stakeholders when an action item changes status. Pure — does not send.", - "description": "Pure WF4 capability. Builds recipient/channel/subject/body intents from item + stakeholder list + event_type. Delivery is caller-owned.\n\nImplemented and smoke-tested matrix (use_cases):\n- completed event with multiple stakeholders\n- nothing_to_notify when stakeholders is empty\n- status_changed event intents\n- blocked event intents\n\nKnown limitations (intentional in 1.0.1):\n- reason_code invalid_event_type and invalid_input removed; event_type is a schema enum and host-required fields make those guest denial paths unreachable without schema weakening\n- No actual notification delivery", + "summary": "Prepares notification intents for stakeholders when an action item changes status. Pure \u2014 does not send.", + "description": "Pure WF4 capability. Builds recipient/channel/subject/body intents from item + stakeholder list + event_type. Delivery is caller-owned.\n\nImplemented and smoke-tested matrix (use_cases):\n- completed event with multiple stakeholders\n- nothing_to_notify when stakeholders is empty\n- status_changed event intents\n- blocked event intents\n\nKnown limitations (intentional in 1.1.0):\n- reason_code invalid_event_type and invalid_input removed; event_type is a schema enum and host-required fields make those guest denial paths unreachable without schema weakening\n- No actual notification delivery", "use_cases": [ { - "scenario": "As the completion path, I want requester and manager notified that an item is done.", + "scenario": "As a completion path, I want requester and manager notified that an item is done, so that stakeholders learn without polling.", "input_example": { "item": { "id": "ai-1", @@ -67,7 +67,7 @@ "persona_ref": "meeting-organizer" }, { - "scenario": "As the system, I want zero intents when there are no stakeholders.", + "scenario": "As a system, I want zero intents when there are no stakeholders, so that empty recipient lists do not fabricate notifications.", "input_example": { "item": { "id": "ai-3", @@ -96,7 +96,7 @@ "persona_ref": "runtime-engineer" }, { - "scenario": "As WF4, I want status_changed notification intents for stakeholders.", + "scenario": "As a WF4 workflow author, I want status_changed notification intents for stakeholders, so that status flips can be announced consistently.", "input_example": { "item": { "id": "ai-1", @@ -138,7 +138,7 @@ "persona_ref": "collaboration-product-owner" }, { - "scenario": "As WF4, I want blocked notification intents for stakeholders.", + "scenario": "As a WF4 workflow author, I want blocked notification intents for stakeholders, so that blockers surface to the right people.", "input_example": { "item": { "id": "ai-1", @@ -356,7 +356,7 @@ "source": "ai-assisted", "author": "loop-founders + traverse-capability-author", "created_at": "2026-08-08T06:00:00Z", - "spec_ref": "core.notify-stakeholders@1.0.1", + "spec_ref": "core.notify-stakeholders@1.1.0", "adr_refs": [ "persona-council-review-2026-08-08" ], @@ -364,7 +364,7 @@ }, "evidence": [ { - "evidence_id": "core-notify-stakeholders-1.0.1-contract-validation", + "evidence_id": "core-notify-stakeholders-1.1.0-contract-validation", "type": "contract_validation", "status": "passed" } diff --git a/examples/core-notify-stakeholders/manifest.json b/examples/core-notify-stakeholders/manifest.json index 2c426859..1cf05f71 100644 --- a/examples/core-notify-stakeholders/manifest.json +++ b/examples/core-notify-stakeholders/manifest.json @@ -2,17 +2,17 @@ "kind": "capability_package", "schema_version": "1.0.0", "package_id": "core.notify-stakeholders-agent", - "version": "1.0.1", - "summary": "Capability package for core.notify-stakeholders@1.0.1.", + "version": "1.1.0", + "summary": "Capability package for core.notify-stakeholders@1.1.0.", "capability_ref": { "id": "core.notify-stakeholders", - "version": "1.0.1", + "version": "1.1.0", "contract_path": "./contract.json" }, "workflow_refs": [ { "workflow_id": "core.notify-stakeholders", - "workflow_version": "1.0.1" + "workflow_version": "1.1.0" } ], "source": { diff --git a/examples/core-notify-stakeholders/runtime-requests/uc01-completed.json b/examples/core-notify-stakeholders/runtime-requests/uc01-completed.json index 4f248b40..19c76f7f 100644 --- a/examples/core-notify-stakeholders/runtime-requests/uc01-completed.json +++ b/examples/core-notify-stakeholders/runtime-requests/uc01-completed.json @@ -4,7 +4,7 @@ "request_id": "core-notify-stakeholders-01", "intent": { "capability_id": "core.notify-stakeholders", - "capability_version": "1.0.1" + "capability_version": "1.1.0" }, "input": { "item": { diff --git a/examples/core-notify-stakeholders/runtime-requests/uc02-empty.json b/examples/core-notify-stakeholders/runtime-requests/uc02-empty.json index 4675ac36..7fd86a74 100644 --- a/examples/core-notify-stakeholders/runtime-requests/uc02-empty.json +++ b/examples/core-notify-stakeholders/runtime-requests/uc02-empty.json @@ -4,7 +4,7 @@ "request_id": "core-notify-stakeholders-02", "intent": { "capability_id": "core.notify-stakeholders", - "capability_version": "1.0.1" + "capability_version": "1.1.0" }, "input": { "item": { diff --git a/examples/core-notify-stakeholders/runtime-requests/uc03-status-changed.json b/examples/core-notify-stakeholders/runtime-requests/uc03-status-changed.json index 0bac6ea6..e9fd0a4a 100644 --- a/examples/core-notify-stakeholders/runtime-requests/uc03-status-changed.json +++ b/examples/core-notify-stakeholders/runtime-requests/uc03-status-changed.json @@ -4,7 +4,7 @@ "request_id": "core-notify-stakeholders-03", "intent": { "capability_id": "core.notify-stakeholders", - "capability_version": "1.0.1" + "capability_version": "1.1.0" }, "input": { "item": { diff --git a/examples/core-notify-stakeholders/runtime-requests/uc04-blocked.json b/examples/core-notify-stakeholders/runtime-requests/uc04-blocked.json index ae287608..3c2e6fc0 100644 --- a/examples/core-notify-stakeholders/runtime-requests/uc04-blocked.json +++ b/examples/core-notify-stakeholders/runtime-requests/uc04-blocked.json @@ -4,7 +4,7 @@ "request_id": "core-notify-stakeholders-04", "intent": { "capability_id": "core.notify-stakeholders", - "capability_version": "1.0.1" + "capability_version": "1.1.0" }, "input": { "item": { diff --git a/examples/core-notify-stakeholders/workflows/notify-stakeholders/workflow.json b/examples/core-notify-stakeholders/workflows/notify-stakeholders/workflow.json index 1f4395b0..e9ea0bbf 100644 --- a/examples/core-notify-stakeholders/workflows/notify-stakeholders/workflow.json +++ b/examples/core-notify-stakeholders/workflows/notify-stakeholders/workflow.json @@ -3,7 +3,7 @@ "schema_version": "1.0.0", "id": "core.notify-stakeholders", "name": "notify-stakeholders", - "version": "1.0.1", + "version": "1.1.0", "lifecycle": "active", "owner": { "team": "loop", @@ -26,7 +26,7 @@ { "node_id": "run", "capability_id": "core.notify-stakeholders", - "capability_version": "1.0.1", + "capability_version": "1.1.0", "input": { "from_workflow_input": [] }, diff --git a/examples/core-process-comment/contract.json b/examples/core-process-comment/contract.json index bc9cd590..2b1d8c36 100644 --- a/examples/core-process-comment/contract.json +++ b/examples/core-process-comment/contract.json @@ -4,14 +4,14 @@ "id": "core.process-comment", "namespace": "core", "name": "process-comment", - "version": "1.0.2", + "version": "1.1.0", "lifecycle": "active", "owner": { "team": "traverse-core", "contact": "capability-authors@traverse-framework.com" }, "summary": "Policy-driven comment processor for create/edit/reply/delete/react with mentions, quarantine, soft-delete, and tenant isolation.", - "description": "Policy-driven comment processor for create/edit/reply/delete/react with mentions, quarantine, soft-delete, and tenant isolation.\n\nImplemented and smoke-tested matrix (use_cases):\n- create with @mention and https link + notify obligations\n- edit denied when own_only and actor is not creator\n- reply denied when parent_depth+1 >= max_thread_depth\n- create allowed with quarantine when body matches moderation.blocklist\n- react add normalized to a reaction set\n- soft-delete retains body and records deleted_by\n- create denied on tenant mismatch\n- create/edit/reply denied for empty/whitespace body\n- body_too_long when body exceeds max_body_length\n- invalid_reaction when react lacks emoji\n- insufficient_role when actor role not permitted\n\nKnown limitations (intentional in 1.0.2):\n- resolve / unresolve / pin / unpin are not part of the schema surface\n- mention_resolution narrowed to strict; permissive/disabled removed\n- visibility_model narrowed to resource-acl|channel\n- reaction.op narrowed to add (remove not published)\n- invalid_action / invalid_parent / policy_error / not_authorized removed from published reason_code vocabulary\n- hard_delete_unsupported and invalid_input/invalid_actor fail-closed paths exist but are not published reason_codes\n- allowed_markups is accepted but body markup is not sanitized\n- The capability never persists data or sends notifications; callers must honor obligations", + "description": "Policy-driven comment processor for create/edit/reply/delete/react with mentions, quarantine, soft-delete, and tenant isolation.\n\nImplemented and smoke-tested matrix (use_cases):\n- create with @mention and https link + notify obligations\n- edit denied when own_only and actor is not creator\n- reply denied when parent_depth+1 >= max_thread_depth\n- create allowed with quarantine when body matches moderation.blocklist\n- react add normalized to a reaction set\n- soft-delete retains body and records deleted_by\n- create denied on tenant mismatch\n- create/edit/reply denied for empty/whitespace body\n- body_too_long when body exceeds max_body_length\n- invalid_reaction when react lacks emoji\n- insufficient_role when actor role not permitted\n\nKnown limitations (intentional in 1.1.0):\n- resolve / unresolve / pin / unpin are not part of the schema surface\n- mention_resolution narrowed to strict; permissive/disabled removed\n- visibility_model narrowed to resource-acl|channel\n- reaction.op narrowed to add (remove not published)\n- invalid_action / invalid_parent / policy_error / not_authorized removed from published reason_code vocabulary\n- hard_delete_unsupported and invalid_input/invalid_actor fail-closed paths exist but are not published reason_codes\n- allowed_markups is accepted but body markup is not sanitized\n- The capability never persists data or sends notifications; callers must honor obligations", "use_cases": [ { "scenario": "As a collaboration platform engineer, I want a user to create a top-level comment with mentions so that the system receives a fully validated, sanitized comment object ready for persistence and notification.", @@ -158,7 +158,7 @@ ], "evaluation_trace": [ "action=create", - "actor roles include member → create allowed", + "actor roles include member \u2192 create allowed", "body length 78 <= 10000", "extracted 2 mentions, both valid under strict resolution", "extracted 1 link", @@ -243,7 +243,7 @@ "evaluation_trace": [ "action=edit", "policy own_only=true", - "comment.created_by=user-42, actor.id=user-99 → mismatch", + "comment.created_by=user-42, actor.id=user-99 \u2192 mismatch", "deny" ], "policy_hash": "sha256:c0mm3nt-2026.08.1", @@ -316,8 +316,8 @@ ], "evaluation_trace": [ "action=reply", - "parent_depth=7 → proposed depth=8", - "max_thread_depth=8 → deny" + "parent_depth=7 \u2192 proposed depth=8", + "max_thread_depth=8 \u2192 deny" ], "policy_hash": "sha256:c0mm3nt-2026.08.1", "confidence": "high" @@ -381,7 +381,7 @@ }, "output_example": { "decision": "allow", - "reason": "Body matched moderation blocklist – allowed with quarantine obligation", + "reason": "Body matched moderation blocklist \u2013 allowed with quarantine obligation", "reason_code": "moderation_quarantine", "normalized_comment": { "id": null, @@ -603,7 +603,7 @@ "evaluation_trace": [ "action=delete", "soft_delete=true in policy", - "actor is creator → allow", + "actor is creator \u2192 allow", "body retained for audit" ], "policy_hash": "sha256:c0mm3nt-2026.08.1", @@ -676,7 +676,7 @@ ], "evaluation_trace": [ "enforce_tenant_isolation=true", - "actor.tenant_id=t-100, resource.tenant_id=t-200 → deny" + "actor.tenant_id=t-100, resource.tenant_id=t-200 \u2192 deny" ], "policy_hash": "sha256:c0mm3nt-2026.08.1", "confidence": "high" @@ -738,7 +738,7 @@ "obligations": [], "evaluation_trace": [ "action=create", - "body trimmed length = 0 → deny" + "body trimmed length = 0 \u2192 deny" ], "policy_hash": "sha256:c0mm3nt-2026.08.1", "confidence": "high" @@ -747,7 +747,7 @@ "persona_ref": "client-developer" }, { - "scenario": "As a client developer, I want a body exceeding max_body_length rejected with body_too_long.", + "scenario": "As a client developer, I want a body exceeding max_body_length rejected with body_too_long, so that oversized comments fail with a precise code.", "input_example": { "action": "create", "actor": { @@ -813,7 +813,7 @@ "persona_ref": "client-developer" }, { - "scenario": "As a client developer, I want a react without emoji rejected with invalid_reaction.", + "scenario": "As a client developer, I want a react without emoji rejected with invalid_reaction, so that malformed reactions never update the set.", "input_example": { "action": "react", "actor": { @@ -881,7 +881,7 @@ "persona_ref": "client-developer" }, { - "scenario": "As a security architect, I want create denied with insufficient_role when the actor role is not permitted.", + "scenario": "As a security architect, I want create denied with insufficient_role when the actor role is not permitted, so that role gates stay enforceable.", "input_example": { "action": "create", "actor": { @@ -1350,7 +1350,7 @@ }, "evidence": [ { - "evidence_id": "core-process-comment-1.0.2-contract-validation", + "evidence_id": "core-process-comment-1.1.0-contract-validation", "type": "contract_validation", "status": "passed" } diff --git a/examples/core-process-comment/manifest.json b/examples/core-process-comment/manifest.json index 571b3c49..d5781a53 100644 --- a/examples/core-process-comment/manifest.json +++ b/examples/core-process-comment/manifest.json @@ -2,17 +2,17 @@ "kind": "capability_package", "schema_version": "1.0.0", "package_id": "core.process-comment-agent", - "version": "1.0.2", - "summary": "Capability package for core.process-comment@1.0.2.", + "version": "1.1.0", + "summary": "Capability package for core.process-comment@1.1.0.", "capability_ref": { "id": "core.process-comment", - "version": "1.0.2", + "version": "1.1.0", "contract_path": "./contract.json" }, "workflow_refs": [ { "workflow_id": "core.process-comment", - "workflow_version": "1.0.2" + "workflow_version": "1.1.0" } ], "source": { diff --git a/examples/core-process-comment/runtime-requests/uc01-create-mentions-allow.json b/examples/core-process-comment/runtime-requests/uc01-create-mentions-allow.json index 65d6fe16..56d9ecef 100644 --- a/examples/core-process-comment/runtime-requests/uc01-create-mentions-allow.json +++ b/examples/core-process-comment/runtime-requests/uc01-create-mentions-allow.json @@ -4,7 +4,7 @@ "request_id": "core-process-comment-01", "intent": { "capability_id": "core.process-comment", - "capability_version": "1.0.2" + "capability_version": "1.1.0" }, "input": { "action": "create", diff --git a/examples/core-process-comment/runtime-requests/uc02-edit-not-owner-deny.json b/examples/core-process-comment/runtime-requests/uc02-edit-not-owner-deny.json index bd58d763..1af66e7b 100644 --- a/examples/core-process-comment/runtime-requests/uc02-edit-not-owner-deny.json +++ b/examples/core-process-comment/runtime-requests/uc02-edit-not-owner-deny.json @@ -4,7 +4,7 @@ "request_id": "core-process-comment-02", "intent": { "capability_id": "core.process-comment", - "capability_version": "1.0.2" + "capability_version": "1.1.0" }, "input": { "action": "edit", diff --git a/examples/core-process-comment/runtime-requests/uc03-reply-depth-deny.json b/examples/core-process-comment/runtime-requests/uc03-reply-depth-deny.json index b63677bf..4bd658b1 100644 --- a/examples/core-process-comment/runtime-requests/uc03-reply-depth-deny.json +++ b/examples/core-process-comment/runtime-requests/uc03-reply-depth-deny.json @@ -4,7 +4,7 @@ "request_id": "core-process-comment-03", "intent": { "capability_id": "core.process-comment", - "capability_version": "1.0.2" + "capability_version": "1.1.0" }, "input": { "action": "reply", diff --git a/examples/core-process-comment/runtime-requests/uc04-moderation-quarantine-allow.json b/examples/core-process-comment/runtime-requests/uc04-moderation-quarantine-allow.json index 1c4d4e67..0926a44e 100644 --- a/examples/core-process-comment/runtime-requests/uc04-moderation-quarantine-allow.json +++ b/examples/core-process-comment/runtime-requests/uc04-moderation-quarantine-allow.json @@ -4,7 +4,7 @@ "request_id": "core-process-comment-04", "intent": { "capability_id": "core.process-comment", - "capability_version": "1.0.2" + "capability_version": "1.1.0" }, "input": { "action": "create", diff --git a/examples/core-process-comment/runtime-requests/uc05-react-allow.json b/examples/core-process-comment/runtime-requests/uc05-react-allow.json index e8431bb8..7a5f3909 100644 --- a/examples/core-process-comment/runtime-requests/uc05-react-allow.json +++ b/examples/core-process-comment/runtime-requests/uc05-react-allow.json @@ -4,7 +4,7 @@ "request_id": "core-process-comment-05", "intent": { "capability_id": "core.process-comment", - "capability_version": "1.0.2" + "capability_version": "1.1.0" }, "input": { "action": "react", diff --git a/examples/core-process-comment/runtime-requests/uc06-soft-delete-allow.json b/examples/core-process-comment/runtime-requests/uc06-soft-delete-allow.json index 31617585..b0f50f5e 100644 --- a/examples/core-process-comment/runtime-requests/uc06-soft-delete-allow.json +++ b/examples/core-process-comment/runtime-requests/uc06-soft-delete-allow.json @@ -4,7 +4,7 @@ "request_id": "core-process-comment-06", "intent": { "capability_id": "core.process-comment", - "capability_version": "1.0.2" + "capability_version": "1.1.0" }, "input": { "action": "delete", diff --git a/examples/core-process-comment/runtime-requests/uc07-tenant-isolation-deny.json b/examples/core-process-comment/runtime-requests/uc07-tenant-isolation-deny.json index 7ca5e260..e56d25a6 100644 --- a/examples/core-process-comment/runtime-requests/uc07-tenant-isolation-deny.json +++ b/examples/core-process-comment/runtime-requests/uc07-tenant-isolation-deny.json @@ -4,7 +4,7 @@ "request_id": "core-process-comment-07", "intent": { "capability_id": "core.process-comment", - "capability_version": "1.0.2" + "capability_version": "1.1.0" }, "input": { "action": "create", diff --git a/examples/core-process-comment/runtime-requests/uc08-empty-body-deny.json b/examples/core-process-comment/runtime-requests/uc08-empty-body-deny.json index 464ad5f1..d0a59523 100644 --- a/examples/core-process-comment/runtime-requests/uc08-empty-body-deny.json +++ b/examples/core-process-comment/runtime-requests/uc08-empty-body-deny.json @@ -4,7 +4,7 @@ "request_id": "core-process-comment-08", "intent": { "capability_id": "core.process-comment", - "capability_version": "1.0.2" + "capability_version": "1.1.0" }, "input": { "action": "create", diff --git a/examples/core-process-comment/runtime-requests/uc09-body-too-long-deny.json b/examples/core-process-comment/runtime-requests/uc09-body-too-long-deny.json index 09a4799a..00f92734 100644 --- a/examples/core-process-comment/runtime-requests/uc09-body-too-long-deny.json +++ b/examples/core-process-comment/runtime-requests/uc09-body-too-long-deny.json @@ -4,7 +4,7 @@ "request_id": "core-process-comment-09", "intent": { "capability_id": "core.process-comment", - "capability_version": "1.0.2" + "capability_version": "1.1.0" }, "input": { "action": "create", diff --git a/examples/core-process-comment/runtime-requests/uc10-invalid-reaction-deny.json b/examples/core-process-comment/runtime-requests/uc10-invalid-reaction-deny.json index 7a758fca..38727eef 100644 --- a/examples/core-process-comment/runtime-requests/uc10-invalid-reaction-deny.json +++ b/examples/core-process-comment/runtime-requests/uc10-invalid-reaction-deny.json @@ -4,7 +4,7 @@ "request_id": "core-process-comment-10", "intent": { "capability_id": "core.process-comment", - "capability_version": "1.0.2" + "capability_version": "1.1.0" }, "input": { "action": "react", diff --git a/examples/core-process-comment/runtime-requests/uc11-insufficient-role-deny.json b/examples/core-process-comment/runtime-requests/uc11-insufficient-role-deny.json index 41a5e306..860ecabb 100644 --- a/examples/core-process-comment/runtime-requests/uc11-insufficient-role-deny.json +++ b/examples/core-process-comment/runtime-requests/uc11-insufficient-role-deny.json @@ -4,7 +4,7 @@ "request_id": "core-process-comment-11", "intent": { "capability_id": "core.process-comment", - "capability_version": "1.0.2" + "capability_version": "1.1.0" }, "input": { "action": "create", diff --git a/examples/core-process-comment/workflows/process-comment/workflow.json b/examples/core-process-comment/workflows/process-comment/workflow.json index fc5b2d0a..216af3d9 100644 --- a/examples/core-process-comment/workflows/process-comment/workflow.json +++ b/examples/core-process-comment/workflows/process-comment/workflow.json @@ -3,7 +3,7 @@ "schema_version": "1.0.0", "id": "core.process-comment", "name": "process-comment", - "version": "1.0.2", + "version": "1.1.0", "lifecycle": "active", "owner": { "team": "traverse-core", @@ -41,7 +41,7 @@ { "node_id": "process", "capability_id": "core.process-comment", - "capability_version": "1.0.2", + "capability_version": "1.1.0", "input": { "from_workflow_input": [ "action", diff --git a/examples/core-record-nudge-event/contract.json b/examples/core-record-nudge-event/contract.json index f2804e54..fdbcc291 100644 --- a/examples/core-record-nudge-event/contract.json +++ b/examples/core-record-nudge-event/contract.json @@ -4,17 +4,17 @@ "id": "core.record-nudge-event", "namespace": "core", "name": "record-nudge-event", - "version": "1.0.1", + "version": "1.1.0", "lifecycle": "active", "owner": { "team": "loop", "contact": "founders@loop.dev" }, "summary": "Constructs a pure audit/event payload for a nudge that was selected and messaged.", - "description": "Pure WF3 capability. Builds a deterministic nudge event record (event_id, ordinal, channel, intensity, preview) for downstream persistence.\n\nImplemented and smoke-tested matrix (use_cases):\n- soft intensity first nudge\n- escalate intensity with ordinal from prior count\n- direct intensity mid-sequence nudge\n- invalid_input when item_id is empty\n\nKnown limitations (intentional in 1.0.1):\n- reason_code invalid_intensity removed; intensity is a schema enum so host validation rejects unknown values before the guest runs\n- Event is constructed only; persistence is caller-owned", + "description": "Pure WF3 capability. Builds a deterministic nudge event record (event_id, ordinal, channel, intensity, preview) for downstream persistence.\n\nImplemented and smoke-tested matrix (use_cases):\n- soft intensity first nudge\n- escalate intensity with ordinal from prior count\n- direct intensity mid-sequence nudge\n- invalid_input when item_id is empty\n\nKnown limitations (intentional in 1.1.0):\n- reason_code invalid_intensity removed; intensity is a schema enum so host validation rejects unknown values before the guest runs\n- Event is constructed only; persistence is caller-owned", "use_cases": [ { - "scenario": "As the follow-up engine, I want an audit record after generating a soft nudge.", + "scenario": "As a follow-up engine, I want an audit record after generating a soft nudge, so that later escalations can see prior outreach.", "input_example": { "item_id": "ai-1", "owner_id": "user-ada", @@ -45,7 +45,7 @@ "persona_ref": "runtime-engineer" }, { - "scenario": "As the system, I want escalate intensity recorded with a higher ordinal.", + "scenario": "As a system, I want escalate intensity recorded with a higher ordinal, so that nudge history reflects increasing pressure.", "input_example": { "item_id": "ai-9", "owner_id": "user-bob", @@ -76,7 +76,7 @@ "persona_ref": "collaboration-product-owner" }, { - "scenario": "As WF3, I want a direct-intensity nudge event with ordinal prior+1.", + "scenario": "As a WF3 workflow author, I want a direct-intensity nudge event with ordinal prior+1, so that mid-sequence nudges stay ordered.", "input_example": { "item_id": "ai-2", "owner_id": "user-ada", @@ -107,7 +107,7 @@ "persona_ref": "runtime-engineer" }, { - "scenario": "As WF3, I want invalid_input when item_id is empty.", + "scenario": "As a WF3 workflow author, I want invalid_input when item_id is empty, so that orphan nudge events cannot be recorded.", "input_example": { "item_id": "", "owner_id": "user-ada", @@ -275,7 +275,7 @@ "source": "ai-assisted", "author": "loop-founders + traverse-capability-author", "created_at": "2026-08-08T06:00:00Z", - "spec_ref": "core.record-nudge-event@1.0.1", + "spec_ref": "core.record-nudge-event@1.1.0", "adr_refs": [ "persona-council-review-2026-08-08" ], @@ -283,7 +283,7 @@ }, "evidence": [ { - "evidence_id": "core-record-nudge-event-1.0.1-contract-validation", + "evidence_id": "core-record-nudge-event-1.1.0-contract-validation", "type": "contract_validation", "status": "passed" } diff --git a/examples/core-record-nudge-event/manifest.json b/examples/core-record-nudge-event/manifest.json index 5b3d58b6..7a971703 100644 --- a/examples/core-record-nudge-event/manifest.json +++ b/examples/core-record-nudge-event/manifest.json @@ -2,17 +2,17 @@ "kind": "capability_package", "schema_version": "1.0.0", "package_id": "core.record-nudge-event-agent", - "version": "1.0.1", - "summary": "Capability package for core.record-nudge-event@1.0.1.", + "version": "1.1.0", + "summary": "Capability package for core.record-nudge-event@1.1.0.", "capability_ref": { "id": "core.record-nudge-event", - "version": "1.0.1", + "version": "1.1.0", "contract_path": "./contract.json" }, "workflow_refs": [ { "workflow_id": "core.record-nudge-event", - "workflow_version": "1.0.1" + "workflow_version": "1.1.0" } ], "source": { diff --git a/examples/core-record-nudge-event/runtime-requests/uc01-soft.json b/examples/core-record-nudge-event/runtime-requests/uc01-soft.json index 8c5bbf39..67f3be65 100644 --- a/examples/core-record-nudge-event/runtime-requests/uc01-soft.json +++ b/examples/core-record-nudge-event/runtime-requests/uc01-soft.json @@ -4,7 +4,7 @@ "request_id": "core-record-nudge-event-01", "intent": { "capability_id": "core.record-nudge-event", - "capability_version": "1.0.1" + "capability_version": "1.1.0" }, "input": { "item_id": "ai-1", diff --git a/examples/core-record-nudge-event/runtime-requests/uc02-escalate.json b/examples/core-record-nudge-event/runtime-requests/uc02-escalate.json index 90ec5823..68267c8f 100644 --- a/examples/core-record-nudge-event/runtime-requests/uc02-escalate.json +++ b/examples/core-record-nudge-event/runtime-requests/uc02-escalate.json @@ -4,7 +4,7 @@ "request_id": "core-record-nudge-event-02", "intent": { "capability_id": "core.record-nudge-event", - "capability_version": "1.0.1" + "capability_version": "1.1.0" }, "input": { "item_id": "ai-9", diff --git a/examples/core-record-nudge-event/runtime-requests/uc03-direct.json b/examples/core-record-nudge-event/runtime-requests/uc03-direct.json index d6ae2b08..728f362f 100644 --- a/examples/core-record-nudge-event/runtime-requests/uc03-direct.json +++ b/examples/core-record-nudge-event/runtime-requests/uc03-direct.json @@ -4,7 +4,7 @@ "request_id": "core-record-nudge-event-03", "intent": { "capability_id": "core.record-nudge-event", - "capability_version": "1.0.1" + "capability_version": "1.1.0" }, "input": { "item_id": "ai-2", diff --git a/examples/core-record-nudge-event/runtime-requests/uc04-invalid-input.json b/examples/core-record-nudge-event/runtime-requests/uc04-invalid-input.json index 9981c159..66a4d739 100644 --- a/examples/core-record-nudge-event/runtime-requests/uc04-invalid-input.json +++ b/examples/core-record-nudge-event/runtime-requests/uc04-invalid-input.json @@ -4,7 +4,7 @@ "request_id": "core-record-nudge-event-04", "intent": { "capability_id": "core.record-nudge-event", - "capability_version": "1.0.1" + "capability_version": "1.1.0" }, "input": { "item_id": "", diff --git a/examples/core-record-nudge-event/workflows/record-nudge-event/workflow.json b/examples/core-record-nudge-event/workflows/record-nudge-event/workflow.json index 18e28aef..1159d0cb 100644 --- a/examples/core-record-nudge-event/workflows/record-nudge-event/workflow.json +++ b/examples/core-record-nudge-event/workflows/record-nudge-event/workflow.json @@ -3,7 +3,7 @@ "schema_version": "1.0.0", "id": "core.record-nudge-event", "name": "record-nudge-event", - "version": "1.0.1", + "version": "1.1.0", "lifecycle": "active", "owner": { "team": "loop", @@ -26,7 +26,7 @@ { "node_id": "run", "capability_id": "core.record-nudge-event", - "capability_version": "1.0.1", + "capability_version": "1.1.0", "input": { "from_workflow_input": [] }, diff --git a/examples/core-select-items-for-followup/contract.json b/examples/core-select-items-for-followup/contract.json index d90e0c73..2e160baa 100644 --- a/examples/core-select-items-for-followup/contract.json +++ b/examples/core-select-items-for-followup/contract.json @@ -4,17 +4,17 @@ "id": "core.select-items-for-followup", "namespace": "core", "name": "select-items-for-followup", - "version": "1.1.1", + "version": "1.2.0", "lifecycle": "active", "owner": { "team": "loop", "contact": "founders@loop.dev" }, "summary": "Decides which open action items need attention now. Council-revised with quiet hours, snooze support, per-user nudge budgets and higher escalation bar.", - "description": "Hero capability of Loop (council-revised). Key improvements from 1.0.0:\n- Respects per-user quiet hours and snooze until timestamps\n- Enforces max nudges per user per day\n- Escalation only after repeated ignored nudges + high pressure\n- Explicit skip reasons (quiet_hours, snoozed, budget_exceeded, recently_active, low_pressure)\n- Still pure and deterministic — no messages are sent, only the selection decision is produced.\n\nImplemented and smoke-tested matrix (use_cases):\n- quiet-hours skip\n- escalate selection for overdue high-pressure items\n- config_error when reference_datetime is empty\n\nKnown limitations (intentional in 1.1.1):\n- No message delivery; selection decision only", + "description": "Hero capability of Loop (council-revised). Key improvements from 1.0.0:\n- Respects per-user quiet hours and snooze until timestamps\n- Enforces max nudges per user per day\n- Escalation only after repeated ignored nudges + high pressure\n- Explicit skip reasons (quiet_hours, snoozed, budget_exceeded, recently_active, low_pressure)\n- Still pure and deterministic \u2014 no messages are sent, only the selection decision is produced.\n\nImplemented and smoke-tested matrix (use_cases):\n- quiet-hours skip\n- escalate selection for overdue high-pressure items\n- config_error when reference_datetime is empty\n\nKnown limitations (intentional in 1.2.0):\n- No message delivery; selection decision only", "use_cases": [ { - "scenario": "As the scheduled job, I want to respect quiet hours and snooze so that we never annoy people at the wrong time.", + "scenario": "As a scheduled job, I want to respect quiet hours and snooze so that we never annoy people at the wrong time.", "input_example": { "open_items": [ { @@ -68,7 +68,7 @@ "persona_ref": "runtime-engineer" }, { - "scenario": "As the system, I want escalation only after clear neglect signals.", + "scenario": "As a system, I want escalation only after clear neglect signals, so that owners are not escalated on the first soft reminder.", "input_example": { "open_items": [ { @@ -118,7 +118,7 @@ "persona_ref": "runtime-engineer" }, { - "scenario": "As the scheduled job, I want config_error when reference_datetime is empty so the run fails closed.", + "scenario": "As a scheduled job, I want config_error when reference_datetime is empty, so that the run fails closed instead of selecting blindly.", "input_example": { "open_items": [], "user_preferences": {}, @@ -314,7 +314,7 @@ "source": "ai-assisted", "author": "loop-founders + traverse-capability-author", "created_at": "2026-08-08T06:20:00Z", - "spec_ref": "core.select-items-for-followup@1.1.1", + "spec_ref": "core.select-items-for-followup@1.2.0", "adr_refs": [ "persona-council-review-2026-08-08" ], @@ -322,7 +322,7 @@ }, "evidence": [ { - "evidence_id": "core-select-items-for-followup-1.1.1-contract-validation", + "evidence_id": "core-select-items-for-followup-1.2.0-contract-validation", "type": "contract_validation", "status": "passed" } diff --git a/examples/core-select-items-for-followup/manifest.json b/examples/core-select-items-for-followup/manifest.json index d6786a73..554916e4 100644 --- a/examples/core-select-items-for-followup/manifest.json +++ b/examples/core-select-items-for-followup/manifest.json @@ -2,17 +2,17 @@ "kind": "capability_package", "schema_version": "1.0.0", "package_id": "core.select-items-for-followup-agent", - "version": "1.1.1", - "summary": "Capability package for core.select-items-for-followup@1.1.1.", + "version": "1.2.0", + "summary": "Capability package for core.select-items-for-followup@1.2.0.", "capability_ref": { "id": "core.select-items-for-followup", - "version": "1.1.1", + "version": "1.2.0", "contract_path": "./contract.json" }, "workflow_refs": [ { "workflow_id": "core.select-items-for-followup", - "workflow_version": "1.1.1" + "workflow_version": "1.2.0" } ], "source": { diff --git a/examples/core-select-items-for-followup/runtime-requests/uc01-quiet-hours.json b/examples/core-select-items-for-followup/runtime-requests/uc01-quiet-hours.json index 0fcc309b..600fea49 100644 --- a/examples/core-select-items-for-followup/runtime-requests/uc01-quiet-hours.json +++ b/examples/core-select-items-for-followup/runtime-requests/uc01-quiet-hours.json @@ -4,7 +4,7 @@ "request_id": "core-select-items-for-followup-01", "intent": { "capability_id": "core.select-items-for-followup", - "capability_version": "1.1.1" + "capability_version": "1.2.0" }, "input": { "open_items": [ diff --git a/examples/core-select-items-for-followup/runtime-requests/uc02-escalate.json b/examples/core-select-items-for-followup/runtime-requests/uc02-escalate.json index 10196b84..289ce4b4 100644 --- a/examples/core-select-items-for-followup/runtime-requests/uc02-escalate.json +++ b/examples/core-select-items-for-followup/runtime-requests/uc02-escalate.json @@ -4,7 +4,7 @@ "request_id": "core-select-items-for-followup-02", "intent": { "capability_id": "core.select-items-for-followup", - "capability_version": "1.1.1" + "capability_version": "1.2.0" }, "input": { "open_items": [ diff --git a/examples/core-select-items-for-followup/runtime-requests/uc03-config-error.json b/examples/core-select-items-for-followup/runtime-requests/uc03-config-error.json index d017dde3..a755ffca 100644 --- a/examples/core-select-items-for-followup/runtime-requests/uc03-config-error.json +++ b/examples/core-select-items-for-followup/runtime-requests/uc03-config-error.json @@ -4,7 +4,7 @@ "request_id": "core-select-items-for-followup-03", "intent": { "capability_id": "core.select-items-for-followup", - "capability_version": "1.1.1" + "capability_version": "1.2.0" }, "input": { "open_items": [], diff --git a/examples/core-select-items-for-followup/workflows/select-items-for-followup/workflow.json b/examples/core-select-items-for-followup/workflows/select-items-for-followup/workflow.json index d62c1530..d8a6013d 100644 --- a/examples/core-select-items-for-followup/workflows/select-items-for-followup/workflow.json +++ b/examples/core-select-items-for-followup/workflows/select-items-for-followup/workflow.json @@ -3,7 +3,7 @@ "schema_version": "1.0.0", "id": "core.select-items-for-followup", "name": "select-items-for-followup", - "version": "1.1.1", + "version": "1.2.0", "lifecycle": "active", "owner": { "team": "loop", @@ -36,7 +36,7 @@ { "node_id": "run", "capability_id": "core.select-items-for-followup", - "capability_version": "1.1.1", + "capability_version": "1.2.0", "input": { "from_workflow_input": [ "open_items", diff --git a/examples/core-transition-action-status/contract.json b/examples/core-transition-action-status/contract.json index 51fbd70e..7bcabeae 100644 --- a/examples/core-transition-action-status/contract.json +++ b/examples/core-transition-action-status/contract.json @@ -4,17 +4,17 @@ "id": "core.transition-action-status", "namespace": "core", "name": "transition-action-status", - "version": "1.0.1", + "version": "1.1.0", "lifecycle": "active", "owner": { "team": "loop", "contact": "founders@loop.dev" }, - "summary": "Deterministic state machine for action item status transitions (open → in_progress → blocked → snoozed → done / cancelled).", - "description": "Pure state-machine for action-item status transitions under a caller-supplied transition_config (allowed_transitions + owner_only).\n\nImplemented and smoke-tested matrix (use_cases):\n- open → in_progress (ok)\n- done → open illegal (illegal_transition)\n- open → snoozed (ok)\n- non-owner denied (not_owner)\n- in_progress → blocked (ok)\n- in_progress → done (ok)\n- blocked → in_progress (ok)\n- snoozed → open (ok)\n- open → cancelled (ok)\n- cancelled → open illegal (covers current_status=cancelled)\n- missing current_status → invalid_status\n\nKnown limitations (intentional in 1.0.1):\n- Transition graph is entirely caller-supplied; no built-in default policy\n- Does not persist status changes", + "summary": "Deterministic state machine for action item status transitions (open \u2192 in_progress \u2192 blocked \u2192 snoozed \u2192 done / cancelled).", + "description": "Pure state-machine for action-item status transitions under a caller-supplied transition_config (allowed_transitions + owner_only).\n\nImplemented and smoke-tested matrix (use_cases):\n- open \u2192 in_progress (ok)\n- done \u2192 open illegal (illegal_transition)\n- open \u2192 snoozed (ok)\n- non-owner denied (not_owner)\n- in_progress \u2192 blocked (ok)\n- in_progress \u2192 done (ok)\n- blocked \u2192 in_progress (ok)\n- snoozed \u2192 open (ok)\n- open \u2192 cancelled (ok)\n- cancelled \u2192 open illegal (covers current_status=cancelled)\n- missing current_status \u2192 invalid_status\n\nKnown limitations (intentional in 1.1.0):\n- Transition graph is entirely caller-supplied; no built-in default policy\n- Does not persist status changes", "use_cases": [ { - "scenario": "As an owner, I want to move an item from open to in_progress.", + "scenario": "As an owner, I want to move an item from open to in_progress, so that active work is reflected accurately.", "input_example": { "current_status": "open", "requested_status": "in_progress", @@ -54,7 +54,7 @@ "new_status": "in_progress", "reason_code": "ok", "evaluation_trace": [ - "open → in_progress is allowed", + "open \u2192 in_progress is allowed", "actor is owner" ] }, @@ -62,7 +62,7 @@ "persona_ref": "meeting-organizer" }, { - "scenario": "As the system, I want an illegal transition (done → open) rejected.", + "scenario": "As a system, I want an illegal transition (done \u2192 open) rejected, so that completed work cannot silently reopen.", "input_example": { "current_status": "done", "requested_status": "open", @@ -109,7 +109,7 @@ "persona_ref": "runtime-engineer" }, { - "scenario": "As an owner, I want to snooze an open item.", + "scenario": "As an owner, I want to snooze an open item, so that I can pause follow-up without losing the item.", "input_example": { "current_status": "open", "requested_status": "snoozed", @@ -149,7 +149,7 @@ "new_status": "snoozed", "reason_code": "ok", "evaluation_trace": [ - "open → snoozed is allowed", + "open \u2192 snoozed is allowed", "actor is owner" ] }, @@ -157,7 +157,7 @@ "persona_ref": "meeting-organizer" }, { - "scenario": "As the system, I want a non-owner blocked when owner_only is true.", + "scenario": "As a system, I want a non-owner blocked when owner_only is true, so that only the owner can change status.", "input_example": { "current_status": "open", "requested_status": "in_progress", @@ -204,7 +204,7 @@ "persona_ref": "runtime-engineer" }, { - "scenario": "As an owner, I want in_progress → blocked.", + "scenario": "As an owner, I want in_progress \u2192 blocked, so that blockers are an explicit status, not tribal knowledge.", "input_example": { "current_status": "in_progress", "requested_status": "blocked", @@ -244,14 +244,14 @@ "new_status": "blocked", "reason_code": "ok", "evaluation_trace": [ - "in_progress → blocked is allowed" + "in_progress \u2192 blocked is allowed" ] }, "happy": true, "persona_ref": "meeting-organizer" }, { - "scenario": "As an owner, I want in_progress → done.", + "scenario": "As an owner, I want in_progress \u2192 done, so that finished work can leave the active queue.", "input_example": { "current_status": "in_progress", "requested_status": "done", @@ -291,14 +291,14 @@ "new_status": "done", "reason_code": "ok", "evaluation_trace": [ - "in_progress → done is allowed" + "in_progress \u2192 done is allowed" ] }, "happy": true, "persona_ref": "meeting-organizer" }, { - "scenario": "As an owner, I want blocked → in_progress.", + "scenario": "As an owner, I want blocked \u2192 in_progress, so that cleared blockers resume cleanly.", "input_example": { "current_status": "blocked", "requested_status": "in_progress", @@ -338,14 +338,14 @@ "new_status": "in_progress", "reason_code": "ok", "evaluation_trace": [ - "blocked → in_progress is allowed" + "blocked \u2192 in_progress is allowed" ] }, "happy": true, "persona_ref": "meeting-organizer" }, { - "scenario": "As an owner, I want snoozed → open.", + "scenario": "As an owner, I want snoozed \u2192 open, so that snoozed items re-enter the follow-up pool.", "input_example": { "current_status": "snoozed", "requested_status": "open", @@ -385,14 +385,14 @@ "new_status": "open", "reason_code": "ok", "evaluation_trace": [ - "snoozed → open is allowed" + "snoozed \u2192 open is allowed" ] }, "happy": true, "persona_ref": "meeting-organizer" }, { - "scenario": "As an owner, I want open → cancelled.", + "scenario": "As an owner, I want open \u2192 cancelled, so that abandoned work can exit without fake completion.", "input_example": { "current_status": "open", "requested_status": "cancelled", @@ -432,14 +432,14 @@ "new_status": "cancelled", "reason_code": "ok", "evaluation_trace": [ - "open → cancelled is allowed" + "open \u2192 cancelled is allowed" ] }, "happy": true, "persona_ref": "meeting-organizer" }, { - "scenario": "As the system, I want cancelled items to reject further transitions.", + "scenario": "As a system, I want cancelled items to reject further transitions, so that cancelled work stays terminal.", "input_example": { "current_status": "cancelled", "requested_status": "open", @@ -486,7 +486,7 @@ "persona_ref": "runtime-engineer" }, { - "scenario": "As the system, I want missing current_status rejected with invalid_status.", + "scenario": "As a system, I want missing current_status rejected with invalid_status, so that incomplete transition requests fail closed.", "input_example": { "current_status": "", "requested_status": "open", @@ -680,7 +680,7 @@ "source": "ai-assisted", "author": "loop-founders + traverse-capability-author", "created_at": "2026-08-08T06:00:00Z", - "spec_ref": "core.transition-action-status@1.0.1", + "spec_ref": "core.transition-action-status@1.1.0", "adr_refs": [ "persona-council-review-2026-08-08" ], @@ -688,7 +688,7 @@ }, "evidence": [ { - "evidence_id": "core-transition-action-status-1.0.1-contract-validation", + "evidence_id": "core-transition-action-status-1.1.0-contract-validation", "type": "contract_validation", "status": "passed" } diff --git a/examples/core-transition-action-status/manifest.json b/examples/core-transition-action-status/manifest.json index 75c010da..3849fa60 100644 --- a/examples/core-transition-action-status/manifest.json +++ b/examples/core-transition-action-status/manifest.json @@ -2,17 +2,17 @@ "kind": "capability_package", "schema_version": "1.0.0", "package_id": "core.transition-action-status-agent", - "version": "1.0.1", - "summary": "Capability package for core.transition-action-status@1.0.1.", + "version": "1.1.0", + "summary": "Capability package for core.transition-action-status@1.1.0.", "capability_ref": { "id": "core.transition-action-status", - "version": "1.0.1", + "version": "1.1.0", "contract_path": "./contract.json" }, "workflow_refs": [ { "workflow_id": "core.transition-action-status", - "workflow_version": "1.0.1" + "workflow_version": "1.1.0" } ], "source": { diff --git a/examples/core-transition-action-status/runtime-requests/uc01-open-to-in-progress.json b/examples/core-transition-action-status/runtime-requests/uc01-open-to-in-progress.json index a09600e4..729db9a1 100644 --- a/examples/core-transition-action-status/runtime-requests/uc01-open-to-in-progress.json +++ b/examples/core-transition-action-status/runtime-requests/uc01-open-to-in-progress.json @@ -4,7 +4,7 @@ "request_id": "core-transition-action-status-01", "intent": { "capability_id": "core.transition-action-status", - "capability_version": "1.0.1" + "capability_version": "1.1.0" }, "input": { "current_status": "open", diff --git a/examples/core-transition-action-status/runtime-requests/uc02-done-to-open-illegal.json b/examples/core-transition-action-status/runtime-requests/uc02-done-to-open-illegal.json index 8a2bc83d..85036981 100644 --- a/examples/core-transition-action-status/runtime-requests/uc02-done-to-open-illegal.json +++ b/examples/core-transition-action-status/runtime-requests/uc02-done-to-open-illegal.json @@ -4,7 +4,7 @@ "request_id": "core-transition-action-status-02", "intent": { "capability_id": "core.transition-action-status", - "capability_version": "1.0.1" + "capability_version": "1.1.0" }, "input": { "current_status": "done", diff --git a/examples/core-transition-action-status/runtime-requests/uc03-open-to-snoozed.json b/examples/core-transition-action-status/runtime-requests/uc03-open-to-snoozed.json index 7557d042..e85cde5f 100644 --- a/examples/core-transition-action-status/runtime-requests/uc03-open-to-snoozed.json +++ b/examples/core-transition-action-status/runtime-requests/uc03-open-to-snoozed.json @@ -4,7 +4,7 @@ "request_id": "core-transition-action-status-03", "intent": { "capability_id": "core.transition-action-status", - "capability_version": "1.0.1" + "capability_version": "1.1.0" }, "input": { "current_status": "open", diff --git a/examples/core-transition-action-status/runtime-requests/uc04-non-owner-denied.json b/examples/core-transition-action-status/runtime-requests/uc04-non-owner-denied.json index 8cc26b80..5b8895fe 100644 --- a/examples/core-transition-action-status/runtime-requests/uc04-non-owner-denied.json +++ b/examples/core-transition-action-status/runtime-requests/uc04-non-owner-denied.json @@ -4,7 +4,7 @@ "request_id": "core-transition-action-status-04", "intent": { "capability_id": "core.transition-action-status", - "capability_version": "1.0.1" + "capability_version": "1.1.0" }, "input": { "current_status": "open", diff --git a/examples/core-transition-action-status/runtime-requests/uc05-in-progress-to-blocked.json b/examples/core-transition-action-status/runtime-requests/uc05-in-progress-to-blocked.json index b09bf98d..c9bb66be 100644 --- a/examples/core-transition-action-status/runtime-requests/uc05-in-progress-to-blocked.json +++ b/examples/core-transition-action-status/runtime-requests/uc05-in-progress-to-blocked.json @@ -4,7 +4,7 @@ "request_id": "core-transition-action-status-05", "intent": { "capability_id": "core.transition-action-status", - "capability_version": "1.0.1" + "capability_version": "1.1.0" }, "input": { "current_status": "in_progress", diff --git a/examples/core-transition-action-status/runtime-requests/uc06-in-progress-to-done.json b/examples/core-transition-action-status/runtime-requests/uc06-in-progress-to-done.json index 25acde83..bcb9363e 100644 --- a/examples/core-transition-action-status/runtime-requests/uc06-in-progress-to-done.json +++ b/examples/core-transition-action-status/runtime-requests/uc06-in-progress-to-done.json @@ -4,7 +4,7 @@ "request_id": "core-transition-action-status-06", "intent": { "capability_id": "core.transition-action-status", - "capability_version": "1.0.1" + "capability_version": "1.1.0" }, "input": { "current_status": "in_progress", diff --git a/examples/core-transition-action-status/runtime-requests/uc07-blocked-to-in-progress.json b/examples/core-transition-action-status/runtime-requests/uc07-blocked-to-in-progress.json index d5b2e879..e3da197f 100644 --- a/examples/core-transition-action-status/runtime-requests/uc07-blocked-to-in-progress.json +++ b/examples/core-transition-action-status/runtime-requests/uc07-blocked-to-in-progress.json @@ -4,7 +4,7 @@ "request_id": "core-transition-action-status-07", "intent": { "capability_id": "core.transition-action-status", - "capability_version": "1.0.1" + "capability_version": "1.1.0" }, "input": { "current_status": "blocked", diff --git a/examples/core-transition-action-status/runtime-requests/uc08-snoozed-to-open.json b/examples/core-transition-action-status/runtime-requests/uc08-snoozed-to-open.json index acdf8dc3..6b8251a7 100644 --- a/examples/core-transition-action-status/runtime-requests/uc08-snoozed-to-open.json +++ b/examples/core-transition-action-status/runtime-requests/uc08-snoozed-to-open.json @@ -4,7 +4,7 @@ "request_id": "core-transition-action-status-08", "intent": { "capability_id": "core.transition-action-status", - "capability_version": "1.0.1" + "capability_version": "1.1.0" }, "input": { "current_status": "snoozed", diff --git a/examples/core-transition-action-status/runtime-requests/uc09-open-to-cancelled.json b/examples/core-transition-action-status/runtime-requests/uc09-open-to-cancelled.json index 3e3d749b..72cebf7c 100644 --- a/examples/core-transition-action-status/runtime-requests/uc09-open-to-cancelled.json +++ b/examples/core-transition-action-status/runtime-requests/uc09-open-to-cancelled.json @@ -4,7 +4,7 @@ "request_id": "core-transition-action-status-09", "intent": { "capability_id": "core.transition-action-status", - "capability_version": "1.0.1" + "capability_version": "1.1.0" }, "input": { "current_status": "open", diff --git a/examples/core-transition-action-status/runtime-requests/uc10-cancelled-to-open-illegal.json b/examples/core-transition-action-status/runtime-requests/uc10-cancelled-to-open-illegal.json index 8a7e4837..1d41ea75 100644 --- a/examples/core-transition-action-status/runtime-requests/uc10-cancelled-to-open-illegal.json +++ b/examples/core-transition-action-status/runtime-requests/uc10-cancelled-to-open-illegal.json @@ -4,7 +4,7 @@ "request_id": "core-transition-action-status-10", "intent": { "capability_id": "core.transition-action-status", - "capability_version": "1.0.1" + "capability_version": "1.1.0" }, "input": { "current_status": "cancelled", diff --git a/examples/core-transition-action-status/runtime-requests/uc11-invalid-status.json b/examples/core-transition-action-status/runtime-requests/uc11-invalid-status.json index 1280471f..cd01b6a3 100644 --- a/examples/core-transition-action-status/runtime-requests/uc11-invalid-status.json +++ b/examples/core-transition-action-status/runtime-requests/uc11-invalid-status.json @@ -4,7 +4,7 @@ "request_id": "core-transition-action-status-11", "intent": { "capability_id": "core.transition-action-status", - "capability_version": "1.0.1" + "capability_version": "1.1.0" }, "input": { "current_status": "", diff --git a/examples/core-transition-action-status/workflows/transition-action-status/workflow.json b/examples/core-transition-action-status/workflows/transition-action-status/workflow.json index bd69b765..2e9cda39 100644 --- a/examples/core-transition-action-status/workflows/transition-action-status/workflow.json +++ b/examples/core-transition-action-status/workflows/transition-action-status/workflow.json @@ -3,7 +3,7 @@ "schema_version": "1.0.0", "id": "core.transition-action-status", "name": "transition-action-status", - "version": "1.0.1", + "version": "1.1.0", "lifecycle": "active", "owner": { "team": "loop", @@ -37,7 +37,7 @@ { "node_id": "transition", "capability_id": "core.transition-action-status", - "capability_version": "1.0.1", + "capability_version": "1.1.0", "input": { "from_workflow_input": [ "current_status", diff --git a/examples/core-validate-action-item/contract.json b/examples/core-validate-action-item/contract.json index b8615083..c1aabe52 100644 --- a/examples/core-validate-action-item/contract.json +++ b/examples/core-validate-action-item/contract.json @@ -4,17 +4,17 @@ "id": "core.validate-action-item", "namespace": "core", "name": "validate-action-item", - "version": "1.0.1", + "version": "1.1.0", "lifecycle": "active", "owner": { "team": "loop", "contact": "founders@loop.dev" }, "summary": "Validates a single action item for required fields, owner existence, due-date sanity and duplicate detection before it becomes a commitment.", - "description": "Gatekeeper for action-item commitments: title/owner/due-date rules and duplicate detection under validation_config. Pure and deterministic.\n\nImplemented and smoke-tested matrix (use_cases):\n- complete item validates (ok)\n- past due rejected when allow_past_due=false (validation_failed)\n- missing owner when require_owner=true (validation_failed)\n- duplicate title+owner (duplicate)\n- duplicate title-only check mode (duplicate)\n- invalid duplicate_check config (invalid_config)\n\nKnown limitations (intentional in 1.0.1):\n- Does not verify owner_id exists in a directory; only presence/absence\n- Date parsing is YYYY-MM-DD lexical compare only", + "description": "Gatekeeper for action-item commitments: title/owner/due-date rules and duplicate detection under validation_config. Pure and deterministic.\n\nImplemented and smoke-tested matrix (use_cases):\n- complete item validates (ok)\n- past due rejected when allow_past_due=false (validation_failed)\n- missing owner when require_owner=true (validation_failed)\n- duplicate title+owner (duplicate)\n- duplicate title-only check mode (duplicate)\n- invalid duplicate_check config (invalid_config)\n\nKnown limitations (intentional in 1.1.0):\n- Does not verify owner_id exists in a directory; only presence/absence\n- Date parsing is YYYY-MM-DD lexical compare only", "use_cases": [ { - "scenario": "As a meeting organizer confirming extracted items, I want a complete item to validate cleanly.", + "scenario": "As a meeting organizer confirming extracted items, I want a complete item to validate cleanly, so that good commitments can be committed without friction.", "input_example": { "action_item": { "title": "Send proposal", @@ -49,7 +49,7 @@ "persona_ref": "meeting-organizer" }, { - "scenario": "As the system, I want an item with a past due date rejected when allow_past_due is false.", + "scenario": "As a system, I want an item with a past due date rejected when allow_past_due is false, so that stale due dates cannot sneak through.", "input_example": { "action_item": { "title": "Old task", @@ -85,7 +85,7 @@ "persona_ref": "runtime-engineer" }, { - "scenario": "As the system, I want a missing owner rejected when require_owner is true.", + "scenario": "As a system, I want a missing owner rejected when require_owner is true, so that ownerless commitments never enter the board.", "input_example": { "action_item": { "title": "Draft agenda", @@ -120,7 +120,7 @@ "persona_ref": "runtime-engineer" }, { - "scenario": "As the system, I want a duplicate title+owner against open items rejected.", + "scenario": "As a system, I want a duplicate title+owner against open items rejected, so that the same commitment is not tracked twice.", "input_example": { "action_item": { "title": "Send proposal", @@ -162,7 +162,7 @@ "persona_ref": "runtime-engineer" }, { - "scenario": "As the system, I want duplicate_check=title to reject matching titles regardless of owner.", + "scenario": "As a system, I want duplicate_check=title to reject matching titles regardless of owner, so that title-only uniqueness can be enforced.", "input_example": { "action_item": { "title": "Send proposal", @@ -204,7 +204,7 @@ "persona_ref": "runtime-engineer" }, { - "scenario": "As the system, I want an unknown duplicate_check value rejected with invalid_config.", + "scenario": "As a system, I want an unknown duplicate_check value rejected with invalid_config, so that bad validation config fails closed.", "input_example": { "action_item": { "title": "Send proposal", @@ -420,7 +420,7 @@ "source": "ai-assisted", "author": "loop-founders + traverse-capability-author", "created_at": "2026-08-08T06:00:00Z", - "spec_ref": "core.validate-action-item@1.0.1", + "spec_ref": "core.validate-action-item@1.1.0", "adr_refs": [ "persona-council-review-2026-08-08" ], @@ -428,7 +428,7 @@ }, "evidence": [ { - "evidence_id": "core-validate-action-item-1.0.1-contract-validation", + "evidence_id": "core-validate-action-item-1.1.0-contract-validation", "type": "contract_validation", "status": "passed" } diff --git a/examples/core-validate-action-item/manifest.json b/examples/core-validate-action-item/manifest.json index f422bf08..6ec244f2 100644 --- a/examples/core-validate-action-item/manifest.json +++ b/examples/core-validate-action-item/manifest.json @@ -2,17 +2,17 @@ "kind": "capability_package", "schema_version": "1.0.0", "package_id": "core.validate-action-item-agent", - "version": "1.0.1", - "summary": "Capability package for core.validate-action-item@1.0.1.", + "version": "1.1.0", + "summary": "Capability package for core.validate-action-item@1.1.0.", "capability_ref": { "id": "core.validate-action-item", - "version": "1.0.1", + "version": "1.1.0", "contract_path": "./contract.json" }, "workflow_refs": [ { "workflow_id": "core.validate-action-item", - "workflow_version": "1.0.1" + "workflow_version": "1.1.0" } ], "source": { diff --git a/examples/core-validate-action-item/runtime-requests/uc01-valid-item.json b/examples/core-validate-action-item/runtime-requests/uc01-valid-item.json index e62759ff..89fbd6f3 100644 --- a/examples/core-validate-action-item/runtime-requests/uc01-valid-item.json +++ b/examples/core-validate-action-item/runtime-requests/uc01-valid-item.json @@ -4,7 +4,7 @@ "request_id": "core-validate-action-item-01", "intent": { "capability_id": "core.validate-action-item", - "capability_version": "1.0.1" + "capability_version": "1.1.0" }, "input": { "action_item": { diff --git a/examples/core-validate-action-item/runtime-requests/uc02-past-due.json b/examples/core-validate-action-item/runtime-requests/uc02-past-due.json index bde652c5..5836f591 100644 --- a/examples/core-validate-action-item/runtime-requests/uc02-past-due.json +++ b/examples/core-validate-action-item/runtime-requests/uc02-past-due.json @@ -4,7 +4,7 @@ "request_id": "core-validate-action-item-02", "intent": { "capability_id": "core.validate-action-item", - "capability_version": "1.0.1" + "capability_version": "1.1.0" }, "input": { "action_item": { diff --git a/examples/core-validate-action-item/runtime-requests/uc03-missing-owner.json b/examples/core-validate-action-item/runtime-requests/uc03-missing-owner.json index bec9fe89..e2a16d32 100644 --- a/examples/core-validate-action-item/runtime-requests/uc03-missing-owner.json +++ b/examples/core-validate-action-item/runtime-requests/uc03-missing-owner.json @@ -4,7 +4,7 @@ "request_id": "core-validate-action-item-03", "intent": { "capability_id": "core.validate-action-item", - "capability_version": "1.0.1" + "capability_version": "1.1.0" }, "input": { "action_item": { diff --git a/examples/core-validate-action-item/runtime-requests/uc04-duplicate.json b/examples/core-validate-action-item/runtime-requests/uc04-duplicate.json index 087b3822..581c0831 100644 --- a/examples/core-validate-action-item/runtime-requests/uc04-duplicate.json +++ b/examples/core-validate-action-item/runtime-requests/uc04-duplicate.json @@ -4,7 +4,7 @@ "request_id": "core-validate-action-item-04", "intent": { "capability_id": "core.validate-action-item", - "capability_version": "1.0.1" + "capability_version": "1.1.0" }, "input": { "action_item": { diff --git a/examples/core-validate-action-item/runtime-requests/uc05-duplicate-title-only.json b/examples/core-validate-action-item/runtime-requests/uc05-duplicate-title-only.json index 992eae0e..b2c93b0d 100644 --- a/examples/core-validate-action-item/runtime-requests/uc05-duplicate-title-only.json +++ b/examples/core-validate-action-item/runtime-requests/uc05-duplicate-title-only.json @@ -4,7 +4,7 @@ "request_id": "core-validate-action-item-05", "intent": { "capability_id": "core.validate-action-item", - "capability_version": "1.0.1" + "capability_version": "1.1.0" }, "input": { "action_item": { diff --git a/examples/core-validate-action-item/runtime-requests/uc06-invalid-config.json b/examples/core-validate-action-item/runtime-requests/uc06-invalid-config.json index 12eb823c..e1239ad3 100644 --- a/examples/core-validate-action-item/runtime-requests/uc06-invalid-config.json +++ b/examples/core-validate-action-item/runtime-requests/uc06-invalid-config.json @@ -4,7 +4,7 @@ "request_id": "core-validate-action-item-06", "intent": { "capability_id": "core.validate-action-item", - "capability_version": "1.0.1" + "capability_version": "1.1.0" }, "input": { "action_item": { diff --git a/examples/core-validate-action-item/workflows/validate-action-item/workflow.json b/examples/core-validate-action-item/workflows/validate-action-item/workflow.json index 2daba098..41bdbe6b 100644 --- a/examples/core-validate-action-item/workflows/validate-action-item/workflow.json +++ b/examples/core-validate-action-item/workflows/validate-action-item/workflow.json @@ -3,7 +3,7 @@ "schema_version": "1.0.0", "id": "core.validate-action-item", "name": "validate-action-item", - "version": "1.0.1", + "version": "1.1.0", "lifecycle": "active", "owner": { "team": "loop", @@ -35,7 +35,7 @@ { "node_id": "validate", "capability_id": "core.validate-action-item", - "capability_version": "1.0.1", + "capability_version": "1.1.0", "input": { "from_workflow_input": [ "action_item", diff --git a/scripts/ci/core_aggregate_team_action_health_example_smoke.sh b/scripts/ci/core_aggregate_team_action_health_example_smoke.sh index 6c3468ae..d5586033 100755 --- a/scripts/ci/core_aggregate_team_action_health_example_smoke.sh +++ b/scripts/ci/core_aggregate_team_action_health_example_smoke.sh @@ -28,7 +28,7 @@ echo "==> capability inspect" contract_out="$("${cli[@]}" capability inspect "$pkg/contract.json")" printf '%s\n' "$contract_out" require_match "$contract_out" "id: core.aggregate-team-action-health" "contract inspect id" -require_match "$contract_out" "version: 1.0.1" "contract inspect version" +require_match "$contract_out" "version: 1.1.0" "contract inspect version" echo "==> wasm abi verify" abi_out="$("${cli[@]}" wasm abi verify "$pkg/artifacts/core-aggregate-team-action-health.wasm")" @@ -39,7 +39,7 @@ echo "==> capability-package inspect" pkg_out="$("${cli[@]}" capability-package inspect "$pkg/manifest.json")" printf '%s\n' "$pkg_out" require_match "$pkg_out" "package_id: core.aggregate-team-action-health-agent" "package_id" -require_match "$pkg_out" "capability_version: 1.0.1" "capability_version" +require_match "$pkg_out" "capability_version: 1.1.0" "capability_version" assert_execute() { local request="$1" @@ -52,7 +52,7 @@ assert_execute() { out="$("${cli[@]}" capability-package execute "$pkg/manifest.json" "$request")" printf '%s\n' "$out" require_match "$out" "status: completed" "$label status" - require_match "$out" "capability_version: 1.0.1" "$label capability_version" + require_match "$out" "capability_version: 1.1.0" "$label capability_version" require_match "$out" "\"reason_code\": \"$code\"" "$label reason_code" while [[ $# -gt 0 ]]; do require_match "$out" "$1" "$label extra" @@ -70,4 +70,4 @@ assert_execute "$pkg/runtime-requests/uc01-team-pulse.json" "ok" "UC-01" \ '"ai-1"' assert_execute "$pkg/runtime-requests/uc02-invalid-input.json" "invalid_input" "UC-02" -echo "OK: core.aggregate-team-action-health 1.0.1 E2E smoke passed" +echo "OK: core.aggregate-team-action-health 1.1.0 E2E smoke passed" diff --git a/scripts/ci/core_assign_ownership_example_smoke.sh b/scripts/ci/core_assign_ownership_example_smoke.sh index d94ea6fc..4651cda5 100755 --- a/scripts/ci/core_assign_ownership_example_smoke.sh +++ b/scripts/ci/core_assign_ownership_example_smoke.sh @@ -1,5 +1,5 @@ #!/usr/bin/env bash -# End-to-end smoke for examples/core-assign-ownership (core.assign-ownership@1.0.1). +# End-to-end smoke for examples/core-assign-ownership (core.assign-ownership@1.1.0). set -euo pipefail @@ -28,7 +28,7 @@ echo "==> capability inspect" contract_out="$("${cli[@]}" capability inspect "$pkg/contract.json")" printf '%s\n' "$contract_out" require_match "$contract_out" "id: core.assign-ownership" "contract inspect id" -require_match "$contract_out" "version: 1.0.1" "contract inspect version" +require_match "$contract_out" "version: 1.1.0" "contract inspect version" echo "==> wasm abi verify" abi_out="$("${cli[@]}" wasm abi verify "$pkg/artifacts/core-assign-ownership.wasm")" @@ -39,7 +39,7 @@ echo "==> capability-package inspect" pkg_out="$("${cli[@]}" capability-package inspect "$pkg/manifest.json")" printf '%s\n' "$pkg_out" require_match "$pkg_out" "package_id: core.assign-ownership-agent" "package_id" -require_match "$pkg_out" "capability_version: 1.0.1" "capability_version" +require_match "$pkg_out" "capability_version: 1.1.0" "capability_version" assert_execute() { local request="$1" @@ -52,7 +52,7 @@ assert_execute() { out="$("${cli[@]}" capability-package execute "$pkg/manifest.json" "$request")" printf '%s\n' "$out" require_match "$out" "status: completed" "$label status" - require_match "$out" "capability_version: 1.0.1" "$label capability_version" + require_match "$out" "capability_version: 1.1.0" "$label capability_version" require_match "$out" "\"reason_code\": \"$code\"" "$label reason_code" if [[ -n "$extra" ]]; then require_match "$out" "$extra" "$label extra" @@ -67,4 +67,4 @@ assert_execute "$pkg/runtime-requests/uc05-inactive-member.json" "inactive_membe assert_execute "$pkg/runtime-requests/uc06-config-error.json" "config_error" "UC-06" assert_execute "$pkg/runtime-requests/uc07-fallback-unassigned.json" "ok" "UC-07" '"resolution_method": "fallback_unassigned"' -echo "OK: core.assign-ownership 1.0.1 E2E smoke passed" +echo "OK: core.assign-ownership 1.1.0 E2E smoke passed" diff --git a/scripts/ci/core_authorize_example_smoke.sh b/scripts/ci/core_authorize_example_smoke.sh index cf69efdd..931753bd 100755 --- a/scripts/ci/core_authorize_example_smoke.sh +++ b/scripts/ci/core_authorize_example_smoke.sh @@ -1,5 +1,5 @@ #!/usr/bin/env bash -# End-to-end smoke for examples/core-authorize (core.authorize@1.1.1). +# End-to-end smoke for examples/core-authorize (core.authorize@1.2.0). set -euo pipefail @@ -28,7 +28,7 @@ echo "==> capability inspect" contract_out="$("${cli[@]}" capability inspect "$pkg/contract.json")" printf '%s\n' "$contract_out" require_match "$contract_out" "id: core.authorize" "contract inspect id" -require_match "$contract_out" "version: 1.1.1" "contract inspect version" +require_match "$contract_out" "version: 1.2.0" "contract inspect version" echo "==> wasm abi verify" abi_out="$("${cli[@]}" wasm abi verify "$pkg/artifacts/core-authorize.wasm")" @@ -39,7 +39,7 @@ echo "==> capability-package inspect" pkg_out="$("${cli[@]}" capability-package inspect "$pkg/manifest.json")" printf '%s\n' "$pkg_out" require_match "$pkg_out" "package_id: core.authorize-agent" "package_id" -require_match "$pkg_out" "capability_version: 1.1.1" "capability_version" +require_match "$pkg_out" "capability_version: 1.2.0" "capability_version" assert_execute() { local request="$1" @@ -53,7 +53,7 @@ assert_execute() { out="$("${cli[@]}" capability-package execute "$pkg/manifest.json" "$request")" printf '%s\n' "$out" require_match "$out" "status: completed" "$label status" - require_match "$out" "capability_version: 1.1.1" "$label capability_version" + require_match "$out" "capability_version: 1.2.0" "$label capability_version" require_match "$out" "\"decision\": \"$decision\"" "$label decision" require_match "$out" "\"reason_code\": \"$code\"" "$label reason_code" if [[ -n "$extra" ]]; then @@ -73,4 +73,4 @@ assert_execute "$pkg/runtime-requests/uc09-invalid-principal-deny.json" "deny" " assert_execute "$pkg/runtime-requests/uc10-invalid-action-deny.json" "deny" "invalid_action" "UC-10" assert_execute "$pkg/runtime-requests/uc11-invalid-resource-deny.json" "deny" "invalid_resource" "UC-11" -echo "OK: core.authorize 1.1.1 E2E smoke passed" +echo "OK: core.authorize 1.2.0 E2E smoke passed" diff --git a/scripts/ci/core_calculate_deadline_pressure_example_smoke.sh b/scripts/ci/core_calculate_deadline_pressure_example_smoke.sh index 3b713e80..8ef82c89 100755 --- a/scripts/ci/core_calculate_deadline_pressure_example_smoke.sh +++ b/scripts/ci/core_calculate_deadline_pressure_example_smoke.sh @@ -38,4 +38,4 @@ assert_execute "$pkg/runtime-requests/uc02-overdue.json" "ok" "UC-02" \ assert_execute "$pkg/runtime-requests/uc03-missing-due-date.json" "missing_due_date" "UC-03" assert_execute "$pkg/runtime-requests/uc04-invalid-date.json" "invalid_date" "UC-04" assert_execute "$pkg/runtime-requests/uc05-config-error.json" "config_error" "UC-05" -echo "OK: core.calculate-deadline-pressure 1.0.1 E2E smoke passed" +echo "OK: core.calculate-deadline-pressure 1.1.0 E2E smoke passed" diff --git a/scripts/ci/core_calculate_price_example_smoke.sh b/scripts/ci/core_calculate_price_example_smoke.sh index 0ae61b93..a5737f50 100755 --- a/scripts/ci/core_calculate_price_example_smoke.sh +++ b/scripts/ci/core_calculate_price_example_smoke.sh @@ -10,14 +10,14 @@ echo "==> build-fixture"; bash "$pkg/build-fixture.sh" echo "==> capability inspect" out="$("${cli[@]}" capability inspect "$pkg/contract.json")"; printf '%s\n' "$out" require_match "$out" "id: core.calculate-price" "id" -require_match "$out" "version: 1.0.1" "version" +require_match "$out" "version: 1.1.0" "version" echo "==> wasm abi verify" out="$("${cli[@]}" wasm abi verify "$pkg/artifacts/core-calculate-price.wasm")"; printf '%s\n' "$out" require_match "$out" "import whitelist passed" "abi" echo "==> capability-package inspect" out="$("${cli[@]}" capability-package inspect "$pkg/manifest.json")"; printf '%s\n' "$out" require_match "$out" "package_id: core.calculate-price-agent" "package" -require_match "$out" "capability_version: 1.0.1" "capability_version" +require_match "$out" "capability_version: 1.1.0" "capability_version" assert_execute() { local request="$1" code="$2" label="$3"; shift 3 echo "==> execute $label" @@ -38,4 +38,4 @@ assert_execute "$pkg/runtime-requests/uc05-invalid-unit-price.json" "invalid_uni assert_execute "$pkg/runtime-requests/uc06-invalid-config.json" "invalid_config" "UC-06" assert_execute "$pkg/runtime-requests/uc07-currency-mismatch.json" "currency_mismatch" "UC-07" assert_execute "$pkg/runtime-requests/uc08-empty-cart.json" "empty_cart" "UC-08" -echo "OK: core.calculate-price 1.0.1 E2E smoke passed" +echo "OK: core.calculate-price 1.1.0 E2E smoke passed" diff --git a/scripts/ci/core_decide_escalation_example_smoke.sh b/scripts/ci/core_decide_escalation_example_smoke.sh index d070a3cf..8fbe69c6 100755 --- a/scripts/ci/core_decide_escalation_example_smoke.sh +++ b/scripts/ci/core_decide_escalation_example_smoke.sh @@ -36,4 +36,4 @@ assert_execute "$pkg/runtime-requests/uc02-escalate.json" "ok" "UC-02" \ 'ai-9' \ '"signals_met": 3' assert_execute "$pkg/runtime-requests/uc03-invalid-input.json" "invalid_input" "UC-03" -echo "OK: core.decide-escalation 1.0.1 E2E smoke passed" +echo "OK: core.decide-escalation 1.1.0 E2E smoke passed" diff --git a/scripts/ci/core_evaluate_completion_quality_example_smoke.sh b/scripts/ci/core_evaluate_completion_quality_example_smoke.sh index edf0ff6d..15ad2ae6 100755 --- a/scripts/ci/core_evaluate_completion_quality_example_smoke.sh +++ b/scripts/ci/core_evaluate_completion_quality_example_smoke.sh @@ -36,4 +36,4 @@ assert_execute "$pkg/runtime-requests/uc02-needs-evidence.json" "ok" "UC-02" \ 'missing_evidence' assert_execute "$pkg/runtime-requests/uc03-invalid-status.json" "invalid_status" "UC-03" assert_execute "$pkg/runtime-requests/uc04-invalid-input.json" "invalid_input" "UC-04" -echo "OK: core.evaluate-completion-quality 1.0.1 E2E smoke passed" +echo "OK: core.evaluate-completion-quality 1.1.0 E2E smoke passed" diff --git a/scripts/ci/core_extract_action_items_example_smoke.sh b/scripts/ci/core_extract_action_items_example_smoke.sh index c7a9596d..bd972b62 100755 --- a/scripts/ci/core_extract_action_items_example_smoke.sh +++ b/scripts/ci/core_extract_action_items_example_smoke.sh @@ -1,5 +1,5 @@ #!/usr/bin/env bash -# End-to-end smoke for examples/core-extract-action-items (core.extract-action-items@1.1.1). +# End-to-end smoke for examples/core-extract-action-items (core.extract-action-items@1.2.0). set -euo pipefail @@ -28,7 +28,7 @@ echo "==> capability inspect" contract_out="$("${cli[@]}" capability inspect "$pkg/contract.json")" printf '%s\n' "$contract_out" require_match "$contract_out" "id: core.extract-action-items" "contract inspect id" -require_match "$contract_out" "version: 1.1.1" "contract inspect version" +require_match "$contract_out" "version: 1.2.0" "contract inspect version" echo "==> wasm abi verify" abi_out="$("${cli[@]}" wasm abi verify "$pkg/artifacts/core-extract-action-items.wasm")" @@ -39,7 +39,7 @@ echo "==> capability-package inspect" pkg_out="$("${cli[@]}" capability-package inspect "$pkg/manifest.json")" printf '%s\n' "$pkg_out" require_match "$pkg_out" "package_id: core.extract-action-items-agent" "package_id" -require_match "$pkg_out" "capability_version: 1.1.1" "capability_version" +require_match "$pkg_out" "capability_version: 1.2.0" "capability_version" assert_execute() { local request="$1" @@ -52,7 +52,7 @@ assert_execute() { out="$("${cli[@]}" capability-package execute "$pkg/manifest.json" "$request")" printf '%s\n' "$out" require_match "$out" "status: completed" "$label status" - require_match "$out" "capability_version: 1.1.1" "$label capability_version" + require_match "$out" "capability_version: 1.2.0" "$label capability_version" require_match "$out" "\"reason_code\": \"$code\"" "$label reason_code" if [[ -n "$extra" ]]; then require_match "$out" "$extra" "$label extra" @@ -63,7 +63,7 @@ echo "==> execute UC-01" uc01_out="$("${cli[@]}" capability-package execute "$pkg/manifest.json" "$pkg/runtime-requests/uc01-extract-mixed.json")" printf '%s\n' "$uc01_out" require_match "$uc01_out" "status: completed" "UC-01 status" -require_match "$uc01_out" "capability_version: 1.1.1" "UC-01 capability_version" +require_match "$uc01_out" "capability_version: 1.2.0" "UC-01 capability_version" require_match "$uc01_out" "\"reason_code\": \"ok\"" "UC-01 reason_code" require_match "$uc01_out" '"title": "Send the revised proposal"' "UC-01 ada title" require_match "$uc01_out" '"suggested_owner": "Ada Lovelace"' "UC-01 ada owner" @@ -78,4 +78,4 @@ require_match "$uc01_out" '"confidence": 0.58' "UC-01 vague confidence" assert_execute "$pkg/runtime-requests/uc02-no-actions.json" "no_action_items_found" "UC-02" '"needs_human_review": \[\]' -echo "OK: core.extract-action-items 1.1.1 E2E smoke passed" +echo "OK: core.extract-action-items 1.2.0 E2E smoke passed" diff --git a/scripts/ci/core_generate_nudge_message_example_smoke.sh b/scripts/ci/core_generate_nudge_message_example_smoke.sh index 3eb46fec..995602c4 100755 --- a/scripts/ci/core_generate_nudge_message_example_smoke.sh +++ b/scripts/ci/core_generate_nudge_message_example_smoke.sh @@ -29,4 +29,4 @@ assert_execute "$pkg/runtime-requests/uc01-soft-friendly.json" "ok" "UC-01" 'Sen assert_execute "$pkg/runtime-requests/uc02-escalate.json" "ok" "UC-02" 'Escalation' assert_execute "$pkg/runtime-requests/uc03-direct-neutral.json" "ok" "UC-03" 'Please complete' assert_execute "$pkg/runtime-requests/uc04-config-error.json" "config_error" "UC-04" -echo "OK: core.generate-nudge-message 1.0.1 E2E smoke passed" +echo "OK: core.generate-nudge-message 1.1.0 E2E smoke passed" diff --git a/scripts/ci/core_normalize_participants_example_smoke.sh b/scripts/ci/core_normalize_participants_example_smoke.sh index fe3f6bea..ac3c4b1b 100755 --- a/scripts/ci/core_normalize_participants_example_smoke.sh +++ b/scripts/ci/core_normalize_participants_example_smoke.sh @@ -36,4 +36,4 @@ assert_execute "$pkg/runtime-requests/uc01-mixed-match.json" "ok" "UC-01" \ assert_execute "$pkg/runtime-requests/uc02-name-match.json" "ok" "UC-02" \ '"match_method": "name"' \ '"matched_count": 1' -echo "OK: core.normalize-participants 1.0.1 E2E smoke passed" +echo "OK: core.normalize-participants 1.1.0 E2E smoke passed" diff --git a/scripts/ci/core_notify_stakeholders_example_smoke.sh b/scripts/ci/core_notify_stakeholders_example_smoke.sh index d9afd434..22c8d813 100755 --- a/scripts/ci/core_notify_stakeholders_example_smoke.sh +++ b/scripts/ci/core_notify_stakeholders_example_smoke.sh @@ -36,4 +36,4 @@ assert_execute "$pkg/runtime-requests/uc02-empty.json" "nothing_to_notify" "UC-0 '"intent_count": 0' assert_execute "$pkg/runtime-requests/uc03-status-changed.json" "ok" "UC-03" 'Action updated' '"intent_count": 1' assert_execute "$pkg/runtime-requests/uc04-blocked.json" "ok" "UC-04" 'Action blocked' '"intent_count": 1' -echo "OK: core.notify-stakeholders 1.0.1 E2E smoke passed" +echo "OK: core.notify-stakeholders 1.1.0 E2E smoke passed" diff --git a/scripts/ci/core_process_comment_example_smoke.sh b/scripts/ci/core_process_comment_example_smoke.sh index 5097491c..ec81f97d 100755 --- a/scripts/ci/core_process_comment_example_smoke.sh +++ b/scripts/ci/core_process_comment_example_smoke.sh @@ -1,5 +1,5 @@ #!/usr/bin/env bash -# End-to-end smoke for examples/core-process-comment (core.process-comment@1.0.2). +# End-to-end smoke for examples/core-process-comment (core.process-comment@1.1.0). set -euo pipefail @@ -28,7 +28,7 @@ echo "==> capability inspect" contract_out="$("${cli[@]}" capability inspect "$pkg/contract.json")" printf '%s\n' "$contract_out" require_match "$contract_out" "id: core.process-comment" "contract inspect id" -require_match "$contract_out" "version: 1.0.2" "contract inspect version" +require_match "$contract_out" "version: 1.1.0" "contract inspect version" echo "==> wasm abi verify" abi_out="$("${cli[@]}" wasm abi verify "$pkg/artifacts/core-process-comment.wasm")" @@ -39,7 +39,7 @@ echo "==> capability-package inspect" pkg_out="$("${cli[@]}" capability-package inspect "$pkg/manifest.json")" printf '%s\n' "$pkg_out" require_match "$pkg_out" "package_id: core.process-comment-agent" "package_id" -require_match "$pkg_out" "capability_version: 1.0.2" "capability_version" +require_match "$pkg_out" "capability_version: 1.1.0" "capability_version" assert_execute() { local request="$1" @@ -53,7 +53,7 @@ assert_execute() { out="$("${cli[@]}" capability-package execute "$pkg/manifest.json" "$request")" printf '%s\n' "$out" require_match "$out" "status: completed" "$label status" - require_match "$out" "capability_version: 1.0.2" "$label capability_version" + require_match "$out" "capability_version: 1.1.0" "$label capability_version" require_match "$out" "\"decision\": \"$decision\"" "$label decision" require_match "$out" "\"reason_code\": \"$code\"" "$label reason_code" if [[ -n "$extra" ]]; then @@ -73,4 +73,4 @@ assert_execute "$pkg/runtime-requests/uc09-body-too-long-deny.json" "deny" "body assert_execute "$pkg/runtime-requests/uc10-invalid-reaction-deny.json" "deny" "invalid_reaction" "UC-10" assert_execute "$pkg/runtime-requests/uc11-insufficient-role-deny.json" "deny" "insufficient_role" "UC-11" -echo "OK: core.process-comment 1.0.2 E2E smoke passed" +echo "OK: core.process-comment 1.1.0 E2E smoke passed" diff --git a/scripts/ci/core_record_nudge_event_example_smoke.sh b/scripts/ci/core_record_nudge_event_example_smoke.sh index 973dfa47..843fe597 100755 --- a/scripts/ci/core_record_nudge_event_example_smoke.sh +++ b/scripts/ci/core_record_nudge_event_example_smoke.sh @@ -36,4 +36,4 @@ assert_execute "$pkg/runtime-requests/uc02-escalate.json" "ok" "UC-02" \ '"intensity": "escalate"' assert_execute "$pkg/runtime-requests/uc03-direct.json" "ok" "UC-03" '"intensity": "direct"' '"nudge_ordinal": 2' assert_execute "$pkg/runtime-requests/uc04-invalid-input.json" "invalid_input" "UC-04" -echo "OK: core.record-nudge-event 1.0.1 E2E smoke passed" +echo "OK: core.record-nudge-event 1.1.0 E2E smoke passed" diff --git a/scripts/ci/core_select_items_for_followup_example_smoke.sh b/scripts/ci/core_select_items_for_followup_example_smoke.sh index 0a7292cc..25d02fb4 100755 --- a/scripts/ci/core_select_items_for_followup_example_smoke.sh +++ b/scripts/ci/core_select_items_for_followup_example_smoke.sh @@ -28,7 +28,7 @@ echo "==> capability inspect" contract_out="$("${cli[@]}" capability inspect "$pkg/contract.json")" printf '%s\n' "$contract_out" require_match "$contract_out" "id: core.select-items-for-followup" "contract inspect id" -require_match "$contract_out" "version: 1.1.1" "contract inspect version" +require_match "$contract_out" "version: 1.2.0" "contract inspect version" echo "==> wasm abi verify" abi_out="$("${cli[@]}" wasm abi verify "$pkg/artifacts/core-select-items-for-followup.wasm")" @@ -39,7 +39,7 @@ echo "==> capability-package inspect" pkg_out="$("${cli[@]}" capability-package inspect "$pkg/manifest.json")" printf '%s\n' "$pkg_out" require_match "$pkg_out" "package_id: core.select-items-for-followup-agent" "package_id" -require_match "$pkg_out" "capability_version: 1.1.1" "capability_version" +require_match "$pkg_out" "capability_version: 1.2.0" "capability_version" assert_execute() { local request="$1" @@ -52,7 +52,7 @@ assert_execute() { out="$("${cli[@]}" capability-package execute "$pkg/manifest.json" "$request")" printf '%s\n' "$out" require_match "$out" "status: completed" "$label status" - require_match "$out" "capability_version: 1.1.1" "$label capability_version" + require_match "$out" "capability_version: 1.2.0" "$label capability_version" require_match "$out" "\"reason_code\": \"$code\"" "$label reason_code" if [[ -n "$extra" ]]; then require_match "$out" "$extra" "$label extra" @@ -65,4 +65,4 @@ assert_execute "$pkg/runtime-requests/uc02-escalate.json" "ok" "UC-02" '"intensi assert_execute "$pkg/runtime-requests/uc02-escalate.json" "ok" "UC-02 channel" '"recommended_channel": "manager"' assert_execute "$pkg/runtime-requests/uc03-config-error.json" "config_error" "UC-03" -echo "OK: core.select-items-for-followup 1.1.1 E2E smoke passed" +echo "OK: core.select-items-for-followup 1.2.0 E2E smoke passed" diff --git a/scripts/ci/core_transition_action_status_example_smoke.sh b/scripts/ci/core_transition_action_status_example_smoke.sh index f012bdab..9f2c8c9f 100755 --- a/scripts/ci/core_transition_action_status_example_smoke.sh +++ b/scripts/ci/core_transition_action_status_example_smoke.sh @@ -1,5 +1,5 @@ #!/usr/bin/env bash -# End-to-end smoke for examples/core-transition-action-status (core.transition-action-status@1.0.1). +# End-to-end smoke for examples/core-transition-action-status (core.transition-action-status@1.1.0). set -euo pipefail @@ -28,7 +28,7 @@ echo "==> capability inspect" contract_out="$("${cli[@]}" capability inspect "$pkg/contract.json")" printf '%s\n' "$contract_out" require_match "$contract_out" "id: core.transition-action-status" "contract inspect id" -require_match "$contract_out" "version: 1.0.1" "contract inspect version" +require_match "$contract_out" "version: 1.1.0" "contract inspect version" echo "==> wasm abi verify" abi_out="$("${cli[@]}" wasm abi verify "$pkg/artifacts/core-transition-action-status.wasm")" @@ -39,7 +39,7 @@ echo "==> capability-package inspect" pkg_out="$("${cli[@]}" capability-package inspect "$pkg/manifest.json")" printf '%s\n' "$pkg_out" require_match "$pkg_out" "package_id: core.transition-action-status-agent" "package_id" -require_match "$pkg_out" "capability_version: 1.0.1" "capability_version" +require_match "$pkg_out" "capability_version: 1.1.0" "capability_version" assert_execute() { local request="$1" @@ -53,7 +53,7 @@ assert_execute() { out="$("${cli[@]}" capability-package execute "$pkg/manifest.json" "$request")" printf '%s\n' "$out" require_match "$out" "status: completed" "$label status" - require_match "$out" "capability_version: 1.0.1" "$label capability_version" + require_match "$out" "capability_version: 1.1.0" "$label capability_version" require_match "$out" "\"allowed\": $allowed" "$label allowed" require_match "$out" "\"reason_code\": \"$code\"" "$label reason_code" if [[ -n "$extra" ]]; then @@ -73,4 +73,4 @@ assert_execute "$pkg/runtime-requests/uc09-open-to-cancelled.json" "true" "ok" " assert_execute "$pkg/runtime-requests/uc10-cancelled-to-open-illegal.json" "false" "illegal_transition" "UC-10" '"new_status": "cancelled"' assert_execute "$pkg/runtime-requests/uc11-invalid-status.json" "false" "invalid_status" "UC-11" -echo "OK: core.transition-action-status 1.0.1 E2E smoke passed" +echo "OK: core.transition-action-status 1.1.0 E2E smoke passed" diff --git a/scripts/ci/core_validate_action_item_example_smoke.sh b/scripts/ci/core_validate_action_item_example_smoke.sh index d7ac9d00..8c3595dd 100755 --- a/scripts/ci/core_validate_action_item_example_smoke.sh +++ b/scripts/ci/core_validate_action_item_example_smoke.sh @@ -1,5 +1,5 @@ #!/usr/bin/env bash -# End-to-end smoke for examples/core-validate-action-item (core.validate-action-item@1.0.1). +# End-to-end smoke for examples/core-validate-action-item (core.validate-action-item@1.1.0). set -euo pipefail @@ -28,7 +28,7 @@ echo "==> capability inspect" contract_out="$("${cli[@]}" capability inspect "$pkg/contract.json")" printf '%s\n' "$contract_out" require_match "$contract_out" "id: core.validate-action-item" "contract inspect id" -require_match "$contract_out" "version: 1.0.1" "contract inspect version" +require_match "$contract_out" "version: 1.1.0" "contract inspect version" echo "==> wasm abi verify" abi_out="$("${cli[@]}" wasm abi verify "$pkg/artifacts/core-validate-action-item.wasm")" @@ -39,7 +39,7 @@ echo "==> capability-package inspect" pkg_out="$("${cli[@]}" capability-package inspect "$pkg/manifest.json")" printf '%s\n' "$pkg_out" require_match "$pkg_out" "package_id: core.validate-action-item-agent" "package_id" -require_match "$pkg_out" "capability_version: 1.0.1" "capability_version" +require_match "$pkg_out" "capability_version: 1.1.0" "capability_version" assert_execute() { local request="$1" @@ -53,7 +53,7 @@ assert_execute() { out="$("${cli[@]}" capability-package execute "$pkg/manifest.json" "$request")" printf '%s\n' "$out" require_match "$out" "status: completed" "$label status" - require_match "$out" "capability_version: 1.0.1" "$label capability_version" + require_match "$out" "capability_version: 1.1.0" "$label capability_version" require_match "$out" "\"valid\": $valid" "$label valid" require_match "$out" "\"reason_code\": \"$code\"" "$label reason_code" if [[ -n "$extra" ]]; then @@ -68,4 +68,4 @@ assert_execute "$pkg/runtime-requests/uc04-duplicate.json" "false" "duplicate" " assert_execute "$pkg/runtime-requests/uc05-duplicate-title-only.json" "false" "duplicate" "UC-05" '"code": "duplicate"' assert_execute "$pkg/runtime-requests/uc06-invalid-config.json" "false" "invalid_config" "UC-06" -echo "OK: core.validate-action-item 1.0.1 E2E smoke passed" +echo "OK: core.validate-action-item 1.1.0 E2E smoke passed"