Skip to content

Add Governed Programmatic Publishing application pack - #50

Merged
jamesfgibbons merged 1 commit into
mainfrom
cursor/governed-programmatic-publishing-fea7
Oct 4, 2026
Merged

jamesfgibbons merged 1 commit into
mainfrom
cursor/governed-programmatic-publishing-fea7

Conversation

@jamesfgibbons

Copy link
Copy Markdown
Owner

Turn structured business data into useful, searchable pages—with controlled claims, consistent representations, and proof of what was published.

This PR adds a public-safe Governed Programmatic Publishing application pack to constitutional-cms. It maps a generated page family onto the existing contract families, G0–G5, four web-conformance profiles, release/promotion relations, and work-priority schemes. It does not invent a fifth conformance profile, a new certification state, or a site compiler.

Constitutional CMS remains the publishing contract. This pack is an application of that contract. A future governed-publishing-starter would pin a CMS release and ship a runnable publisher; that work is deferred. The public CLI still evaluates evidence and writes receipts.

What landed

  • docs/PROGRAMMATIC_PUBLISHING.md — promise, scheme mapping, synthetic-domain precedence, eight lifecycle rows, portable extraction rules, CLI/starter boundary, and named contract-amendment TODOs
  • examples/programmatic-publishing/ — Northline Desk Co. synthetic ecommerce catalogue (product, collection, comparison), fixtures, expected verdicts, provenance
  • tests/test_programmatic_publishing.py — offline acceptance tests (fixtures vs expected)
  • Index pointers in README.md, examples/README.md, docs/PROTOCOL_MAP.md, and docs/CONSTITUTION.md

Synthetic domain and controlled failures

Ecommerce desk-goods catalogue, not travel, not production SEO law.

  1. Price parity — HTML list price changed without changing the governed snapshot → price_parity_contradiction; entity stays active
  2. Inventory feed failed — product remains a legitimate entity; inventory claim withheld; no invented zero; no retirement; BASIC + still indexable per family policy
  3. Served artifact mismatch — wire generation/hash ≠ candidate → acceptance failed; cannot claim live_verified

Precedence (declared in the pack)

entity_lifecycle.yaml owns existence and 410 Gone. Family page_types owns quality tier and emission floors. Family indexability_policy owns robots/sitemap. Source failure is not a terminal trigger.

Contract amendments left as TODOs (not landed)

ID Owner Gap
TODO-PP-1 contracts/page_types.yaml Example SUPPRESS still says source-unavailable → 404
TODO-PP-2 examples/ecommerce-catalog/page_types.yaml Same teaching-copy risk after PP-1
TODO-PP-3 contracts/claim_decision.yaml Shared-claim parity across collection/comparison projections is only in the certification rubric today

Tests

python3 -m unittest tests.test_programmatic_publishing -v — 22 passed

python3 -m unittest discover -s tests -v — 163 passed

No merge requested. No new repository. Public-safe content only.

Open in Web Open in Cursor 

Map generated product, collection, and comparison pages onto the existing
contracts with a synthetic ecommerce catalogue, three controlled failure
fixtures, and acceptance tests. No new conformance profile.

Co-authored-by: James F Gibbons <james@jamesfgibbons.com>
@jamesfgibbons
jamesfgibbons marked this pull request as ready for review October 4, 2026 23:14
@jamesfgibbons
jamesfgibbons merged commit fe45f68 into main Oct 4, 2026
2 checks passed
@jamesfgibbons
jamesfgibbons deleted the cursor/governed-programmatic-publishing-fea7 branch October 4, 2026 23:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants