@aporthq/aport-agent-guardrails 1.0.16 → 1.0.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -145,6 +145,51 @@ Policy packs define the complete policy logic for one or more capabilities. They
145
145
  - `oap.unsigned_artifact` - Artifact signature required
146
146
  - `oap.limit_exceeded` - Daily release limit exceeded
147
147
 
148
+ ### deliverable.task.complete.v1
149
+
150
+ **Purpose**: Pre-action governance for an agent marking a task complete. Enforces required deliverable evidence — summary, acceptance criteria attestations, test status, reviewer identity — before done is authorized.
151
+
152
+ **Required Capability**: `deliverable.task.complete`
153
+
154
+ **Minimum Assurance**: L0
155
+
156
+ **Context Fields**:
157
+ - `task_id` (string): Unique identifier for the task
158
+ - `output_type` (string): "code" | "document" | "analysis" | "plan" | "data" | "other"
159
+ - `criteria_attestations` (array): One attestation per passport acceptance criterion, each with `criterion_id`, `met`, `evidence`
160
+ - `summary` (string, optional): Required if `require_summary` is true
161
+ - `tests_passing` (boolean, optional): Required if `require_tests_passing` is true
162
+ - `reviewer_agent_id` (string, optional): Required if `require_different_reviewer` is true
163
+ - `author_agent_id` (string, optional): Required when `require_different_reviewer` is true
164
+ - `output_content` (string, optional): Scanned for blocked patterns if `scan_output` is true
165
+
166
+ **Limits Structure**:
167
+ ```json
168
+ {
169
+ "deliverable.task.complete": {
170
+ "require_summary": true,
171
+ "min_summary_words": 20,
172
+ "require_tests_passing": false,
173
+ "require_different_reviewer": false,
174
+ "scan_output": false,
175
+ "blocked_patterns": ["TODO", "FIXME", "console.log"],
176
+ "acceptance_criteria": [
177
+ { "id": "output_produced", "description": "A concrete output artifact must be produced" },
178
+ { "id": "no_placeholders", "description": "Output must not contain TODO, FIXME, or placeholder text" }
179
+ ]
180
+ }
181
+ }
182
+ ```
183
+
184
+ **Deny Codes**:
185
+ - `oap.criteria_not_met` - An attestation has met: false
186
+ - `oap.evidence_missing` - An attestation has empty evidence
187
+ - `oap.criteria_incomplete` - Missing attestation for a passport criterion
188
+ - `oap.summary_insufficient` - Summary absent or below min_summary_words
189
+ - `oap.tests_not_passing` - tests_passing required but false or missing
190
+ - `oap.self_review_not_allowed` - Same agent for reviewer and author, or either missing
191
+ - `oap.blocked_pattern_detected` - Output contains a blocked pattern
192
+
148
193
  ## Custom Capabilities
149
194
 
150
195
  ### Definition Process
@@ -232,6 +232,13 @@ Keys are resolved using the following format:
232
232
  | `oap.passport_suspended` | Passport is suspended or revoked |
233
233
  | `oap.idempotency_conflict` | Idempotency key conflict |
234
234
  | `oap.policy_error` | Policy evaluation error |
235
+ | `oap.criteria_not_met` | An attestation has `met: false`; fix criterion and re-attest |
236
+ | `oap.evidence_missing` | An attestation has empty evidence; add concrete evidence string |
237
+ | `oap.criteria_incomplete` | Missing attestation for a passport criterion; submit attestation for every criterion_id |
238
+ | `oap.summary_insufficient` | Summary absent or below min_summary_words; write longer summary |
239
+ | `oap.tests_not_passing` | tests_passing required but false or missing; fix tests and resubmit |
240
+ | `oap.self_review_not_allowed` | reviewer_agent_id === author_agent_id or either missing; get different reviewer |
241
+ | `oap.blocked_pattern_detected` | output_content contains blocked pattern; remove flagged pattern |
235
242
 
236
243
  ## Versioning
237
244
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aporthq/aport-agent-guardrails",
3
- "version": "1.0.16",
3
+ "version": "1.0.17",
4
4
  "description": "Policy enforcement guardrails for OpenClaw-compatible agent frameworks",
5
5
  "workspaces": [
6
6
  "packages/*",