docs(P48): vision gaps + badge system + substrate→engine + CR format + agentic tags
acdl-ci / Lint (push) Successful in 7s
acdl-ci / Test (push) Successful in 23s
acdl-ci / Platform check-only (offline) (push) Successful in 8s

9 requirements implemented across presentation decks and project docs:

1. DX closing slide: added 'Infrastructure as a utility, not a craft' bullet
   to convey the full vision (infrastructure consumed, not maintained;
   platform compounds value over time).
2. PW Problem slide: 'moving a merged change' → 'promoting a change'.
3. PW Problem slide: added 'Red tape' and 'Scalability without increasing
   headcount' bullets (4 frictions, not 2).
4. PW Roadmap slide: redesigned with side-by-side HTML table layout
   (Testing | Planned), 16px font, no overflow.
5. PW deck: added new slide 'What This Platform Is — and Isn't' after North
   Star (sovereign boundary, infrastructure as utility, 4 anti-goals).
   PW deck now 16 slides (was 15).
6. Maturity nomenclature: 'Available today'/'shipped' → 'Testing' across
   both decks + source markdown. New .testing badge (blue/teal #DBEAFE).
   Roadmap title: 'Testing vs. Planned'. The platform has 0 consumer
   adoption — 'shipped' was inaccurate.
7. Global: 'substrate' → 'engine' across entire project (88 matches, 30+
   files including .ciagent/, docs/, modules/, adapters/, schemas/, code).
8. Presentation files only: 'forge' → 'VCS' / 'version control system'
   (6 occurrences in 4 files). 'forge' retained in all technical docs and
   code as the industry-standard term.
9. New .agentic badge (purple/violet #EDE9FE) appended to agentic features
   in both decks: confidence signal, autonomous dev, pattern recognition,
   dynamic module creation, citizen developer surface, auto-promotion.

Also: Change Request ID format changed from 'CR-2026-001' to 'CHG0678912'
across presentation files, consumer guide, and test fixtures.

HTML re-rendered. PPTX rendered for release upload.

---ci---
phase: 48
milestone: v1.9
status: complete
requirements:
  covered: []
  partial: []
---/ci---
This commit is contained in:
Jon Chery
2026-07-23 14:58:29 +00:00
parent fc070ccb15
commit 7585c828f0
38 changed files with 582 additions and 398 deletions
+8 -8
View File
@@ -449,7 +449,7 @@ class TestValidateChangeRequest:
)
# Insert an approved CR
table.put_item(Item={
"changeRequestId": "CR-001",
"changeRequestId": "CHG0678912",
"submittedAt": "2026-07-22T10:00:00Z",
"consumerRepo": "acdl/consumer-a",
"contractId": "contract-001",
@@ -459,7 +459,7 @@ class TestValidateChangeRequest:
})
# Insert a pending CR
table.put_item(Item={
"changeRequestId": "CR-002",
"changeRequestId": "CHG0678913",
"submittedAt": "2026-07-22T11:00:00Z",
"consumerRepo": "acdl/consumer-b",
"contractId": "contract-002",
@@ -471,30 +471,30 @@ class TestValidateChangeRequest:
yield
def test_validates_approved_cr(self, moto_change_requests_table):
payload = {"changeRequestId": "CR-001", "consumerRepo": "acdl/consumer-a"}
payload = {"changeRequestId": "CHG0678912", "consumerRepo": "acdl/consumer-a"}
result = ingestor._validate_change_request(payload)
assert result["status"] == "approved"
assert result["changeRequestId"] == "CR-001"
assert result["changeRequestId"] == "CHG0678912"
def test_rejects_non_approved_cr(self, moto_change_requests_table):
payload = {"changeRequestId": "CR-002", "consumerRepo": "acdl/consumer-b"}
payload = {"changeRequestId": "CHG0678913", "consumerRepo": "acdl/consumer-b"}
with pytest.raises(ValueError, match="status is 'requested'"):
ingestor._validate_change_request(payload)
def test_rejects_nonexistent_cr(self, moto_change_requests_table):
payload = {"changeRequestId": "CR-NONEXIST", "consumerRepo": "acdl/consumer-a"}
payload = {"changeRequestId": "CHG9999999", "consumerRepo": "acdl/consumer-a"}
with pytest.raises(ValueError, match="not found in CMDB"):
ingestor._validate_change_request(payload)
def test_rejects_repo_mismatch(self, moto_change_requests_table):
payload = {"changeRequestId": "CR-001", "consumerRepo": "acdl/wrong-repo"}
payload = {"changeRequestId": "CHG0678912", "consumerRepo": "acdl/wrong-repo"}
with pytest.raises(ValueError, match="consumerRepo mismatch"):
ingestor._validate_change_request(payload)
def test_lambda_handler_routes_validate_change_request(self, moto_change_requests_table):
event = {"body": json.dumps({
"action": "validate_change_request",
"changeRequestId": "CR-001",
"changeRequestId": "CHG0678912",
"consumerRepo": "acdl/consumer-a",
})}
resp = ingestor.lambda_handler(event, None)