engineering-process 0.1.0__py3-none-any.whl

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.
Files changed (69) hide show
  1. engineering_process/__init__.py +3 -0
  2. engineering_process/_download_worker.py +73 -0
  3. engineering_process/_supervisor_posix.py +162 -0
  4. engineering_process/_supervisor_windows.py +148 -0
  5. engineering_process/_windows_job.py +419 -0
  6. engineering_process/bootstrap.py +217 -0
  7. engineering_process/bundles.py +81 -0
  8. engineering_process/cli.py +1012 -0
  9. engineering_process/contracts.py +1274 -0
  10. engineering_process/distribution.py +90 -0
  11. engineering_process/environment.py +753 -0
  12. engineering_process/helper_launch.py +37 -0
  13. engineering_process/lifecycle.py +1024 -0
  14. engineering_process/managed.py +89 -0
  15. engineering_process/markdown.py +78 -0
  16. engineering_process/publication.py +463 -0
  17. engineering_process/requirements-build.txt +1 -0
  18. engineering_process/requirements-dev.txt +10 -0
  19. engineering_process/requirements-runtime.txt +3 -0
  20. engineering_process/runner.py +191 -0
  21. engineering_process/runtime.py +55 -0
  22. engineering_process/skills.py +118 -0
  23. engineering_process/supervision.py +72 -0
  24. engineering_process/syncing.py +398 -0
  25. engineering_process/tooling.py +891 -0
  26. engineering_process-0.1.0.data/data/share/engineering-process/bundles.json +47 -0
  27. engineering_process-0.1.0.data/data/share/engineering-process/examples/change.json +26 -0
  28. engineering_process-0.1.0.data/data/share/engineering-process/examples/plan.json +28 -0
  29. engineering_process-0.1.0.data/data/share/engineering-process/examples/project.json +54 -0
  30. engineering_process-0.1.0.data/data/share/engineering-process/examples/review.json +31 -0
  31. engineering_process-0.1.0.data/data/share/engineering-process/schemas/change.schema.json +88 -0
  32. engineering_process-0.1.0.data/data/share/engineering-process/schemas/lifecycle.schema.json +122 -0
  33. engineering_process-0.1.0.data/data/share/engineering-process/schemas/plan.schema.json +105 -0
  34. engineering_process-0.1.0.data/data/share/engineering-process/schemas/process-lock.schema.json +39 -0
  35. engineering_process-0.1.0.data/data/share/engineering-process/schemas/project.schema.json +515 -0
  36. engineering_process-0.1.0.data/data/share/engineering-process/schemas/review.schema.json +140 -0
  37. engineering_process-0.1.0.data/data/share/engineering-process/schemas/reviewer-attestation.schema.json +30 -0
  38. engineering_process-0.1.0.data/data/share/engineering-process/schemas/verification.schema.json +120 -0
  39. engineering_process-0.1.0.data/data/share/engineering-process/skills/assess-design/SKILL.md +39 -0
  40. engineering_process-0.1.0.data/data/share/engineering-process/skills/build-frontend/SKILL.md +38 -0
  41. engineering_process-0.1.0.data/data/share/engineering-process/skills/build-frontend-foundation/SKILL.md +36 -0
  42. engineering_process-0.1.0.data/data/share/engineering-process/skills/change-api/SKILL.md +36 -0
  43. engineering_process-0.1.0.data/data/share/engineering-process/skills/cross-repo-change/SKILL.md +37 -0
  44. engineering_process-0.1.0.data/data/share/engineering-process/skills/define-change-contract/SKILL.md +40 -0
  45. engineering_process-0.1.0.data/data/share/engineering-process/skills/design-module/SKILL.md +37 -0
  46. engineering_process-0.1.0.data/data/share/engineering-process/skills/evolve-process/SKILL.md +37 -0
  47. engineering_process-0.1.0.data/data/share/engineering-process/skills/finish-change/SKILL.md +34 -0
  48. engineering_process-0.1.0.data/data/share/engineering-process/skills/govern-ui/SKILL.md +40 -0
  49. engineering_process-0.1.0.data/data/share/engineering-process/skills/implement-change/SKILL.md +41 -0
  50. engineering_process-0.1.0.data/data/share/engineering-process/skills/implement-module/SKILL.md +36 -0
  51. engineering_process-0.1.0.data/data/share/engineering-process/skills/implement-use-case/SKILL.md +36 -0
  52. engineering_process-0.1.0.data/data/share/engineering-process/skills/integrate-mcp/SKILL.md +37 -0
  53. engineering_process-0.1.0.data/data/share/engineering-process/skills/maintain-docs/SKILL.md +35 -0
  54. engineering_process-0.1.0.data/data/share/engineering-process/skills/plan-change/SKILL.md +37 -0
  55. engineering_process-0.1.0.data/data/share/engineering-process/skills/publish-change/SKILL.md +38 -0
  56. engineering_process-0.1.0.data/data/share/engineering-process/skills/review-change/SKILL.md +49 -0
  57. engineering_process-0.1.0.data/data/share/engineering-process/skills/run-change/SKILL.md +51 -0
  58. engineering_process-0.1.0.data/data/share/engineering-process/skills/run-change/references/execution.md +88 -0
  59. engineering_process-0.1.0.data/data/share/engineering-process/skills/run-project-command/SKILL.md +55 -0
  60. engineering_process-0.1.0.data/data/share/engineering-process/skills/specify-use-case/SKILL.md +37 -0
  61. engineering_process-0.1.0.data/data/share/engineering-process/skills/verify-change/SKILL.md +38 -0
  62. engineering_process-0.1.0.data/data/share/engineering-process/templates/AGENTS.process.md +17 -0
  63. engineering_process-0.1.0.data/data/share/engineering-process/templates/PULL_REQUEST_TEMPLATE.md +27 -0
  64. engineering_process-0.1.0.dist-info/METADATA +387 -0
  65. engineering_process-0.1.0.dist-info/RECORD +69 -0
  66. engineering_process-0.1.0.dist-info/WHEEL +5 -0
  67. engineering_process-0.1.0.dist-info/entry_points.txt +2 -0
  68. engineering_process-0.1.0.dist-info/licenses/LICENSE +21 -0
  69. engineering_process-0.1.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,387 @@
1
+ Metadata-Version: 2.4
2
+ Name: engineering-process
3
+ Version: 0.1.0
4
+ Summary: Agent-neutral end-to-end engineering lifecycle and deterministic process CLI
5
+ License-Expression: MIT
6
+ Project-URL: Homepage, https://github.com/phuongnse/engineering-process
7
+ Project-URL: Issues, https://github.com/phuongnse/engineering-process/issues
8
+ Project-URL: Repository, https://github.com/phuongnse/engineering-process.git
9
+ Classifier: Development Status :: 3 - Alpha
10
+ Classifier: Environment :: Console
11
+ Classifier: Operating System :: MacOS
12
+ Classifier: Operating System :: Microsoft :: Windows
13
+ Classifier: Operating System :: POSIX :: Linux
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Programming Language :: Python :: 3 :: Only
16
+ Classifier: Topic :: Software Development :: Quality Assurance
17
+ Requires-Python: >=3.11
18
+ Description-Content-Type: text/markdown
19
+ License-File: LICENSE
20
+ Requires-Dist: markdown-it-py==4.2.0
21
+ Requires-Dist: mdurl==0.1.2
22
+ Requires-Dist: regex==2026.7.19
23
+ Provides-Extra: dev
24
+ Requires-Dist: attrs==26.1.0; extra == "dev"
25
+ Requires-Dist: build==1.5.0; extra == "dev"
26
+ Requires-Dist: colorama==0.4.6; os_name == "nt" and extra == "dev"
27
+ Requires-Dist: jsonschema==4.26.0; extra == "dev"
28
+ Requires-Dist: jsonschema-specifications==2025.9.1; extra == "dev"
29
+ Requires-Dist: packaging==26.3; extra == "dev"
30
+ Requires-Dist: pyproject_hooks==1.2.0; extra == "dev"
31
+ Requires-Dist: referencing==0.37.0; extra == "dev"
32
+ Requires-Dist: rpds-py==2026.6.3; extra == "dev"
33
+ Requires-Dist: typing-extensions==4.15.0; python_version < "3.13" and extra == "dev"
34
+ Dynamic: license-file
35
+
36
+ # Engineering Process
37
+
38
+ An agent-neutral, end-to-end engineering lifecycle. A consumer supplies project
39
+ policy and commands; this repository supplies the same specification, planning,
40
+ implementation, verification, independent-review, finding-loop, and completion
41
+ gates to every project.
42
+
43
+ The enforcement boundary has three parts:
44
+
45
+ 1. Portable Agent Skills tell any compatible agent how to perform each phase.
46
+ 2. `processctl` owns lifecycle state, transitions, immutable evidence, and exit codes.
47
+ 3. The consumer's `AGENTS.md` and `.process/project.json` own domain policy and exact
48
+ argument-array verification commands.
49
+
50
+ Publication conventions are distribution-owned as well: manual and automation branch
51
+ names, Conventional Commit subjects, PR titles, the managed PR-description structure,
52
+ structured requirement statuses, and draft-versus-ready semantics are validated by
53
+ `processctl publication ...`. Projects populate those sections with their own contract,
54
+ impact, risk, evidence, and review details and may append stronger domain checks.
55
+
56
+ Core semantics never name a model, agent product, orchestration API, or code-indexing
57
+ provider. An agent host or human workflow supplies an independent reviewer identity;
58
+ `processctl` rejects any reviewer actor or context used by the current implementation
59
+ cycle. If the host cannot attest separation, review remains blocked.
60
+
61
+ The core ships only the agent-neutral reviewer-attestation contract. Host-specific
62
+ launchers and model configuration are separate integrations and are never part of a
63
+ required process bundle.
64
+
65
+ Python 3.11 or newer and Git are required. Windows command containment requires
66
+ Windows 10 or Windows Server 2016 and newer so Job Object membership can be attached
67
+ atomically during process creation. Lifecycle state is stored under ignored
68
+ `.process/runs/`; completion, review, and verification are bound to a clean Git
69
+ checkpoint and workspace fingerprint.
70
+
71
+ ## Execution architecture
72
+
73
+ Consumers use one foreground-task contract on every supported platform. The contract
74
+ owns argument-array commands, non-interactive standard input, bounded output, timeout,
75
+ exit status, and descendant cleanup. Platform selection occurs once inside the
76
+ distribution: the POSIX backend owns a new process session/group and the Windows
77
+ backend owns a kill-on-close Job Object. Consumer manifests, evidence, and exit codes
78
+ do not branch by operating system. If an outer Windows Job applies incompatible
79
+ nesting or UI limits, target creation fails closed instead of running uncontained.
80
+
81
+ This task boundary intentionally separates finite commands from services and
82
+ interactive protocols. `processctl exec`, requirement probes, setup command actions,
83
+ and verification checks are finite foreground tasks. Detached Docker Compose stacks,
84
+ log followers, interactive shells, watchers, and stdio servers remain project-owned
85
+ commands outside this executor until a separate service or interactive lifecycle is
86
+ specified. They must not be placed in verification profiles or wrapped by
87
+ `processctl exec`.
88
+
89
+ ## Consumer bootstrap
90
+
91
+ Add only project-owned configuration:
92
+
93
+ ~~~text
94
+ project/
95
+ ├── AGENTS.md
96
+ ├── .github/
97
+ │ └── PULL_REQUEST_TEMPLATE.md
98
+ ├── .gitignore # includes .process/runs/
99
+ └── .process/
100
+ └── project.json # project profiles and lifecycle baseline
101
+ ~~~
102
+
103
+ Install `processctl` from a tagged release and create a candidate manifest from
104
+ `examples/project.json` with the repository's real commands. Bootstrap the complete
105
+ standard in one command:
106
+
107
+ ~~~text
108
+ python -m pip install "engineering-process==0.1.0"
109
+ processctl project init --project-root . --manifest project.json \
110
+ --bundle core --bundle delivery --bundle product
111
+ processctl doctor --project-root .
112
+ ~~~
113
+
114
+ `project init` validates the manifest, preflights ownership conflicts, writes the
115
+ lock, installs the managed `AGENTS.md` and pull-request contracts, adds the ignored
116
+ lifecycle-state path, and synchronizes the selected skills. It refuses to replace
117
+ differing project configuration or unmanaged skills unless the conflict is resolved
118
+ explicitly. `sync --check` and `doctor` detect drift in skills, the managed agent
119
+ contract, and the pull-request block. A consumer never authors or maintains process
120
+ skills locally.
121
+
122
+ The single project-manifest contract includes environment profiles, project-attested
123
+ read-only requirement probes, remediation, declarative managed-tool artifacts, and
124
+ optional setup actions. Use the same interface in every consumer:
125
+
126
+ ~~~text
127
+ processctl doctor --project-root . --profile development
128
+ processctl setup --project-root . --profile development
129
+ processctl setup --project-root . --profile development --apply \
130
+ --allow network --allow user-files --allow project-files
131
+ processctl exec --project-root . --profile development -- \
132
+ python scripts/project.py local-dev
133
+ ~~~
134
+
135
+ A portable tool is data, not a consumer-owned installer. Each project pins the
136
+ version and one immutable artifact contract per supported platform, then references
137
+ the tool from a `managed-tool` setup action:
138
+
139
+ ~~~json
140
+ {
141
+ "managedTools": [{
142
+ "id": "sample-tool",
143
+ "version": "1.2.3",
144
+ "artifacts": [{
145
+ "platform": "linux-glibc-x64",
146
+ "url": "https://publisher.example/sample-tool-1.2.3.tar.gz",
147
+ "checksum": "sha256:0000000000000000000000000000000000000000000000000000000000000000",
148
+ "archiveFormat": "tar.gz",
149
+ "stripComponents": 1,
150
+ "maxDownloadBytes": 50000000,
151
+ "maxExtractedBytes": 200000000,
152
+ "maxFiles": 10000,
153
+ "commands": {"sample-tool": "bin/sample-tool"}
154
+ }]
155
+ }],
156
+ "setupActions": [{
157
+ "id": "install-sample-tool",
158
+ "kind": "managed-tool",
159
+ "tool": "sample-tool",
160
+ "timeoutSeconds": 600
161
+ }]
162
+ }
163
+ ~~~
164
+
165
+ The zero checksum above is a shape example only; a real manifest must contain the
166
+ publisher artifact's verified digest and declare every supported platform explicitly.
167
+
168
+ Schema-3 Windows command entries must resolve to native `.exe` applications. Batch
169
+ files are rejected because running `.cmd` or `.bat` requires a command shell. When a
170
+ publisher exposes a script launcher, bind the stable logical command to a verified
171
+ native runtime and a verified contained script instead. For example, a Windows Node
172
+ artifact can preserve the portable `npm` command without `cmd.exe`:
173
+
174
+ ~~~json
175
+ {
176
+ "commands": {
177
+ "npm": {
178
+ "executable": "node.exe",
179
+ "script": "node_modules/npm/bin/npm-cli.js"
180
+ }
181
+ }
182
+ }
183
+ ~~~
184
+
185
+ Managed artifact paths always use contained, relative, forward-slash syntax on every
186
+ host. Schema-1 and schema-2 project manifests remain readable for lifecycle history,
187
+ but a schema-2 Windows `.cmd` or `.bat` launcher is intentionally not executable by
188
+ the shell-free supervisor. Migrate that entry manually to schema 3 and bind it to the
189
+ publisher's trusted native runtime and contained script as above; a generic migrator
190
+ cannot safely infer either file or attest that the task is foreground-only.
191
+
192
+ The report still records the logical command such as `["npm", "ci"]`; the executor
193
+ uses the absolute managed application and script paths internally. Unqualified Windows
194
+ commands are resolved only from absolute PATH entries, so a same-named executable in
195
+ the project working directory cannot shadow a verified managed tool.
196
+
197
+ `doctor` executes only probes explicitly attested `readOnly: true` and never invokes
198
+ setup actions. A schema-3 environment contract must also attest `foregroundOnly: true`
199
+ for every process-managed task. The project owner remains responsible for those
200
+ attestations.
201
+ `setup` is plan-only unless `--apply` is present, computes
202
+ the full dependency-ordered action plan before execution, and refuses to run any
203
+ action until every declared mutation scope has been approved. Supported scopes are
204
+ `network`, `project-files`, `user-files`, and `host-configuration`. Commands are
205
+ argument arrays executed without a shell, with bounded output, timeout, exit status,
206
+ owned process-group/job cleanup, and command digest evidence. `exec` runs an
207
+ ad-hoc project command only after the selected environment passes and injects paths
208
+ for verified managed tools. After applying a plan, processctl reruns the original
209
+ probes; an installer exit code alone never proves readiness.
210
+
211
+ The distribution owns detection, planning, bounded execution, HTTPS acquisition,
212
+ size limits, checksum verification, safe archive extraction, atomic user-local tool
213
+ installation, and exact managed command binding/PATH injection. A consumer owns only
214
+ declarative environment
215
+ data: exact probes, tool versions and per-platform artifacts, immutable checksums,
216
+ project-native dependency commands, dependency edges, and remediation. Project source
217
+ does not carry a generic downloader, archive installer, doctor, or setup lifecycle.
218
+ Host prerequisites with no safe automated setup action stay blocking.
219
+
220
+ Probe `readOnly`, foreground-only execution, and command-action mutation scopes are
221
+ project-owner attestations, not an operating-system sandbox: `processctl` cannot infer
222
+ arbitrary subprocess side effects. Commands must not daemonize, start a detached
223
+ session, or leave background work behind. The runner owns a POSIX process group and a
224
+ Windows Job Object, but no portable POSIX primitive can contain a deliberately detached
225
+ process. Managed-tool actions are stronger—the distribution constrains them to
226
+ HTTPS, declared size/checksum/archive/path boundaries and derives their approvals as
227
+ `network` plus `user-files`. Use a command action only for project-native package
228
+ managers or domain preparation that cannot be represented by the managed-tool
229
+ primitive, and declare every possible scope truthfully. New consumers use
230
+ project-manifest schema 3. Schema 1 (without an environment contract) and schema 2
231
+ (the original environment contract) remain readable for backward compatibility; they
232
+ are not relabeled as newer shapes. A consumer upgrades explicitly to schema 3 to
233
+ attest foreground-only task execution and use managed script bindings. New integrations
234
+ receive the complete environment contract instead of creating a project-local doctor
235
+ or setup lifecycle.
236
+
237
+ Select capability bundles from `bundles.json`: every consumer starts with `core`,
238
+ then adds only capabilities it actually owns. For example, a web product commonly
239
+ adds `delivery`, `product`, `api`, `frontend`, `docs`, and `publication`. Add
240
+ `cross-repo` only when independently versioned repositories participate in one
241
+ public-contract change. Re-run `project init ... --replace` with the intended bundle
242
+ set when deliberately changing the pin; version remains unchanged during an
243
+ unpublished development iteration.
244
+
245
+ During process development, pass
246
+ `--process-root /path/to/engineering-process`; consumer manifests never store that
247
+ local path.
248
+
249
+ `project.json.lifecycle.requiredProfiles` is the minimum evidence for every change.
250
+ Individual change contracts may add profiles but cannot remove the baseline.
251
+ Agents enter non-trivial delivery through the synchronized `run-change` skill; phase
252
+ skills are internal owners, not a workflow each project must reconnect.
253
+
254
+ ## Canonical lifecycle
255
+
256
+ Create a change contract from `examples/change.json` and a plan from
257
+ `examples/plan.json`. The plan's `contractDigest` is returned by `change start`.
258
+
259
+ ~~~text
260
+ processctl change start --contract change.json \
261
+ --actor worker --context worker-session --actor-kind agent
262
+
263
+ processctl change plan --change-id issue-123 --plan plan.json \
264
+ --actor worker --context worker-session --actor-kind agent
265
+
266
+ processctl change implement --change-id issue-123 \
267
+ --actor worker --context worker-session --actor-kind agent
268
+
269
+ processctl change verify --change-id issue-123 --profile development \
270
+ --actor worker --context worker-session --actor-kind agent
271
+
272
+ processctl change verify --change-id issue-123 --profile review \
273
+ --actor worker --context worker-session --actor-kind agent
274
+ ~~~
275
+
276
+ After the phase becomes `verified`, a separate reviewer context registers its
277
+ assignment:
278
+
279
+ ~~~text
280
+ processctl change review start --change-id issue-123 \
281
+ --actor reviewer --context isolated-review-session --actor-kind agent \
282
+ --method isolated-context --attested-by agent-host \
283
+ --attestation-evidence "Host-created isolated read-only context"
284
+
285
+ processctl change review submit --change-id issue-123 --report review.json
286
+ ~~~
287
+
288
+ `changes-requested` returns to `change implement`, which starts a new cycle and
289
+ invalidates prior verification and approval. `approved` can advance only while the
290
+ source still matches:
291
+
292
+ ~~~text
293
+ processctl change finish --change-id issue-123 \
294
+ --actor worker --context worker-session --actor-kind agent
295
+ processctl change status --change-id issue-123
296
+ ~~~
297
+
298
+ One worker owning specification, planning, implementation, and verification is the
299
+ default topology. Bounded helpers are optional optimizations, not required roles;
300
+ only review requires a separate actor and context.
301
+
302
+ Open and deferred findings remain completion-blocking until a later review records
303
+ them as resolved or false-positive with evidence. Schema-1 lifecycle state is loaded
304
+ through a fail-closed migration that replays immutable review artifacts to reconstruct
305
+ pending findings before any transition is allowed.
306
+
307
+ Completion does not imply commit creation, push, merge, release, or deployment.
308
+ Those remain separately authorized project workflows.
309
+
310
+ ## Publication contract
311
+
312
+ Validate common metadata before creating or updating a review object:
313
+
314
+ ~~~text
315
+ processctl publication validate-branch --branch feat/short-description
316
+ processctl publication validate-commit --subject "feat(scope): describe the change"
317
+ processctl publication validate-range --project-root . \
318
+ --branch feat/short-description --range origin/main..HEAD
319
+ processctl publication validate-pr --title "feat(scope): describe the change" \
320
+ --branch feat/short-description --state draft --body-file pr.md
321
+ ~~~
322
+
323
+ Manual branches use `{type}/{kebab-description}`. Automation uses the provider-neutral
324
+ `automation/{owner}/{description}` namespace. Commit subjects and PR titles use
325
+ Conventional Commit syntax and are limited to 72 characters. Draft PRs may retain
326
+ explicitly pending checklist items; every ready PR, including automation, must satisfy
327
+ them. The managed template owns the ordered shared sections and immutable standard
328
+ checklist meaning. An optional extension after its closing marker uses only
329
+ `## Project-specific requirements` plus one-line
330
+ `**Project-specific: Label**` checklist items; arbitrary headings, prose, HTML, and
331
+ code fences are rejected, and reserved core-policy phrases are rejected anywhere in
332
+ an extension item. These checks prevent structural shadowing; independent review
333
+ remains responsible for the semantic truth of project-specific evidence.
334
+ Raw HTML is outside the supported grammar for both managed `AGENTS.md` contracts and
335
+ pull-request descriptions; use visible CommonMark instead.
336
+
337
+ ## Trust boundary
338
+
339
+ The CLI proves structural separation: reviewer actor id and context id must both be
340
+ unused by implementation, and the review must match the verified checkpoint. The
341
+ agent host or human organization owns the truth of the identity attestation. A host
342
+ adapter should create a read-only isolated context, pass stable identities to
343
+ `change review start`, and preserve its evidence. Self-asserted separation without a
344
+ host or human attestation does not satisfy the process.
345
+
346
+ `change review submit` may be invoked by a coordinator transporting the assigned
347
+ reviewer's exact report. The CLI validates that artifact against the assignment and
348
+ carried findings; the attesting host or human boundary, not local process state,
349
+ authenticates who produced it.
350
+
351
+ ## Distribution contracts
352
+
353
+ - `project.json` declares baseline profiles and exact argument-array checks.
354
+ - `process.lock` pins the process version, selected skills, and a digest covering the
355
+ runtime, canonical exact runtime/build/development dependency locks, schemas,
356
+ templates, bundle catalog, and
357
+ complete selected skill resources. Startup fails when installed runtime dependency
358
+ versions differ from that lock.
359
+ - Versioned JSON schemas define change, plan, verification, review, lifecycle, and
360
+ completion-related artifacts.
361
+ - Project commands run without a shell and inherit the caller environment. Never put
362
+ secrets in manifests, arguments, or reports.
363
+ - Consumer skill roots are distribution-owned: unmanaged `SKILL.md` files or catalog
364
+ files fail `sync` and `doctor`. Project-specific policy belongs in `AGENTS.md`,
365
+ product contracts, source, and the manifest's command bindings.
366
+ - Host-specific launchers, agent role files, and model settings are optional external
367
+ integrations. They are neither bundled into the core nor required in consumer
368
+ repositories.
369
+ - The managed pull-request template and publication validators are shared process
370
+ policy. Consumer repositories may append project-specific requirements after the
371
+ managed block but do not copy or redefine the common convention.
372
+
373
+ ## Development
374
+
375
+ ~~~text
376
+ python -m venv .venv
377
+ .venv/bin/python -m pip install -e '.[dev]'
378
+ .venv/bin/python -m unittest discover -s tests -p 'test_*.py'
379
+ .venv/bin/python processctl.py skills validate --root .agents/skills
380
+ .venv/bin/python processctl.py digest
381
+ ~~~
382
+
383
+ Version 0.x remains a compatibility pilot. A 1.0 release requires publishing the CLI,
384
+ running consumer CI through the published artifact, and completing forward tests on
385
+ representative agent hosts. Portable evaluation fixtures live in `evals/cases.json`.
386
+ Maintainer release steps and the secretless PyPI publisher identity are defined in
387
+ [`RELEASING.md`](https://github.com/phuongnse/engineering-process/blob/main/RELEASING.md).
@@ -0,0 +1,69 @@
1
+ engineering_process/__init__.py,sha256=sr6Y1EeuE2b1pxlPEuwPRjfQaJnNUH_Q0Fb_85cn0xE,60
2
+ engineering_process/_download_worker.py,sha256=VAh_6pjObYCtoegj_IiE1Z8ARuzr5IZzbzmB4JF5Z8M,2565
3
+ engineering_process/_supervisor_posix.py,sha256=je8soio5GexWyRHPzGTEF6CTcdal_oLywZdfOziZ5dk,5330
4
+ engineering_process/_supervisor_windows.py,sha256=dJ8OJ_II42dEg4yLsCh3f7QFNUelI8huB4-ISbfJE-Q,4728
5
+ engineering_process/_windows_job.py,sha256=IzDNFPFm77ho8sWb_xXN0Ox0-DOhoHL1hDpLlQLCxP4,15280
6
+ engineering_process/bootstrap.py,sha256=pQnf7ah-qOJGEHObA_jloU-Guo4phSOiOZhSL398VR4,7688
7
+ engineering_process/bundles.py,sha256=VNb_7h7uCoD3NRawzqc61fCQZy5Af8SeiN-x_j5kfDg,2934
8
+ engineering_process/cli.py,sha256=t-yix6JtzwmD5QX_Qg-zJAPmgNFGh51e8RY70RcNgwY,33294
9
+ engineering_process/contracts.py,sha256=RQcb1uLFiozd15eXBEyYQHTZp2-vv11cGyGsyjuAyic,48579
10
+ engineering_process/distribution.py,sha256=ojT6JKH_Db2pYnKy8V03a0WQhRc6byfGpdqniWjQ0_Y,2880
11
+ engineering_process/environment.py,sha256=pwt-w106s4pJ35A3GhqXglts2h8VaJgaa3R9M3936JE,26186
12
+ engineering_process/helper_launch.py,sha256=czSsEY1MBmJJQlMdn4s3x5HujKUvaPCrXVPHS0_fvAg,1087
13
+ engineering_process/lifecycle.py,sha256=nJpBIrwoKTJ-qiOVSF8sSJzgsgo65nAJ-QBdNyr6rTg,35152
14
+ engineering_process/managed.py,sha256=Ea-QWYQ3Mw5m2ycMmR57z-z0T8eThNWWU5I89XaC7R8,3358
15
+ engineering_process/markdown.py,sha256=aemVlHhimYJObKgRfMG5maofxDuN9TR5Q_0g2lZxQeI,2493
16
+ engineering_process/publication.py,sha256=PHlZIVmBH3QsaddLPOq6yYyeWKT6jmzc4QbCY_4gotU,17406
17
+ engineering_process/requirements-build.txt,sha256=W5ahs6tozL1WzaH31W6AS3rAUZS4Z2KzdjyEwTqSz-s,19
18
+ engineering_process/requirements-dev.txt,sha256=rziqwu7-SipEhI-GjKOBdOwfcy0PiRtP3nKYiXtglc8,243
19
+ engineering_process/requirements-runtime.txt,sha256=S0fPUsz89qUYqNK-IMKPicLALpH1dVYvx1walBrDscI,52
20
+ engineering_process/runner.py,sha256=__yzxavL5xu5bGSvOUYNVLG5Jm8Ocxj8ygYoRTlOoYo,5946
21
+ engineering_process/runtime.py,sha256=LN13oFAosXfxlSzNUM9-Lax4vDhfxLTP_tFvgsLbMoE,1881
22
+ engineering_process/skills.py,sha256=S_c2pQh40pcJtmdO9ltakK1nXaFN3jz_1CdLmW-CJ7Q,4626
23
+ engineering_process/supervision.py,sha256=8_giRZ9kltHdXmeLe5k-Pya9ShK1gswIZDFTYjDIHgM,1892
24
+ engineering_process/syncing.py,sha256=NuX-KCQUenqQDrvNI2pU6COvD6x_wAcSswNQFMxYZIg,15156
25
+ engineering_process/tooling.py,sha256=VII4aTyDGfwmyBMWziBNLPMEIftIRC7uCvhZgh9k4BE,33121
26
+ engineering_process-0.1.0.data/data/share/engineering-process/bundles.json,sha256=p3HBmz1yFJ3oJ5BIRp62l5dnC0OhRY5ITw8pQ6M8tmA,816
27
+ engineering_process-0.1.0.data/data/share/engineering-process/examples/change.json,sha256=DloBrj9xBbwmbtVKop3d_DlHfLVsm-bfvwGsOba3DaY,663
28
+ engineering_process-0.1.0.data/data/share/engineering-process/examples/plan.json,sha256=QsTApNafkUcEf-yjztQbqBiYY94lxxnBC3N9lrsXT5s,842
29
+ engineering_process-0.1.0.data/data/share/engineering-process/examples/project.json,sha256=D82oXdVqcH2trZnTX6bXTSHzQC1uuXgbDf_XbunGMvQ,1187
30
+ engineering_process-0.1.0.data/data/share/engineering-process/examples/review.json,sha256=TG5bODNLJdcHv9vPA3eqH88-jvxlpPi8Dz_DW0y7L1k,866
31
+ engineering_process-0.1.0.data/data/share/engineering-process/schemas/change.schema.json,sha256=MUqK6DwVCkyr8z7yfkTB6d-RD9Rn2DZQx5u1wKAWW6I,2555
32
+ engineering_process-0.1.0.data/data/share/engineering-process/schemas/lifecycle.schema.json,sha256=_rO3LOqac1TJjwLE_4YQaQl7WyyXMFIP-i2z7q-ycXM,3750
33
+ engineering_process-0.1.0.data/data/share/engineering-process/schemas/plan.schema.json,sha256=WFYFpIAaoOp2K10T0qNHwXTEiRklUptqQq9H1KFIReQ,3030
34
+ engineering_process-0.1.0.data/data/share/engineering-process/schemas/process-lock.schema.json,sha256=DTrzvLkxmOtTDYJPCeg2kRcqsNkALcXq2s3l6sH8Q_g,918
35
+ engineering_process-0.1.0.data/data/share/engineering-process/schemas/project.schema.json,sha256=MiWkI0cYYVUUeyCB2vFpTlLoQESbCAVLHCgK7um4irA,14414
36
+ engineering_process-0.1.0.data/data/share/engineering-process/schemas/review.schema.json,sha256=6JgmV6DTU_awjAlCVZk0auPmKOmvsGDeX5SpKDdJR-0,4146
37
+ engineering_process-0.1.0.data/data/share/engineering-process/schemas/reviewer-attestation.schema.json,sha256=iCZiBQwB1EOf3lWn1bu7aid1hFepu07NQClPVHnnPV4,1089
38
+ engineering_process-0.1.0.data/data/share/engineering-process/schemas/verification.schema.json,sha256=_dt63ONZxE6wHrZrqZgRscNYmfTWxjtqQoHWCl8FepY,2729
39
+ engineering_process-0.1.0.data/data/share/engineering-process/skills/assess-design/SKILL.md,sha256=5xwPCojPTpKz7i22AM_Bw3UcdTQsSv9m_-fHW6XM2Mw,1948
40
+ engineering_process-0.1.0.data/data/share/engineering-process/skills/build-frontend/SKILL.md,sha256=hAtfCv84kXjHFqojc1wqpukUb7NG6kPej2vQXgTmZ_E,1810
41
+ engineering_process-0.1.0.data/data/share/engineering-process/skills/build-frontend-foundation/SKILL.md,sha256=EDSJee7jj6SDEpbNI6uhsUuiqzdpg94pDkpNn-NElvA,1752
42
+ engineering_process-0.1.0.data/data/share/engineering-process/skills/change-api/SKILL.md,sha256=rFf1VjkMuc3J6n8tJEdHXKlQlS9XSjbriqsazLc_oZM,1789
43
+ engineering_process-0.1.0.data/data/share/engineering-process/skills/cross-repo-change/SKILL.md,sha256=-xbh0CFa-sNHP4npLghHJ0rNx5cTC_vm1S6Dwnzbdos,1809
44
+ engineering_process-0.1.0.data/data/share/engineering-process/skills/define-change-contract/SKILL.md,sha256=WTs2cVdlLKIsmwLbrx_vzt2XU7wl8CwvDvo4NkJMm9k,1989
45
+ engineering_process-0.1.0.data/data/share/engineering-process/skills/design-module/SKILL.md,sha256=JQf-ijVD-4ZF_HgqV5VtddycpDvpIya5UfiEBsuzJlU,1723
46
+ engineering_process-0.1.0.data/data/share/engineering-process/skills/evolve-process/SKILL.md,sha256=CST0FwZGROos3caumjdAhaBq7418GXbN-9IRfc0PwJw,1657
47
+ engineering_process-0.1.0.data/data/share/engineering-process/skills/finish-change/SKILL.md,sha256=-RS35B4RMpj4Znsg4BaKebNLb60tnWWO5tRsQoK7TaE,1561
48
+ engineering_process-0.1.0.data/data/share/engineering-process/skills/govern-ui/SKILL.md,sha256=NwwFTyeKH4yZebSkqOWM08MMrfgyqTlLCnM2oUv0vWg,2041
49
+ engineering_process-0.1.0.data/data/share/engineering-process/skills/implement-change/SKILL.md,sha256=70_eypofM5nbvqOojlCI8hG756LU6x02fJqSoxDyz74,2003
50
+ engineering_process-0.1.0.data/data/share/engineering-process/skills/implement-module/SKILL.md,sha256=5ZzNrMlul5S_spcmYGNXBr72DY62j5IPAwbhak5YoNo,1566
51
+ engineering_process-0.1.0.data/data/share/engineering-process/skills/implement-use-case/SKILL.md,sha256=gHhJB437Dh-P6eQjcRkBDihuQgQy3ssu219tEbE3hvA,1681
52
+ engineering_process-0.1.0.data/data/share/engineering-process/skills/integrate-mcp/SKILL.md,sha256=oxZSXBoz2IugWwCV-Up7FyY5xxbVheWD5417GSztx_k,1882
53
+ engineering_process-0.1.0.data/data/share/engineering-process/skills/maintain-docs/SKILL.md,sha256=5Ab-sGNQ66AkpSxjjk70BL_wJfPbXBL21YciB0Oj4GE,1617
54
+ engineering_process-0.1.0.data/data/share/engineering-process/skills/plan-change/SKILL.md,sha256=9HfMNXrSD6cwMPDSCecPzL9AcYLlfkgW7Mcf4oSbziw,1628
55
+ engineering_process-0.1.0.data/data/share/engineering-process/skills/publish-change/SKILL.md,sha256=T5dsFELT2Oam9wTirI5Tb9xVRSMDVcQ4loY8YIrHV3E,1738
56
+ engineering_process-0.1.0.data/data/share/engineering-process/skills/review-change/SKILL.md,sha256=LoP-D6MJAJ1vL-aS8AutgJEDugW1RtURpW3yslf_Feo,2691
57
+ engineering_process-0.1.0.data/data/share/engineering-process/skills/run-change/SKILL.md,sha256=WbPZ63vdp7cPTtucI8qstfXXNY5nYqcPgsWD6KJDqgw,2458
58
+ engineering_process-0.1.0.data/data/share/engineering-process/skills/run-change/references/execution.md,sha256=Zo_38Bsc-1NH12Vc5sDYX6_39ps1r0dCBCiwN-OlM2U,4671
59
+ engineering_process-0.1.0.data/data/share/engineering-process/skills/run-project-command/SKILL.md,sha256=u77FmChZ8O5mNXZJlgm_rNoBvLPJXtCogeZhxYsMSp0,3188
60
+ engineering_process-0.1.0.data/data/share/engineering-process/skills/specify-use-case/SKILL.md,sha256=cxf-4qIL5EvlSDabtWWCcPBhM9HReeSt2P_uSEKhoe0,1806
61
+ engineering_process-0.1.0.data/data/share/engineering-process/skills/verify-change/SKILL.md,sha256=KdMEtfFk1rYP7u2sFlzdy1cRCETc5l8GfvgVM_GPNq8,1737
62
+ engineering_process-0.1.0.data/data/share/engineering-process/templates/AGENTS.process.md,sha256=nzfuMzAawpEZk5PJPNgLjfDsj_-eHorRra-XuqqkOlo,917
63
+ engineering_process-0.1.0.data/data/share/engineering-process/templates/PULL_REQUEST_TEMPLATE.md,sha256=YHcPujaWXR6T5qY0NHavnW8oJ6rvqj4Yy45N7IEHErU,1077
64
+ engineering_process-0.1.0.dist-info/licenses/LICENSE,sha256=Tm6UkBZiW25MSgs721n0XrIdhEYNpRpPbAjoKg4nfLc,1089
65
+ engineering_process-0.1.0.dist-info/METADATA,sha256=2IuTxEbeHLY2bZFqEvjHX61v-p4J5r2FK9uToAjTHTY,19207
66
+ engineering_process-0.1.0.dist-info/WHEEL,sha256=YVMoNqKzERt-wjUZwJ33xBGAwnFl-4cqbYkTtWa4itE,91
67
+ engineering_process-0.1.0.dist-info/entry_points.txt,sha256=pq2B7N0N_GmwdZKLTSZC5CK30e71UQ1hgpvLCagrn_Q,60
68
+ engineering_process-0.1.0.dist-info/top_level.txt,sha256=H4SsnAxJXndryC0y1hGHHPc2qswVIsEzgwbcCd___lM,20
69
+ engineering_process-0.1.0.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (84.0.0)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ processctl = engineering_process.cli:main
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 engineering-process contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1 @@
1
+ engineering_process