create-agdf 0.11.4 → 0.13.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/README.md +1 -1
- package/generated/.agdf/control/templates/artefacts/BROWNFIELD_REVIEW.md +25 -0
- package/generated/.github/skills/agdf-brownfield-analysis/SKILL.md +26 -0
- package/generated/.github/skills/agdf-gate-check/SKILL.md +40 -18
- package/generated/.github/skills/agdf-interaction-locales.json +50 -0
- package/generated/.github/skills/agdf-runtime-contract.md +1 -0
- package/generated/.github/skills/contracts/gate-transition.md +7 -3
- package/generated/.github/skills/contracts/interaction.md +22 -0
- package/generated/.github/skills/contracts/modes.md +81 -0
- package/generated/.github/skills/contracts/task-target-resolution.md +102 -0
- package/generated/.opencode/AGDF.md +2 -0
- package/generated/.opencode/agdf-interaction-locales.json +50 -0
- package/generated/.opencode/agdf-runtime-contract.md +1 -0
- package/generated/.opencode/contracts/gate-transition.md +7 -3
- package/generated/.opencode/contracts/interaction.md +22 -0
- package/generated/.opencode/contracts/modes.md +81 -0
- package/generated/.opencode/contracts/task-target-resolution.md +102 -0
- package/generated/.opencode/skills/agdf-brownfield-analysis/SKILL.md +26 -0
- package/generated/.opencode/skills/agdf-gate-check/SKILL.md +40 -18
- package/generated/AGENTS.md +1 -0
- package/generated/plugins/agdf/.claude-plugin/plugin.json +2 -2
- package/generated/plugins/agdf/.codex-plugin/plugin.json +9 -6
- package/generated/plugins/agdf/control/templates/artefacts/BROWNFIELD_REVIEW.md +25 -0
- package/generated/plugins/agdf/meta/agdf-agent-router.md +16 -0
- package/generated/plugins/agdf/meta/agdf-interaction-locales.json +50 -0
- package/generated/plugins/agdf/meta/agdf-plugin.definition.json +41 -5
- package/generated/plugins/agdf/meta/agdf-runtime-contract.md +1 -0
- package/generated/plugins/agdf/meta/contracts/gate-transition.md +7 -3
- package/generated/plugins/agdf/meta/contracts/interaction.md +22 -0
- package/generated/plugins/agdf/meta/contracts/modes.md +81 -0
- package/generated/plugins/agdf/meta/contracts/task-target-resolution.md +102 -0
- package/generated/plugins/agdf/runtime/create-agdf/generated/plugins/agdf/meta/agdf-interaction-locales.json +50 -0
- package/generated/plugins/agdf/runtime/create-agdf/generated/plugins/agdf/meta/agdf-plugin.definition.json +41 -5
- package/generated/plugins/agdf/runtime/create-agdf/lib/control-evaluation/gate-policy.js +14 -7
- package/generated/plugins/agdf/runtime/create-agdf/lib/interaction-presentation.js +85 -0
- package/generated/plugins/agdf/runtime/create-agdf/package.json +4 -65
- package/generated/plugins/agdf/runtime/runtime-manifest.json +2 -2
- package/generated/plugins/agdf/scripts/check-runtime-integrity.mjs +146 -40
- package/generated/plugins/agdf/skills/brownfield-analysis/SKILL.md +26 -0
- package/generated/plugins/agdf/skills/gate-check/SKILL.md +40 -18
- package/generated/plugins/agdf/submission/openai/availability.md +16 -0
- package/generated/plugins/agdf/submission/openai/capability-matrix.json +49 -0
- package/generated/plugins/agdf/submission/openai/release-notes.md +16 -0
- package/generated/plugins/agdf/submission/openai/reviewer-cases.json +96 -0
- package/generated/submissions/openai/agdf/.codex-plugin/plugin.json +43 -0
- package/generated/submissions/openai/agdf/assets/agdf-icon.svg +16 -0
- package/generated/submissions/openai/agdf/assets/agdf-logo.svg +16 -0
- package/generated/submissions/openai/agdf/meta/agdf-agent-router.md +129 -0
- package/generated/submissions/openai/agdf/meta/agdf-constitution.md +329 -0
- package/generated/submissions/openai/agdf/meta/agdf-interaction-locales.json +514 -0
- package/generated/submissions/openai/agdf/meta/agdf-plugin.definition.json +263 -0
- package/generated/submissions/openai/agdf/meta/agdf-runtime-contract.md +16 -0
- package/generated/submissions/openai/agdf/meta/agdf-tenets.md +201 -0
- package/generated/submissions/openai/agdf/meta/contracts/closeout.md +29 -0
- package/generated/submissions/openai/agdf/meta/contracts/context-graph.md +48 -0
- package/generated/submissions/openai/agdf/meta/contracts/control-scaffold.md +115 -0
- package/generated/submissions/openai/agdf/meta/contracts/gate-transition.md +165 -0
- package/generated/submissions/openai/agdf/meta/contracts/interaction.md +476 -0
- package/generated/submissions/openai/agdf/meta/contracts/modes.md +183 -0
- package/generated/submissions/openai/agdf/meta/contracts/quality.md +157 -0
- package/generated/submissions/openai/agdf/meta/contracts/task-target-resolution.md +102 -0
- package/generated/submissions/openai/agdf/skills/brownfield-analysis/SKILL.md +175 -0
- package/generated/submissions/openai/agdf/skills/brownfield-analysis/help.md +23 -0
- package/generated/submissions/openai/agdf/skills/clean-implementation-review/SKILL.md +126 -0
- package/generated/submissions/openai/agdf/skills/clean-implementation-review/help.md +23 -0
- package/generated/submissions/openai/agdf/skills/code-review/SKILL.md +119 -0
- package/generated/submissions/openai/agdf/skills/code-review/help.md +23 -0
- package/generated/submissions/openai/agdf/skills/delivery-closeout/SKILL.md +118 -0
- package/generated/submissions/openai/agdf/skills/delivery-closeout/help.md +23 -0
- package/generated/submissions/openai/agdf/skills/delivery-path-search/SKILL.md +94 -0
- package/generated/submissions/openai/agdf/skills/delivery-path-search/help.md +23 -0
- package/generated/submissions/openai/agdf/skills/gate-check/SKILL.md +238 -0
- package/generated/submissions/openai/agdf/skills/gate-check/help.md +23 -0
- package/generated/submissions/openai/agdf/skills/qa-gate/SKILL.md +137 -0
- package/generated/submissions/openai/agdf/skills/qa-gate/help.md +23 -0
- package/generated/submissions/openai/agdf/skills/release-or/SKILL.md +137 -0
- package/generated/submissions/openai/agdf/skills/release-or/help.md +23 -0
- package/generated/submissions/openai/agdf/skills/task-plan-review/SKILL.md +157 -0
- package/generated/submissions/openai/agdf/skills/task-plan-review/help.md +23 -0
- package/generated/submissions/openai/agdf/skills/ux-intent-definition/SKILL.md +94 -0
- package/generated/submissions/openai/agdf/skills/ux-intent-definition/help.md +17 -0
- package/generated/submissions/openai/agdf/submission/openai/availability.md +16 -0
- package/generated/submissions/openai/agdf/submission/openai/capability-matrix.json +49 -0
- package/generated/submissions/openai/agdf/submission/openai/inventory.json +175 -0
- package/generated/submissions/openai/agdf/submission/openai/listing.json +38 -0
- package/generated/submissions/openai/agdf/submission/openai/readiness.json +40 -0
- package/generated/submissions/openai/agdf/submission/openai/readiness.md +24 -0
- package/generated/submissions/openai/agdf/submission/openai/release-notes.md +16 -0
- package/generated/submissions/openai/agdf/submission/openai/reviewer-cases.json +96 -0
- package/lib/cli/application.js +13 -2
- package/lib/control-evaluation/gate-policy.js +14 -7
- package/lib/installers/local-marketplace.js +1 -1
- package/lib/installers/opencode.js +128 -1
- package/lib/interaction-presentation.js +85 -0
- package/lib/live-agent/read-only-structured.js +43 -0
- package/lib/proportionality-benchmark/blind-prompt.js +37 -0
- package/lib/proportionality-benchmark/contracts.js +120 -0
- package/lib/proportionality-benchmark/corpus-loader.js +110 -0
- package/lib/proportionality-benchmark/evaluator.js +250 -0
- package/lib/proportionality-benchmark/index.js +7 -0
- package/lib/proportionality-benchmark/live-recorder.js +100 -0
- package/lib/proportionality-benchmark/report.js +51 -0
- package/lib/proportionality-benchmark/source-fingerprint.js +30 -0
- package/lib/public-plugin/builder.js +82 -0
- package/lib/public-plugin/contract.js +102 -0
- package/lib/public-plugin/manifest.js +72 -0
- package/lib/public-plugin/report.js +33 -0
- package/lib/public-plugin/validator.js +101 -0
- package/lib/skill-evals/live-recorder.js +3 -26
- package/opencode-plugin.js +40 -1
- package/package.json +7 -2
|
@@ -93,9 +93,13 @@ Mode/Slice Decision rules:
|
|
|
93
93
|
|
|
94
94
|
- `quick_task`: use only when Brownfield Review shows a narrow local change, no new product semantics beyond the approved UR, no architecture/policy/persistence/contract expansion, and evidence is sufficient to proceed with a small implementation plus relevant checks.
|
|
95
95
|
- `verified_change`: use only when the compact record can prove one canonical owner, bounded clean-at-baseline paths, no prohibited impact, deterministic propagation/validation and a structured escalation target. It skips later approvals only after every condition is evidenced and machine-validated.
|
|
96
|
-
- `structured_slice
|
|
97
|
-
|
|
98
|
-
|
|
96
|
+
- `structured_slice` and `structured_delivery`: apply the sole normative `Structured Depth Decision`
|
|
97
|
+
in `modes.md`; this contract owns only the operational transition and does not duplicate its
|
|
98
|
+
trigger or bounded-slice matrix.
|
|
99
|
+
- `block`: use when ownership, SoT, impact, evidence or product direction is not clear enough to
|
|
100
|
+
choose a safe path. A `depth_unresolved` product result is persisted through this existing value
|
|
101
|
+
with `depth_facts_missing | depth_facts_conflicting`, a Brownfield Review evidence link and a
|
|
102
|
+
precise evidence-owner/re-evaluation next action; it never creates a new mode or advances a gate.
|
|
99
103
|
|
|
100
104
|
A Mode/Slice Decision without scope reason and evidence is not recorded. Treat it as missing and keep the next step at `Mode/Slice Decision`.
|
|
101
105
|
|
|
@@ -338,6 +338,28 @@ repeat the sentence later in the same request. Existing-run status inspection re
|
|
|
338
338
|
uses the existing status projection; this branch must not create a second status-card or narration
|
|
339
339
|
owner.
|
|
340
340
|
|
|
341
|
+
### Task Target Orientation
|
|
342
|
+
|
|
343
|
+
Task-target semantics and ordering live in `task-target-resolution.md`. When target/context
|
|
344
|
+
separation is material, a confirmed target changes, or resolution is unresolved, the agent consumes
|
|
345
|
+
the canonical `task_target_orientation.markdown` verbatim from `renderTaskTargetOrientation` in
|
|
346
|
+
`create-agdf/lib/interaction-presentation.js`.
|
|
347
|
+
|
|
348
|
+
The projection may show the primary target, governance target, evidence sources and working
|
|
349
|
+
directory for a resolved result. For an unresolved result it shows the localized reason and required
|
|
350
|
+
next action. It carries `authorizes: false`, never renders approval controls and never selects or
|
|
351
|
+
derives a target.
|
|
352
|
+
|
|
353
|
+
For a fresh request, render the target orientation before read-only orientation, Scope
|
|
354
|
+
Classification or any gate presentation when it is required. An unresolved result suppresses every
|
|
355
|
+
downstream orientation and gate surface. A resolved result with material target separation may be
|
|
356
|
+
followed by the one applicable downstream surface. Avoid a redundant target block for an obvious
|
|
357
|
+
unchanged target.
|
|
358
|
+
|
|
359
|
+
If the input is incomplete or contradictory, the renderer returns `null`. The agent then fails closed
|
|
360
|
+
to target clarification and must not model-reconstruct Markdown. `gate-check` must not maintain a
|
|
361
|
+
skill-local target-orientation template.
|
|
362
|
+
|
|
341
363
|
### Scope Classification Card
|
|
342
364
|
|
|
343
365
|
When `gate-check` classifies a fresh scope as ungated (Quick Task or Trivial Change Boundary),
|
|
@@ -36,6 +36,87 @@ reason, evidence and required next depth in the same internal operation. `Mode/S
|
|
|
36
36
|
only a fail-closed recovery step for incomplete or legacy records and is not a normal second user
|
|
37
37
|
decision.
|
|
38
38
|
|
|
39
|
+
### Structured Depth Decision
|
|
40
|
+
|
|
41
|
+
This section is the sole normative owner for choosing between `structured_slice` and
|
|
42
|
+
`structured_delivery`. Apply it only after an approved durable UR, a Brownfield Review of the
|
|
43
|
+
existing-system context, and unchanged evaluation of Quick Task/Compact Delivery and Verified
|
|
44
|
+
Change. A compact path must be ineligible or explicitly escalated, and the decisive depth facts must
|
|
45
|
+
be durably evidenced before a positive structured decision is recorded.
|
|
46
|
+
|
|
47
|
+
Choose `structured_delivery` when any one evidenced full-depth trigger applies:
|
|
48
|
+
|
|
49
|
+
1. **Authority, policy or security** — a trust or authority boundary, permission, security,
|
|
50
|
+
compliance or normative policy changes, or independent decision owners require coordinated
|
|
51
|
+
approval.
|
|
52
|
+
2. **Architecture or runtime** — execution, orchestration, durable execution, concurrency, failure
|
|
53
|
+
or recovery boundaries change beyond a local slice.
|
|
54
|
+
3. **Persistence, data or migration** — persistent schema or meaning changes, data migration,
|
|
55
|
+
irreversible state transition, coordinated cutover, an extended compatibility window or
|
|
56
|
+
non-local rollback is required.
|
|
57
|
+
4. **External or public contract** — an external API, public CLI behavior, protocol, file format or
|
|
58
|
+
compatibility-sensitive integration contract changes, including independent consumer
|
|
59
|
+
coordination or versioning.
|
|
60
|
+
5. **Release, deployment or cross-host** — the work needs its own rollout, deployment, rollback,
|
|
61
|
+
feature-flag or release plan, or coordinated activation across hosts, products or operational
|
|
62
|
+
boundaries.
|
|
63
|
+
6. **Unbounded consumer or owner coordination** — the outcome cannot be delivered as an
|
|
64
|
+
independently acceptable and reversible slice, or consumers or owners require a shared cutover
|
|
65
|
+
or compatibility window.
|
|
66
|
+
|
|
67
|
+
A single trigger is decisive because of its effect, never because of a numeric count.
|
|
68
|
+
|
|
69
|
+
Choose `structured_slice` only when `depth_facts_status` is `complete`, no full-depth trigger is
|
|
70
|
+
evidenced, and all seven bounded-slice checks are positively evidenced as `pass`:
|
|
71
|
+
|
|
72
|
+
| Check ID | Required evidence |
|
|
73
|
+
|---|---|
|
|
74
|
+
| `coherent_outcome` | One coherent user or product outcome has a clear acceptance boundary. |
|
|
75
|
+
| `authority_boundary` | Authority and source of truth are known and no new trust, policy, permission or security boundary is introduced. |
|
|
76
|
+
| `owner_consumer_coordination` | Owners and consumers are identified and coordination stays inside the slice without a shared external cutover. |
|
|
77
|
+
| `full_depth_impacts_absent` | Architecture, runtime, persistence, data, external API, public CLI, release and cross-host effects are evidenced as not full-depth relevant. |
|
|
78
|
+
| `migration_propagation_bounded` | Migration and propagation are bounded, compatible, testable and locally reversible. |
|
|
79
|
+
| `failure_recovery_local` | Failure, recovery and rollback remain controllable inside the slice. |
|
|
80
|
+
| `independently_acceptable` | The slice has independent acceptance signals and hides no unknown later work as a prerequisite. |
|
|
81
|
+
|
|
82
|
+
Multiple files, owners, consumers or derived paths do not fail these checks by themselves. File,
|
|
83
|
+
owner, consumer, task or derived-path counts are not a decision proxy and must never be used as a
|
|
84
|
+
threshold for either structured mode.
|
|
85
|
+
|
|
86
|
+
If a decisive fact is missing or conflicting and no evidenced full-depth trigger already supports
|
|
87
|
+
`structured_delivery`, the product-language result is `depth_unresolved`. This is not a persisted
|
|
88
|
+
mode. Persist the existing Mode/Slice value `block`, use `depth_facts_missing` or
|
|
89
|
+
`depth_facts_conflicting`, name the affected facts and evidence owner where known, link the
|
|
90
|
+
Brownfield Review, forbid later artefacts and implementation, and provide a precise next action for
|
|
91
|
+
evidence completion and Brownfield/Mode-Slice re-evaluation. Unknown facts must not default to
|
|
92
|
+
`structured_delivery`.
|
|
93
|
+
|
|
94
|
+
Positive decisions persist the existing `structured_slice | structured_delivery` value, required
|
|
95
|
+
next gate, a `scope_reason` containing the primary reason code and decisive rationale plus the
|
|
96
|
+
rejected alternative, and evidence linking the complete Structured Depth Evidence. Re-evaluate
|
|
97
|
+
before continuing whenever scope growth reveals a new full-depth trigger.
|
|
98
|
+
|
|
99
|
+
Normalized reason codes are audit and rationale categories, not new modes or gates:
|
|
100
|
+
|
|
101
|
+
- `bounded_structured_slice`
|
|
102
|
+
- `authority_policy_security_depth`
|
|
103
|
+
- `architecture_runtime_depth`
|
|
104
|
+
- `persistence_migration_depth`
|
|
105
|
+
- `external_contract_depth`
|
|
106
|
+
- `release_cross_host_depth`
|
|
107
|
+
- `unbounded_consumer_coordination`
|
|
108
|
+
- `depth_facts_missing`
|
|
109
|
+
- `depth_facts_conflicting`
|
|
110
|
+
|
|
111
|
+
Structured Slice and Structured Delivery use the same existing gate and approval sequence. Their
|
|
112
|
+
difference is artefact depth: Slice artefacts cover only the coherent bounded outcome and its owners,
|
|
113
|
+
contracts, propagation, recovery, tasks and tests; Full Delivery covers every affected authority,
|
|
114
|
+
architecture, runtime, consumer, migration, operational and release boundary.
|
|
115
|
+
|
|
116
|
+
Historical or deterministic benchmark observations are non-authorizing evidence. They do not define
|
|
117
|
+
this policy, retroactively regrade historical runs or prove live-host behavior. A future benchmark
|
|
118
|
+
may apply this policy only with complete, versioned neutral depth facts.
|
|
119
|
+
|
|
39
120
|
### Verified Change
|
|
40
121
|
|
|
41
122
|
`verified_change` is a compact, fail-closed path for a bounded user-visible change with one canonical owner and deterministic proof. It is neither a prose exception nor a new user approval gate.
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
# AGDF Runtime Contract — Task Target Resolution
|
|
2
|
+
|
|
3
|
+
## Purpose And Ordering
|
|
4
|
+
|
|
5
|
+
Resolve the user's primary work target before repository activation, Scope Classification, mode
|
|
6
|
+
selection or gate evaluation. Repository governance is downstream of the task target; the current
|
|
7
|
+
working directory, an inspected repository or a source mentioned as evidence must never become the
|
|
8
|
+
work target by accident.
|
|
9
|
+
|
|
10
|
+
The canonical order is:
|
|
11
|
+
|
|
12
|
+
1. resolve or revalidate the task target;
|
|
13
|
+
2. derive the governance target from that resolved target;
|
|
14
|
+
3. activate repository-local AGDF control only for that governance target;
|
|
15
|
+
4. then apply read-only orientation, Scope Classification, mode selection and gate evaluation.
|
|
16
|
+
|
|
17
|
+
If task-target resolution is unresolved, steps 2–4 and every mutation are forbidden.
|
|
18
|
+
|
|
19
|
+
## Resolution Result
|
|
20
|
+
|
|
21
|
+
Use one normalized result:
|
|
22
|
+
|
|
23
|
+
- `resolution_state`: `resolved | unresolved`
|
|
24
|
+
- `reason_code`: `explicit_target | continued_target | multiple_plausible_targets |
|
|
25
|
+
target_content_mismatch | target_unavailable | no_reliable_target`
|
|
26
|
+
- `primary_target`: exactly one requested work object when resolved, otherwise empty
|
|
27
|
+
- `evidence_sources`: zero or more mentioned or inspected sources that do not gain mutation authority
|
|
28
|
+
- `working_directory`: execution context only, never target authority by itself
|
|
29
|
+
- `governance_target`: the repository whose control state applies to the primary target, otherwise empty
|
|
30
|
+
- `target_changed`: whether an explicit new target replaced the previously confirmed target
|
|
31
|
+
- `next_action`: required clarification, supply or retry action when unresolved
|
|
32
|
+
|
|
33
|
+
A resolved result requires a non-empty `primary_target` and a reason code of `explicit_target` or
|
|
34
|
+
`continued_target`. An unresolved result requires an empty `primary_target`, an empty
|
|
35
|
+
`governance_target`, one of the four unresolved reason codes and a non-empty `next_action`.
|
|
36
|
+
Contradictory or incomplete results fail closed.
|
|
37
|
+
|
|
38
|
+
## Target Authority Precedence
|
|
39
|
+
|
|
40
|
+
Resolve in this order:
|
|
41
|
+
|
|
42
|
+
1. an explicit file, artefact or repository named as the work target in the current user turn;
|
|
43
|
+
2. a previously confirmed target only when the current turn unambiguously continues the same action,
|
|
44
|
+
object and scope;
|
|
45
|
+
3. the current repository or working directory only when the request explicitly or deictically asks
|
|
46
|
+
for work on "this project", "this repository" or an equivalent current-scope reference;
|
|
47
|
+
4. otherwise `no_reliable_target`.
|
|
48
|
+
|
|
49
|
+
An explicit current-turn target always replaces an inherited target. Make the change visible when
|
|
50
|
+
the previous target could otherwise remain plausible.
|
|
51
|
+
|
|
52
|
+
Do not fall back to the working directory, a neighboring file or an evidence source when the
|
|
53
|
+
explicit target is unavailable or its content does not support the requested change.
|
|
54
|
+
|
|
55
|
+
## Evidence And Mutation Boundary
|
|
56
|
+
|
|
57
|
+
Reading, inspecting, mentioning or relying on a repository or artefact makes it an evidence source,
|
|
58
|
+
not a mutation target. Evidence access never grants mutation authority and never activates that
|
|
59
|
+
repository's AGDF control state.
|
|
60
|
+
|
|
61
|
+
Derive `governance_target` only from:
|
|
62
|
+
|
|
63
|
+
- the repository containing the resolved `primary_target`; or
|
|
64
|
+
- an explicit user statement that a named repository governs the target.
|
|
65
|
+
|
|
66
|
+
An external standalone artefact may have no repository governance target. In that case the router
|
|
67
|
+
continues with the applicable non-repository path; it must not borrow governance from the current
|
|
68
|
+
working directory.
|
|
69
|
+
|
|
70
|
+
## Continuation And Target Change
|
|
71
|
+
|
|
72
|
+
A confirmed target may continue across related turns only when the current request remains
|
|
73
|
+
unambiguous. Revalidate it before every mutation or gate decision. New explicit target evidence wins.
|
|
74
|
+
New ambiguity ends the inherited binding and produces `multiple_plausible_targets`.
|
|
75
|
+
|
|
76
|
+
When a durable AGDF run exists, its Source And Scope State may record the confirmed target as
|
|
77
|
+
evidence. It does not override a newer explicit user target. Outside a run, continuation remains
|
|
78
|
+
transient conversation state; do not create a global target store or a second run-state owner.
|
|
79
|
+
|
|
80
|
+
## Fail-Closed States
|
|
81
|
+
|
|
82
|
+
- `multiple_plausible_targets`: more than one work target remains plausible; list the candidates and
|
|
83
|
+
request the smallest clarification.
|
|
84
|
+
- `target_content_mismatch`: the requested content change is not supported by the explicit target's
|
|
85
|
+
observable content; name the mismatch and ask whether the target or requested change should change.
|
|
86
|
+
- `target_unavailable`: the named file, attachment or artefact cannot be inspected; request supply or
|
|
87
|
+
access and offer a visible retry.
|
|
88
|
+
- `no_reliable_target`: neither an explicit target nor an unambiguous continuation exists; request a
|
|
89
|
+
target.
|
|
90
|
+
|
|
91
|
+
These states forbid repository activation, Scope Classification, gate evaluation and mutation.
|
|
92
|
+
Never silently expand scope to make the request fit a different project.
|
|
93
|
+
|
|
94
|
+
## Presentation Boundary
|
|
95
|
+
|
|
96
|
+
`contracts/interaction.md` owns the visible, non-authorizing Task Target Orientation.
|
|
97
|
+
`create-agdf/lib/interaction-presentation.js` owns its rendering. The renderer projects a normalized
|
|
98
|
+
result; it must not resolve targets, derive governance or become a state store.
|
|
99
|
+
|
|
100
|
+
Show orientation when target/context separation is material, when the target changes, or when the
|
|
101
|
+
result is unresolved. Avoid redundant presentation for an obvious unchanged target. Presentation
|
|
102
|
+
never grants mutation or gate authority.
|
|
@@ -58,6 +58,31 @@
|
|
|
58
58
|
"escalation": "Escalation triggers",
|
|
59
59
|
"challenge": "Challenge path"
|
|
60
60
|
},
|
|
61
|
+
"taskTargetResolution": {
|
|
62
|
+
"title": "AGDF task target",
|
|
63
|
+
"field": "Field",
|
|
64
|
+
"value": "Value",
|
|
65
|
+
"state": "Resolution",
|
|
66
|
+
"resolved": "Resolved",
|
|
67
|
+
"unresolved": "Clarification required",
|
|
68
|
+
"primaryTarget": "Primary target",
|
|
69
|
+
"governanceTarget": "Governance target",
|
|
70
|
+
"evidenceSources": "Evidence sources",
|
|
71
|
+
"workingDirectory": "Working directory",
|
|
72
|
+
"targetChanged": "Target changed",
|
|
73
|
+
"yes": "yes",
|
|
74
|
+
"none": "none",
|
|
75
|
+
"reason": "Reason",
|
|
76
|
+
"nextAction": "Next action",
|
|
77
|
+
"reasonCodes": {
|
|
78
|
+
"explicit_target": "Explicit current-turn target",
|
|
79
|
+
"continued_target": "Confirmed target continued",
|
|
80
|
+
"multiple_plausible_targets": "Multiple plausible work targets",
|
|
81
|
+
"target_content_mismatch": "Requested change mismatches target",
|
|
82
|
+
"target_unavailable": "Named target is unavailable",
|
|
83
|
+
"no_reliable_target": "No reliable work target"
|
|
84
|
+
}
|
|
85
|
+
},
|
|
61
86
|
"internalStateLabels": {
|
|
62
87
|
"verifiedChange": "Compact change under review",
|
|
63
88
|
"verifiedChangeEscalated": "Escalated to structured delivery",
|
|
@@ -284,6 +309,31 @@
|
|
|
284
309
|
"escalation": "Eskalationsauslöser",
|
|
285
310
|
"challenge": "Widerspruchspfad"
|
|
286
311
|
},
|
|
312
|
+
"taskTargetResolution": {
|
|
313
|
+
"title": "AGDF-Arbeitsziel",
|
|
314
|
+
"field": "Feld",
|
|
315
|
+
"value": "Wert",
|
|
316
|
+
"state": "Auflösung",
|
|
317
|
+
"resolved": "Aufgelöst",
|
|
318
|
+
"unresolved": "Klärung erforderlich",
|
|
319
|
+
"primaryTarget": "Primäres Ziel",
|
|
320
|
+
"governanceTarget": "Governance-Ziel",
|
|
321
|
+
"evidenceSources": "Evidenzquellen",
|
|
322
|
+
"workingDirectory": "Arbeitsordner",
|
|
323
|
+
"targetChanged": "Ziel gewechselt",
|
|
324
|
+
"yes": "ja",
|
|
325
|
+
"none": "keines",
|
|
326
|
+
"reason": "Grund",
|
|
327
|
+
"nextAction": "Nächste Aktion",
|
|
328
|
+
"reasonCodes": {
|
|
329
|
+
"explicit_target": "Explizites Ziel im aktuellen Turn",
|
|
330
|
+
"continued_target": "Bestätigtes Ziel wird fortgesetzt",
|
|
331
|
+
"multiple_plausible_targets": "Mehrere plausible Arbeitsziele",
|
|
332
|
+
"target_content_mismatch": "Änderung passt nicht zum Zielinhalt",
|
|
333
|
+
"target_unavailable": "Benanntes Ziel ist nicht verfügbar",
|
|
334
|
+
"no_reliable_target": "Kein belastbares Arbeitsziel"
|
|
335
|
+
}
|
|
336
|
+
},
|
|
287
337
|
"internalStateLabels": {
|
|
288
338
|
"verifiedChange": "Kompakte Änderung wird geprüft",
|
|
289
339
|
"verifiedChangeEscalated": "Eskaliert zu structured delivery",
|
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"id": "agdf",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.13.0",
|
|
5
5
|
"displayName": "AI Governance & Delivery Framework",
|
|
6
6
|
"developerName": "Arndt Gold",
|
|
7
|
-
"description": "
|
|
8
|
-
"
|
|
9
|
-
"shortDescription": "Operating system for governed AI-assisted delivery.",
|
|
10
|
-
"longDescription": "AI Governance & Delivery Framework (AGDF) brings an operating system for governed AI-assisted delivery, combining workflow skills, control templates and machine-readable repository checks for gate decisions, Brownfield analysis, task-plan review, QA decisions, durable run state and auditable delivery closeout.",
|
|
7
|
+
"description": "Control layer for governed AI-assisted delivery.",
|
|
8
|
+
"longDescription": "AI Governance & Delivery Framework (AGDF) is a governance framework for agentic work. Its first implementation provides a control layer for governed AI-assisted software delivery. It combines workflow skills, explicit gates, control templates and machine-readable repository checks to keep work aligned with approved scope and make evidence a prerequisite for consequential gate transitions. Supported workflows include brownfield analysis, task-plan review, QA decisions, durable run state and auditable delivery closeout. AGDF is an independent open-source project, not a security sandbox, compliance certification or autonomous release system.",
|
|
11
9
|
"homepage": "https://agdf.iself.eu",
|
|
12
10
|
"repository": "https://github.com/arndtgold/ai-native-governance-delivery-framework",
|
|
13
11
|
"license": "Apache-2.0",
|
|
@@ -156,6 +154,44 @@
|
|
|
156
154
|
}
|
|
157
155
|
}
|
|
158
156
|
},
|
|
157
|
+
"publicDistribution": {
|
|
158
|
+
"schemaVersion": 1,
|
|
159
|
+
"submissionType": "skills",
|
|
160
|
+
"technicalId": "agdf",
|
|
161
|
+
"publicDisplayName": "AGDF",
|
|
162
|
+
"fullDisplayName": "AI Governance & Delivery Framework (AGDF)",
|
|
163
|
+
"shortDescription": "Governed AI delivery controls",
|
|
164
|
+
"developerName": "Arndt Gold",
|
|
165
|
+
"publisher": {
|
|
166
|
+
"target": "Arndt Gold",
|
|
167
|
+
"verificationState": "unverified"
|
|
168
|
+
},
|
|
169
|
+
"category": "Productivity",
|
|
170
|
+
"urls": {
|
|
171
|
+
"website": "https://agdf.iself.eu",
|
|
172
|
+
"privacy": "https://agdf.iself.eu/privacy",
|
|
173
|
+
"terms": "https://agdf.iself.eu/terms",
|
|
174
|
+
"support": "https://agdf.iself.eu/support"
|
|
175
|
+
},
|
|
176
|
+
"defaultPrompt": [
|
|
177
|
+
"Assess whether AGDF fits this work and recommend the lightest safe delivery path.",
|
|
178
|
+
"Start this request under AGDF governance.",
|
|
179
|
+
"Review the active AGDF run and explain the next allowed step."
|
|
180
|
+
],
|
|
181
|
+
"availability": {
|
|
182
|
+
"decisionState": "pending",
|
|
183
|
+
"countries": [],
|
|
184
|
+
"regions": [],
|
|
185
|
+
"workspaceContexts": [],
|
|
186
|
+
"decisionOwner": "verified publisher"
|
|
187
|
+
},
|
|
188
|
+
"submissionSources": {
|
|
189
|
+
"capabilityMatrix": "submission/openai/capability-matrix.json",
|
|
190
|
+
"reviewerCases": "submission/openai/reviewer-cases.json",
|
|
191
|
+
"releaseNotes": "submission/openai/release-notes.md",
|
|
192
|
+
"availabilityDecision": "submission/openai/availability.md"
|
|
193
|
+
}
|
|
194
|
+
},
|
|
159
195
|
"skillSet": [
|
|
160
196
|
{
|
|
161
197
|
"slug": "delivery-path-search",
|
|
@@ -29,8 +29,9 @@ export function isGateSatisfied(runState, gate) {
|
|
|
29
29
|
return isDurableGateArtefactSatisfied(runState, gate);
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
-
function
|
|
33
|
-
|
|
32
|
+
function qaNonPassDecision(runState) {
|
|
33
|
+
const status = gateArtefactStatus(runState, "QA").status;
|
|
34
|
+
return status === "revise" || status === "block" ? status : null;
|
|
34
35
|
}
|
|
35
36
|
|
|
36
37
|
export function transitionDecisionForRunState(runState, verifiedChange = null) {
|
|
@@ -233,15 +234,21 @@ export function transitionDecisionForRunState(runState, verifiedChange = null) {
|
|
|
233
234
|
};
|
|
234
235
|
}
|
|
235
236
|
|
|
236
|
-
|
|
237
|
+
const qaNonPass = qaNonPassDecision(runState);
|
|
238
|
+
if (qaNonPass) {
|
|
239
|
+
const blocked = qaNonPass === "block";
|
|
237
240
|
return {
|
|
238
|
-
status: "open",
|
|
241
|
+
status: blocked ? "blocked" : "open",
|
|
239
242
|
current_gate: "QA",
|
|
240
|
-
blocking_reason: "qa_revise_required",
|
|
243
|
+
blocking_reason: blocked ? "qa_blocked" : "qa_revise_required",
|
|
241
244
|
missing_approval: "none",
|
|
242
|
-
allowed:
|
|
245
|
+
allowed: blocked
|
|
246
|
+
? ["route the blocking QA findings to their authoritative owner", "record the next permitted remediation or upstream decision", "rerun QA only after the blocker is resolved"]
|
|
247
|
+
: ["revise the implementation against the QA findings", "refresh CD+Tests and mandatory reviews", "rerun QA with refreshed evidence"],
|
|
243
248
|
forbidden: ["request QA approval", "request UAT approval", "release", "claim delivery readiness"],
|
|
244
|
-
next_allowed_action:
|
|
249
|
+
next_allowed_action: blocked
|
|
250
|
+
? "Resolve or route the blocking QA findings through their authoritative owner, then rerun the required delivery steps. Do not request Approval: QA from a block report."
|
|
251
|
+
: "Resolve the QA revise findings, refresh CD+Tests and reviews, then rerun QA. Do not request Approval: QA from a revise report.",
|
|
245
252
|
};
|
|
246
253
|
}
|
|
247
254
|
|
|
@@ -349,6 +349,91 @@ export function renderOperationalStatusCard(statusCard, {
|
|
|
349
349
|
});
|
|
350
350
|
}
|
|
351
351
|
|
|
352
|
+
export function renderTaskTargetOrientation(resolution, {
|
|
353
|
+
registry,
|
|
354
|
+
requestedLocale,
|
|
355
|
+
} = {}) {
|
|
356
|
+
if (!plainObject(resolution)) return null;
|
|
357
|
+
|
|
358
|
+
const resolutionState = String(resolution.resolution_state ?? "").trim();
|
|
359
|
+
const reasonCode = String(resolution.reason_code ?? "").trim();
|
|
360
|
+
const primaryTarget = String(resolution.primary_target ?? "").trim();
|
|
361
|
+
const governanceTarget = String(resolution.governance_target ?? "").trim();
|
|
362
|
+
const workingDirectory = String(resolution.working_directory ?? "").trim();
|
|
363
|
+
const nextAction = String(resolution.next_action ?? "").trim();
|
|
364
|
+
if (typeof resolution.target_changed !== "boolean") return null;
|
|
365
|
+
const targetChanged = resolution.target_changed === true;
|
|
366
|
+
const evidenceSources = Array.isArray(resolution.evidence_sources)
|
|
367
|
+
? resolution.evidence_sources.map((item) => String(item ?? "").trim()).filter(Boolean)
|
|
368
|
+
: null;
|
|
369
|
+
|
|
370
|
+
const resolvedReasons = new Set(["explicit_target", "continued_target"]);
|
|
371
|
+
const unresolvedReasons = new Set([
|
|
372
|
+
"multiple_plausible_targets",
|
|
373
|
+
"target_content_mismatch",
|
|
374
|
+
"target_unavailable",
|
|
375
|
+
"no_reliable_target",
|
|
376
|
+
]);
|
|
377
|
+
|
|
378
|
+
if (!["resolved", "unresolved"].includes(resolutionState)) return null;
|
|
379
|
+
if (!workingDirectory || evidenceSources === null) return null;
|
|
380
|
+
if (resolutionState === "resolved") {
|
|
381
|
+
if (!resolvedReasons.has(reasonCode) || !primaryTarget || nextAction) return null;
|
|
382
|
+
} else if (!unresolvedReasons.has(reasonCode) || primaryTarget || governanceTarget || !nextAction || targetChanged) {
|
|
383
|
+
return null;
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
let locale;
|
|
387
|
+
try {
|
|
388
|
+
locale = resolvePresentationLocale(registry, requestedLocale);
|
|
389
|
+
} catch {
|
|
390
|
+
return null;
|
|
391
|
+
}
|
|
392
|
+
if (!locale) return null;
|
|
393
|
+
|
|
394
|
+
const pack = localePack(registry, locale);
|
|
395
|
+
const labels = pack?.taskTargetResolution;
|
|
396
|
+
if (!plainObject(labels) || !plainObject(labels.reasonCodes)) return null;
|
|
397
|
+
const reason = labels.reasonCodes[reasonCode];
|
|
398
|
+
if (!reason) return null;
|
|
399
|
+
|
|
400
|
+
const rows = resolutionState === "resolved"
|
|
401
|
+
? [
|
|
402
|
+
[labels.state, labels.resolved],
|
|
403
|
+
[labels.primaryTarget, primaryTarget],
|
|
404
|
+
[labels.governanceTarget, governanceTarget || labels.none],
|
|
405
|
+
[labels.evidenceSources, evidenceSources.join("; ") || labels.none],
|
|
406
|
+
[labels.workingDirectory, workingDirectory],
|
|
407
|
+
[labels.reason, reason],
|
|
408
|
+
...(targetChanged ? [[labels.targetChanged, labels.yes]] : []),
|
|
409
|
+
]
|
|
410
|
+
: [
|
|
411
|
+
[labels.state, labels.unresolved],
|
|
412
|
+
[labels.reason, reason],
|
|
413
|
+
[labels.evidenceSources, evidenceSources.join("; ") || labels.none],
|
|
414
|
+
[labels.workingDirectory, workingDirectory],
|
|
415
|
+
[labels.nextAction, nextAction],
|
|
416
|
+
];
|
|
417
|
+
|
|
418
|
+
const markdown = [
|
|
419
|
+
`## ${labels.title}`,
|
|
420
|
+
"",
|
|
421
|
+
`| ${labels.field} | ${labels.value} |`,
|
|
422
|
+
"|---|---|",
|
|
423
|
+
...rows.map(([label, value]) => `| ${markdownCell(label)} | ${markdownCell(value)} |`),
|
|
424
|
+
].join("\n");
|
|
425
|
+
|
|
426
|
+
return Object.freeze({
|
|
427
|
+
schema_version: "1",
|
|
428
|
+
semantic_block: "task_target_orientation",
|
|
429
|
+
presentation_language: locale,
|
|
430
|
+
resolution_state: resolutionState,
|
|
431
|
+
reason_code: reasonCode,
|
|
432
|
+
markdown,
|
|
433
|
+
authorizes: false,
|
|
434
|
+
});
|
|
435
|
+
}
|
|
436
|
+
|
|
352
437
|
export function renderScopeClassificationCard(classification, {
|
|
353
438
|
registry,
|
|
354
439
|
requestedLocale,
|
|
@@ -1,67 +1,6 @@
|
|
|
1
1
|
{
|
|
2
|
-
"name": "
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"type": "module"
|
|
6
|
-
"files": [
|
|
7
|
-
"bin",
|
|
8
|
-
"lib",
|
|
9
|
-
"generated",
|
|
10
|
-
"opencode-plugin.js",
|
|
11
|
-
"README.md",
|
|
12
|
-
"NOTICE"
|
|
13
|
-
],
|
|
14
|
-
"exports": {
|
|
15
|
-
".": "./opencode-plugin.js",
|
|
16
|
-
"./cli": "./bin/create-agdf.js",
|
|
17
|
-
"./opencode-plugin": "./opencode-plugin.js"
|
|
18
|
-
},
|
|
19
|
-
"bin": {
|
|
20
|
-
"create-agdf": "./bin/create-agdf.js"
|
|
21
|
-
},
|
|
22
|
-
"scripts": {
|
|
23
|
-
"sync-package-assets": "node ./scripts/sync-package-assets.js",
|
|
24
|
-
"test:delivery-path-search": "node ./scripts/delivery-path-search-test.js",
|
|
25
|
-
"test:delivery-path-search-unit": "node ./scripts/delivery-path-search-unit-test.js",
|
|
26
|
-
"test:delivery-path-search-generator": "node ./scripts/delivery-path-search-generator-test.js",
|
|
27
|
-
"test:opencode-hardening": "node ./scripts/opencode-hardening-test.js",
|
|
28
|
-
"test:cli-modularization": "node ./scripts/cli-modularization-test.js",
|
|
29
|
-
"test:local-validator": "node ./scripts/local-validator-test.js",
|
|
30
|
-
"test:local-marketplace": "node ./scripts/local-marketplace-test.js",
|
|
31
|
-
"test:package-contents": "node ./scripts/package-contents-test.js",
|
|
32
|
-
"test:package-build": "node ./scripts/package-build-test.js",
|
|
33
|
-
"test:lifecycle": "node ./scripts/lifecycle-test.js",
|
|
34
|
-
"test:control-state": "node ./scripts/control-state-test.js",
|
|
35
|
-
"test:interaction-presentation": "node ./scripts/interaction-presentation-test.js",
|
|
36
|
-
"test:verified-change": "node ./scripts/verified-change-test.js",
|
|
37
|
-
"test:runtime-integrity-layout": "node ./scripts/runtime-integrity-layout-test.js",
|
|
38
|
-
"test:runtime-integrity-negative": "node ./scripts/runtime-integrity-negative-test.js",
|
|
39
|
-
"test:skill-evals": "node ./scripts/skill-evals-test.js",
|
|
40
|
-
"eval:skills": "node ./scripts/run-skill-evals.js",
|
|
41
|
-
"eval:skills:record": "node ./scripts/record-skill-evals.js",
|
|
42
|
-
"test:release-bootstrap": "node ./scripts/release-bootstrap-smoke-test.js",
|
|
43
|
-
"test:routing": "npm run sync-package-assets && node ./scripts/test-routing.js",
|
|
44
|
-
"smoke-test": "npm run sync-package-assets && npm run test:cli-modularization && npm run test:local-validator && npm run test:local-marketplace && npm run test:package-build && npm run test:package-contents && npm run test:lifecycle && npm run test:control-state && npm run test:interaction-presentation && npm run test:verified-change && npm run test:runtime-integrity-layout && npm run test:runtime-integrity-negative && npm run test:skill-evals && npm run eval:skills && npm run test:delivery-path-search && npm run test:delivery-path-search-unit && npm run test:delivery-path-search-generator && npm run test:opencode-hardening && node ./scripts/smoke-test.js && node ./scripts/test-routing.js",
|
|
45
|
-
"prepack": "npm run sync-package-assets"
|
|
46
|
-
},
|
|
47
|
-
"keywords": [
|
|
48
|
-
"agdf",
|
|
49
|
-
"copilot",
|
|
50
|
-
"claude-code",
|
|
51
|
-
"codex",
|
|
52
|
-
"opencode",
|
|
53
|
-
"control",
|
|
54
|
-
"scaffold",
|
|
55
|
-
"bootstrap"
|
|
56
|
-
],
|
|
57
|
-
"license": "Apache-2.0",
|
|
58
|
-
"publishConfig": {
|
|
59
|
-
"access": "public"
|
|
60
|
-
},
|
|
61
|
-
"repository": {
|
|
62
|
-
"type": "git",
|
|
63
|
-
"url": "git+https://github.com/ArndtGold/ai-native-governance-delivery-framework.git",
|
|
64
|
-
"directory": "create-agdf"
|
|
65
|
-
},
|
|
66
|
-
"homepage": "https://github.com/ArndtGold/ai-native-governance-delivery-framework/tree/main/create-agdf"
|
|
2
|
+
"name": "@agdf/local-validator-runtime",
|
|
3
|
+
"version": "0.13.0",
|
|
4
|
+
"private": true,
|
|
5
|
+
"type": "module"
|
|
67
6
|
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"schema_version": "1",
|
|
3
3
|
"generated": true,
|
|
4
4
|
"source": "create-agdf/cli",
|
|
5
|
-
"version": "0.
|
|
5
|
+
"version": "0.13.0",
|
|
6
6
|
"entrypoint": "create-agdf/bin/agdf-validator.js",
|
|
7
|
-
"digest": "
|
|
7
|
+
"digest": "54f70b2bea2ebe917ba234c860c7924b5e50a807950f3a3c74edaef1ff54c03c"
|
|
8
8
|
}
|