@cassiomc1/forgeloop 1.6.4 → 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENT_COMPATIBILITY.md +11 -0
- package/DOCS_INDEX.md +1 -0
- package/GUIDE_ROUTER.md +26 -1
- package/LOOP_ENGINEERING.md +48 -0
- package/ORCHESTRATOR_INTEGRATION.md +38 -0
- package/PROTOCOL_INTEGRATION.md +62 -0
- package/README.md +25 -0
- package/benchmarks/execution-profiles/README.md +44 -0
- package/benchmarks/execution-profiles/api-feature.json +18 -0
- package/benchmarks/execution-profiles/authentication-change.json +18 -0
- package/benchmarks/execution-profiles/documentation-correction.json +18 -0
- package/benchmarks/execution-profiles/infrastructure-release.json +18 -0
- package/benchmarks/execution-profiles/novatask-saas-landing-page.json +36 -0
- package/benchmarks/execution-profiles/small-bug-fix.json +18 -0
- package/benchmarks/execution-profiles/static-landing-page.json +18 -0
- package/completions/_forgeloop +6 -4
- package/completions/forgeloop.bash +8 -4
- package/completions/forgeloop.fish +24 -1
- package/docs/AGENT_PROTOCOL_SUMMARY.md +45 -1
- package/docs/ARTIFACT_REFERENCE.md +53 -7
- package/docs/CLI_REFERENCE.md +83 -1
- package/docs/EXECUTION_PROFILE_BENCHMARKS.md +208 -0
- package/docs/GETTING_STARTED.md +28 -0
- package/docs/MCP.md +6 -0
- package/docs/RELEASE_CHECKLIST.md +4 -0
- package/docs/TROUBLESHOOTING.md +6 -0
- package/docs/UNIVERSAL_INTEGRATION.md +58 -0
- package/package.json +14 -2
- package/schemas/config.schema.json +1 -0
- package/schemas/execution-profile-benchmark-aggregate.schema.json +43 -0
- package/schemas/execution-profile-benchmark-run.schema.json +106 -0
- package/schemas/execution-profile-benchmark-scenario.schema.json +66 -0
- package/schemas/routing-result.schema.json +12 -0
- package/schemas/usage.schema.json +30 -0
- package/scripts/check-efficiency-regression.mjs +99 -0
- package/scripts/generate-agent-protocol-summary.mjs +35 -0
- package/scripts/lib/execution-profile-benchmark-io.mjs +67 -0
- package/scripts/run-execution-profile-benchmarks.mjs +265 -0
- package/scripts/summarize-execution-profile-benchmarks.mjs +84 -0
- package/scripts/validate-execution-profile-benchmarks.mjs +120 -0
- package/src/cli.js +16 -4
- package/src/commands/efficiency.js +12 -0
- package/src/commands/eval.js +8 -2
- package/src/commands/metrics.js +2 -2
- package/src/commands/next.js +26 -2
- package/src/commands/route.js +20 -2
- package/src/commands/task-show.js +31 -2
- package/src/commands/usage-record.js +61 -0
- package/src/core/artifact-registry.js +12 -0
- package/src/core/cli-command-definitions.js +27 -0
- package/src/core/command-executors.js +29 -5
- package/src/core/command-input.js +34 -0
- package/src/core/config.js +9 -0
- package/src/core/efficiency.js +197 -0
- package/src/core/error-codes.js +18 -0
- package/src/core/execution-profile-benchmarks.js +674 -0
- package/src/core/execution-profile-context.js +177 -0
- package/src/core/execution-profile.js +248 -0
- package/src/core/integration-invocation-policy.js +43 -0
- package/src/core/integration-resources.js +22 -1
- package/src/core/protocol-info.js +42 -0
- package/src/core/resumability.js +27 -1
- package/src/core/router.js +23 -1
- package/src/core/runtime-context.js +11 -0
- package/src/core/schema-validation.js +4 -0
- package/src/core/task-paths.js +2 -0
- package/src/core/templates.js +4 -0
- package/src/core/trace.js +1 -0
- package/src/core/trajectory-evaluation.js +2 -2
- package/src/core/trajectory-metrics.js +18 -2
- package/src/core/usage.js +137 -0
- package/src/integration.d.ts +84 -0
- package/src/integration.js +14 -0
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Deprecated filename
|
|
2
|
+
|
|
3
|
+
> Deprecated since package `1.2.4`; retained as a repository compatibility stub.
|
|
4
|
+
> It is not part of the public integration surface and is scheduled for removal
|
|
5
|
+
> in the next compatibility-breaking release.
|
|
6
|
+
|
|
7
|
+
ForgeLoop is vendor-neutral and does not use a supported-agent allowlist.
|
|
8
|
+
|
|
9
|
+
The canonical integration contract is:
|
|
10
|
+
|
|
11
|
+
[`PROTOCOL_INTEGRATION.md`](./PROTOCOL_INTEGRATION.md)
|
package/DOCS_INDEX.md
CHANGED
|
@@ -30,6 +30,7 @@ integration and guide context. Use this map before editing documentation.
|
|
|
30
30
|
| Platform adapters | [`docs/PLATFORM_ADAPTERS.md`](./docs/PLATFORM_ADAPTERS.md) | Generic CI boundary and platform mapping guidance |
|
|
31
31
|
| Universal integration API | [`docs/UNIVERSAL_INTEGRATION.md`](./docs/UNIVERSAL_INTEGRATION.md) | Programmatic integration subpath, envelope semantics, and consumer map |
|
|
32
32
|
| Local-first MCP adapter | [`docs/MCP.md`](./docs/MCP.md) | stdio default, optional strict loopback HTTP; server modes/capabilities and canonical resources |
|
|
33
|
+
| Adaptive execution-profile benchmarks | [`docs/EXECUTION_PROFILE_BENCHMARKS.md`](./docs/EXECUTION_PROFILE_BENCHMARKS.md) | Measured provider/host runs, comparability, aggregates, and profile-aware host context |
|
|
33
34
|
| Documentation guide | [`docs/DOCUMENTATION_GUIDE.md`](./docs/DOCUMENTATION_GUIDE.md) | Rules and checklist for modifying documentation |
|
|
34
35
|
| Current release checklist | [`docs/RELEASE_CHECKLIST.md`](./docs/RELEASE_CHECKLIST.md) | Package, protocol, attestation, integration, and publication gates |
|
|
35
36
|
| ForgeLoop 1.6.1 release checklist (historical) | [`docs/RELEASE_CHECKLIST_1_6_1.md`](./docs/RELEASE_CHECKLIST_1_6_1.md) | Verification adapter boundary, isolation invariants, and publication gates |
|
package/GUIDE_ROUTER.md
CHANGED
|
@@ -237,7 +237,9 @@ The first routing contract is versioned as `schemaVersion: 1`. It accepts:
|
|
|
237
237
|
- `surfaces`: `ui`, `forms`, `api`, `auth`, `data`, `database`, `mobile`,
|
|
238
238
|
`desktop`, `game`, `video`, `ci`, `config`, `critical-path`, or `documentation`;
|
|
239
239
|
- `risks`: `untrusted-input`, `personal-data`, `secrets`, `external-service`,
|
|
240
|
-
`publication`, `critical-path`, `performance`,
|
|
240
|
+
`publication`, `critical-path`, `performance`, `accessibility`, `destructive`,
|
|
241
|
+
`irreversible`, `production-deployment`, `credentials`, `payment`, or
|
|
242
|
+
`migration`;
|
|
241
243
|
- `platforms`: `web`, `mobile`, `desktop`, `server`, `ci`, or
|
|
242
244
|
`cross-platform`;
|
|
243
245
|
- optional boolean `behaviorChange` and `executableChange` signals.
|
|
@@ -326,3 +328,26 @@ Verify Markdown, links, paths, commands, and examples.
|
|
|
326
328
|
If investigation reveals a new surface, update the guide set before editing that area. Record only the concise reason; do not create a versioned task log.
|
|
327
329
|
|
|
328
330
|
If an applicable guide is missing or inaccessible, use conservative defaults, do not invent its content, and disclose the limitation in the delivery.
|
|
331
|
+
|
|
332
|
+
## Execution profile routing
|
|
333
|
+
|
|
334
|
+
Guide selection and execution depth are separate deterministic decisions. The
|
|
335
|
+
persisted route also contains `executionProfile` with `requested`, `floor`,
|
|
336
|
+
`resolved`, `reasons`, and `escalated` fields. It is resolved from the same
|
|
337
|
+
declared route signals plus contract and task-scope metadata; no model
|
|
338
|
+
confidence, token estimate, or subjective complexity judgment is used.
|
|
339
|
+
|
|
340
|
+
The safety floor is `light` for narrow low-risk documentation, copy, and local
|
|
341
|
+
UI work; `balanced` for behavior or executable changes, ordinary application
|
|
342
|
+
engineering, data/configuration/CI surfaces, and moderate scope; and `full`
|
|
343
|
+
for authentication, critical paths, secrets, personal data, publication,
|
|
344
|
+
infrastructure, destructive or irreversible operations, and authority-sensitive
|
|
345
|
+
external mutations. A CLI request overrides project configuration only as a
|
|
346
|
+
request: it cannot lower the resolved safety floor.
|
|
347
|
+
|
|
348
|
+
Hosts should present `light` tasks with targeted guide sections, a compact
|
|
349
|
+
plan, focused checks, and bounded `next --compact` or `task-show --compact`
|
|
350
|
+
responses. Required gates, evidence, verification truth, lifecycle chronology,
|
|
351
|
+
and validator-backed completion remain unchanged. Historical protocol-v1
|
|
352
|
+
routes without the optional field remain valid and project to `balanced` for
|
|
353
|
+
compatibility without being rewritten.
|
package/LOOP_ENGINEERING.md
CHANGED
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
- [Project Discovery](#project-discovery)
|
|
20
20
|
- [Capability Discovery & Authority](#capability-discovery-and-on-demand-extensions)
|
|
21
21
|
- [Guide Selection](#guide-selection)
|
|
22
|
+
- [Adaptive Execution Profiles](#adaptive-execution-profiles)
|
|
22
23
|
- [Design & Implementation Gates](#design-and-implementation-gates)
|
|
23
24
|
- [Proportional Planning](#proportional-planning)
|
|
24
25
|
- [Execution Loop](#execution-loop)
|
|
@@ -69,6 +70,53 @@ If it discovered the ForgeLoop project adapter, evaluate capabilities:
|
|
|
69
70
|
Never downgrade ForgeLoop to optional guidance solely because the runtime
|
|
70
71
|
name is unknown.
|
|
71
72
|
|
|
73
|
+
## Adaptive execution profiles
|
|
74
|
+
|
|
75
|
+
ForgeLoop separates compliance policy from execution depth:
|
|
76
|
+
|
|
77
|
+
- `complianceMode` (`advisory`, `standard`, `strict`) controls how strongly
|
|
78
|
+
project policy is enforced.
|
|
79
|
+
- `executionProfile` (`auto`, `light`, `balanced`, `full`) controls how much
|
|
80
|
+
process and context depth is appropriate for the task.
|
|
81
|
+
|
|
82
|
+
The default request is `auto`. ForgeLoop resolves it deterministically from
|
|
83
|
+
route signals, the task contract, and task scope. A CLI request takes
|
|
84
|
+
precedence over project configuration, and project configuration takes
|
|
85
|
+
precedence over `auto`; the safety floor always wins. A low explicit request is
|
|
86
|
+
escalated with a structured reason rather than treated as an error.
|
|
87
|
+
|
|
88
|
+
`light` is intended for small, local, reversible, low-risk work. Hosts should
|
|
89
|
+
use the smallest sufficient discovery, compact plans, targeted guide sections,
|
|
90
|
+
focused verification, and `next --compact` or `task-show --compact`. It does
|
|
91
|
+
not remove contracts, routes, preflight, required gates, verification truth,
|
|
92
|
+
provenance, lifecycle phases, review, or validator-backed completion.
|
|
93
|
+
|
|
94
|
+
`balanced` remains the normal profile for behavior changes, ordinary bugs,
|
|
95
|
+
refactors, APIs, configuration, and moderate scope. `full` is required by
|
|
96
|
+
authentication, secrets, personal data, publication, infrastructure,
|
|
97
|
+
critical-path, destructive, irreversible, and authority-sensitive work.
|
|
98
|
+
|
|
99
|
+
Optional reflection, trajectory evaluation, handoff, responsibility,
|
|
100
|
+
attestation, benchmark, and continuity artifacts are lazy: they are created
|
|
101
|
+
only when required by policy, requested by the user or host, or needed for
|
|
102
|
+
recovery. The first profile release does not change lifecycle chronology or
|
|
103
|
+
introduce a fast path.
|
|
104
|
+
|
|
105
|
+
The profile-aware context projection is presentation guidance only. A host may
|
|
106
|
+
use `task/context` to select targeted, normal, or expanded context, but a
|
|
107
|
+
profile never authorizes skipping a lifecycle phase, required gate,
|
|
108
|
+
verification requirement, authority check, provenance binding, safety floor,
|
|
109
|
+
or validator-backed completion. A phase may be absent only when the canonical
|
|
110
|
+
protocol determines that it is not applicable; it may never be omitted because
|
|
111
|
+
the resolved profile is `light`.
|
|
112
|
+
|
|
113
|
+
Usage telemetry is a separate informational domain. Only a trusted provider or
|
|
114
|
+
host can report `PROVIDER_REPORTED` or `HOST_REPORTED`; the CLI fallback is
|
|
115
|
+
explicitly `ACTOR_REPORTED`; absent data is `UNKNOWN`. ForgeLoop never
|
|
116
|
+
estimates tokens, promotes actor data, or treats usage as verification
|
|
117
|
+
evidence. `efficiency --task` reports comparisons only for a metadata-compatible
|
|
118
|
+
project-local baseline.
|
|
119
|
+
|
|
72
120
|
### CLI-owned artifact policy
|
|
73
121
|
|
|
74
122
|
Lifecycle-owned ForgeLoop artifacts must be created or mutated only through
|
|
@@ -86,6 +86,44 @@ edited by hand.
|
|
|
86
86
|
|
|
87
87
|
<!-- END FORGELOOP GENERATED: work-transitions -->
|
|
88
88
|
|
|
89
|
+
## Profile-aware host behavior
|
|
90
|
+
|
|
91
|
+
The host may adapt context and presentation depth after reading the resolved
|
|
92
|
+
`executionProfile` from the persisted route or a compact task projection.
|
|
93
|
+
`light` uses targeted guide sections, a compact plan, focused checks, and
|
|
94
|
+
bounded lifecycle output; `balanced` keeps the normal relevant context; `full`
|
|
95
|
+
permits broader risk and dependency context. The host must not reinterpret the
|
|
96
|
+
profile or use it to skip lifecycle phases, required gates, verification
|
|
97
|
+
requirements, authority checks, provenance, or completion validation.
|
|
98
|
+
|
|
99
|
+
Hosts can consume the canonical `task/context` projection from the universal
|
|
100
|
+
integration API (or `forgeloop://task/{taskId}/context` through MCP). It
|
|
101
|
+
provides the objective, deliverables, constraints, selected guide IDs, next
|
|
102
|
+
action, verification requirements, and the profile-specific presentation
|
|
103
|
+
policy. A phase may be absent only when the canonical protocol says it is not
|
|
104
|
+
applicable; `light` is never a reason to omit it.
|
|
105
|
+
|
|
106
|
+
The profile changes context depth only. Required phases and gates, evidence and
|
|
107
|
+
verification truth, authority and provenance, the safety floor, and
|
|
108
|
+
validator-backed completion remain invariant.
|
|
109
|
+
|
|
110
|
+
The canonical integration capability is `executionProfileContext`, and the
|
|
111
|
+
host-facing `task/context` projection is the default input for profile-aware
|
|
112
|
+
presentation. A host that cannot read that resource falls back to balanced
|
|
113
|
+
compatibility behavior. It must consume `executionProfile.resolved`, preserve
|
|
114
|
+
the safety floor, and pass missing context or usage as unavailable rather than
|
|
115
|
+
estimating it.
|
|
116
|
+
|
|
117
|
+
The profile is orthogonal to `complianceMode`. CLI requests take precedence
|
|
118
|
+
over project configuration only as requests, while the deterministic safety
|
|
119
|
+
floor always wins. Historical routes without the optional profile field remain
|
|
120
|
+
readable and project to `balanced` compatibility behavior. The first release
|
|
121
|
+
does not add a lifecycle fast path.
|
|
122
|
+
|
|
123
|
+
Optional reflection, evaluation, handoff, responsibility, attestation,
|
|
124
|
+
benchmark, and continuity artifacts are lazy. Create them only when required
|
|
125
|
+
by policy, requested by the user or host, or needed for recovery.
|
|
126
|
+
|
|
89
127
|
The host may skip proportional phases, but it must preserve the state
|
|
90
128
|
invariants and record why a skipped phase was not applicable.
|
|
91
129
|
|
package/PROTOCOL_INTEGRATION.md
CHANGED
|
@@ -138,6 +138,68 @@ versions. A harness must not infer compatibility from the package version
|
|
|
138
138
|
alone, and it must fail closed when its required protocol or schema version is
|
|
139
139
|
absent from the relevant list.
|
|
140
140
|
|
|
141
|
+
## Adaptive execution profiles and context presentation
|
|
142
|
+
|
|
143
|
+
`complianceMode` and `executionProfile` are independent dimensions. Compliance
|
|
144
|
+
mode (`advisory`, `standard`, or `strict`) describes enforcement policy;
|
|
145
|
+
execution profile (`auto`, `light`, `balanced`, or `full`) describes process and
|
|
146
|
+
context depth. ForgeLoop resolves the profile deterministically from route,
|
|
147
|
+
contract, and task-scope metadata. CLI requests override project configuration
|
|
148
|
+
as requests, but never lower the safety floor.
|
|
149
|
+
|
|
150
|
+
Hosts may use the resolved profile to control presentation. For `light`, pass
|
|
151
|
+
the objective, deliverables, constraints, profile, selected guide IDs, phase,
|
|
152
|
+
next action, and verification requirements; reuse unchanged state locally and
|
|
153
|
+
avoid reinjecting complete ledgers, schemas, receipts, and protocol documents.
|
|
154
|
+
`next --compact` and `task-show --compact` provide bounded machine-readable
|
|
155
|
+
projections. These presentation choices never alter required gates, evidence,
|
|
156
|
+
verification truth, lifecycle chronology, authority, or validator-backed
|
|
157
|
+
completion. A protocol-v1 route without profile metadata remains readable and
|
|
158
|
+
projects to `balanced` compatibility behavior.
|
|
159
|
+
|
|
160
|
+
The integration API also exposes the read-only `task/context` projection. It
|
|
161
|
+
contains the resolved profile, objective, deliverables, constraints, selected
|
|
162
|
+
guide IDs, next action, verification requirements, and a bounded context
|
|
163
|
+
policy for hosts. A host may omit optional presentation context, but
|
|
164
|
+
`light` never authorizes a skipped lifecycle phase or required gate. A phase
|
|
165
|
+
may be absent only when the canonical protocol marks it not applicable.
|
|
166
|
+
|
|
167
|
+
The capability handshake names this contract as `executionProfileContext` and
|
|
168
|
+
marks `executionProfile.resolved` as authoritative. Historical consumers that
|
|
169
|
+
do not expose `task/context` must use balanced compatibility behavior rather
|
|
170
|
+
than inventing a local LIGHT heuristic. Optional benchmark context telemetry is
|
|
171
|
+
host-reported or `UNKNOWN`; ForgeLoop does not tokenize provider prompts.
|
|
172
|
+
|
|
173
|
+
The profile invariant block is explicit:
|
|
174
|
+
|
|
175
|
+
```text
|
|
176
|
+
execution depth changes presentation and optional context only.
|
|
177
|
+
required lifecycle phases remain unchanged.
|
|
178
|
+
required gates remain unchanged.
|
|
179
|
+
verification truth and evidence requirements remain unchanged.
|
|
180
|
+
authority, provenance, and safety-floor decisions remain unchanged.
|
|
181
|
+
validator-backed completion remains unchanged.
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
Optional observability is lazy. Reflection, trajectory evaluation, handoff,
|
|
185
|
+
responsibility, attestation, benchmark analysis, and continuity artifacts are
|
|
186
|
+
not required merely because the capability exists; policy, user/host request,
|
|
187
|
+
or recovery need must require them.
|
|
188
|
+
|
|
189
|
+
Usage telemetry is a separate informational boundary. A runtime may supply an
|
|
190
|
+
optional `ForgeLoopUsageProvider.getTaskUsage({ projectPath, taskId })`; the
|
|
191
|
+
provider must report only `PROVIDER_REPORTED` or `HOST_REPORTED`. The CLI
|
|
192
|
+
fallback records only `ACTOR_REPORTED`, and absent data is `UNKNOWN`. ForgeLoop
|
|
193
|
+
never estimates tokens or accepts usage as verification evidence. The
|
|
194
|
+
read-only `efficiency --task` command reports `NOT_COMPARABLE` until an
|
|
195
|
+
optional project-local baseline has matching metadata.
|
|
196
|
+
|
|
197
|
+
Execution-profile benchmark evidence is a separate observational boundary.
|
|
198
|
+
The reproducible runner compares direct, balanced, and adaptive modes only
|
|
199
|
+
when provider or host usage, actual timing, PASS verification, comparable
|
|
200
|
+
steps, and matching metadata are present. Missing or non-comparable values
|
|
201
|
+
remain `UNKNOWN`/`NOT_COMPARABLE`; no efficiency claim is inferred.
|
|
202
|
+
|
|
141
203
|
## CLI resolution policy
|
|
142
204
|
|
|
143
205
|
Lifecycle-owned protocol state must be managed through the project-local ForgeLoop CLI:
|
package/README.md
CHANGED
|
@@ -195,6 +195,31 @@ configuration under `.forgeloop/`, and stores task-scoped protocol artifacts
|
|
|
195
195
|
under `.forgeloop/task-state/<taskKey>/`.
|
|
196
196
|
`update` preserves target-specific profile facts and locally modified files.
|
|
197
197
|
|
|
198
|
+
ForgeLoop adapts protocol depth to task risk and scope, preserving verifiable
|
|
199
|
+
completion while avoiding unnecessary context overhead for small tasks. The
|
|
200
|
+
orthogonal `executionProfile` resolves to `light`, `balanced`, or `full`; it
|
|
201
|
+
never weakens compliance policy, required verification, provenance, or
|
|
202
|
+
validator-backed completion. Hosts can request bounded lifecycle context with
|
|
203
|
+
`forgeloop next --task <id> --compact --json` and
|
|
204
|
+
`forgeloop task-show --task <id> --compact --json`.
|
|
205
|
+
|
|
206
|
+
Usage telemetry is optional and never estimated. `usage-record` keeps CLI data
|
|
207
|
+
explicitly `ACTOR_REPORTED`; `efficiency --task` is read-only and compares only
|
|
208
|
+
when a local baseline is metadata-compatible.
|
|
209
|
+
|
|
210
|
+
Hosts can consume the read-only `task/context` integration resource for a
|
|
211
|
+
profile-aware objective, guide, next-action, and verification projection. The
|
|
212
|
+
profile changes presentation depth only; it never skips a required lifecycle
|
|
213
|
+
phase or gate. Measured profile comparisons use the reproducible commands in
|
|
214
|
+
[`docs/EXECUTION_PROFILE_BENCHMARKS.md`](./docs/EXECUTION_PROFILE_BENCHMARKS.md)
|
|
215
|
+
and do not claim efficiency when provider or host telemetry is unavailable or
|
|
216
|
+
non-comparable.
|
|
217
|
+
|
|
218
|
+
The integration capability handshake marks the resolved profile as
|
|
219
|
+
authoritative. Hosts without `task/context` use balanced compatibility behavior
|
|
220
|
+
and must not invent a local LIGHT heuristic. Optional context usage is
|
|
221
|
+
host-reported or `UNKNOWN`; values are never estimated.
|
|
222
|
+
|
|
198
223
|
Before npm publication, the same source checkout can be exercised without a
|
|
199
224
|
network or package lookup:
|
|
200
225
|
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# Adaptive execution-profile benchmark scenarios
|
|
2
|
+
|
|
3
|
+
These scenarios define the deterministic routing inputs used to compare direct
|
|
4
|
+
execution, the historical balanced workflow, and the adaptive ForgeLoop
|
|
5
|
+
workflow. They are scenario specifications, not provider measurements.
|
|
6
|
+
|
|
7
|
+
Record provider or host usage only when it is actually reported. Keep unknown
|
|
8
|
+
token, cache, cost, and timing values as `null`; ForgeLoop must not estimate
|
|
9
|
+
them. A comparison is valid only when task/scenario, model, provider, prompt or
|
|
10
|
+
spec fingerprint, project revision, benchmark version, and environment class
|
|
11
|
+
match.
|
|
12
|
+
|
|
13
|
+
The target profile is a guidance expectation. It does not change lifecycle
|
|
14
|
+
phases, required gates, verification truth, authority boundaries, or validated
|
|
15
|
+
completion.
|
|
16
|
+
|
|
17
|
+
The required reference set includes the six original scenarios and
|
|
18
|
+
`novatask-saas-landing-page.json`. NovaTask represents the original small SaaS
|
|
19
|
+
landing-page workload: HTML5, CSS3, vanilla JavaScript, local static files,
|
|
20
|
+
and no external services, auth, secrets, or publication. Its canonical
|
|
21
|
+
`executionProfile.resolved` value is `light`.
|
|
22
|
+
|
|
23
|
+
Record these dimensions independently when a real run is available: input and
|
|
24
|
+
output tokens, cache reads and writes, total tokens, wall-clock time,
|
|
25
|
+
verification status, verification cycles, comparable steps, visual quality,
|
|
26
|
+
responsive quality, accessibility basics, interaction polish, and requirement
|
|
27
|
+
completeness. Unavailable provider or reviewer measurements remain `null` or
|
|
28
|
+
`NOT_AVAILABLE`; they are never inferred.
|
|
29
|
+
|
|
30
|
+
Hosts may add optional `contextUsage` to a raw run with `HOST_REPORTED` values
|
|
31
|
+
for task context, guides, history, protocol instructions, repository context,
|
|
32
|
+
and other context. Use `UNKNOWN` with null items when unavailable. Complete
|
|
33
|
+
light-versus-balanced context observations may report `CONTEXT_INFLATION`; the
|
|
34
|
+
status is observational and never a lifecycle gate.
|
|
35
|
+
|
|
36
|
+
For UI scenarios, an independent evaluator or blind human review may also
|
|
37
|
+
report 0–5 scores for visual quality, responsive quality, accessibility,
|
|
38
|
+
interaction polish, and requirements completeness. Missing scores remain null;
|
|
39
|
+
implementer self-ratings are not an independent quality source.
|
|
40
|
+
|
|
41
|
+
Initial non-blocking efficiency goals for LIGHT scenarios are P50 token
|
|
42
|
+
overhead of at most +35% and P95 token overhead of at most +60% against a
|
|
43
|
+
comparable direct baseline. These are benchmark objectives, not completion
|
|
44
|
+
rules, and quality or verification coverage may not be traded for them.
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"benchmarkVersion": "1",
|
|
4
|
+
"scenarioId": "api-feature",
|
|
5
|
+
"description": "Ordinary API behavior change without authentication or publication authority.",
|
|
6
|
+
"input": {
|
|
7
|
+
"workType": "api",
|
|
8
|
+
"surfaces": ["api", "data"],
|
|
9
|
+
"risks": [],
|
|
10
|
+
"platforms": ["server"]
|
|
11
|
+
},
|
|
12
|
+
"expectedProfile": "balanced",
|
|
13
|
+
"measurements": {
|
|
14
|
+
"direct": { "inputTokens": null, "outputTokens": null, "cacheReadTokens": null, "cacheWriteTokens": null, "totalTokens": null, "wallClockMs": null, "verification": "NOT_AVAILABLE" },
|
|
15
|
+
"forgeloopBalanced": { "inputTokens": null, "outputTokens": null, "cacheReadTokens": null, "cacheWriteTokens": null, "totalTokens": null, "wallClockMs": null, "verification": "NOT_AVAILABLE" },
|
|
16
|
+
"forgeloopAdaptive": { "inputTokens": null, "outputTokens": null, "cacheReadTokens": null, "cacheWriteTokens": null, "totalTokens": null, "wallClockMs": null, "verification": "NOT_AVAILABLE" }
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"benchmarkVersion": "1",
|
|
4
|
+
"scenarioId": "authentication-change",
|
|
5
|
+
"description": "Authentication behavior change crossing a trust boundary.",
|
|
6
|
+
"input": {
|
|
7
|
+
"workType": "api-auth",
|
|
8
|
+
"surfaces": ["auth", "api"],
|
|
9
|
+
"risks": [],
|
|
10
|
+
"platforms": ["server"]
|
|
11
|
+
},
|
|
12
|
+
"expectedProfile": "full",
|
|
13
|
+
"measurements": {
|
|
14
|
+
"direct": { "inputTokens": null, "outputTokens": null, "cacheReadTokens": null, "cacheWriteTokens": null, "totalTokens": null, "wallClockMs": null, "verification": "NOT_AVAILABLE" },
|
|
15
|
+
"forgeloopBalanced": { "inputTokens": null, "outputTokens": null, "cacheReadTokens": null, "cacheWriteTokens": null, "totalTokens": null, "wallClockMs": null, "verification": "NOT_AVAILABLE" },
|
|
16
|
+
"forgeloopAdaptive": { "inputTokens": null, "outputTokens": null, "cacheReadTokens": null, "cacheWriteTokens": null, "totalTokens": null, "wallClockMs": null, "verification": "NOT_AVAILABLE" }
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"benchmarkVersion": "1",
|
|
4
|
+
"scenarioId": "documentation-correction",
|
|
5
|
+
"description": "Narrow documentation correction with no executable behavior or sensitive content.",
|
|
6
|
+
"input": {
|
|
7
|
+
"workType": "documentation",
|
|
8
|
+
"surfaces": [],
|
|
9
|
+
"risks": [],
|
|
10
|
+
"platforms": []
|
|
11
|
+
},
|
|
12
|
+
"expectedProfile": "light",
|
|
13
|
+
"measurements": {
|
|
14
|
+
"direct": { "inputTokens": null, "outputTokens": null, "cacheReadTokens": null, "cacheWriteTokens": null, "totalTokens": null, "wallClockMs": null, "verification": "NOT_AVAILABLE" },
|
|
15
|
+
"forgeloopBalanced": { "inputTokens": null, "outputTokens": null, "cacheReadTokens": null, "cacheWriteTokens": null, "totalTokens": null, "wallClockMs": null, "verification": "NOT_AVAILABLE" },
|
|
16
|
+
"forgeloopAdaptive": { "inputTokens": null, "outputTokens": null, "cacheReadTokens": null, "cacheWriteTokens": null, "totalTokens": null, "wallClockMs": null, "verification": "NOT_AVAILABLE" }
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"benchmarkVersion": "1",
|
|
4
|
+
"scenarioId": "infrastructure-release",
|
|
5
|
+
"description": "Infrastructure or release/publication work with external and potentially irreversible effects.",
|
|
6
|
+
"input": {
|
|
7
|
+
"workType": "release",
|
|
8
|
+
"surfaces": ["ci"],
|
|
9
|
+
"risks": ["publication"],
|
|
10
|
+
"platforms": ["ci"]
|
|
11
|
+
},
|
|
12
|
+
"expectedProfile": "full",
|
|
13
|
+
"measurements": {
|
|
14
|
+
"direct": { "inputTokens": null, "outputTokens": null, "cacheReadTokens": null, "cacheWriteTokens": null, "totalTokens": null, "wallClockMs": null, "verification": "NOT_AVAILABLE" },
|
|
15
|
+
"forgeloopBalanced": { "inputTokens": null, "outputTokens": null, "cacheReadTokens": null, "cacheWriteTokens": null, "totalTokens": null, "wallClockMs": null, "verification": "NOT_AVAILABLE" },
|
|
16
|
+
"forgeloopAdaptive": { "inputTokens": null, "outputTokens": null, "cacheReadTokens": null, "cacheWriteTokens": null, "totalTokens": null, "wallClockMs": null, "verification": "NOT_AVAILABLE" }
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"benchmarkVersion": "1",
|
|
4
|
+
"scenarioId": "novatask-saas-landing-page",
|
|
5
|
+
"description": "NovaTask reference workload: a local static SaaS landing page with no external or sensitive boundary.",
|
|
6
|
+
"input": {
|
|
7
|
+
"workType": "complete-website",
|
|
8
|
+
"surfaces": ["ui"],
|
|
9
|
+
"risks": [],
|
|
10
|
+
"platforms": ["web"],
|
|
11
|
+
"behaviorChange": false,
|
|
12
|
+
"executableChange": false
|
|
13
|
+
},
|
|
14
|
+
"expectedProfile": "light",
|
|
15
|
+
"referenceTask": {
|
|
16
|
+
"name": "NovaTask static SaaS landing page",
|
|
17
|
+
"requirements": [
|
|
18
|
+
"HTML5",
|
|
19
|
+
"CSS3",
|
|
20
|
+
"vanilla JavaScript",
|
|
21
|
+
"local static files"
|
|
22
|
+
],
|
|
23
|
+
"exclusions": [
|
|
24
|
+
"external services",
|
|
25
|
+
"authentication",
|
|
26
|
+
"secrets",
|
|
27
|
+
"publication"
|
|
28
|
+
],
|
|
29
|
+
"artifactMode": "local-static-files"
|
|
30
|
+
},
|
|
31
|
+
"measurements": {
|
|
32
|
+
"direct": { "inputTokens": null, "outputTokens": null, "cacheReadTokens": null, "cacheWriteTokens": null, "totalTokens": null, "wallClockMs": null, "verification": "NOT_AVAILABLE" },
|
|
33
|
+
"forgeloopBalanced": { "inputTokens": null, "outputTokens": null, "cacheReadTokens": null, "cacheWriteTokens": null, "totalTokens": null, "wallClockMs": null, "verification": "NOT_AVAILABLE" },
|
|
34
|
+
"forgeloopAdaptive": { "inputTokens": null, "outputTokens": null, "cacheReadTokens": null, "cacheWriteTokens": null, "totalTokens": null, "wallClockMs": null, "verification": "NOT_AVAILABLE" }
|
|
35
|
+
}
|
|
36
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"benchmarkVersion": "1",
|
|
4
|
+
"scenarioId": "small-bug-fix",
|
|
5
|
+
"description": "Small application bug fix with behavior implications and focused regression checks.",
|
|
6
|
+
"input": {
|
|
7
|
+
"workType": "bug",
|
|
8
|
+
"surfaces": [],
|
|
9
|
+
"risks": [],
|
|
10
|
+
"platforms": []
|
|
11
|
+
},
|
|
12
|
+
"expectedProfile": "balanced",
|
|
13
|
+
"measurements": {
|
|
14
|
+
"direct": { "inputTokens": null, "outputTokens": null, "cacheReadTokens": null, "cacheWriteTokens": null, "totalTokens": null, "wallClockMs": null, "verification": "NOT_AVAILABLE" },
|
|
15
|
+
"forgeloopBalanced": { "inputTokens": null, "outputTokens": null, "cacheReadTokens": null, "cacheWriteTokens": null, "totalTokens": null, "wallClockMs": null, "verification": "NOT_AVAILABLE" },
|
|
16
|
+
"forgeloopAdaptive": { "inputTokens": null, "outputTokens": null, "cacheReadTokens": null, "cacheWriteTokens": null, "totalTokens": null, "wallClockMs": null, "verification": "NOT_AVAILABLE" }
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"benchmarkVersion": "1",
|
|
4
|
+
"scenarioId": "static-landing-page",
|
|
5
|
+
"description": "Small local HTML, CSS, and JavaScript landing page without external services or sensitive boundaries.",
|
|
6
|
+
"input": {
|
|
7
|
+
"workType": "complete-website",
|
|
8
|
+
"surfaces": ["ui"],
|
|
9
|
+
"risks": [],
|
|
10
|
+
"platforms": ["web"]
|
|
11
|
+
},
|
|
12
|
+
"expectedProfile": "light",
|
|
13
|
+
"measurements": {
|
|
14
|
+
"direct": { "inputTokens": null, "outputTokens": null, "cacheReadTokens": null, "cacheWriteTokens": null, "totalTokens": null, "wallClockMs": null, "verification": "NOT_AVAILABLE" },
|
|
15
|
+
"forgeloopBalanced": { "inputTokens": null, "outputTokens": null, "cacheReadTokens": null, "cacheWriteTokens": null, "totalTokens": null, "wallClockMs": null, "verification": "NOT_AVAILABLE" },
|
|
16
|
+
"forgeloopAdaptive": { "inputTokens": null, "outputTokens": null, "cacheReadTokens": null, "cacheWriteTokens": null, "totalTokens": null, "wallClockMs": null, "verification": "NOT_AVAILABLE" }
|
|
17
|
+
}
|
|
18
|
+
}
|
package/completions/_forgeloop
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#compdef forgeloop
|
|
2
2
|
# Generated by scripts/generate-shell-completions.mjs. Do not edit.
|
|
3
3
|
_arguments \
|
|
4
|
-
'1:command:(action-authorize action-propose action-reconcile action-record action-show action-verify activate advance approval-request approval-resolve attestation-create attestation-status attestation-verify attestation-verify-range audit baseline bundle clear-continuity clear-state complete continuity doctor eval handoff-create handoff-list handoff-show history init inspect metrics migrate-protocol next policy policy-diff policy-discover policy-status preflight prepare-completion profile-interview progress protocol-info reconcile-closure reconcile-continuity record-check record-continuity record-decision-criterion record-diagnosis record-hypothesis-disposition record-intervention record-terminal-result reflect report responsibility-set responsibility-status route rule-verify run-action run-check status task-create task-list task-lock-status task-migrate task-recover task-repair-legacy-recovery task-resume task-scope task-show task-unlock trace update validate-protocol validate-receipt validate-state verify-scope workspace-bind workspace-status)' \
|
|
4
|
+
'1:command:(action-authorize action-propose action-reconcile action-record action-show action-verify activate advance approval-request approval-resolve attestation-create attestation-status attestation-verify attestation-verify-range audit baseline bundle clear-continuity clear-state complete continuity doctor efficiency eval handoff-create handoff-list handoff-show history init inspect metrics migrate-protocol next policy policy-diff policy-discover policy-status preflight prepare-completion profile-interview progress protocol-info reconcile-closure reconcile-continuity record-check record-continuity record-decision-criterion record-diagnosis record-hypothesis-disposition record-intervention record-terminal-result reflect report responsibility-set responsibility-status route rule-verify run-action run-check status task-create task-list task-lock-status task-migrate task-recover task-repair-legacy-recovery task-resume task-scope task-show task-unlock trace update usage-record validate-protocol validate-receipt validate-state verify-scope workspace-bind workspace-status)' \
|
|
5
5
|
'*::options:->options'
|
|
6
6
|
case $words[2] in
|
|
7
7
|
action-authorize) _arguments '--action[durable action ID]' '--approval[current fingerprint-bound approval]' '--help[show this help]' '--json[emit structured output as JSON]' '--path[target project directory (default: current directory)]' '--task[task ID to operate on (when omitted, resolved from context or single active task)]' '--version[show the installed package version]' ;;
|
|
@@ -26,6 +26,7 @@ case $words[2] in
|
|
|
26
26
|
complete) _arguments '--help[show this help]' '--json[emit structured output as JSON]' '--path[target project directory (default: current directory)]' '--strict[require strict protocol compliance]' '--task[task ID to operate on (when omitted, resolved from context or single active task)]' '--version[show the installed package version]' ;;
|
|
27
27
|
continuity) _arguments '--help[show this help]' '--json[emit structured output as JSON]' '--path[target project directory (default: current directory)]' '--task[task ID to operate on (when omitted, resolved from context or single active task)]' '--version[show the installed package version]' ;;
|
|
28
28
|
doctor) _arguments '--adopt[preserve an existing adapter in the manifest]' '--fix[restore missing managed template files]' '--help[show this help]' '--json[emit doctor findings as JSON]' '--path[target project directory (default: current directory)]' '--strict[treat warnings as unhealthy]' '--version[show the installed package version]' ;;
|
|
29
|
+
efficiency) _arguments '--baseline[optional comparable efficiency baseline JSON]' '--help[show this help]' '--json[emit efficiency metrics as JSON]' '--path[target project directory (default: current directory)]' '--task[task ID to operate on (when omitted, resolved from context or single active task)]' '--version[show the installed package version]' ;;
|
|
29
30
|
eval) _arguments '--help[show this help]' '--json[emit evaluation as JSON]' '--path[target project directory (default: current directory)]' '--scenario[project-local trajectory scenario JSON]' '--task[task ID to operate on (when omitted, resolved from context or single active task)]' '--version[show the installed package version]' ;;
|
|
30
31
|
handoff-create) _arguments '--help[show this help]' '--json[emit handoff as JSON]' '--note[non-authoritative handoff note]' '--path[target project directory (default: current directory)]' '--recipient[non-authoritative recipient hint]' '--task[task ID to operate on (when omitted, resolved from context or single active task)]' '--version[show the installed package version]' ;;
|
|
31
32
|
handoff-list) _arguments '--help[show this help]' '--json[emit handoff list as JSON]' '--path[target project directory (default: current directory)]' '--task[task ID to operate on (when omitted, resolved from context or single active task)]' '--version[show the installed package version]' ;;
|
|
@@ -35,7 +36,7 @@ case $words[2] in
|
|
|
35
36
|
inspect) _arguments '--contract-file[current JSON contract used for freshness comparison]' '--help[show this help]' '--json[emit structured output as JSON]' '--path[target project directory (default: current directory)]' '--task[task ID to operate on (when omitted, resolved from context or single active task)]' '--version[show the installed package version]' ;;
|
|
36
37
|
metrics) _arguments '--help[show this help]' '--json[emit trajectory metrics as JSON]' '--path[target project directory (default: current directory)]' '--task[task ID to operate on (when omitted, resolved from context or single active task)]' '--version[show the installed package version]' ;;
|
|
37
38
|
migrate-protocol) _arguments '--dry-run[show migration actions without writing or deleting artifacts]' '--help[show this help]' '--json[emit structured migration result as JSON]' '--path[target project directory (default: current directory)]' '--to[target supported protocol version]' '--version[show the installed package version]' ;;
|
|
38
|
-
next) _arguments '--help[show this help]' '--json[emit structured output as JSON]' '--path[target project directory (default: current directory)]' '--task[task ID to operate on (when omitted, resolved from context or single active task)]' '--version[show the installed package version]' ;;
|
|
39
|
+
next) _arguments '--compact[emit a bounded next-action projection]' '--help[show this help]' '--json[emit structured output as JSON]' '--path[target project directory (default: current directory)]' '--task[task ID to operate on (when omitted, resolved from context or single active task)]' '--version[show the installed package version]' ;;
|
|
39
40
|
policy) _arguments '--help[show this help]' '--json[emit structured output as JSON]' '--path[target project directory (default: current directory)]' '--task[task ID to operate on (when omitted, resolved from context or single active task)]' '--version[show the installed package version]' ;;
|
|
40
41
|
policy-diff) _arguments '--after[path to after policy JSON]' '--before[path to before policy JSON]' '--help[show this help]' '--json[emit structured output as JSON]' '--path[target project directory (default: current directory)]' '--task[task ID to operate on (when omitted, resolved from context or single active task)]' '--version[show the installed package version]' ;;
|
|
41
42
|
policy-discover) _arguments '--help[show this help]' '--json[emit structured output as JSON]' '--path[target project directory (default: current directory)]' '--version[show the installed package version]' '--write[persist discovered policy to .forgeloop/policy/discovery.json]' ;;
|
|
@@ -58,7 +59,7 @@ case $words[2] in
|
|
|
58
59
|
report) _arguments '--help[show this help]' '--json[emit structured output as JSON]' '--path[target project directory (default: current directory)]' '--strict[require strict protocol compliance]' '--task[task ID to operate on (when omitted, resolved from context or single active task)]' '--version[show the installed package version]' ;;
|
|
59
60
|
responsibility-set) _arguments '--allowed-path[path prefix allowed during this pass]' '--freeze-claims[freeze the current effective claims fingerprint]' '--freeze-contract[freeze the current contract fingerprint]' '--freeze-route[freeze the current route fingerprint]' '--help[show this help]' '--json[emit responsibility result as JSON]' '--label[descriptive pass label; not an identity or role]' '--path[target project directory (default: current directory)]' '--read-only-path[path prefix that must not change during this pass]' '--required-check[current-cycle check required by this pass]' '--task[task ID to operate on (when omitted, resolved from context or single active task)]' '--version[show the installed package version]' ;;
|
|
60
61
|
responsibility-status) _arguments '--help[show this help]' '--json[emit responsibility status as JSON]' '--path[target project directory (default: current directory)]' '--task[task ID to operate on (when omitted, resolved from context or single active task)]' '--version[show the installed package version]' ;;
|
|
61
|
-
route) _arguments '--behavior-change[declare behavior change]' '--executable-change[declare executable/configuration change]' '--help[show this help]' '--json[emit route result as JSON]' '--path[target project directory (default: current directory)]' '--platform[affected platform]' '--risk[task risk]' '--surface[affected surface]' '--task[task ID to operate on (when omitted, resolved from context or single active task)]' '--version[show the installed package version]' '--work[declared work type]' ;;
|
|
62
|
+
route) _arguments '--behavior-change[declare behavior change]' '--executable-change[declare executable/configuration change]' '--execution-profile[requested execution profile; safety floors always win]' '--help[show this help]' '--json[emit route result as JSON]' '--path[target project directory (default: current directory)]' '--platform[affected platform]' '--risk[task risk]' '--surface[affected surface]' '--task[task ID to operate on (when omitted, resolved from context or single active task)]' '--version[show the installed package version]' '--work[declared work type]' ;;
|
|
62
63
|
rule-verify) _arguments '--help[show this help]' '--json[emit structured output as JSON]' '--path[target project directory (default: current directory)]' '--rule[verify a specific policy rule ID]' '--version[show the installed package version]' ;;
|
|
63
64
|
run-action) _arguments '--[exact command argv; shell mode is never used]' '--action[stable durable action ID]' '--approval[current fingerprint-bound approval]' '--capability[canonical action capability]' '--effect-class[durable action effect class]' '--help[show this help]' '--idempotency-key[immutable logical action idempotency key]' '--json[emit structured output as JSON]' '--path[target project directory (default: current directory)]' '--required-for-completion[mark the action as required for completion]' '--requirement[bound completion requirement]' '--target[bounded external action target]' '--task[task ID to operate on (when omitted, resolved from context or single active task)]' '--timeout-ms[maximum command duration before termination]' '--version[show the installed package version]' ;;
|
|
64
65
|
run-check) _arguments '--[exact command argv to classify, execute, and attest]' '--details[additional structured check details]' '--help[show this help]' '--id[stable check identifier]' '--json[emit structured output as JSON]' '--path[target project directory (default: current directory)]' '--requirement[completion requirement covered by the check]' '--scope-ref[current verification-scope.json to bind to execution evidence]' '--task[task ID to operate on (when omitted, resolved from context or single active task)]' '--timeout-ms[maximum command duration before termination]' '--version[show the installed package version]' ;;
|
|
@@ -71,10 +72,11 @@ case $words[2] in
|
|
|
71
72
|
task-repair-legacy-recovery) _arguments '--acknowledge-recovery[fresh explicit acknowledgement of the legacy boundary migration (required)]' '--help[show this help]' '--json[emit structured output as JSON]' '--path[target project directory (default: current directory)]' '--task[task ID to operate on (when omitted, resolved from context or single active task)]' '--version[show the installed package version]' ;;
|
|
72
73
|
task-resume) _arguments '--claim[write claim to reacquire (defaults to all released claims)]' '--help[show this help]' '--json[emit structured output as JSON]' '--path[target project directory (default: current directory)]' '--task[task ID to operate on (when omitted, resolved from context or single active task)]' '--version[show the installed package version]' ;;
|
|
73
74
|
task-scope) _arguments '--claim[scoped file path or directory prefix claimed for mutation]' '--help[show this help]' '--json[emit structured output as JSON]' '--path[target project directory (default: current directory)]' '--task[task ID to operate on (when omitted, resolved from context or single active task)]' '--version[show the installed package version]' ;;
|
|
74
|
-
task-show) _arguments '--help[show this help]' '--json[emit structured output as JSON]' '--path[target project directory (default: current directory)]' '--task[task ID to operate on (when omitted, resolved from context or single active task)]' '--version[show the installed package version]' ;;
|
|
75
|
+
task-show) _arguments '--compact[emit a bounded task-status projection]' '--help[show this help]' '--json[emit structured output as JSON]' '--path[target project directory (default: current directory)]' '--task[task ID to operate on (when omitted, resolved from context or single active task)]' '--version[show the installed package version]' ;;
|
|
75
76
|
task-unlock) _arguments '--force[force release of an orphaned task lock]' '--help[show this help]' '--json[emit structured output as JSON]' '--path[target project directory (default: current directory)]' '--stale-only[release only a lock whose lease is expired]' '--task[task ID to operate on (when omitted, resolved from context or single active task)]' '--version[show the installed package version]' ;;
|
|
76
77
|
trace) _arguments '--help[show this help]' '--json[emit structured trace output as JSON (default rendering is a summary)]' '--path[target project directory (default: current directory)]' '--task[task ID to operate on (when omitted, resolved from context or single active task)]' '--version[show the installed package version]' ;;
|
|
77
78
|
update) _arguments '--dry-run[perform deterministic update planning and conflict detection without writing]' '--help[show this help]' '--path[target project directory (default: current directory)]' '--version[show the installed package version]' ;;
|
|
79
|
+
usage-record) _arguments '--cache-read-tokens[provider-reported cache-read token count]' '--cache-write-tokens[provider-reported cache-write token count]' '--cost-usd[provider-reported cost in USD; never estimated]' '--help[show this help]' '--input-tokens[provider-reported input token count]' '--json[emit usage telemetry as JSON]' '--model[model name reported by the actor]' '--output-tokens[provider-reported output token count]' '--path[target project directory (default: current directory)]' '--provider[provider name reported by the actor]' '--source[usage source; CLI fallback accepts only ACTOR_REPORTED]' '--task[task ID to operate on (when omitted, resolved from context or single active task)]' '--total-tokens[provider-reported total token count; never estimated]' '--version[show the installed package version]' ;;
|
|
78
80
|
validate-protocol) _arguments '--continuity-file[optional execution-continuity JSON relative to target]' '--contract-file[current JSON contract used for freshness comparison]' '--delegated-result-file[delegated result JSON file]' '--help[show this help]' '--json[emit structured output as JSON]' '--path[target project directory (default: current directory)]' '--receipt-file[execution-receipt JSON relative to target]' '--route-file[routing-result JSON relative to target]' '--state-file[work-state JSON relative to target]' '--task[task ID to operate on (when omitted, resolved from context or single active task)]' '--task-brief-file[task brief JSON file]' '--version[show the installed package version]' ;;
|
|
79
81
|
validate-receipt) _arguments '--file[receipt file relative to target (overrides task-based receipt resolution)]' '--help[show this help]' '--json[emit structured output as JSON]' '--path[target project directory (default: current directory)]' '--task[task ID to operate on (when omitted, resolved from context or single active task)]' '--version[show the installed package version]' ;;
|
|
80
82
|
validate-state) _arguments '--help[show this help]' '--json[emit structured output as JSON]' '--path[target project directory (default: current directory)]' '--task[task ID to operate on (when omitted, resolved from context or single active task)]' '--version[show the installed package version]' ;;
|
|
@@ -28,6 +28,7 @@ _forgeloop() {
|
|
|
28
28
|
complete) command="complete" ;;
|
|
29
29
|
continuity) command="continuity" ;;
|
|
30
30
|
doctor) command="doctor" ;;
|
|
31
|
+
efficiency) command="efficiency" ;;
|
|
31
32
|
eval) command="eval" ;;
|
|
32
33
|
handoff-create) command="handoff-create" ;;
|
|
33
34
|
handoff-list) command="handoff-list" ;;
|
|
@@ -77,6 +78,7 @@ _forgeloop() {
|
|
|
77
78
|
task-unlock) command="task-unlock" ;;
|
|
78
79
|
trace) command="trace" ;;
|
|
79
80
|
update) command="update" ;;
|
|
81
|
+
usage-record) command="usage-record" ;;
|
|
80
82
|
validate-protocol) command="validate-protocol" ;;
|
|
81
83
|
validate-receipt) command="validate-receipt" ;;
|
|
82
84
|
validate-state) command="validate-state" ;;
|
|
@@ -86,7 +88,7 @@ _forgeloop() {
|
|
|
86
88
|
esac
|
|
87
89
|
done
|
|
88
90
|
if [[ -z "\${command}" && "\${cur}" != -* ]]; then
|
|
89
|
-
COMPREPLY=( $(compgen -W 'action-authorize action-propose action-reconcile action-record action-show action-verify activate advance approval-request approval-resolve attestation-create attestation-status attestation-verify attestation-verify-range audit baseline bundle clear-continuity clear-state complete continuity doctor eval handoff-create handoff-list handoff-show history init inspect metrics migrate-protocol next policy policy-diff policy-discover policy-status preflight prepare-completion profile-interview progress protocol-info reconcile-closure reconcile-continuity record-check record-continuity record-decision-criterion record-diagnosis record-hypothesis-disposition record-intervention record-terminal-result reflect report responsibility-set responsibility-status route rule-verify run-action run-check status task-create task-list task-lock-status task-migrate task-recover task-repair-legacy-recovery task-resume task-scope task-show task-unlock trace update validate-protocol validate-receipt validate-state verify-scope workspace-bind workspace-status' -- "$cur") )
|
|
91
|
+
COMPREPLY=( $(compgen -W 'action-authorize action-propose action-reconcile action-record action-show action-verify activate advance approval-request approval-resolve attestation-create attestation-status attestation-verify attestation-verify-range audit baseline bundle clear-continuity clear-state complete continuity doctor efficiency eval handoff-create handoff-list handoff-show history init inspect metrics migrate-protocol next policy policy-diff policy-discover policy-status preflight prepare-completion profile-interview progress protocol-info reconcile-closure reconcile-continuity record-check record-continuity record-decision-criterion record-diagnosis record-hypothesis-disposition record-intervention record-terminal-result reflect report responsibility-set responsibility-status route rule-verify run-action run-check status task-create task-list task-lock-status task-migrate task-recover task-repair-legacy-recovery task-resume task-scope task-show task-unlock trace update usage-record validate-protocol validate-receipt validate-state verify-scope workspace-bind workspace-status' -- "$cur") )
|
|
90
92
|
return
|
|
91
93
|
fi
|
|
92
94
|
case "\${command}" in
|
|
@@ -112,6 +114,7 @@ _forgeloop() {
|
|
|
112
114
|
complete) COMPREPLY=( $(compgen -W '--help --json --path --strict --task --version' -- "$cur") );;
|
|
113
115
|
continuity) COMPREPLY=( $(compgen -W '--help --json --path --task --version' -- "$cur") );;
|
|
114
116
|
doctor) COMPREPLY=( $(compgen -W '--adopt --fix --help --json --path --strict --version' -- "$cur") );;
|
|
117
|
+
efficiency) COMPREPLY=( $(compgen -W '--baseline --help --json --path --task --version' -- "$cur") );;
|
|
115
118
|
eval) COMPREPLY=( $(compgen -W '--help --json --path --scenario --task --version' -- "$cur") );;
|
|
116
119
|
handoff-create) COMPREPLY=( $(compgen -W '--help --json --note --path --recipient --task --version' -- "$cur") );;
|
|
117
120
|
handoff-list) COMPREPLY=( $(compgen -W '--help --json --path --task --version' -- "$cur") );;
|
|
@@ -121,7 +124,7 @@ _forgeloop() {
|
|
|
121
124
|
inspect) COMPREPLY=( $(compgen -W '--contract-file --help --json --path --task --version' -- "$cur") );;
|
|
122
125
|
metrics) COMPREPLY=( $(compgen -W '--help --json --path --task --version' -- "$cur") );;
|
|
123
126
|
migrate-protocol) COMPREPLY=( $(compgen -W '--dry-run --help --json --path --to --version' -- "$cur") );;
|
|
124
|
-
next) COMPREPLY=( $(compgen -W '--help --json --path --task --version' -- "$cur") );;
|
|
127
|
+
next) COMPREPLY=( $(compgen -W '--compact --help --json --path --task --version' -- "$cur") );;
|
|
125
128
|
policy) COMPREPLY=( $(compgen -W '--help --json --path --task --version' -- "$cur") );;
|
|
126
129
|
policy-diff) COMPREPLY=( $(compgen -W '--after --before --help --json --path --task --version' -- "$cur") );;
|
|
127
130
|
policy-discover) COMPREPLY=( $(compgen -W '--help --json --path --version --write' -- "$cur") );;
|
|
@@ -144,7 +147,7 @@ _forgeloop() {
|
|
|
144
147
|
report) COMPREPLY=( $(compgen -W '--help --json --path --strict --task --version' -- "$cur") );;
|
|
145
148
|
responsibility-set) COMPREPLY=( $(compgen -W '--allowed-path --freeze-claims --freeze-contract --freeze-route --help --json --label --path --read-only-path --required-check --task --version' -- "$cur") );;
|
|
146
149
|
responsibility-status) COMPREPLY=( $(compgen -W '--help --json --path --task --version' -- "$cur") );;
|
|
147
|
-
route) COMPREPLY=( $(compgen -W '--behavior-change --executable-change --help --json --path --platform --risk --surface --task --version --work' -- "$cur") );;
|
|
150
|
+
route) COMPREPLY=( $(compgen -W '--behavior-change --executable-change --execution-profile --help --json --path --platform --risk --surface --task --version --work' -- "$cur") );;
|
|
148
151
|
rule-verify) COMPREPLY=( $(compgen -W '--help --json --path --rule --version' -- "$cur") );;
|
|
149
152
|
run-action) COMPREPLY=( $(compgen -W '-- --action --approval --capability --effect-class --help --idempotency-key --json --path --required-for-completion --requirement --target --task --timeout-ms --version' -- "$cur") );;
|
|
150
153
|
run-check) COMPREPLY=( $(compgen -W '-- --details --help --id --json --path --requirement --scope-ref --task --timeout-ms --version' -- "$cur") );;
|
|
@@ -157,10 +160,11 @@ _forgeloop() {
|
|
|
157
160
|
task-repair-legacy-recovery) COMPREPLY=( $(compgen -W '--acknowledge-recovery --help --json --path --task --version' -- "$cur") );;
|
|
158
161
|
task-resume) COMPREPLY=( $(compgen -W '--claim --help --json --path --task --version' -- "$cur") );;
|
|
159
162
|
task-scope) COMPREPLY=( $(compgen -W '--claim --help --json --path --task --version' -- "$cur") );;
|
|
160
|
-
task-show) COMPREPLY=( $(compgen -W '--help --json --path --task --version' -- "$cur") );;
|
|
163
|
+
task-show) COMPREPLY=( $(compgen -W '--compact --help --json --path --task --version' -- "$cur") );;
|
|
161
164
|
task-unlock) COMPREPLY=( $(compgen -W '--force --help --json --path --stale-only --task --version' -- "$cur") );;
|
|
162
165
|
trace) COMPREPLY=( $(compgen -W '--help --json --path --task --version' -- "$cur") );;
|
|
163
166
|
update) COMPREPLY=( $(compgen -W '--dry-run --help --path --version' -- "$cur") );;
|
|
167
|
+
usage-record) COMPREPLY=( $(compgen -W '--cache-read-tokens --cache-write-tokens --cost-usd --help --input-tokens --json --model --output-tokens --path --provider --source --task --total-tokens --version' -- "$cur") );;
|
|
164
168
|
validate-protocol) COMPREPLY=( $(compgen -W '--continuity-file --contract-file --delegated-result-file --help --json --path --receipt-file --route-file --state-file --task --task-brief-file --version' -- "$cur") );;
|
|
165
169
|
validate-receipt) COMPREPLY=( $(compgen -W '--file --help --json --path --task --version' -- "$cur") );;
|
|
166
170
|
validate-state) COMPREPLY=( $(compgen -W '--help --json --path --task --version' -- "$cur") );;
|