Skip to content

Create CI workflow for planning and docs checks #25

Description

@alexeygrigorev

Create CI workflow for planning and docs checks

Status: pending
Tags: docs, process-docs, infra, testing, P1
Depends on: None
Blocks: None

Scope

Add a GitHub Actions workflow and the repo-local validation it needs to protect DataOps planning docs, process docs, templates, metadata, and V1 goal/JTBD references before source-system imports and unified-platform changes land on main.

The workflow should be stronger than a docs-only prose check. It should validate the planning/process contract that keeps DataOps aligned with the AI Shipping Labs-style lifecycle, plus the technical references that connect docs, templates, work-engine tasks, search, and the V1 operator goal.

Expected implementation areas:

  • Add a planning/docs CI workflow, likely .github/workflows/validate-planning-docs.yml, with read-only permissions and workflow_dispatch.
  • Trigger it for changes to planning/process/metadata surfaces, including _docs/**, docs/**, templates/**, content/tasks/templates/**, .goal-v1.md, PROJECT_PLAN.md, PORTAL_ANALYSIS.md, README.md, related tests/scripts, and the workflow itself.
  • Add or extend automated validation under tests/, scripts/, or the existing docs-app test suite as appropriate. Prefer normal repo test commands over one-off shell assertions embedded only in YAML.
  • Validate internal Markdown links and repo-relative references for the protected docs set. External URLs should not make CI flaky unless the implementation uses a deliberate, bounded checker.
  • Validate stable metadata needed by the unified operations platform: document IDs/aliases, related_docs, task-template frontmatter, template references, and docs registry/search behavior where those surfaces are touched.
  • Protect _docs/PROCESS.md from weaker process drift by checking for the required lifecycle gates and role ownership: orchestrator intake, PM grooming, SWE implementation without commit, Tester verification with real tests/screenshots where relevant, PM acceptance, local merge to main, push, and On-Call CI/CD monitoring.
  • Protect .goal-v1.md and docs/operations-manager-platform-jtbd.md references so the V1 goal, JTBD, and referenced files remain present and linkable.
  • Keep this CI path separate from deployment and deployed cache refresh. It should not require AWS credentials, mutate production state, or depend on GitHub PRs as the process source of truth.
  • Do not use stylint or user-facing prose tooling for these internal process docs unless Alexey explicitly asks for prose polish.

Affected areas:

  • .github/workflows/**
  • _docs/PROCESS.md, _docs/MERGE_PLAN.md, _docs/import-log.md
  • .goal-v1.md, PROJECT_PLAN.md, PORTAL_ANALYSIS.md, README.md
  • docs/**, especially docs/local-development.md, docs/operations-manager-platform-jtbd.md, runtime/data-model docs, and repository-structure docs
  • templates/**
  • content/tasks/templates/**
  • lambda-functions/src/lambda_functions/doc_registry.py, search-index tooling, docs-app tests, or new planning-doc validation tests if needed
  • work-engine/docs/** and work-engine template contracts where referenced by the checks

Acceptance Criteria

  • A GitHub Actions workflow exists for planning/process/docs validation with read-only permissions, workflow_dispatch, and path filters that cover the protected planning docs, process docs, templates, metadata, goal/JTBD references, and the workflow itself.
  • The workflow runs concrete repo validation, not prose-only linting. At minimum it runs the new planning/docs validation command, docs metadata/registry coverage, and a search-index build or equivalent search smoke check for template/doc metadata surfaces.
  • Internal Markdown links and repo-relative references in the protected docs set fail CI when they point at missing files or missing required reference targets. External links are either ignored or checked only with a deliberate non-flaky policy documented in the implementation.
  • _docs/PROCESS.md has automated guardrails for the AI Shipping Labs-strength lifecycle controls listed in Scope. The guard must fail if the process drops or weakens the required gates/roles, even though the original sibling repo is not available in GitHub Actions.
  • .goal-v1.md reference files and the Operations Manager JTBD reference remain present and linkable; CI fails if a referenced repo-local file or directory is removed without updating the goal/JTBD contract.
  • Task-template and process-doc metadata that feeds the unified operations platform is covered: stable IDs/aliases, related_docs, task-template frontmatter, and template/doc registry behavior are validated by tests or a script with test coverage.
  • The workflow does not deploy, refresh the deployed docs cache, assume AWS credentials, require production secrets, or mutate GitHub/content/runtime state.
  • The implementation explicitly avoids stylint/user-facing prose tooling for internal process docs.
  • Local documentation is updated only if needed to name the new command/workflow in the existing local-development command matrix. Do not rewrite process docs or planning docs beyond what is necessary for the CI contract.
  • The issue checkboxes are updated by SWE/Tester as the work passes implementation and verification, following _docs/PROCESS.md.

Test Scenarios

Scenario: Planning-doc workflow catches broken internal references

Given: a change edits _docs/**, docs/**, .goal-v1.md, PROJECT_PLAN.md, PORTAL_ANALYSIS.md, README.md, templates/**, or content/tasks/templates/**
When: the planning/docs validation workflow runs
Then: missing repo-local Markdown links, missing referenced files/directories, and broken goal/JTBD references fail the job with actionable output.

Scenario: Process lifecycle controls cannot be weakened silently

Given: _docs/PROCESS.md is changed
When: the planning/docs validation command runs
Then: it fails if required lifecycle controls are removed or materially weakened: PM grooming, SWE no-commit-before-review, Tester real verification, PM acceptance, local merge to main, push, On-Call CI/CD monitoring, no PR merge workflow, and no stylint requirement for internal process docs.

Scenario: Unified-platform metadata remains executable

Given: task templates, process docs, or metadata used by the portal/work-engine/search contract are changed
When: the planning/docs validation workflow runs
Then: stable document IDs/aliases, related_docs, task-template frontmatter, and docs registry/search behavior are validated so task-to-doc and template-to-doc references do not drift.

Scenario: CI is safe for internal process changes

Given: a process-doc-only or planning-doc-only change lands on main
When: GitHub Actions runs the new workflow
Then: the job uses read-only repository access, does not assume AWS OIDC credentials, does not deploy, and does not refresh the deployed docs cache.

Scenario: Local verification matches CI

Given: a SWE has implemented the workflow and validation command
When: Tester runs the required verification commands locally
Then: the same checks that protect planning/docs CI pass locally, and any intentionally skipped broader command is explained against _docs/PROCESS.md and docs/local-development.md.

Out of Scope

  • Rewriting _docs/PROCESS.md or weakening the AI Shipping Labs parity contract.
  • Broad content cleanup across all content/** process docs.
  • Migrating source repos or modifying ../dtc-operations, ../datatasks, or ../podcast-assistant.
  • Adding a PR-based development process or requiring gh pr create / gh pr merge.
  • Live AWS deployment, deployed cache refresh, production Lambda invocation, GitHub content writes, or any check requiring secrets.
  • Stylint, prose-polish, or user-facing content-style enforcement for internal process docs.
  • Building a full external-link crawler unless separately scoped.

Dependencies

  • Existing docs/process expectations in _docs/PROCESS.md and docs/local-development.md.
  • Existing CI workflows:
    • .github/workflows/deploy-dataops-v1.yml
    • .github/workflows/validate-dataops-content.yml
    • .github/workflows/assistant-ci.yml
  • Existing validation commands for docs app, search index, and work-engine checks.
  • GitHub Actions cannot access ../ai-shipping-labs/_docs/PROCESS.md, so parity automation must use repo-local required-control guardrails. Local reviewer parity inspection against the sibling source process remains a manual verification step only if _docs/PROCESS.md itself is changed.

Required Verification Commands

Run from the repo root unless noted:

git diff --check
uv run --project lambda-functions --extra search --with pytest python -m pytest tests/docs_app
uv run --with pytest python -m pytest tests/planning_docs

If the implementation uses a different path/name for the new planning-doc validation tests, update this issue before handoff and use that exact command in Tester evidence.

Build the content/search index because this issue protects template/doc metadata and search references:

cd lambda-functions
uv run --extra search python -m lambda_functions.build_search_index \
  --docs-dir ../content \
  --output ../.tmp/dataops-content-search.index

Run work-engine contract checks if the implementation touches work-engine/**, content/tasks/templates/**, root work-engine package wrappers, or template/task metadata behavior:

npm --prefix work-engine test
npm --prefix work-engine run typecheck
npm --prefix work-engine run build

For workflow YAML changes, inspect the changed workflow paths and confirm the local commands above match the workflow steps. Do not run live AWS deploy/cache-refresh checks for this issue.

Blockers

  • None known.
  • Do not block on live GitHub Actions completion before implementation handoff; On-Call monitoring happens after approved work is committed, locally merged to main, and pushed.
  • If the implementation discovers that a required check needs production credentials, external accounts, or live GitHub/AWS writes, stop and re-scope that check as [HUMAN] or out of scope before continuing.

Metadata

Metadata

Assignees

No one assigned

    Labels

    P1ImportantdocsDocumentation or process docs workinfraDeployment and infrastructureprocess-docsSOPs, templates, references, playbookstestingTests and QA

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions