Merge develop into stable (pre-release: cleanup agentic structure) - #362
Merged
Conversation
Add a dev/constitution.md pointer; a markdown guideline and a module-docstrings guideline; guides for adding a doc fragment and debugging ansible-test sanity failures; a knowledge deep-dive on the inventory + lookup plugins; and three seed ADRs (two-plugin-patterns, sdk-abstraction-wrapper, sync-only-sdk). Rewrite dev/README.md to the peer Quick-Navigation table format. Aligns dev/ with the styrmin / infrahub-mcp conventions. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Round out the dev/ reference: a releasing-the-collection guide, a processors-and-arg-spec knowledge doc, and ADRs 0004 (docker-based testing) + 0005 (doc-generation pipeline). Fix stale .markdownlint.yml references to .markdownlint.yaml and refresh the dev/README.md nav. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…titution.md The constitution wiring is flipped to match the peer repos (infrahub, infrahub-mcp, styrmin): dev/constitution.md holds the real body and .specify/memory/constitution.md symlinks to it — both provided by #356. Remove the now-redundant pointer stub here (avoids a merge conflict with #356's real dev/constitution.md) and fix the dev/README description. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Revert 7cc5a94, which deleted dev/constitution.md and rewrote the dev/README description to claim the constitution body lives in dev/constitution.md with .specify/memory/constitution.md symlinking to it. That commit deferred both to PR #356, but #356 touches neither file (.specify/memory/constitution.md is a real 5.8K file, not a symlink), so the branch was left internally inconsistent: a deleted file that the README still linked to, and a symlink that does not exist. Restore dev/constitution.md as the pointer stub and revert the README to describe it as a pointer. All dev/ links resolve again and the diff now matches PR #358's description. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…roject Address two Cubic review findings on PR #358: - adding-a-doc-fragment.md: the extends_documentation_fragment example dropped the file basename. Fragments are attributes of ModuleDocFragment in plugins/doc_fragments/fragments.py, so the FQCN is opsmill.infrahub.fragments.<ATTRIBUTE>, not opsmill.infrahub.my_fragment. - 0003-sync-only-sdk.md: the SDK range said >=1.5,<2.0 but pyproject.toml pins infrahub-sdk[all]>=1.19.0,<2.0. Fix the same stale range where it also appeared in AGENTS.md and infrahub-sdk-usage.md (the latter also showed Poetry-style syntax under a "# pyproject.toml" comment; corrected to the real PEP 621 dependencies array). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
docs(dev): author dev/ guides, guidelines, knowledge, and seed ADRs
Install Spec Kit 0.11.9 from opsmill/infrahub@stable: core specify/plan/ tasks/implement workflow plus the agent-context and opsmill extensions. Skills live in .agents/skills/ (source of truth), matching infrahub. Excludes git/critique/review/infrahub extensions; keeps this repo's own constitution. Mirrors opsmill/infrahub#9727 at a narrowed scope. The opsmill auto/prep/implement commands depend on the critique and review extensions (not installed here); extract/retrospect/summary work standalone. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add the critique (arunt14/spec-kit-critique v1.0.0) and review (ismaelJimenez/spec-kit-review v1.0.1) extensions, vendored verbatim from opsmill/infrahub@stable, completing the OpsMill workflow set (opsmill + critique + review). The opsmill auto/prep/implement commands depend on these; their speckit-critique-run / speckit-review-run references now resolve. Wires after_plan -> speckit.critique.run and after_implement -> speckit.review.run; registers both in .registry. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Fix staleness (Poetry -> uv; ansible-core >=2.15 -> >=2.17.7rc1 per AGENTS.md), add a Sync Impact Report header, a Boundaries/Never subsection, and a doc-accuracy clause (generate-doc; no hand-edited MDX). The 5 Ansible principles are unchanged. Bump 1.0.0 -> 1.1.0. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The vendored spec-kit tooling under .specify/ (and .agents/) carries its own / third-party formatting (missing ---, >120-char lines, 2-space indentation) that is not the collection's ansible content, so it tripped yaml-lint and ansible-lint (production profile). Exclude both dirs from the linters — mirroring the existing .claude/ exclusion — rather than editing vendored files that would re-break on every re-vendor. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Vendor the git extension (commit/feature/initialize/remote/validate + auto-commit hooks) verbatim from infrahub@stable, completing the OpsMill extension set to [agent-context, opsmill, critique, review, git]; only the infrahub-local extension stays excluded. Includes the Infrahub-flavored git-feature content (accepted as-is per request). Note: the opsmill commands reference speckit-checkpoint-commit, which no extension provides (git ships speckit-git-commit); that dangling ref is a separate upstream opsmill-speckit naming issue, unchanged here. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FDXsPBAPbNDJuTgY4q2aNG
Match the peer convention (infrahub, infrahub-mcp, styrmin): the constitution body lives in dev/constitution.md and .specify/memory/constitution.md is a symlink -> ../../dev/constitution.md (previously inverted — real body in .specify/memory/, stub in dev/). Content is unchanged (v1.1.0); the agentic checker resolves the symlinked constitution. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…data Two inconsistencies introduced in the v1.1.0 alignment (caught in review): - The Never rule wrongly forbade action plugins from using InfrahubclientWrapper directly, contradicting the documented action-plugin pattern (ActionModule(ActionBase) instantiates the wrapper — see artifact_generate.py / plugin-patterns.md). Reworded to "never bypass the wrapper / no raw InfrahubClientSync ad hoc". - The Sync Impact header said "Modified principles: None" while folding a doc-accuracy guardrail into Principle V; now records Principle V as amended. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
PR 358 (merged first) described dev/constitution.md as a stub pointing to .specify/memory/constitution.md as the authoritative reference. PR 356 inverts that: dev/constitution.md is now the body and .specify/memory/constitution.md is a symlink to it. Reconcile the README directory guide so it matches the wiring. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
chore(agentic): install OpsMill-flavored Spec Kit 0.11.9 (core + opsmill/critique/review)
Mechanical fixes from the auditing-repo-standards audit: - gitignore: add secret patterns (.env, .env.local, *.pem, *.key, credentials.json, secrets.yaml) [common-gitignore] - pyproject: add readme = "README.md" [python-project-metadata] - pyproject: drop unused asyncio_mode (collection is synchronous; pytest-asyncio not installed) [python-testing-pytest] - pyproject: adopt rumdl config; remove legacy .markdownlint.yaml [markdown-linting-markdownlint] - AGENTS.md: sync tech-stack table with pyproject (Python/ansible-core/infrahub-sdk) [doc drift] - ci: add infrahub-sdk + infrahub instance auto-bump workflows [ci-infrahub-sdk-auto-bump, ci-infrahub-auto-bump] Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
… docs - .yamllint.yml: set truthy.check-keys=false (avoids false positives on GHA `on:` keys) [yaml-linting-yamllint] - dev docs: drop asyncio_mode from illustrative pytest snippets to match pyproject [python-testing-pytest follow-up] Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- pyproject: scope [tool.rumdl] to repo-owned markdown — exclude docs/ (Vale-owned MDX), .agents/ (vendored skills/commands), .specify/templates (vendored spec-kit) - uv.lock: lock rumdl (added to dev deps in an earlier commit without re-locking) - rumdl fmt: auto-fix 34 issues across dev/, tests/, plugins/, root - dev/README.md: fix broken relative links (commands/ -> ../.agents/commands/) - CI: add markdown-lint job (uv run rumdl check .) + markdown filter output [markdown-linting-markdownlint] - tasks: add linter.lint-markdown, include it in `invoke lint` - docs: reconcile stale markdownlint references -> rumdl; fix false "Poetry" -> uv in constitution Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- docs/pnpm-lock.yaml: generated, replaces package-lock.json - docs/pnpm-workspace.yaml: security overrides (webpack/postcss/js-yaml/ws/... pins) + core-js build decline — pnpm 11 reads overrides here, not from package.json's "pnpm" field - docs/package.json: add packageManager pnpm@11.6.0; drop the now-ignored overrides block - .github/build-docs.sh, workflow-linter.yml, workflow-changelog-and-docs.yml: pnpm/action-setup@v4 + pnpm install --frozen-lockfile (was npm) - .github/file-filters.yml: package-lock.json -> pnpm-lock.yaml - .gitignore: ignore node_modules + docs build output - .yamllint.yml: ignore generated docs/pnpm-lock.yaml Verified locally: frozen install + docusaurus build both succeed; security override pins confirmed present in pnpm-lock.yaml. [js-package-manager-pnpm] Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
pnpm 11 requires Node >= 22.13; the documentation-lint job (and the changelog-and-docs docs build) were still pinned to Node 20 after the npm -> pnpm migration, so pnpm crashed with `ERR_UNKNOWN_BUILTIN_MODULE: node:sqlite`. Bumps both docs workflows to Node 22, matching the canonical infrahub-mcp/styrmin config. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The rebase onto develop pulled in vendored spec-kit content authored after this branch adopted rumdl: `.specify/extensions/**` and the `.github/agents/speckit.*.agent.md` definitions (added verbatim from infrahub). Those 269 formatting deviations belong to upstream, not this collection, and would fail the new `rumdl check .` CI job. Broaden the rumdl `exclude` to keep it scoped to repo-owned markdown: `.specify/templates` -> all of `.specify`, plus `.github/agents`. This mirrors the existing `.agents`/`docs` exclusions and develop's own `.yamllint.yml` `.specify/**` ignore. `rumdl check .` is clean (47 files). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
chore(standards): align repo with OpsMill standards (mechanical drift)
…-stable # Conflicts: # docs/package-lock.json # uv.lock
Deploying infrahub-ansible with
|
| Latest commit: |
80dea6b
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://e8aad533.infrahub-ansible.pages.dev |
| Branch Preview URL: | https://merge-develop-into-stable.infrahub-ansible.pages.dev |
BeArchiTek
marked this pull request as ready for review
July 3, 2026 09:57
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Supersedes #361, which was blocked on merge conflicts.
Summary
Merges
developintostablefor the pre-release "cleanup agentic structure" sync (Spec Kit vendoring,rumdlmarkdown linting, docs npm→pnpm migration, CI auto-bump workflows). Resolved on a fresh integration branch offstablesince #361's head was the long-liveddevelopbranch.Conflicts resolved
uv.lock— content conflict. develop's only delta vs stable is adding therumdldev dependency (17 lines; no versions changed or removed). Accepted develop's version; verified consistent with the mergedpyproject.tomlviauv lock --check. (80dea6b)docs/package-lock.json— modify/delete. develop deleted it as part of the docs npm→pnpm migration (docs/pnpm-lock.yamlreplaces it); stable had a 1-line touch. Accepted develop's deletion. No stalepackage-lock.jsonreferences remain in the tree. (80dea6b)Conflicts raised for review
None — both conflicts were generated lockfiles with no semantic content. The full merged-tree-vs-
developdiff is a single line:readme.mdxcollection version1.8.2→1.8.3(develop's generated readme was stale;galaxy.ymlis1.8.3on all branches, so the merged value is correct).Validation
uv lock --check— passed (deps in sync with mergedpyproject.toml).invoke generate-doc— no real doc drift; produced only a non-deterministic plugin-list reorder, which was discarded to keep develop's CI-passing canonical ordering.ansible-test sanity, unit, and integration suites — these carry no merge-specific changes beyond develop's already-CI'd content and will run via the stable-branch CI (linter + Ansible tests + docs build).Summary by cubic
Syncs stable with develop for the pre-release agentic cleanup. Brings the Spec Kit agent stack, switches docs to
pnpm, adoptsrumdlfor markdown linting, and adds CI auto-bump workflows.New Features
.agents/,.github/agents/, and.specify/extensions/.CI/Tooling
rumdlmarkdown linting (new GHA job); remove.markdownlint.yaml; exclude vendored.specify/and.agents/.pnpm(Node 22); update build script and workflows; filter onpnpm-lock.yaml.update-infrahub.ymlandupdate-infrahub-sdk.ymlworkflows for auto-bumping dependencies.ansible-lintexcludes for vendored trees; expand.gitignorefor secrets and docs artifacts.Written for commit 80dea6b. Summary will update on new commits.