Skip to content

Commit 8a5908c

Browse files
committed
feat: improve assurance clarity and adoption
1 parent 8f041d1 commit 8a5908c

21 files changed

Lines changed: 266 additions & 33 deletions

CONTRIBUTING.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
# Contributing
22

3-
Open an issue before implementation. Keep policy technology-neutral and encode obligations rather than generic engineering advice. Add tests for inheritance, classification, evidence, adapters, and migration impact. Run `pytest`, build/install the wheel, and exercise the CLI outside the checkout. Pull requests must explain why new machinery is necessary and identify native alternatives considered.
3+
Material policy, schema, workflow, adapter, or release changes must review and update `docs/capability-status.md`. If status does not change, state why in the pull request. Schema changes require compatibility/upgrade notes and tests.
44

5+
Open an issue before implementation. Keep policy technology-neutral and encode obligations rather than generic engineering advice. Add tests for inheritance, classification, evidence, adapters, and migration impact. Run `pytest`, build/install the wheel, and exercise the CLI outside the checkout. Pull requests must explain why new machinery is necessary and identify native alternatives considered.

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# Software Engineering Process
22

3+
See the maintained [capability status](docs/capability-status.md) for what is implemented, partial, experimental, designed, or deferred.
4+
35
A technology-neutral Software Engineering Policy and Assurance platform. It resolves **what must be true** for a change and delegates **how** to coding assistants, humans, CI, GitHub, and other native mechanisms.
46

57
```text

docs/adoption-modes.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# Progressive adoption modes
2+
3+
Modes describe operational maturity, never delivery risk and never alternate meanings of locked controls.
4+
5+
| Mode | Target users | Prerequisites | Guarantees | Limitations |
6+
|---|---|---|---|---|
7+
| Foundation | New/small repositories | Manifest, lock, generated bootstrap, validation workflow | Locked policy/version drift checks | No claim of authenticated end-to-end evidence |
8+
| Assured | Mature or solo repositories | Foundation + categorized validation, trusted CI/review workflow allowlists, GitHub adapter | Automated Lean evidence and authenticated review/readiness | No claim of Protected agent isolation |
9+
| Protected | Sensitive repositories | Assured + sandbox, network enforcement, audit sink | Protected execution fails closed and human production boundary remains | Native controls must be operated by repository owner |
10+
| Governed | Multi-maintainer/process-improvement programs | Protected + optional metrics enabled + maintained critical context | Aggregated outcome feedback and explicit truth ownership | Metrics cannot rank individuals |
11+
12+
Run `engineering-process adoption-report`. A configured target above achieved prerequisites is diagnostic and makes `validate` fail. Transitions are incremental reviewed manifest/lock upgrades; optional metrics/adapters can be removed in a reviewed upgrade. Locked controls never weaken. A solo owner can manually authorize/promote production while independent review remains a separate fresh-context procedure.
13+
14+
Examples: a new repository begins Foundation; a mature repository maps existing CI into Assured; a solo maintainer uses Assured/Protected with owner-controlled production; a multi-maintainer repository may reach Governed. Lean work in Assured uses trusted diff, automatic CI test evidence, one authenticated independent review, and readiness—no hand-authored routine test JSON.

docs/adoption.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,23 @@ The initial checkout and runner are the bootstrap trust boundary. Evidence
2020
transport and v1 compatibility are defined in the [exact-revision evidence
2121
lifecycle](evidence-lifecycle.md).
2222

23+
### Schema v2 and adapters
24+
25+
Process 1.3.0 upgrades schema-v1 manifests to strict schema v2. Legacy
26+
`overrides.technology` moves to the explicit versioned `legacy/technology`
27+
extension; platform mechanics move from `overrides.native_enforcement` to
28+
`adapters.github`. Unknown v2 fields are rejected. Canonical policy now expresses
29+
semantic readiness, protected-branch, and production-boundary obligations while
30+
the versioned GitHub adapter selects status names, branches, environments, and
31+
runner labels. Stronger local controls remain valid; locked-control weakening is
32+
still rejected.
33+
34+
Optional `adapters.github_copilot.scoped_instructions` generate compact
35+
path-scoped `.github/instructions/*.instructions.md` files from canonical process
36+
identity and declared local-context paths. They are hash-locked and non-canonical.
37+
Remove adapter configuration during a reviewed upgrade to remove only unchanged
38+
generated files; modified or repository-owned files are refused.
39+
2340
### Phase 2 evidence migration
2441

2542
Process 1.1.0 obligation sets require `test-result/v2` and `independent-review/v2`.

docs/capability-status.md

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# Capability status
2+
3+
Current process release: **1.3.0**.
4+
5+
Status terms: **implemented** is executable and tested; **partial** works with stated prerequisites/limits; **experimental** is usable but compatibility may change; **designed** has an accepted contract but no complete implementation; **deferred** is intentionally postponed with tracked rationale. Material implementation and release changes must update this matrix.
6+
7+
| Capability | Status | Limits / prerequisites |
8+
|---|---|---|
9+
| Locked policy inheritance and upgrades | implemented | Immutable Git revision and reviewed upgrade required. |
10+
| Trusted Git classification | implemented | Full Git history/base must be available. |
11+
| Exact-SHA evidence and producer trust | implemented | Standard/Protected require out-of-band platform provenance. |
12+
| Agent-execution security | partial | Policy and GitHub mapping implemented; adopters supply native sandbox/egress enforcement. |
13+
| End-to-end GitHub reference flow | implemented | Repository configures authorized workflow refs and review Environment. |
14+
| Outcome metrics | experimental | Optional repository aggregation; completeness depends on supplied events. |
15+
| Delegation assessment | experimental | Advisory only; does not grant authority. |
16+
| Dependency assurance | partial | Signals/obligations implemented; ecosystem-native commands supply registry/security facts. |
17+
| Context truth maintenance | implemented | Deterministic hooks only; no LLM assertion is accepted as proof. |
18+
| Progressive adoption modes | implemented | Modes describe achieved infrastructure, not weaker controls. |
19+
| Lean/Standard/Protected assurance profiles | implemented | Delivery assurance remains separate from adoption mode and delegation. |
20+
| Strict v2 manifest/extensions and GitHub adapter | implemented | v1 remains migration-compatible; v2 required for strict separation. |
21+
| Optional scoped GitHub Copilot instructions | implemented | Generated, hash-locked, compact, non-canonical. |
22+
| Cross-repository coordination | deferred | Out of scope; see epic #7 non-goals and future measured need. |
23+
| Additional native assistant formats | designed | Add only from stable semantics; track follow-up after #23. |
24+
25+
The historical [target architecture](design/common-software-engineering-process-design-v4.md) remains a design reference. It is not evidence that every described capability is delivered.

policy/core.yaml

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
schema_version: 1
22
process:
3-
version: 1.2.0
3+
version: 1.3.0
44
source: suyog19/software-engineering-process
55
controls:
66
traceability:
@@ -73,16 +73,10 @@ capabilities:
7373
solution-sufficiency: {authority: minimum_sufficient_solution_and_feedback_triage}
7474
ci-automation: {authority: objective_checks_and_policy_enforcement}
7575
native_enforcement:
76-
required_status_checks: [engineering-process]
77-
protected_branches: true
76+
readiness_gate_required: true
77+
protected_branch_required: true
7878
production_environment:
7979
manual_human_promotion_required: true
8080
automation_may_promote: false
8181
distinct_human_reviewer_required: false
8282
stronger_multi_human_gate_permitted: true
83-
agent_execution:
84-
permissions: read-only-by-default
85-
secrets: environment-scoped-and-withheld-from-forks
86-
runner: ephemeral-sandbox
87-
network: adapter-enforced-allowlist
88-
workflow_approval: required-for-untrusted-forks

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
44

55
[project]
66
name = "software-engineering-process"
7-
version = "1.2.0"
7+
version = "1.3.0"
88
description = "Technology-neutral engineering policy and assurance platform"
99
readme = "README.md"
1010
requires-python = ">=3.11"
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"properties":{"readiness_status":{"type":"string"},"protected_branch":{"type":"string"},"production_environment":{"type":"string"},"runner_labels":{"type":"array","items":{"type":"string"}}}}

schemas/repository-process.schema.json

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"required": ["schema_version", "process", "repository"],
66
"additionalProperties": false,
77
"properties": {
8-
"schema_version": {"const": 1},
8+
"schema_version": {"enum": [1, 2]},
99
"process": {
1010
"type": "object", "additionalProperties": false,
1111
"required": ["source", "version", "revision", "profile"],
@@ -17,7 +17,7 @@
1717
}
1818
},
1919
"repository": {
20-
"type": "object", "required": ["name"], "additionalProperties": true,
20+
"type": "object", "required": ["name"], "additionalProperties": false,
2121
"properties": {
2222
"name": {"type": "string", "minLength": 1},
2323
"trusted_ci_workflows": {"type": "array", "items": {"type": "string", "minLength": 1}, "uniqueItems": true},
@@ -44,10 +44,10 @@
4444
"overrides": {
4545
"type": "object", "additionalProperties": false,
4646
"properties": {
47-
"technology": {"type": "object"},
48-
"validation": {"type": "object", "properties": {"commands": {"type": "array", "items": {"type": ["string", "object"]}}}},
49-
"classification": {"type": "object", "properties": {"protected_path_hints": {"type": "array", "items": {"type": "string"}}, "dependency_path_hints": {"type": "array", "items": {"type": "string"}}, "additional_protected_characteristics": {"type": "array", "items": {"type": "string"}}}},
50-
"ux": {"type": "object", "properties": {"additional_required_when": {"type": "array", "items": {"type": "string"}}}},
47+
"extensions": {"type": "array", "items": {"type": "object", "additionalProperties": false, "required": ["namespace", "schema_version", "configuration"], "properties": {"namespace": {"type": "string"}, "schema_version": {"type": "integer"}, "configuration": {"type": "object"}}}},
48+
"validation": {"type": "object", "additionalProperties": false, "properties": {"commands": {"type": "array", "items": {"type": ["string", "object"]}}}},
49+
"classification": {"type": "object", "additionalProperties": false, "properties": {"protected_path_hints": {"type": "array", "items": {"type": "string"}}, "dependency_path_hints": {"type": "array", "items": {"type": "string"}}, "additional_protected_characteristics": {"type": "array", "items": {"type": "string"}}}},
50+
"ux": {"type": "object", "additionalProperties": false, "properties": {"additional_required_when": {"type": "array", "items": {"type": "string"}}}},
5151
"controls": {"type": "object"},
5252
"native_enforcement": {"type": "object"}
5353
,"agent_execution": {
@@ -62,6 +62,11 @@
6262
}
6363
}
6464
}
65-
}
65+
},
66+
"adoption": {"type": "object", "additionalProperties": false, "properties": {"target_mode": {"enum": ["Foundation", "Assured", "Protected", "Governed"]}, "metrics_enabled": {"type": "boolean"}}},
67+
"adapters": {"type": "object", "additionalProperties": false, "properties": {
68+
"github": {"type": "object", "additionalProperties": false, "properties": {"readiness_status": {"type": "string"}, "protected_branch": {"type": "string"}, "production_environment": {"type": "string"}, "runner_labels": {"type": "array", "items": {"type": "string"}}}},
69+
"github_copilot": {"type": "object", "additionalProperties": false, "properties": {"scoped_instructions": {"type": "array", "items": {"type": "object", "additionalProperties": false, "required": ["name", "apply_to", "context_paths"], "properties": {"name": {"type": "string", "pattern": "^[a-z0-9-]+$"}, "apply_to": {"type": "string", "pattern": "^[^\\r\\n\"]+$"}, "context_paths": {"type": "array", "items": {"type": "string"}}}}}}}
70+
}}
6671
}
6772
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
"""Software Engineering Policy and Assurance platform."""
22

3-
__version__ = "1.2.0"
3+
__version__ = "1.3.0"

0 commit comments

Comments
 (0)