open-local-audit 0.62.0 → 0.64.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 +12 -0
- package/README.md +22 -0
- package/dist/batch.d.ts +1 -0
- package/dist/batch.js +9 -3
- package/dist/batch.js.map +1 -1
- package/dist/cli.js +64 -10
- package/dist/cli.js.map +1 -1
- package/dist/discovery-runner.d.ts +1 -0
- package/dist/discovery-runner.js +9 -7
- package/dist/discovery-runner.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/output.d.ts +1 -0
- package/dist/output.js +20 -3
- package/dist/output.js.map +1 -1
- package/dist/shortlist-runner.js +4 -3
- package/dist/shortlist-runner.js.map +1 -1
- package/dist/workflow-output.d.ts +5 -0
- package/dist/workflow-output.js +70 -0
- package/dist/workflow-output.js.map +1 -0
- package/dist/workflow-paths.d.ts +19 -0
- package/dist/workflow-paths.js +111 -0
- package/dist/workflow-paths.js.map +1 -0
- package/dist/workflow-plan.d.ts +47 -0
- package/dist/workflow-plan.js +186 -0
- package/dist/workflow-plan.js.map +1 -0
- package/dist/workflow-preflight.d.ts +43 -0
- package/dist/workflow-preflight.js +214 -0
- package/dist/workflow-preflight.js.map +1 -0
- package/dist/workflow.js +6 -27
- package/dist/workflow.js.map +1 -1
- package/docs/architecture/workflow-command.md +106 -0
- package/docs/architecture/workflow-plan.md +229 -0
- package/docs/architecture/workflow-preflight.md +133 -0
- package/package.json +5 -2
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
# Workflow Plan
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Workflow plan explains what a version `1` workflow would run, in which order, with which effective settings, and which local artifacts it would read or write. It includes the existing readiness checks without running discovery or changing workflow outputs.
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
open-local-audit workflow --config workflow.json --plan
|
|
9
|
+
open-local-audit workflow --config workflow.json --plan --format json
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
`--check` answers whether a workflow is ready to run. `--plan` includes that readiness result and adds an explainable execution plan. The two options are mutually exclusive. `--format terminal|json` is accepted with either option and remains invalid for normal workflow execution.
|
|
13
|
+
|
|
14
|
+
## Goals
|
|
15
|
+
|
|
16
|
+
- Show the successful-path workflow steps and their dependencies.
|
|
17
|
+
- Explain configured, conditional, and disabled steps.
|
|
18
|
+
- Show sanitized effective settings and deterministic local artifact paths.
|
|
19
|
+
- Identify steps that can call Google Places or audited websites.
|
|
20
|
+
- Report configuration-derived work limits without presenting them as predicted usage or currency cost.
|
|
21
|
+
- Preserve the existing preflight and workflow execution contracts.
|
|
22
|
+
|
|
23
|
+
## Non-Goals
|
|
24
|
+
|
|
25
|
+
Workflow plan does not:
|
|
26
|
+
|
|
27
|
+
- call Google Places, audited websites, or any other network service;
|
|
28
|
+
- create, replace, or delete files or directories;
|
|
29
|
+
- parse lead rows to predict actual candidate, shortlist, or package counts;
|
|
30
|
+
- estimate Google billing, elapsed time, or report success;
|
|
31
|
+
- expose a Google query, API key, environment value, CSV contents, or raw configuration;
|
|
32
|
+
- reserve output paths or remove the need for write-time containment checks;
|
|
33
|
+
- resume, retry, or execute any workflow step.
|
|
34
|
+
|
|
35
|
+
## Plan Model
|
|
36
|
+
|
|
37
|
+
The plan lists these stable step identifiers:
|
|
38
|
+
|
|
39
|
+
1. `discovery`
|
|
40
|
+
2. `shortlist`
|
|
41
|
+
3. `review`
|
|
42
|
+
4. `packaging`
|
|
43
|
+
5. `summary`
|
|
44
|
+
|
|
45
|
+
Each step has one of these states:
|
|
46
|
+
|
|
47
|
+
- `will-run`: the step is configured on the normal successful execution path;
|
|
48
|
+
- `conditional`: the step is configured but also depends on runtime results;
|
|
49
|
+
- `disabled`: the step is not enabled by the configuration.
|
|
50
|
+
|
|
51
|
+
`will-run` does not guarantee execution after an earlier step fails. Normal workflow fail-fast behavior remains authoritative. Packaging is `conditional` when enabled because only selected leads with successful report artifacts can be packaged. Summary is `will-run` for a valid configuration and represents the managed workflow summary lifecycle.
|
|
52
|
+
|
|
53
|
+
Dependencies describe ordering, not concurrency:
|
|
54
|
+
|
|
55
|
+
- discovery has no dependency;
|
|
56
|
+
- shortlist depends on discovery;
|
|
57
|
+
- enabled review depends on shortlist;
|
|
58
|
+
- enabled packaging depends on review when review is enabled, otherwise on shortlist;
|
|
59
|
+
- summary depends on the last enabled step.
|
|
60
|
+
|
|
61
|
+
Disabled steps have no dependencies. Conditional and disabled steps include a human-readable `reason`; consumers use `state`, not `reason`, for automation. Disabled steps remain in the plan so operators can see why they are absent from execution.
|
|
62
|
+
|
|
63
|
+
## Effective Settings
|
|
64
|
+
|
|
65
|
+
The plan reports only settings needed to explain execution:
|
|
66
|
+
|
|
67
|
+
- discovery provider, audit profile, concurrency, candidate limit, and website audit cap;
|
|
68
|
+
- shortlist top count, minimum opportunity score, and sort mode;
|
|
69
|
+
- review stale-before date when review is configured;
|
|
70
|
+
- whether report packaging is enabled.
|
|
71
|
+
|
|
72
|
+
The Google Places query is intentionally omitted. A missing numeric cap is represented as `null`, meaning the configuration does not set that cap; it does not predict unlimited successful work.
|
|
73
|
+
|
|
74
|
+
Network access is declared per step with stable values:
|
|
75
|
+
|
|
76
|
+
- `google-places` for Google Places provider calls;
|
|
77
|
+
- `website-audits` for website audit calls;
|
|
78
|
+
- an empty list for local-only steps.
|
|
79
|
+
|
|
80
|
+
Manual CSV discovery does not call a discovery provider, but its discovery step can still perform website audits. A zero website audit cap removes `website-audits` from that step. Plan generation itself never performs either kind of network access.
|
|
81
|
+
|
|
82
|
+
## Artifact Paths
|
|
83
|
+
|
|
84
|
+
The plan uses stable artifact identifiers and absolute normalized paths. It can include:
|
|
85
|
+
|
|
86
|
+
- `manual-input-csv` for the manual discovery input;
|
|
87
|
+
- `review-csv` for optional review state;
|
|
88
|
+
- `leads-csv` and `discovery-summary-json`;
|
|
89
|
+
- `reports-dir` for managed audit reports;
|
|
90
|
+
- `shortlist-csv` and `shortlist-summary-json`;
|
|
91
|
+
- `review-summary-json` when review is configured;
|
|
92
|
+
- `packages-dir` when packaging is enabled;
|
|
93
|
+
- `workflow-summary-json`.
|
|
94
|
+
|
|
95
|
+
Step inputs and outputs refer to artifact identifiers instead of repeating paths. The plan does not inspect or include artifact contents.
|
|
96
|
+
|
|
97
|
+
Artifact inputs and outputs follow the runtime data flow:
|
|
98
|
+
|
|
99
|
+
- Discovery reads `manual-input-csv` for manual discovery and reads `review-csv` whenever review is configured. When review is configured, discovery also rewrites `review-csv`; discovery always writes `leads-csv`, `discovery-summary-json`, and `reports-dir`.
|
|
100
|
+
- Shortlist always reads `leads-csv` and also reads `review-csv` when configured; it writes `shortlist-csv` and `shortlist-summary-json`.
|
|
101
|
+
- Review reads only `review-csv` and writes `review-summary-json`.
|
|
102
|
+
- Packaging reads report files through `reports-dir`; it uses the in-memory shortlist result and does not read `shortlist-csv`.
|
|
103
|
+
|
|
104
|
+
## Result Contract
|
|
105
|
+
|
|
106
|
+
The plan report is versioned independently from the workflow configuration and preflight report:
|
|
107
|
+
|
|
108
|
+
```json
|
|
109
|
+
{
|
|
110
|
+
"version": 1,
|
|
111
|
+
"status": "ready",
|
|
112
|
+
"preflight": {
|
|
113
|
+
"version": 1,
|
|
114
|
+
"status": "ready",
|
|
115
|
+
"checks": []
|
|
116
|
+
},
|
|
117
|
+
"artifacts": {
|
|
118
|
+
"leads-csv": "C:/work/workflow-output/leads.csv",
|
|
119
|
+
"workflow-summary-json": "C:/work/workflow-output/workflow-summary.json"
|
|
120
|
+
},
|
|
121
|
+
"steps": [
|
|
122
|
+
{
|
|
123
|
+
"id": "discovery",
|
|
124
|
+
"state": "will-run",
|
|
125
|
+
"dependsOn": [],
|
|
126
|
+
"inputs": ["manual-input-csv"],
|
|
127
|
+
"outputs": ["leads-csv", "discovery-summary-json", "reports-dir"],
|
|
128
|
+
"networkAccess": ["website-audits"],
|
|
129
|
+
"settings": {
|
|
130
|
+
"provider": "manual-csv",
|
|
131
|
+
"profile": "dental",
|
|
132
|
+
"concurrency": 2,
|
|
133
|
+
"maxCandidates": null,
|
|
134
|
+
"maxAudits": 10
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
]
|
|
138
|
+
}
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
The top-level status matches the included preflight status:
|
|
142
|
+
|
|
143
|
+
- `ready` exits `0`, including when preflight contains warnings;
|
|
144
|
+
- `blocked` exits `1`.
|
|
145
|
+
|
|
146
|
+
For a readable and valid configuration, the plan is produced even when an operational preflight check is blocked, such as a missing API key or input file. If the configuration cannot be read or validated, `artifacts` is empty and `steps` is empty because no trustworthy execution plan can be derived.
|
|
147
|
+
|
|
148
|
+
Step identifiers, states, artifact identifiers, network-access values, and JSON property meanings are stable within plan report version `1`. Human-readable readiness messages are not a machine-readable policy interface.
|
|
149
|
+
|
|
150
|
+
Step settings use an object specific to the step identifier. Discovery has `provider`, `profile`, `concurrency`, `maxCandidates`, and `maxAudits`; shortlist has `top`, `minOpportunityScore`, and `sort`; review has `staleBefore`; packaging has `enabled`; summary has an empty settings object. Optional numeric and date settings use `null` rather than being omitted.
|
|
151
|
+
|
|
152
|
+
## Terminal Output
|
|
153
|
+
|
|
154
|
+
Terminal output is the default and presents readiness before execution details:
|
|
155
|
+
|
|
156
|
+
```text
|
|
157
|
+
Workflow plan: READY
|
|
158
|
+
Config: workflow.json
|
|
159
|
+
Provider: manual-csv
|
|
160
|
+
|
|
161
|
+
Readiness:
|
|
162
|
+
PASS Workflow configuration is valid
|
|
163
|
+
PASS Discovery input is readable
|
|
164
|
+
PASS Output location is writable
|
|
165
|
+
|
|
166
|
+
Execution plan:
|
|
167
|
+
1. discovery [WILL RUN]
|
|
168
|
+
Network: website audits (up to 10)
|
|
169
|
+
Outputs: leads-csv, discovery-summary-json, reports-dir
|
|
170
|
+
|
|
171
|
+
2. shortlist [WILL RUN]
|
|
172
|
+
|
|
173
|
+
3. review [DISABLED]
|
|
174
|
+
Reason: Review is not configured
|
|
175
|
+
|
|
176
|
+
4. packaging [DISABLED]
|
|
177
|
+
Reason: Report packaging is not enabled
|
|
178
|
+
|
|
179
|
+
5. summary [WILL RUN]
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
A blocked terminal plan writes the complete report to standard output and the concise `open-local-audit: workflow plan blocked` summary to standard error. JSON mode writes exactly one JSON document to standard output for ready and blocked reports and writes no expected readiness text to standard error.
|
|
183
|
+
|
|
184
|
+
## Components
|
|
185
|
+
|
|
186
|
+
- A workflow planner builds the versioned plan from one resolved configuration snapshot.
|
|
187
|
+
- Existing preflight check orchestration is reused against that same snapshot so plan and readiness data cannot disagree because the configuration changed between reads.
|
|
188
|
+
- Terminal and JSON renderers format an existing plan without reading configuration or performing checks.
|
|
189
|
+
- The CLI selects execution, preflight, or plan mode and enforces option compatibility.
|
|
190
|
+
|
|
191
|
+
The package root exports:
|
|
192
|
+
|
|
193
|
+
- `runWorkflowPlan(configPath)`;
|
|
194
|
+
- `renderWorkflowPlanTerminal(report, configPath)`;
|
|
195
|
+
- `renderWorkflowPlanJson(report)`;
|
|
196
|
+
- only the public types required to consume the version `1` plan report.
|
|
197
|
+
|
|
198
|
+
Dependency injection helpers, resolved configuration types, and workflow path internals remain outside the package root API.
|
|
199
|
+
|
|
200
|
+
## Failure Handling
|
|
201
|
+
|
|
202
|
+
Expected configuration and filesystem readiness failures use the existing sanitized preflight checks. Operationally blocked plans still include execution details when the configuration is valid. Unexpected programming errors continue to propagate through the existing CLI error policy.
|
|
203
|
+
|
|
204
|
+
No terminal output, JSON output, or thrown expected-readiness error may include API keys, environment values, Google queries, CSV contents, raw configuration, or filesystem error stacks.
|
|
205
|
+
|
|
206
|
+
Filesystem readiness is advisory. Normal workflow execution continues to validate and safely replace managed outputs at write time.
|
|
207
|
+
|
|
208
|
+
## Compatibility
|
|
209
|
+
|
|
210
|
+
Normal `workflow --config <path>` execution is unchanged. The existing `--check` terminal output, JSON report version `1`, public API, and exit behavior remain unchanged. `--plan` is additive and composes preflight rather than expanding the preflight result contract.
|
|
211
|
+
|
|
212
|
+
Future additive plan fields may be introduced without changing report version `1`. Removing or changing the meaning of a stable identifier, state, or field requires a new plan report version.
|
|
213
|
+
|
|
214
|
+
## Acceptance Tests
|
|
215
|
+
|
|
216
|
+
- Manual CSV and Google Places configurations produce deterministic successful-path plans.
|
|
217
|
+
- Review and packaging appear as `disabled`, `conditional`, or `will-run` steps as defined above.
|
|
218
|
+
- Step dependencies and conditional or disabled reasons follow the plan model.
|
|
219
|
+
- Step dependencies, inputs, outputs, settings, and network declarations match the resolved configuration.
|
|
220
|
+
- Relative artifact paths resolve from the configuration directory.
|
|
221
|
+
- Missing input, API key, or output access blocks readiness while retaining a valid execution plan.
|
|
222
|
+
- Invalid or unreadable configuration produces a blocked report with empty artifacts and steps.
|
|
223
|
+
- Plan generation makes no network calls and creates or modifies no files or directories.
|
|
224
|
+
- Terminal and JSON outputs exclude API keys, Google queries, environment values, and raw config contents.
|
|
225
|
+
- JSON output is exactly one parseable document for ready and blocked plans.
|
|
226
|
+
- `--check` and `--plan` together are rejected; `--format` without either option remains rejected.
|
|
227
|
+
- Existing workflow execution and preflight behavior remain covered by regression tests.
|
|
228
|
+
- The packed npm consumer can import the public plan API and includes this architecture document.
|
|
229
|
+
- The release passes lint, build, tests, dependency audit, package dry run, and fresh consumer installation.
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
# Workflow Preflight
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Workflow preflight validates whether a version `1` workflow configuration is operationally ready without running discovery, calling external APIs, or creating or modifying workflow outputs.
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
open-local-audit workflow --config workflow.json --check
|
|
9
|
+
open-local-audit workflow --config workflow.json --check --format json
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
The existing `workflow --config <path>` execution behavior remains unchanged. `--format` is accepted with `--check` or `--plan` and remains invalid for normal workflow execution.
|
|
13
|
+
|
|
14
|
+
## Goals
|
|
15
|
+
|
|
16
|
+
- Validate the strict workflow configuration before execution.
|
|
17
|
+
- Check local inputs, optional review state, API key availability, output writability, and managed-path safety.
|
|
18
|
+
- Show the stages and managed outputs that a real workflow would use.
|
|
19
|
+
- Produce stable terminal and JSON results for operators and CI jobs.
|
|
20
|
+
- Keep preflight read-only and prevent secrets from appearing in output.
|
|
21
|
+
|
|
22
|
+
## Non-Goals
|
|
23
|
+
|
|
24
|
+
Preflight does not:
|
|
25
|
+
|
|
26
|
+
- call Google Places or any audited website;
|
|
27
|
+
- create output directories or probe writability by creating temporary files;
|
|
28
|
+
- run discovery, shortlist, review, or packaging stages;
|
|
29
|
+
- estimate currency costs or promise external API availability;
|
|
30
|
+
- send outreach, upload reports, or synchronize CRM records.
|
|
31
|
+
|
|
32
|
+
## Checks
|
|
33
|
+
|
|
34
|
+
The preflight service performs these checks in order:
|
|
35
|
+
|
|
36
|
+
1. Read and validate the strict version `1` JSON configuration.
|
|
37
|
+
2. For `manual-csv`, require the discovery input to exist as a readable regular file.
|
|
38
|
+
3. For `google-places`, require the existing Google Maps API key resolver to return a nonblank value without exposing it or making a network request.
|
|
39
|
+
4. When a review CSV is configured, verify it is a readable regular file when present. A missing review CSV is a warning because the workflow may create it.
|
|
40
|
+
5. Find the nearest existing ancestor for `outDir` and verify that it is a directory with write access.
|
|
41
|
+
6. Inspect existing `outDir`, `reports/`, enabled `packages/`, and config-managed output files. Reject linked managed paths and canonical directories that escape `outDir`.
|
|
42
|
+
7. Report the enabled workflow stages, configured limits, and resolved managed output paths.
|
|
43
|
+
|
|
44
|
+
Filesystem access checks are advisory and can become stale before execution. The workflow retains its existing write-time containment checks as the authoritative enforcement boundary.
|
|
45
|
+
|
|
46
|
+
## Result Contract
|
|
47
|
+
|
|
48
|
+
`workflow --plan` includes a preflight result alongside an execution plan; its additive contract is defined in the [workflow plan contract](./workflow-plan.md). The version `1` preflight report remains unchanged.
|
|
49
|
+
|
|
50
|
+
The preflight report is versioned independently from the workflow configuration:
|
|
51
|
+
|
|
52
|
+
```json
|
|
53
|
+
{
|
|
54
|
+
"version": 1,
|
|
55
|
+
"status": "ready",
|
|
56
|
+
"checks": [
|
|
57
|
+
{
|
|
58
|
+
"id": "configuration",
|
|
59
|
+
"status": "pass",
|
|
60
|
+
"message": "Workflow configuration is valid"
|
|
61
|
+
}
|
|
62
|
+
],
|
|
63
|
+
"stages": ["discovery", "shortlist"],
|
|
64
|
+
"outputs": {
|
|
65
|
+
"outDir": "C:/work/workflow-output",
|
|
66
|
+
"workflowSummaryJson": "C:/work/workflow-output/workflow-summary.json"
|
|
67
|
+
},
|
|
68
|
+
"limits": {
|
|
69
|
+
"maxCandidates": null,
|
|
70
|
+
"maxAudits": 10
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
The report uses:
|
|
76
|
+
|
|
77
|
+
- `ready` when no check failed; warnings are allowed and the command exits `0`;
|
|
78
|
+
- `blocked` when one or more checks failed; the command exits `1`;
|
|
79
|
+
- `pass`, `warn`, or `fail` for individual checks.
|
|
80
|
+
|
|
81
|
+
Check identifiers are stable machine-readable strings. Messages are human-readable and must not contain API keys, environment values, or raw configuration contents.
|
|
82
|
+
|
|
83
|
+
`maxCandidates` is the configured Google Places candidate limit and is `null` for manual CSV. `maxAudits` is the configured audit cap and is `null` when no cap is configured. These values describe limits, not predicted usage or cost.
|
|
84
|
+
|
|
85
|
+
## Terminal Output
|
|
86
|
+
|
|
87
|
+
Terminal output is the default and is written to standard output:
|
|
88
|
+
|
|
89
|
+
```text
|
|
90
|
+
Workflow preflight: READY
|
|
91
|
+
Config: workflow.json
|
|
92
|
+
Provider: manual-csv
|
|
93
|
+
|
|
94
|
+
PASS Workflow configuration is valid
|
|
95
|
+
PASS Discovery input is readable
|
|
96
|
+
PASS Output location is writable
|
|
97
|
+
WARN Review CSV does not exist and will be created
|
|
98
|
+
|
|
99
|
+
Stages: discovery -> shortlist -> review
|
|
100
|
+
Managed output: ./workflow-output
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
For a blocked terminal preflight, the full report remains on standard output and the CLI writes its existing concise `open-local-audit:` error summary to standard error.
|
|
104
|
+
|
|
105
|
+
With `--format json`, standard output contains exactly one JSON document for both ready and blocked results. The exit code remains authoritative; no additional human-readable text is written to standard output.
|
|
106
|
+
|
|
107
|
+
## Components
|
|
108
|
+
|
|
109
|
+
- `workflow-preflight.ts` owns check orchestration and the versioned result type.
|
|
110
|
+
- Small shared workflow path and output modules own no-write inspection, write-time managed-directory preparation, and same-directory temporary-file replacement for managed outputs.
|
|
111
|
+
- Terminal and JSON renderers convert a preflight result without performing checks.
|
|
112
|
+
- `cli.ts` selects normal execution or preflight while preserving the existing error prefix and exit behavior.
|
|
113
|
+
|
|
114
|
+
## Failure Handling
|
|
115
|
+
|
|
116
|
+
Configuration read and validation errors are converted into a blocked preflight report. Independent checks continue where their prerequisites are available so one invocation can report all actionable local problems. Checks that depend on an invalid configuration are omitted rather than reported as additional failures.
|
|
117
|
+
|
|
118
|
+
Expected operational filesystem errors are sanitized and represented as failed checks; unexpected programming errors still propagate. The command must never include a resolved API key in thrown errors, terminal output, or JSON output.
|
|
119
|
+
|
|
120
|
+
## Acceptance Tests
|
|
121
|
+
|
|
122
|
+
- A valid manual CSV configuration is ready, exits `0`, and creates no files or directories.
|
|
123
|
+
- Missing, unreadable, or non-file manual input blocks execution.
|
|
124
|
+
- Google API key presence passes without a network request; a missing key blocks execution.
|
|
125
|
+
- A missing review CSV produces a warning, while an unreadable or non-file review path fails.
|
|
126
|
+
- A missing output tree passes when its nearest existing ancestor is writable.
|
|
127
|
+
- An unwritable output ancestor blocks execution without creating a probe file.
|
|
128
|
+
- Linked or canonically escaping managed directories, and linked managed output files, block execution.
|
|
129
|
+
- Terminal and JSON outputs contain no API key or raw environment value.
|
|
130
|
+
- JSON output is one parseable document for ready and blocked results.
|
|
131
|
+
- `--format` without `--check` or `--plan` is rejected.
|
|
132
|
+
- Existing workflow execution and failure behavior remains covered by regression tests.
|
|
133
|
+
- The release passes the full release check, package audit, and fresh consumer installation check.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "open-local-audit",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.64.0",
|
|
4
4
|
"description": "Open-source website and local presence auditor for small businesses.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -14,7 +14,10 @@
|
|
|
14
14
|
"dist",
|
|
15
15
|
"README.md",
|
|
16
16
|
"LICENSE",
|
|
17
|
-
"CHANGELOG.md"
|
|
17
|
+
"CHANGELOG.md",
|
|
18
|
+
"docs/architecture/workflow-command.md",
|
|
19
|
+
"docs/architecture/workflow-preflight.md",
|
|
20
|
+
"docs/architecture/workflow-plan.md"
|
|
18
21
|
],
|
|
19
22
|
"scripts": {
|
|
20
23
|
"build": "tsc -p tsconfig.build.json",
|