orchestrator-workflow 0.28.0 → 0.30.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/CHANGELOG.md +109 -0
- package/INSTALL-AGENT.md +85 -58
- package/README.md +164 -44
- package/assets/agents/implementer.md +64 -2
- package/assets/agents/reviewer.md +48 -1
- package/assets/agents/task-slicer.md +35 -6
- package/assets/agents-md-section.md +25 -4
- package/assets/skill/SKILL.md +189 -28
- package/assets/templates/00-goal.md +38 -0
- package/assets/templates/02-tasks.md +32 -1
- package/assets/templates/03-decisions.md +10 -3
- package/assets/templates/04-implementation-summary.md +44 -0
- package/dist/cli-apply.d.ts +2 -0
- package/dist/cli-inputs.d.ts +13 -17
- package/dist/cli-inputs.js +69 -54
- package/dist/cli.js +110 -6
- package/dist/codex.d.ts +8 -0
- package/dist/codex.js +52 -0
- package/dist/doctor.d.ts +6 -0
- package/dist/doctor.js +29 -5
- package/dist/index.d.ts +3 -0
- package/dist/index.js +2 -0
- package/dist/init.d.ts +34 -7
- package/dist/init.js +128 -28
- package/dist/operator-manifest.d.ts +5 -1
- package/dist/operator-manifest.js +33 -1
- package/dist/routing-state.d.ts +60 -0
- package/dist/routing-state.js +277 -0
- package/dist/routing.d.ts +103 -0
- package/dist/routing.js +254 -0
- package/dist/uninstall.js +2 -0
- package/package.json +2 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,115 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.30.0] - 2026-09-06
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- Decision records now use stable IDs and retain trigger/evidence, decision,
|
|
15
|
+
accountable authority/source, consequences, and supersession links. The
|
|
16
|
+
reviewer recommendation, orchestrator acceptance, and operator-only
|
|
17
|
+
critical-waiver authority are explicit and remain separate; Markdown
|
|
18
|
+
records evidence of authority rather than creating it.
|
|
19
|
+
|
|
20
|
+
- Acceptance-baseline/v1 is an explicitly adopted, creation-time run contract:
|
|
21
|
+
canonical baseline and criterion records are propagated unchanged into each
|
|
22
|
+
delegated task, and coverage references remain links to concrete result
|
|
23
|
+
artifacts. Implementer returns include the delegated baseline identity and
|
|
24
|
+
a per-criterion evidence-reference index; required empty references remain
|
|
25
|
+
unresolved. All input/output blocks select the recorded contract explicitly,
|
|
26
|
+
preserving original string-list contracts for established older runs.
|
|
27
|
+
Existing runs are not migrated or classified from missing fields.
|
|
28
|
+
|
|
29
|
+
### Changed
|
|
30
|
+
|
|
31
|
+
- After independent review, a narrowly scoped docs-only closing delta may be
|
|
32
|
+
accepted without another reviewer round when the entire unreviewed delta is limited
|
|
33
|
+
to explanatory documentation, comments, or citations. Source/test edits and
|
|
34
|
+
semantic changes to executable commands, configuration, policy,
|
|
35
|
+
instructions, or behavior remain ineligible; the option applies only to
|
|
36
|
+
low/medium documentation or maintainability findings, never high/critical
|
|
37
|
+
or other ineligible findings. The recorded `05-review-findings.md` row
|
|
38
|
+
preserves its Severity/Decision headers and records Decision `accepted`.
|
|
39
|
+
Anchored by the analysis in
|
|
40
|
+
`lava-ice-logs/2026-09-05/ow-kit-effort-analysis.md` section 7(iii).
|
|
41
|
+
|
|
42
|
+
- Task-slicing guidance now requires briefs to enumerate every file and doc
|
|
43
|
+
site that references an identifier, config value, build context, or
|
|
44
|
+
documented command the task will change, using annotated `relevant_files`
|
|
45
|
+
and `relevant_docs` entries for sites outside the edit set. Anchored by
|
|
46
|
+
thin n=3 evidence in
|
|
47
|
+
`lava-ice-logs/2026-09-05/ow-kit-effort-analysis.md` sections 5(b) and
|
|
48
|
+
7(v).
|
|
49
|
+
|
|
50
|
+
- On any round after a task's first, the orchestrator's briefing names
|
|
51
|
+
every mutation probe named in an earlier round of this task, and the
|
|
52
|
+
implementer replays each one, not only the round's new probes, before
|
|
53
|
+
the next reviewer spawn, reporting each replayed probe in
|
|
54
|
+
`mutation_probes` with a new `replayed` sub-field. A replayed probe
|
|
55
|
+
whose mutant now survives or can no longer be applied is a regression
|
|
56
|
+
signal, reported as such and resolved before the next reviewer spawn.
|
|
57
|
+
`04-implementation-summary.md` gained a Mutation Probes subsection
|
|
58
|
+
under Test Evidence to hold this evidence across rounds. The
|
|
59
|
+
orchestrator's reviewer briefing names the replayed probes the
|
|
60
|
+
implementer reports as killed, together with their `mutant` and
|
|
61
|
+
`verified_applied_via` values, so the reviewer may skip re-running
|
|
62
|
+
those; the reviewer output contract is unchanged. Anchored by the
|
|
63
|
+
analysis in `lava-ice-logs/2026-09-05/ow-kit-effort-analysis.md`
|
|
64
|
+
section 7(ii).
|
|
65
|
+
|
|
66
|
+
- The installed implementer and reviewer prompts now carry a checklist item
|
|
67
|
+
for any diff that adds or changes a GitHub Actions `run:` step: replay it
|
|
68
|
+
locally under the shell the step actually runs (`bash --noprofile --norc
|
|
69
|
+
-eo pipefail` when `shell: bash` is set on the step or via
|
|
70
|
+
`defaults.run.shell`, `bash -e` otherwise on Linux and macOS runners;
|
|
71
|
+
Windows runners default to pwsh) before treating it as tested, with the
|
|
72
|
+
expected-success and the expected-failure inputs, replaying a job's steps
|
|
73
|
+
in their committed order, and guarding a step that expects a non-zero
|
|
74
|
+
command inside an `if` or a `set +e`/`set -e` block. The reviewer replays
|
|
75
|
+
in a scratch copy outside the reviewed working tree, keeping the replay
|
|
76
|
+
compatible with its read-only Bash rule. The reviewer's `reproduction`
|
|
77
|
+
field now names this replay as a second, explicitly non-probabilistic
|
|
78
|
+
trigger alongside empirical/probabilistic evidence, with `sample_size:
|
|
79
|
+
not_applicable` allowed. SKILL.md points to the installed implementer
|
|
80
|
+
prompt for the rule. Anchored by the analysis in
|
|
81
|
+
`lava-ice-logs/2026-09-05/ow-kit-effort-analysis.md` section 7(vi).
|
|
82
|
+
|
|
83
|
+
- The installed reviewer prompt now carries a checklist item for identifier
|
|
84
|
+
drift: after a change that deletes or renames an exported identifier,
|
|
85
|
+
type, config key or file, comments, README, CHANGELOG `[Unreleased]`
|
|
86
|
+
prose, and doc comments that still describe the old name as current are
|
|
87
|
+
drift and are findings. Names the check to run, when connected, as a
|
|
88
|
+
drift check over the base..head range; the mechanical guard is
|
|
89
|
+
`agent-primitives drift` (see the agent-primitives package). Anchored by
|
|
90
|
+
the analysis in `lava-ice-logs/2026-09-05/ow-kit-effort-analysis.md`
|
|
91
|
+
section 7(iv).
|
|
92
|
+
|
|
93
|
+
## [0.29.0] - 2026-09-05
|
|
94
|
+
|
|
95
|
+
### Added
|
|
96
|
+
|
|
97
|
+
- Native Codex custom agents under `.codex/agents/`, including profile-scoped
|
|
98
|
+
roles and optional effort-tier variants with explicit model and effort.
|
|
99
|
+
The initial routing uses Astra for review/advice and implementation
|
|
100
|
+
escalation, Sol for discovery/slicing, Terra for regular implementation,
|
|
101
|
+
and Luna for narrowly scoped low-tier work.
|
|
102
|
+
- Harness-specific role/tier routing overrides through `--routing <file>`
|
|
103
|
+
on `init`, `setup`, and `apply`, persisted alongside the legacy `models`
|
|
104
|
+
configuration. Optional `--codex-catalog <file>` checks selected Codex
|
|
105
|
+
model/effort pairs against a supplied catalog before installation writes.
|
|
106
|
+
|
|
107
|
+
### Changed
|
|
108
|
+
|
|
109
|
+
- Agent-led installation and deliberate model refresh are the recommended
|
|
110
|
+
entry point. The agent inspects capabilities and existing preferences,
|
|
111
|
+
applies authorized scoped changes through the CLI, and reports verification
|
|
112
|
+
gaps. The CLI remains available as the reproducible installation backend.
|
|
113
|
+
- Codex workflow guidance uses native role delegation when supported, with an
|
|
114
|
+
explicit inline fallback for environments without native subagents. Normal
|
|
115
|
+
reinstallation preserves recorded routing; model changes use explicit
|
|
116
|
+
overrides or documented operator synchronization.
|
|
117
|
+
|
|
118
|
+
|
|
10
119
|
## [0.28.0] - 2026-09-04
|
|
11
120
|
|
|
12
121
|
### Added
|
package/INSTALL-AGENT.md
CHANGED
|
@@ -17,21 +17,23 @@ which is mutable. For a stable audit, pin the URL to a commit SHA instead
|
|
|
17
17
|
|
|
18
18
|
## What the linked instructions do
|
|
19
19
|
|
|
20
|
-
1. **
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
If the installer reports conflicts with locally edited files, the
|
|
34
|
-
|
|
20
|
+
1. **Inspect the repository and installed state**: detect harness configs,
|
|
21
|
+
read an existing workflow manifest, and inspect native model capabilities
|
|
22
|
+
where the harness provides them. Existing choices and authorization are
|
|
23
|
+
evidence; the agent does not make you answer them again.
|
|
24
|
+
2. **Prepare a concrete configuration diff**: selected harnesses, profile,
|
|
25
|
+
tier variants, and the complete per-harness role/tier routing that will be
|
|
26
|
+
persisted. Existing routing leaves remain exact unless you asked to change
|
|
27
|
+
them. The agent records the prior routing in its handoff as the rollback
|
|
28
|
+
input and never treats "latest" or "newer" as a reason to change models.
|
|
29
|
+
3. **Ask only when needed**, for a material preference, missing authority, or
|
|
30
|
+
a conflict that changes the result. Then run the non-interactive CLI with
|
|
31
|
+
`--routing <json-file>` for the reviewed deep patch and, when available,
|
|
32
|
+
`--codex-catalog <json-file>` for deterministic Codex capability checking.
|
|
33
|
+
If the installer reports conflicts with locally edited files, inspect the
|
|
34
|
+
concrete files and reuse any overwrite authority already granted for that
|
|
35
|
+
scope. Ask before a `--force` re-run only when authority or conflict scope
|
|
36
|
+
remains unresolved. **The operator
|
|
35
37
|
path**: when an operator has already run `orchestrator-workflow setup`
|
|
36
38
|
on this machine (an operator manifest exists at
|
|
37
39
|
`<operator home>/manifest.json`, where the operator home is
|
|
@@ -48,9 +50,12 @@ which is mutable. For a stable audit, pin the URL to a commit SHA instead
|
|
|
48
50
|
following the byte-precise rules in step 4 below. This manual path
|
|
49
51
|
covers `init` only; there is no manual equivalent for `apply` or
|
|
50
52
|
`adopt`, both of which require the installed CLI.
|
|
51
|
-
5. **
|
|
52
|
-
|
|
53
|
-
|
|
53
|
+
5. **Verify and report back**: describe the applied routing, prior routing
|
|
54
|
+
rollback input, installed profile and variants, and the supported dispatch
|
|
55
|
+
path (named selection, explicit model/effort spawn from the installed TOML,
|
|
56
|
+
or inline/sequential fallback). Include checks run, unknown capability or
|
|
57
|
+
entitlement gaps, and conflicts left in place. The workflow never opens a
|
|
58
|
+
GUI or changes fleet or global harness configuration.
|
|
54
59
|
|
|
55
60
|
### Write surface
|
|
56
61
|
|
|
@@ -77,24 +82,26 @@ The install creates or touches only these paths:
|
|
|
77
82
|
is created with a short heading when absent (Claude Code harness only)
|
|
78
83
|
- `.claude/skills/orchestrator-workflow/SKILL.md` and
|
|
79
84
|
`.claude/agents/{explorer,task-slicer,implementer,reviewer,advisor}.md` (Claude Code)
|
|
80
|
-
- `.agents/skills/orchestrator-workflow/SKILL.md`
|
|
85
|
+
- `.agents/skills/orchestrator-workflow/SKILL.md` and
|
|
86
|
+
`.codex/agents/{explorer,task-slicer,implementer,reviewer,advisor}.toml` (Codex)
|
|
81
87
|
- `.opencode/skills/orchestrator-workflow/SKILL.md` and
|
|
82
88
|
`.opencode/agents/{explorer,task-slicer,implementer,reviewer,advisor}.md` (opencode)
|
|
83
89
|
|
|
84
90
|
The per-role agent files above are the `full` profile (the default); the
|
|
85
|
-
`minimal` profile writes only the `implementer` and `reviewer` files for
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
what it gets. When `--tiers` is on, each installed Claude Code and opencode role
|
|
91
|
+
`minimal` profile writes only the `implementer` and `reviewer` files for all
|
|
92
|
+
three harnesses and skips `task-slicer`, `explorer`, and `advisor` entirely.
|
|
93
|
+
When `--tiers` is on, each installed role
|
|
89
94
|
additionally gets one subagent file per non-default effort tier, named
|
|
90
|
-
`<role>-<tier>.md`
|
|
91
|
-
|
|
95
|
+
`<role>-<tier>.md` for Claude Code/opencode or `<role>-<tier>.toml` for Codex
|
|
96
|
+
(never a file for the role's own default tier, which would collide with the
|
|
97
|
+
plain role file); see the package README's
|
|
92
98
|
"Effort tiers" section for the full role/tier table and the per-harness
|
|
93
99
|
frontmatter shape. `--tiers` is off by default and has no interactive
|
|
94
100
|
prompt equivalent in the manual fallback below (nor does its negation,
|
|
95
101
|
`--no-tiers`): the automated installer is the only path that renders
|
|
96
102
|
tier-variant files; a manual scaffold (step 4) does not cover them.
|
|
97
|
-
|
|
103
|
+
The manifest records the complete effective routing map, including exact
|
|
104
|
+
Codex model and effort selections. Nothing else in the repository is modified. Locally edited files are
|
|
98
105
|
reported as conflicts and left alone, never overwritten silently; the
|
|
99
106
|
exceptions are the kit-owned surfaces: `.ai/workflow/manifest.json` (the
|
|
100
107
|
kit's state file, rewritten whenever the applied state changes) and the
|
|
@@ -103,52 +110,64 @@ is fully reversible: `npx orchestrator-workflow uninstall` removes exactly
|
|
|
103
110
|
this write surface again, keeping run history under `.ai/runs/` and any
|
|
104
111
|
locally edited files. Network access is limited to the npm registry (for
|
|
105
112
|
`npx`) and, in the manual fallback, this repository on github.com /
|
|
106
|
-
raw.githubusercontent.com.
|
|
113
|
+
raw.githubusercontent.com. Native harness capability inspection is read-only;
|
|
114
|
+
the workflow does not open a GUI or mutate global or fleet configuration.
|
|
107
115
|
|
|
108
116
|
## Instructions for the agent
|
|
109
117
|
|
|
110
118
|
You are a coding agent that was pointed at this file. Execute the following
|
|
111
119
|
steps in the repository you were asked to install into.
|
|
112
120
|
|
|
113
|
-
1.
|
|
114
|
-
`CLAUDE.md` (Claude Code), `.opencode/`,
|
|
115
|
-
|
|
116
|
-
|
|
121
|
+
1. Inspect the target before proposing changes:
|
|
122
|
+
- Detect `.claude/` or `CLAUDE.md` (Claude Code), `.opencode/`,
|
|
123
|
+
`opencode.json` or `opencode.jsonc` (opencode), and `.agents/` or
|
|
124
|
+
`.codex/` (Codex).
|
|
125
|
+
- Read `.ai/workflow/manifest.json` when present. Treat its harnesses,
|
|
126
|
+
profile, tiers, legacy models, and exact routing as the reinstall
|
|
127
|
+
baseline. Preserve them unless the operator already requested a change.
|
|
128
|
+
- Inspect native model capabilities when the installed harness exposes a
|
|
129
|
+
read-only command. For Codex, a refreshed `codex debug models` catalog
|
|
130
|
+
can be supplied to the installer with `--codex-catalog`; a bundled-only
|
|
131
|
+
view does not prove account entitlement. Do not invent a minimum harness
|
|
132
|
+
version. If the catalog or entitlement is unavailable offline, report
|
|
133
|
+
that gap instead of claiming validation.
|
|
134
|
+
- Check for an operator manifest as described under "Operator path" below.
|
|
135
|
+
Existing authorization and preferences remain valid. Do not open a GUI
|
|
136
|
+
or change global or fleet configuration.
|
|
117
137
|
|
|
118
|
-
2.
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
when the chosen profile does not install that role.
|
|
129
|
-
- Whether to also render effort-tier subagent variants (`--tiers`)?
|
|
130
|
-
Default: off. There is no per-tier model question: tier models are
|
|
131
|
-
chosen automatically from the tier (see the package README's "Effort
|
|
132
|
-
tiers" section for the role/tier table and the model-class mapping).
|
|
138
|
+
2. Prepare a concrete, reviewable configuration diff. Infer the harness set
|
|
139
|
+
from installed state and detected configs; infer the existing profile,
|
|
140
|
+
tiers, and routing from the manifests. Use `full` for a fresh install
|
|
141
|
+
unless the repository clearly calls for `minimal`. Build a routing JSON
|
|
142
|
+
deep patch only for leaves that need to change. Its shape is
|
|
143
|
+
`harness -> role -> tier -> {model, effort}`; the role's default-tier key
|
|
144
|
+
configures the unsuffixed file. Preserve every omitted leaf. Keep the prior
|
|
145
|
+
routing in the handoff as the rollback input. Never upgrade a model merely
|
|
146
|
+
because a newer one exists, and ask the operator only when a material
|
|
147
|
+
preference, authority boundary, or conflict remains unresolved.
|
|
133
148
|
|
|
134
|
-
3. Run the non-interactive installer with the
|
|
149
|
+
3. Run the non-interactive installer with the reviewed configuration:
|
|
135
150
|
|
|
136
151
|
```bash
|
|
137
152
|
npx orchestrator-workflow init --yes \
|
|
138
153
|
--harness <claude,codex,opencode> \
|
|
139
154
|
--profile <minimal|full> \
|
|
140
|
-
--models "explorer=<model>,task-slicer=<model>,implementer=<model>,reviewer=<model>,advisor=<model>" \
|
|
155
|
+
[--models "explorer=<model>,task-slicer=<model>,implementer=<model>,reviewer=<model>,advisor=<model>"] \
|
|
156
|
+
[--routing <routing.json>] \
|
|
157
|
+
[--codex-catalog <codex-catalog.json>] \
|
|
141
158
|
[--tiers | --no-tiers]
|
|
142
159
|
```
|
|
143
160
|
|
|
144
161
|
Omit `--profile` to keep `full` (or, on a re-run, whatever profile was
|
|
145
|
-
installed previously)
|
|
146
|
-
|
|
162
|
+
installed previously). `--models` is a backward-compatible input for
|
|
163
|
+
Claude Code and opencode only; never use it to configure Codex. `--routing`
|
|
164
|
+
is the highest-precedence deep patch. Add `--tiers` only when the operator asked for tier
|
|
147
165
|
variants; add `--no-tiers` only when the operator explicitly wants them
|
|
148
166
|
turned off on a re-run that previously had them on; omit both to keep
|
|
149
167
|
tiers off on a fresh install, or whatever value was previously installed
|
|
150
|
-
on a re-run. If the command reports conflicts,
|
|
151
|
-
and ask before
|
|
168
|
+
on a re-run. If the command reports conflicts, inspect the concrete files,
|
|
169
|
+
reuse prior overwrite authority for the same scope, and ask before
|
|
170
|
+
`--force` only when authority or scope remains unresolved.
|
|
152
171
|
|
|
153
172
|
**Operator path**: before running `init`, check whether an operator
|
|
154
173
|
manifest already exists on this machine, at
|
|
@@ -166,9 +185,13 @@ steps in the repository you were asked to install into.
|
|
|
166
185
|
4. Only if npx or the registry is unavailable, scaffold manually from
|
|
167
186
|
https://github.com/LanNguyenSi/agent-dx/tree/master/packages/orchestrator-workflow/assets.
|
|
168
187
|
This manual path does not cover `--tiers`: it never renders
|
|
169
|
-
|
|
188
|
+
tier variant files, regardless of what the operator asked
|
|
170
189
|
for in step 2; tell the operator tier variants require the automated
|
|
171
|
-
installer (step 3).
|
|
190
|
+
installer (step 3). It also cannot safely reproduce native Codex TOML from
|
|
191
|
+
the Markdown assets without duplicating the installer's serializer. For a
|
|
192
|
+
Codex manual fallback, install the shared skill only and state that roles
|
|
193
|
+
must run inline and sequentially until the automated CLI can generate
|
|
194
|
+
`.codex/agents/*.toml`.
|
|
172
195
|
|
|
173
196
|
- `.ai/workflow/templates/00-goal.md` through `06-handoff.md` from
|
|
174
197
|
`assets/templates/`, unchanged.
|
|
@@ -197,6 +220,8 @@ steps in the repository you were asked to install into.
|
|
|
197
220
|
directly after the `effort:` line. Ensure `CLAUDE.md` exists and
|
|
198
221
|
contains a line `@AGENTS.md`.
|
|
199
222
|
- Codex: `.agents/skills/orchestrator-workflow/SKILL.md`, same skill file.
|
|
223
|
+
Do not hand-author `.codex/agents/*.toml`; report the native-agent
|
|
224
|
+
limitation above and use the inline/sequential role fallback.
|
|
200
225
|
- opencode: `.opencode/skills/orchestrator-workflow/SKILL.md` from
|
|
201
226
|
`assets/skill/SKILL.md`, unchanged.
|
|
202
227
|
For each role in the chosen profile (same set as Claude Code above),
|
|
@@ -237,7 +262,7 @@ steps in the repository you were asked to install into.
|
|
|
237
262
|
---
|
|
238
263
|
```
|
|
239
264
|
- `.ai/workflow/manifest.json`, exactly this shape (harnesses MUST be an
|
|
240
|
-
array, `profile` is `"minimal"` or `"full"`, models keyed by role,
|
|
265
|
+
array, `profile` is `"minimal"` or `"full"`, legacy models keyed by role,
|
|
241
266
|
version = the kit version you installed, read from this kit's own
|
|
242
267
|
`packages/orchestrator-workflow/package.json` `version` field):
|
|
243
268
|
|
|
@@ -270,6 +295,8 @@ steps in the repository you were asked to install into.
|
|
|
270
295
|
run then treats existing kit files conservatively and reports conflicts
|
|
271
296
|
rather than overwriting them.
|
|
272
297
|
|
|
273
|
-
5.
|
|
274
|
-
|
|
275
|
-
|
|
298
|
+
5. Verify the expected files and manifest entries, then report back: which
|
|
299
|
+
harnesses and roles were installed; the exact model and effort per routed
|
|
300
|
+
role/tier; whether variants were rendered; the prior routing to use for a
|
|
301
|
+
rollback; the commands actually run; any offline capability or entitlement
|
|
302
|
+
gap; and conflicts left in place.
|