docs: add training acceptance index
This commit is contained in:
@@ -19,6 +19,21 @@ Set `MIGRATIONS_OUTPUT_JSON=1` when running `run_migrations.py` for a machine-re
|
||||
|
||||
Training Case Engine is the external-facing product training module. The public milestone state is M1-M40, with current product maturity through M40.
|
||||
|
||||
Accepted milestone range: M1-M40, with current product maturity through M40.
|
||||
|
||||
Offline validation commands:
|
||||
|
||||
- `.venv/bin/python -m unittest discover -s tests/unit -p "test_*.py"`
|
||||
- `.venv/bin/python scripts/run_offline_checks.py`
|
||||
|
||||
Accepted user-facing surfaces:
|
||||
|
||||
- Dashboard Training panel
|
||||
- public API routes
|
||||
- offline public package import/export
|
||||
- public error catalog
|
||||
- public privacy contract coverage
|
||||
|
||||
- Acceptance and offline validation: M35 acceptance posture, Training Case acceptance manifest, focused milestone test suites, offline checks, and public validation.
|
||||
- Public API and privacy contracts: API contract coverage, error contract coverage, and privacy contract coverage keep public routes audited while public responses scrub private solution material and internal solution details.
|
||||
- Package smoke and offline registry: offline package smoke covers local import/export with public package, public export, and public output flows; broader offline checks register `training_case_package`.
|
||||
|
||||
@@ -2,6 +2,23 @@
|
||||
|
||||
Training Case Engine is the product-facing training module in AI Exchange. M1-M40 is the current public milestone range, with current product maturity through M40 across public API, package, dashboard, validation, and local deployment guard surfaces.
|
||||
|
||||
## Training Case Engine acceptance index
|
||||
|
||||
Accepted milestone range: M1-M40, with current product maturity through M40.
|
||||
|
||||
Offline validation commands:
|
||||
|
||||
- `.venv/bin/python -m unittest discover -s tests/unit -p "test_*.py"`
|
||||
- `.venv/bin/python scripts/run_offline_checks.py`
|
||||
|
||||
Accepted user-facing surfaces:
|
||||
|
||||
- Dashboard Training panel
|
||||
- public API routes
|
||||
- offline public package import/export
|
||||
- public error catalog
|
||||
- public privacy contract coverage
|
||||
|
||||
## Milestone Release Index
|
||||
|
||||
- M1-M28 established persisted training cases, a lightweight HTTP API, a dashboard entry, validation hardening, public package import/export, offline package smoke coverage, product documentation checks, public response plus package smoke privacy hardening, and dashboard/public docs privacy alignment. The M1-M28 product maturity through M28 included API contract coverage, error contract coverage, the fixture/schema contract, the offline checks registry smoke, recursive public payload sanitization, public response privacy contract coverage, package smoke docs/fixture public privacy guards, and dashboard and public docs privacy smoke coverage.
|
||||
|
||||
@@ -107,6 +107,19 @@ TRAINING_ACCEPTANCE_VALIDATION_DOC_SNIPPETS = (
|
||||
"offline checks",
|
||||
"public validation",
|
||||
)
|
||||
TRAINING_ACCEPTANCE_INDEX_DOCS = (PROJECT_README, TRAINING_PRODUCT_DOC)
|
||||
TRAINING_ACCEPTANCE_INDEX_REQUIRED_SNIPPETS = (
|
||||
"Accepted milestone range: M1-M40, with current product maturity through M40.",
|
||||
"Offline validation commands:",
|
||||
"`.venv/bin/python -m unittest discover -s tests/unit -p \"test_*.py\"`",
|
||||
"`.venv/bin/python scripts/run_offline_checks.py`",
|
||||
"Accepted user-facing surfaces:",
|
||||
"Dashboard Training panel",
|
||||
"public API routes",
|
||||
"offline public package import/export",
|
||||
"public error catalog",
|
||||
"public privacy contract coverage",
|
||||
)
|
||||
TRAINING_M41_RELEASE_INDEX_DOCS = (PROJECT_README, TRAINING_PRODUCT_DOC)
|
||||
TRAINING_M41_RELEASE_INDEX_GUARD_TEST_INVENTORY = (
|
||||
"test_training_readmes_expose_m1_m40_release_index_without_raw_test_modules",
|
||||
@@ -4427,6 +4440,21 @@ TRAINING_M41_RELEASE_INDEX_REQUIRED_SNIPPET_INVENTORY = (
|
||||
for snippet in TRAINING_ACCEPTANCE_VALIDATION_DOC_SNIPPETS:
|
||||
self.assertIn(snippet, text)
|
||||
|
||||
def test_training_readmes_expose_operator_acceptance_index(self) -> None:
|
||||
for path in TRAINING_ACCEPTANCE_INDEX_DOCS:
|
||||
text = path.read_text(encoding="utf-8")
|
||||
with self.subTest(path=path.name):
|
||||
for snippet in TRAINING_ACCEPTANCE_INDEX_REQUIRED_SNIPPETS:
|
||||
self.assertIn(snippet, text)
|
||||
self.assertLess(
|
||||
text.index("Accepted milestone range:"),
|
||||
text.index("Offline validation commands:"),
|
||||
)
|
||||
self.assertLess(
|
||||
text.index("Offline validation commands:"),
|
||||
text.index("Accepted user-facing surfaces:"),
|
||||
)
|
||||
|
||||
for path in TRAINING_PUBLIC_PRIVACY_DOCS:
|
||||
text = path.read_text(encoding="utf-8")
|
||||
with self.subTest(path=path.name, surface="manifest_modules"):
|
||||
|
||||
Reference in New Issue
Block a user