stratarc 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of stratarc might be problematic. Click here for more details.
- stratarc-0.1.0/.gitignore +57 -0
- stratarc-0.1.0/LICENSE +21 -0
- stratarc-0.1.0/PKG-INFO +69 -0
- stratarc-0.1.0/README.md +53 -0
- stratarc-0.1.0/developer-docs/README.md +19 -0
- stratarc-0.1.0/developer-docs/explanation/README.md +8 -0
- stratarc-0.1.0/developer-docs/explanation/decisions/README.md +75 -0
- stratarc-0.1.0/developer-docs/how-to-guides/README.md +9 -0
- stratarc-0.1.0/developer-docs/reference/README.md +8 -0
- stratarc-0.1.0/developer-docs/tutorials/README.md +7 -0
- stratarc-0.1.0/docs/README.md +23 -0
- stratarc-0.1.0/docs/documentation-guide/README.md +28 -0
- stratarc-0.1.0/docs/explanation/README.md +7 -0
- stratarc-0.1.0/docs/how-to-guides/README.md +9 -0
- stratarc-0.1.0/docs/reference/README.md +13 -0
- stratarc-0.1.0/docs/reference/runtimes/README.md +13 -0
- stratarc-0.1.0/docs/tutorials/README.md +7 -0
- stratarc-0.1.0/examples/notes-cli/README.md +272 -0
- stratarc-0.1.0/examples/notes-cli/expected/README.md +7 -0
- stratarc-0.1.0/examples/notes-cli/expected/claude/AGENTS.md +43 -0
- stratarc-0.1.0/examples/notes-cli/expected/claude/CLAUDE.md +43 -0
- stratarc-0.1.0/examples/notes-cli/expected/claude/CODEX.md +43 -0
- stratarc-0.1.0/examples/notes-cli/expected/claude/agents/diff-reviewer.md +19 -0
- stratarc-0.1.0/examples/notes-cli/expected/claude/commands/test-summary.md +20 -0
- stratarc-0.1.0/examples/notes-cli/expected/claude/hooks/block-database-commits.sh +16 -0
- stratarc-0.1.0/examples/notes-cli/expected/claude/settings.json +42 -0
- stratarc-0.1.0/examples/notes-cli/expected/claude/skills/write-changelog-entry/SKILL.md +17 -0
- stratarc-0.1.0/examples/notes-cli/expected/codex/AGENTS.md +43 -0
- stratarc-0.1.0/examples/notes-cli/expected/codex/agents/diff-reviewer.toml +3 -0
- stratarc-0.1.0/examples/notes-cli/expected/codex/config.toml +39 -0
- stratarc-0.1.0/examples/notes-cli/expected/codex/hooks/block-database-commits.sh +16 -0
- stratarc-0.1.0/examples/notes-cli/expected/codex/hooks.json +16 -0
- stratarc-0.1.0/examples/notes-cli/expected/codex/prompts/test-summary.md +20 -0
- stratarc-0.1.0/examples/notes-cli/expected/codex/rules/stratarc.rules +6 -0
- stratarc-0.1.0/examples/notes-cli/expected/codex/skills/write-changelog-entry/SKILL.md +17 -0
- stratarc-0.1.0/examples/notes-cli/expected/cursor/hooks/block-database-commits.sh +16 -0
- stratarc-0.1.0/examples/notes-cli/expected/cursor/hooks.json +12 -0
- stratarc-0.1.0/examples/notes-cli/expected/gemini/GEMINI.md +43 -0
- stratarc-0.1.0/examples/notes-cli/expected/gemini/agents/diff-reviewer.md +18 -0
- stratarc-0.1.0/examples/notes-cli/expected/gemini/commands/test-summary.toml +17 -0
- stratarc-0.1.0/examples/notes-cli/expected/gemini/hooks/block-database-commits.sh +16 -0
- stratarc-0.1.0/examples/notes-cli/expected/gemini/policies/stratarc-permissions.toml +60 -0
- stratarc-0.1.0/examples/notes-cli/expected/gemini/settings.json +19 -0
- stratarc-0.1.0/examples/notes-cli/expected/gemini/skills/write-changelog-entry/SKILL.md +17 -0
- stratarc-0.1.0/examples/notes-cli/expected/opencode/AGENTS.md +43 -0
- stratarc-0.1.0/examples/notes-cli/expected/opencode/agents/diff-reviewer.md +18 -0
- stratarc-0.1.0/examples/notes-cli/expected/opencode/commands/test-summary.md +17 -0
- stratarc-0.1.0/examples/notes-cli/expected/opencode/hooks/block-database-commits.sh +16 -0
- stratarc-0.1.0/examples/notes-cli/expected/opencode/opencode.jsonc +27 -0
- stratarc-0.1.0/examples/notes-cli/expected/opencode/rules/never-commit-local-databases.md +13 -0
- stratarc-0.1.0/examples/notes-cli/expected/opencode/skill/write-changelog-entry/SKILL.md +17 -0
- stratarc-0.1.0/examples/notes-cli/expected/project/notes-cli/.agents/skills/write-changelog-entry/SKILL.md +17 -0
- stratarc-0.1.0/examples/notes-cli/expected/project/notes-cli/.claude/rules/conventional-commit-messages.md +7 -0
- stratarc-0.1.0/examples/notes-cli/expected/project/notes-cli/.claude/rules/never-commit-local-databases.md +7 -0
- stratarc-0.1.0/examples/notes-cli/expected/project/notes-cli/.claude/rules/storage-format-is-versioned.md +9 -0
- stratarc-0.1.0/examples/notes-cli/expected/project/notes-cli/.claude/rules/tests-use-a-temporary-directory.md +9 -0
- stratarc-0.1.0/examples/notes-cli/expected/project/notes-cli/.claude/settings.json +24 -0
- stratarc-0.1.0/examples/notes-cli/expected/project/notes-cli/.claude/skills/write-changelog-entry/SKILL.md +17 -0
- stratarc-0.1.0/examples/notes-cli/expected/project/notes-cli/AGENTS.md +45 -0
- stratarc-0.1.0/examples/notes-cli/expected/project/notes-cli/CLAUDE.md +45 -0
- stratarc-0.1.0/examples/notes-cli/expected/project/notes-cli/CODEX.md +45 -0
- stratarc-0.1.0/examples/notes-cli/expected/project/notes-cli/GEMINI.md +45 -0
- stratarc-0.1.0/examples/notes-cli/source/AGENTS.md +23 -0
- stratarc-0.1.0/examples/notes-cli/source/agents/diff-reviewer.md +19 -0
- stratarc-0.1.0/examples/notes-cli/source/commands/test-summary.md +20 -0
- stratarc-0.1.0/examples/notes-cli/source/components.json +39 -0
- stratarc-0.1.0/examples/notes-cli/source/control-plane.md +68 -0
- stratarc-0.1.0/examples/notes-cli/source/hooks/block-database-commits.sh +16 -0
- stratarc-0.1.0/examples/notes-cli/source/hooks/hooks.json +14 -0
- stratarc-0.1.0/examples/notes-cli/source/permissions.json +38 -0
- stratarc-0.1.0/examples/notes-cli/source/projects-root/notes-cli/AGENTS.md +17 -0
- stratarc-0.1.0/examples/notes-cli/source/projects-root/notes-cli/permissions.json +33 -0
- stratarc-0.1.0/examples/notes-cli/source/projects-root/notes-cli/rules/storage-format-is-versioned.md +9 -0
- stratarc-0.1.0/examples/notes-cli/source/rules/conventional-commit-messages.md +10 -0
- stratarc-0.1.0/examples/notes-cli/source/rules/never-commit-local-databases.md +13 -0
- stratarc-0.1.0/examples/notes-cli/source/rules/tests-use-a-temporary-directory.md +9 -0
- stratarc-0.1.0/examples/notes-cli/source/rules/tiers.json +11 -0
- stratarc-0.1.0/examples/notes-cli/source/skills/write-changelog-entry/SKILL.md +17 -0
- stratarc-0.1.0/examples/notes-cli/source/stratarc.toml +33 -0
- stratarc-0.1.0/pyproject.toml +44 -0
- stratarc-0.1.0/stratarc/__init__.py +3 -0
- stratarc-0.1.0/stratarc/__main__.py +6 -0
- stratarc-0.1.0/stratarc/adapters/__init__.py +0 -0
- stratarc-0.1.0/stratarc/adapters/_common.py +613 -0
- stratarc-0.1.0/stratarc/adapters/_components.py +627 -0
- stratarc-0.1.0/stratarc/adapters/_foreign.py +155 -0
- stratarc-0.1.0/stratarc/adapters/_inventory.py +437 -0
- stratarc-0.1.0/stratarc/adapters/_supports.py +67 -0
- stratarc-0.1.0/stratarc/adapters/_text.py +172 -0
- stratarc-0.1.0/stratarc/adapters/claude.py +478 -0
- stratarc-0.1.0/stratarc/adapters/codex.py +913 -0
- stratarc-0.1.0/stratarc/adapters/cursor.py +308 -0
- stratarc-0.1.0/stratarc/adapters/gemini.py +564 -0
- stratarc-0.1.0/stratarc/adapters/opencode.py +580 -0
- stratarc-0.1.0/stratarc/api.py +626 -0
- stratarc-0.1.0/stratarc/budgets.py +282 -0
- stratarc-0.1.0/stratarc/changelog.py +742 -0
- stratarc-0.1.0/stratarc/cli.py +639 -0
- stratarc-0.1.0/stratarc/components.py +1354 -0
- stratarc-0.1.0/stratarc/config.py +107 -0
- stratarc-0.1.0/stratarc/config_cmd.py +349 -0
- stratarc-0.1.0/stratarc/control_plane.py +304 -0
- stratarc-0.1.0/stratarc/data/bin/caffeinate-shim.sh +7 -0
- stratarc-0.1.0/stratarc/data/ci/attribution-check-comment.yml +28 -0
- stratarc-0.1.0/stratarc/data/ci/attribution-check.py +298 -0
- stratarc-0.1.0/stratarc/data/ci/attribution-check.yml +37 -0
- stratarc-0.1.0/stratarc/data/git-hooks/check-staged-prose.sh +91 -0
- stratarc-0.1.0/stratarc/data/git-hooks/check-staged-secrets.sh +25 -0
- stratarc-0.1.0/stratarc/data/git-hooks/commit-msg +14 -0
- stratarc-0.1.0/stratarc/data/git-hooks/post-commit +48 -0
- stratarc-0.1.0/stratarc/data/git-hooks/pre-commit +15 -0
- stratarc-0.1.0/stratarc/data/git-hooks/strip-commit-attribution.sh +66 -0
- stratarc-0.1.0/stratarc/data/hooks/agent-graph-pre-edit.sh +122 -0
- stratarc-0.1.0/stratarc/data/hooks/agent-graph-session-start.sh +70 -0
- stratarc-0.1.0/stratarc/data/hooks/claude-agent-graph-hooks.json +25 -0
- stratarc-0.1.0/stratarc/data/hooks/claude-worktree-hooks.json +36 -0
- stratarc-0.1.0/stratarc/data/hooks/env-dump-guard.sh +109 -0
- stratarc-0.1.0/stratarc/data/hooks/hooks.json +158 -0
- stratarc-0.1.0/stratarc/data/hooks/lib/attribution-detect.py +2706 -0
- stratarc-0.1.0/stratarc/data/hooks/lib/env-dump-detect.py +959 -0
- stratarc-0.1.0/stratarc/data/hooks/lib/fleet-cap.py +304 -0
- stratarc-0.1.0/stratarc/data/hooks/lib/guard-log.sh +183 -0
- stratarc-0.1.0/stratarc/data/hooks/lib/guard-utils.sh +289 -0
- stratarc-0.1.0/stratarc/data/hooks/lib/log.sh +21 -0
- stratarc-0.1.0/stratarc/data/hooks/lib/program-summary.py +353 -0
- stratarc-0.1.0/stratarc/data/hooks/lib/prompt-capture.json +22 -0
- stratarc-0.1.0/stratarc/data/hooks/lib/prompt-capture.py +1267 -0
- stratarc-0.1.0/stratarc/data/hooks/lib/prose-detect.py +598 -0
- stratarc-0.1.0/stratarc/data/hooks/lib/public-targets.py +180 -0
- stratarc-0.1.0/stratarc/data/hooks/lib/runtime-usage.py +556 -0
- stratarc-0.1.0/stratarc/data/hooks/lib/secret-scan.sh +13 -0
- stratarc-0.1.0/stratarc/data/hooks/lib/session-card.py +1025 -0
- stratarc-0.1.0/stratarc/data/hooks/lib/session-footprint.py +236 -0
- stratarc-0.1.0/stratarc/data/hooks/lib/session-statusline.py +349 -0
- stratarc-0.1.0/stratarc/data/hooks/lib/subagent-cap.py +262 -0
- stratarc-0.1.0/stratarc/data/hooks/lib/tool-budget.py +775 -0
- stratarc-0.1.0/stratarc/data/hooks/lib/worktree.sh +38 -0
- stratarc-0.1.0/stratarc/data/hooks/no-attribution-guard.sh +162 -0
- stratarc-0.1.0/stratarc/data/hooks/opencode-runtime-hooks.ts +130 -0
- stratarc-0.1.0/stratarc/data/hooks/prompt-capture.sh +77 -0
- stratarc-0.1.0/stratarc/data/hooks/prose-guard.sh +115 -0
- stratarc-0.1.0/stratarc/data/hooks/reconcile-control-plane.sh +121 -0
- stratarc-0.1.0/stratarc/data/hooks/require-pr-on-stop.sh +421 -0
- stratarc-0.1.0/stratarc/data/hooks/retired.json +15 -0
- stratarc-0.1.0/stratarc/data/hooks/session-start.sh +171 -0
- stratarc-0.1.0/stratarc/data/hooks/subagent-cap-guard.sh +124 -0
- stratarc-0.1.0/stratarc/data/hooks/tool-budget-guard.sh +86 -0
- stratarc-0.1.0/stratarc/data/hooks/worktree-create.sh +96 -0
- stratarc-0.1.0/stratarc/data/hooks/worktree-remove.sh +45 -0
- stratarc-0.1.0/stratarc/data/hooks/worktree-validate.sh +41 -0
- stratarc-0.1.0/stratarc/data/schema/README.md +7 -0
- stratarc-0.1.0/stratarc/data/schema/adapter-manifest.schema.json +38 -0
- stratarc-0.1.0/stratarc/data/schema/api-v1.schema.json +306 -0
- stratarc-0.1.0/stratarc/data/schema/components.schema.json +482 -0
- stratarc-0.1.0/stratarc/data/schema/hooks.schema.json +54 -0
- stratarc-0.1.0/stratarc/data/schema/permissions.schema.json +67 -0
- stratarc-0.1.0/stratarc/data/schema/provider.schema.json +37 -0
- stratarc-0.1.0/stratarc/data/templates/source-root/AGENTS.md +23 -0
- stratarc-0.1.0/stratarc/data/templates/source-root/agents/README.md +3 -0
- stratarc-0.1.0/stratarc/data/templates/source-root/commands/README.md +3 -0
- stratarc-0.1.0/stratarc/data/templates/source-root/components.json +39 -0
- stratarc-0.1.0/stratarc/data/templates/source-root/control-plane.md +3 -0
- stratarc-0.1.0/stratarc/data/templates/source-root/hooks/hooks.json +3 -0
- stratarc-0.1.0/stratarc/data/templates/source-root/permissions.json +31 -0
- stratarc-0.1.0/stratarc/data/templates/source-root/projects-root/README.md +3 -0
- stratarc-0.1.0/stratarc/data/templates/source-root/rules/README.md +3 -0
- stratarc-0.1.0/stratarc/data/templates/source-root/rules/tiers.json +5 -0
- stratarc-0.1.0/stratarc/data/templates/source-root/skills/README.md +3 -0
- stratarc-0.1.0/stratarc/data/templates/source-root/stratarc.toml +34 -0
- stratarc-0.1.0/stratarc/deploy_guard.py +323 -0
- stratarc-0.1.0/stratarc/doctor.py +251 -0
- stratarc-0.1.0/stratarc/gen_rules_digest.py +175 -0
- stratarc-0.1.0/stratarc/home_layout.py +447 -0
- stratarc-0.1.0/stratarc/layers.py +739 -0
- stratarc-0.1.0/stratarc/log_cmd.py +194 -0
- stratarc-0.1.0/stratarc/messages.py +551 -0
- stratarc-0.1.0/stratarc/paths.py +130 -0
- stratarc-0.1.0/stratarc/permissions.py +360 -0
- stratarc-0.1.0/stratarc/project_permissions.py +517 -0
- stratarc-0.1.0/stratarc/project_plugins_ingest.py +556 -0
- stratarc-0.1.0/stratarc/projects.py +2294 -0
- stratarc-0.1.0/stratarc/providers.py +336 -0
- stratarc-0.1.0/stratarc/public_targets.py +55 -0
- stratarc-0.1.0/stratarc/reconcile.py +789 -0
- stratarc-0.1.0/stratarc/registry.py +575 -0
- stratarc-0.1.0/stratarc/resources.py +16 -0
- stratarc-0.1.0/stratarc/resources_cmd.py +1460 -0
- stratarc-0.1.0/stratarc/rules_digest.py +365 -0
- stratarc-0.1.0/stratarc/source_graph.py +1126 -0
- stratarc-0.1.0/stratarc/staging.py +437 -0
- stratarc-0.1.0/stratarc/strip_provenance.py +88 -0
- stratarc-0.1.0/stratarc/sync.py +1521 -0
- stratarc-0.1.0/stratarc/ui/__init__.py +39 -0
- stratarc-0.1.0/stratarc/ui/app.py +203 -0
- stratarc-0.1.0/stratarc/ui/model.py +298 -0
- stratarc-0.1.0/stratarc/validate.py +758 -0
- stratarc-0.1.0/stratarc/verify.py +389 -0
- stratarc-0.1.0/tests/conftest.py +115 -0
- stratarc-0.1.0/tests/fixtures/adapters/foreign/claude.json +39 -0
- stratarc-0.1.0/tests/fixtures/adapters/foreign/codex.json +42 -0
- stratarc-0.1.0/tests/fixtures/adapters/foreign/cursor.json +29 -0
- stratarc-0.1.0/tests/fixtures/adapters/foreign/gemini.json +39 -0
- stratarc-0.1.0/tests/fixtures/adapters/opencode-config-schema-2026-09-23.json +1312 -0
- stratarc-0.1.0/tests/fixtures/adapters/registry/sixth.py +22 -0
- stratarc-0.1.0/tests/fixtures/budgets/components.json +10 -0
- stratarc-0.1.0/tests/fixtures/components/manifest.json +200 -0
- stratarc-0.1.0/tests/fixtures/components/scripts/launchd/com.example.embeddings.plist +14 -0
- stratarc-0.1.0/tests/fixtures/foreign/captures/claude.json +39 -0
- stratarc-0.1.0/tests/fixtures/foreign/captures/codex.json +42 -0
- stratarc-0.1.0/tests/fixtures/foreign/captures/cursor.json +29 -0
- stratarc-0.1.0/tests/fixtures/foreign/captures/gemini.json +39 -0
- stratarc-0.1.0/tests/fixtures/foreign/components.json +35 -0
- stratarc-0.1.0/tests/fixtures/layers/source/accounts/work.toml +2 -0
- stratarc-0.1.0/tests/fixtures/layers/source/permissions.json +8 -0
- stratarc-0.1.0/tests/fixtures/layers/source/projects-root/cycle/agents/ping.json +6 -0
- stratarc-0.1.0/tests/fixtures/layers/source/projects-root/cycle/agents/pong.json +3 -0
- stratarc-0.1.0/tests/fixtures/layers/source/projects-root/nomode/permissions.json +5 -0
- stratarc-0.1.0/tests/fixtures/layers/source/projects-root/notes/agents/lead.json +10 -0
- stratarc-0.1.0/tests/fixtures/layers/source/projects-root/notes/agents/quiet.json +3 -0
- stratarc-0.1.0/tests/fixtures/layers/source/projects-root/notes/agents/reviewer.json +5 -0
- stratarc-0.1.0/tests/fixtures/layers/source/projects-root/notes/agents/worker.json +9 -0
- stratarc-0.1.0/tests/fixtures/layers/source/projects-root/notes/permissions.json +7 -0
- stratarc-0.1.0/tests/fixtures/layers/source/runtimes/codex.toml +4 -0
- stratarc-0.1.0/tests/fixtures/layers/source/stratarc.toml +5 -0
- stratarc-0.1.0/tests/fixtures/permissions/permissions.json +16 -0
- stratarc-0.1.0/tests/fixtures/plugins_ingest/components-inline-empty.json +8 -0
- stratarc-0.1.0/tests/fixtures/plugins_ingest/components-multiline.json +12 -0
- stratarc-0.1.0/tests/fixtures/plugins_ingest/components-one-line.json +7 -0
- stratarc-0.1.0/tests/fixtures/project_permissions/permissions.json +14 -0
- stratarc-0.1.0/tests/fixtures/projects/renderer-extension/scripts/private/project_renderers.py +38 -0
- stratarc-0.1.0/tests/fixtures/reconcile/held-source-root/AGENTS.md +1 -0
- stratarc-0.1.0/tests/fixtures/reconcile/held-source-root/projects-root/away-with-source/AGENTS.md +1 -0
- stratarc-0.1.0/tests/fixtures/reconcile/held-source-root/projects-root/here/AGENTS.md +1 -0
- stratarc-0.1.0/tests/fixtures/reconcile/held-source-root/rules/a-common-rule.md +1 -0
- stratarc-0.1.0/tests/fixtures/reconcile/held-source-root/rules/a-project-rule.md +1 -0
- stratarc-0.1.0/tests/fixtures/reconcile/held-source-root/rules/tiers.json +1 -0
- stratarc-0.1.0/tests/fixtures/reconcile/source-root/AGENTS.md +1 -0
- stratarc-0.1.0/tests/fixtures/reconcile/source-root/projects-root/demo/AGENTS.md +1 -0
- stratarc-0.1.0/tests/fixtures/reconcile/source-root/rules/a-common-rule.md +1 -0
- stratarc-0.1.0/tests/fixtures/reconcile/source-root/rules/a-global-rule.md +1 -0
- stratarc-0.1.0/tests/fixtures/reconcile/source-root/rules/a-project-rule.md +1 -0
- stratarc-0.1.0/tests/fixtures/reconcile/source-root/rules/tiers.json +1 -0
- stratarc-0.1.0/tests/fixtures/registry/bad/manifest.json +10 -0
- stratarc-0.1.0/tests/fixtures/registry/good/manifest.json +11 -0
- stratarc-0.1.0/tests/fixtures/registry/provider-good.json +8 -0
- stratarc-0.1.0/tests/fixtures/registry/versions/claude.txt +1 -0
- stratarc-0.1.0/tests/fixtures/registry/versions/codex.txt +2 -0
- stratarc-0.1.0/tests/fixtures/registry/versions/cursor.txt +1 -0
- stratarc-0.1.0/tests/fixtures/registry/versions/gemini.txt +1 -0
- stratarc-0.1.0/tests/fixtures/registry/versions/opencode.txt +1 -0
- stratarc-0.1.0/tests/fixtures/resources/source/accounts/work.toml +3 -0
- stratarc-0.1.0/tests/fixtures/resources/source/agents/reviewer.md +8 -0
- stratarc-0.1.0/tests/fixtures/resources/source/agents/reviewer.toml +3 -0
- stratarc-0.1.0/tests/fixtures/resources/source/control-plane.md +22 -0
- stratarc-0.1.0/tests/fixtures/resources/source/permissions.json +7 -0
- stratarc-0.1.0/tests/fixtures/resources/source/projects-root/notes/AGENTS.md +3 -0
- stratarc-0.1.0/tests/fixtures/resources/source/projects-root/notes/agents/helper.json +5 -0
- stratarc-0.1.0/tests/fixtures/resources/source/projects-root/notes/permissions.json +3 -0
- stratarc-0.1.0/tests/fixtures/resources/source/runtimes/codex.toml +3 -0
- stratarc-0.1.0/tests/fixtures/resources/source/stratarc.toml +12 -0
- stratarc-0.1.0/tests/fixtures/rules/conventional-commit-messages.md +10 -0
- stratarc-0.1.0/tests/fixtures/rules/never-commit-local-databases.md +13 -0
- stratarc-0.1.0/tests/fixtures/rules/tests-use-a-temporary-directory.md +9 -0
- stratarc-0.1.0/tests/fixtures/rules/tiers.json +11 -0
- stratarc-0.1.0/tests/fixtures/schema/components/invalid/autonomy-zero.json +6 -0
- stratarc-0.1.0/tests/fixtures/schema/components/invalid/budget-group-null.json +6 -0
- stratarc-0.1.0/tests/fixtures/schema/components/invalid/dependency-without-image.json +14 -0
- stratarc-0.1.0/tests/fixtures/schema/components/invalid/entry-unknown-key.json +13 -0
- stratarc-0.1.0/tests/fixtures/schema/components/invalid/environment-plugins-outside-claude.json +6 -0
- stratarc-0.1.0/tests/fixtures/schema/components/invalid/environment-without-ref.json +6 -0
- stratarc-0.1.0/tests/fixtures/schema/components/invalid/flat-fleet-key.json +6 -0
- stratarc-0.1.0/tests/fixtures/schema/components/invalid/fleet-half-set.json +6 -0
- stratarc-0.1.0/tests/fixtures/schema/components/invalid/image-unknown-key.json +15 -0
- stratarc-0.1.0/tests/fixtures/schema/components/invalid/mcp-name-with-dot.json +12 -0
- stratarc-0.1.0/tests/fixtures/schema/components/invalid/mcp-without-command-or-url.json +12 -0
- stratarc-0.1.0/tests/fixtures/schema/components/invalid/missing-version.json +3 -0
- stratarc-0.1.0/tests/fixtures/schema/components/invalid/non-claude-inherit-model.json +6 -0
- stratarc-0.1.0/tests/fixtures/schema/components/invalid/platform-difference-bad-path.json +11 -0
- stratarc-0.1.0/tests/fixtures/schema/components/invalid/plugin-path-not-opencode.json +12 -0
- stratarc-0.1.0/tests/fixtures/schema/components/invalid/plugin-without-marketplace.json +11 -0
- stratarc-0.1.0/tests/fixtures/schema/components/invalid/promotion-without-soak-days.json +6 -0
- stratarc-0.1.0/tests/fixtures/schema/components/invalid/release-strip-with-zip.json +20 -0
- stratarc-0.1.0/tests/fixtures/schema/components/invalid/source-without-sha256.json +18 -0
- stratarc-0.1.0/tests/fixtures/schema/components/invalid/unknown-runtime.json +12 -0
- stratarc-0.1.0/tests/fixtures/schema/components/invalid/unknown-section.json +4 -0
- stratarc-0.1.0/tests/fixtures/schema/components/invalid/unwanted-foreign-hook-with-registration.json +13 -0
- stratarc-0.1.0/tests/fixtures/schema/components/invalid/warn-at-zero.json +6 -0
- stratarc-0.1.0/tests/fixtures/schema/components/valid/full.json +184 -0
- stratarc-0.1.0/tests/fixtures/schema/components/valid/minimal.json +3 -0
- stratarc-0.1.0/tests/fixtures/schema/components/valid/null-sections.json +9 -0
- stratarc-0.1.0/tests/fixtures/schema/hooks/invalid/event-not-a-list.json +3 -0
- stratarc-0.1.0/tests/fixtures/schema/hooks/invalid/group-without-hooks.json +5 -0
- stratarc-0.1.0/tests/fixtures/schema/hooks/invalid/hook-without-command.json +8 -0
- stratarc-0.1.0/tests/fixtures/schema/hooks/invalid/string-timeout.json +8 -0
- stratarc-0.1.0/tests/fixtures/schema/hooks/invalid/unknown-event.json +7 -0
- stratarc-0.1.0/tests/fixtures/schema/hooks/valid/empty.json +1 -0
- stratarc-0.1.0/tests/fixtures/schema/hooks/valid/full.json +33 -0
- stratarc-0.1.0/tests/fixtures/schema/permissions/invalid/auto-mode-not-object.json +7 -0
- stratarc-0.1.0/tests/fixtures/schema/permissions/invalid/bad-approval-policy.json +7 -0
- stratarc-0.1.0/tests/fixtures/schema/permissions/invalid/bad-domain-action.json +7 -0
- stratarc-0.1.0/tests/fixtures/schema/permissions/invalid/lowercase-passthrough.json +7 -0
- stratarc-0.1.0/tests/fixtures/schema/permissions/invalid/missing-ask.json +5 -0
- stratarc-0.1.0/tests/fixtures/schema/permissions/invalid/negative-policy-version.json +7 -0
- stratarc-0.1.0/tests/fixtures/schema/permissions/invalid/network-without-enabled.json +7 -0
- stratarc-0.1.0/tests/fixtures/schema/permissions/invalid/non-string-rule.json +6 -0
- stratarc-0.1.0/tests/fixtures/schema/permissions/invalid/wrong-schema-version.json +6 -0
- stratarc-0.1.0/tests/fixtures/schema/permissions/valid/full.json +20 -0
- stratarc-0.1.0/tests/fixtures/schema/permissions/valid/minimal.json +6 -0
- stratarc-0.1.0/tests/fixtures/sync/source/AGENTS.md +7 -0
- stratarc-0.1.0/tests/fixtures/sync/source/components.json +3 -0
- stratarc-0.1.0/tests/fixtures/sync/source/permissions.json +8 -0
- stratarc-0.1.0/tests/fixtures/sync/source/projects-root/.gitkeep +0 -0
- stratarc-0.1.0/tests/fixtures/sync/source/rules/example.md +5 -0
- stratarc-0.1.0/tests/fixtures/sync/source/rules/tiers.json +3 -0
- stratarc-0.1.0/tests/fixtures/sync/source/stratarc.toml +5 -0
- stratarc-0.1.0/tests/fixtures/ui/source/permissions.json +4 -0
- stratarc-0.1.0/tests/fixtures/ui/source/projects-root/notes/agents/reviewer.json +5 -0
- stratarc-0.1.0/tests/fixtures/ui/source/projects-root/notes/permissions.json +3 -0
- stratarc-0.1.0/tests/fixtures/ui/source/stratarc.toml +5 -0
- stratarc-0.1.0/tests/fixtures/validate/private-checks/validate_checks.py +12 -0
- stratarc-0.1.0/tests/fixtures/verify/source/AGENTS.md +7 -0
- stratarc-0.1.0/tests/fixtures/verify/source/components.json +3 -0
- stratarc-0.1.0/tests/fixtures/verify/source/permissions.json +8 -0
- stratarc-0.1.0/tests/fixtures/verify/source/rules/example.md +5 -0
- stratarc-0.1.0/tests/fixtures/verify/source/rules/tiers.json +3 -0
- stratarc-0.1.0/tests/fixtures/verify/source/stratarc.toml +5 -0
- stratarc-0.1.0/tests/hooks/agent-graph-pre-edit.test.sh +184 -0
- stratarc-0.1.0/tests/hooks/agent-graph-session-start.test.sh +172 -0
- stratarc-0.1.0/tests/hooks/env-dump-guard.test.sh +424 -0
- stratarc-0.1.0/tests/hooks/fleet-cap.test.sh +247 -0
- stratarc-0.1.0/tests/hooks/lib/attribution-detect.test.sh +767 -0
- stratarc-0.1.0/tests/hooks/lib/fixtures/runtime-usage/codex/sessions/2026/09/23/rollout-2026-09-23T14-12-21-01a0d01c-c49b-7a31-bbef-7068bdfea8ac.jsonl +3 -0
- stratarc-0.1.0/tests/hooks/lib/fixtures/runtime-usage/codex/sessions/2026/09/23/rollout-2026-09-23T14-12-21-01a0d01c-c590-78e3-9041-dc5653d899f5.jsonl +16 -0
- stratarc-0.1.0/tests/hooks/lib/fixtures/runtime-usage/codex/sessions/2026/09/23/rollout-2026-09-23T14-29-51-01a0d02c-ca3f-7030-9935-5ec6bec65c49.jsonl +6 -0
- stratarc-0.1.0/tests/hooks/lib/guard-log.test.sh +262 -0
- stratarc-0.1.0/tests/hooks/lib/hook-test.sh +133 -0
- stratarc-0.1.0/tests/hooks/lib/program-summary.test.py +362 -0
- stratarc-0.1.0/tests/hooks/lib/prose-detect.test.sh +243 -0
- stratarc-0.1.0/tests/hooks/lib/runtime-usage.test.py +360 -0
- stratarc-0.1.0/tests/hooks/lib/secret-scan.test.sh +288 -0
- stratarc-0.1.0/tests/hooks/lib/session-card.test.py +276 -0
- stratarc-0.1.0/tests/hooks/lib/session-card.test.sh +246 -0
- stratarc-0.1.0/tests/hooks/lib/session-statusline.test.sh +320 -0
- stratarc-0.1.0/tests/hooks/lib/subagent-cap.test.py +288 -0
- stratarc-0.1.0/tests/hooks/lib/worktree.test.sh +95 -0
- stratarc-0.1.0/tests/hooks/no-attribution-guard.test.sh +229 -0
- stratarc-0.1.0/tests/hooks/opencode-runtime-hooks.test.ts +312 -0
- stratarc-0.1.0/tests/hooks/prompt-capture.test.sh +224 -0
- stratarc-0.1.0/tests/hooks/prose-guard.test.sh +168 -0
- stratarc-0.1.0/tests/hooks/reconcile-control-plane.test.sh +199 -0
- stratarc-0.1.0/tests/hooks/require-pr-on-stop.test.sh +444 -0
- stratarc-0.1.0/tests/hooks/session-start.test.sh +537 -0
- stratarc-0.1.0/tests/hooks/subagent-cap-guard.test.sh +348 -0
- stratarc-0.1.0/tests/hooks/tool-budget-guard.test.sh +822 -0
- stratarc-0.1.0/tests/hooks/worktree-lifecycle.test.sh +96 -0
- stratarc-0.1.0/tests/shell/caffeinate-shim.test.sh +60 -0
- stratarc-0.1.0/tests/shell/git-hooks/check-staged-prose.test.sh +88 -0
- stratarc-0.1.0/tests/shell/git-hooks/check-staged-secrets.test.sh +62 -0
- stratarc-0.1.0/tests/shell/git-hooks/commit-msg.test.sh +86 -0
- stratarc-0.1.0/tests/shell/git-hooks/post-commit.test.sh +81 -0
- stratarc-0.1.0/tests/shell/git-hooks/pre-commit.test.sh +58 -0
- stratarc-0.1.0/tests/shell/git-hooks/strip-commit-attribution.test.sh +122 -0
- stratarc-0.1.0/tests/shell/hook-lint.test.sh +157 -0
- stratarc-0.1.0/tests/shell/install.test.sh +88 -0
- stratarc-0.1.0/tests/shell/smoke.test.sh +4 -0
- stratarc-0.1.0/tests/test_adapters_claude.py +1092 -0
- stratarc-0.1.0/tests/test_adapters_codex.py +1128 -0
- stratarc-0.1.0/tests/test_adapters_common.py +542 -0
- stratarc-0.1.0/tests/test_adapters_components.py +421 -0
- stratarc-0.1.0/tests/test_adapters_components_render.py +332 -0
- stratarc-0.1.0/tests/test_adapters_cursor.py +218 -0
- stratarc-0.1.0/tests/test_adapters_foreign.py +244 -0
- stratarc-0.1.0/tests/test_adapters_gemini.py +563 -0
- stratarc-0.1.0/tests/test_adapters_inventory.py +417 -0
- stratarc-0.1.0/tests/test_adapters_opencode.py +658 -0
- stratarc-0.1.0/tests/test_api.py +487 -0
- stratarc-0.1.0/tests/test_budgets.py +215 -0
- stratarc-0.1.0/tests/test_changelog.py +312 -0
- stratarc-0.1.0/tests/test_cli.py +1160 -0
- stratarc-0.1.0/tests/test_components.py +835 -0
- stratarc-0.1.0/tests/test_components_services.py +885 -0
- stratarc-0.1.0/tests/test_config.py +103 -0
- stratarc-0.1.0/tests/test_config_cmd.py +278 -0
- stratarc-0.1.0/tests/test_control_plane.py +168 -0
- stratarc-0.1.0/tests/test_deploy_guard.py +265 -0
- stratarc-0.1.0/tests/test_docs_site.py +207 -0
- stratarc-0.1.0/tests/test_doctor.py +196 -0
- stratarc-0.1.0/tests/test_engine_name.py +192 -0
- stratarc-0.1.0/tests/test_examples.py +300 -0
- stratarc-0.1.0/tests/test_external_collector.py +62 -0
- stratarc-0.1.0/tests/test_gen_rules_digest.py +214 -0
- stratarc-0.1.0/tests/test_home_layout.py +206 -0
- stratarc-0.1.0/tests/test_layers.py +347 -0
- stratarc-0.1.0/tests/test_log_cmd.py +150 -0
- stratarc-0.1.0/tests/test_messages.py +152 -0
- stratarc-0.1.0/tests/test_paths.py +240 -0
- stratarc-0.1.0/tests/test_permissions.py +100 -0
- stratarc-0.1.0/tests/test_project_permissions.py +586 -0
- stratarc-0.1.0/tests/test_project_plugins_ingest.py +770 -0
- stratarc-0.1.0/tests/test_projects.py +2648 -0
- stratarc-0.1.0/tests/test_projects_public_targets.py +123 -0
- stratarc-0.1.0/tests/test_providers.py +200 -0
- stratarc-0.1.0/tests/test_public_targets.py +171 -0
- stratarc-0.1.0/tests/test_reconcile.py +936 -0
- stratarc-0.1.0/tests/test_registry.py +388 -0
- stratarc-0.1.0/tests/test_registry_ranges.py +125 -0
- stratarc-0.1.0/tests/test_resources_cmd.py +952 -0
- stratarc-0.1.0/tests/test_rules_digest.py +375 -0
- stratarc-0.1.0/tests/test_schemas.py +78 -0
- stratarc-0.1.0/tests/test_source_graph.py +599 -0
- stratarc-0.1.0/tests/test_staging.py +492 -0
- stratarc-0.1.0/tests/test_strip_provenance.py +114 -0
- stratarc-0.1.0/tests/test_sync.py +2296 -0
- stratarc-0.1.0/tests/test_text.py +78 -0
- stratarc-0.1.0/tests/test_ui_app.py +285 -0
- stratarc-0.1.0/tests/test_ui_model.py +189 -0
- stratarc-0.1.0/tests/test_validate.py +636 -0
- stratarc-0.1.0/tests/test_verify.py +344 -0
- stratarc-0.1.0/tests/test_wheel_install.py +64 -0
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# python
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*.egg-info/
|
|
5
|
+
.eggs/
|
|
6
|
+
.pytest_cache/
|
|
7
|
+
.mypy_cache/
|
|
8
|
+
.ruff_cache/
|
|
9
|
+
.coverage
|
|
10
|
+
htmlcov/
|
|
11
|
+
|
|
12
|
+
# virtual environments
|
|
13
|
+
.venv/
|
|
14
|
+
venv/
|
|
15
|
+
env/
|
|
16
|
+
|
|
17
|
+
# build outputs
|
|
18
|
+
build/
|
|
19
|
+
dist/
|
|
20
|
+
site/
|
|
21
|
+
*.whl
|
|
22
|
+
|
|
23
|
+
# secrets
|
|
24
|
+
.env
|
|
25
|
+
.env.*
|
|
26
|
+
!.env.example
|
|
27
|
+
settings.local.json
|
|
28
|
+
|
|
29
|
+
# os
|
|
30
|
+
.DS_Store
|
|
31
|
+
|
|
32
|
+
# internal work product: prompts, questions, provenance, session notes and
|
|
33
|
+
# any snapshot a hook writes; never published
|
|
34
|
+
.docs/
|
|
35
|
+
|
|
36
|
+
# editor state
|
|
37
|
+
.obsidian/
|
|
38
|
+
.obsidian-stage-*/
|
|
39
|
+
|
|
40
|
+
# agent instruction files and runtime directories at the repository root:
|
|
41
|
+
# generated per machine by the operator's own configuration engine, never
|
|
42
|
+
# tracked here; the bundled template and the examples keep their own copies
|
|
43
|
+
/AGENTS.md
|
|
44
|
+
/CLAUDE.md
|
|
45
|
+
/CODEX.md
|
|
46
|
+
/GEMINI.md
|
|
47
|
+
/OPENCODE.md
|
|
48
|
+
/.claude/
|
|
49
|
+
/.codex/
|
|
50
|
+
/.gemini/
|
|
51
|
+
/.cursor/
|
|
52
|
+
/.opencode/
|
|
53
|
+
/.agents/
|
|
54
|
+
/llm-root-control-plane.md
|
|
55
|
+
/.llm-root-deploy.json
|
|
56
|
+
/.github/attribution-check/
|
|
57
|
+
/.github/workflows/attribution-check-comment.yml
|
stratarc-0.1.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Kevin Lappe
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
stratarc-0.1.0/PKG-INFO
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
|
+
Name: stratarc
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: One agent configuration source, rendered into every agent runtime.
|
|
5
|
+
Project-URL: Repository, https://github.com/klappe-pm/stratarc
|
|
6
|
+
Author: Kevin Lappe
|
|
7
|
+
License-Expression: MIT
|
|
8
|
+
License-File: LICENSE
|
|
9
|
+
Requires-Python: >=3.11
|
|
10
|
+
Provides-Extra: test
|
|
11
|
+
Requires-Dist: jsonschema; extra == 'test'
|
|
12
|
+
Requires-Dist: pytest; extra == 'test'
|
|
13
|
+
Provides-Extra: ui
|
|
14
|
+
Requires-Dist: textual>=8.2.0; extra == 'ui'
|
|
15
|
+
Description-Content-Type: text/markdown
|
|
16
|
+
|
|
17
|
+
# stratarc
|
|
18
|
+
|
|
19
|
+
stratarc compiles one configuration source root (instructions, rules, hooks, skills, commands, agents and permissions) into the native configuration of each agent runtime you use, then deploys it to that runtime's directory. You edit one tree; stratarc writes five formats. It ships as a Python package with shell hooks and needs only the Python 3.11 standard library at runtime.
|
|
20
|
+
|
|
21
|
+
Compatibility targets: Claude Code, Codex, Gemini CLI, Cursor and OpenCode.
|
|
22
|
+
|
|
23
|
+
## status
|
|
24
|
+
|
|
25
|
+
The engine was extracted from a private repository. The first release is `v0.1.0`, published as a GitHub release; there is no PyPI package yet, so you install from the tagged repository. `init`, `sync`, `check`, `diff`, `prune`, `reconcile`, `validate`, `doctor` and the `config`, `provider`, `adapter`, `log`, `verify`, `source`, `project`, `runtime`, `agent` and `account` resources are implemented, as is the optional terminal interface `stratarc ui`. The [cli backlog](developer-docs/explanation/cli-backlog.md) lists what ships and what is next, and [changelog.md](changelog.md) records changes.
|
|
26
|
+
|
|
27
|
+
## quickstart
|
|
28
|
+
|
|
29
|
+
Install the command. Until the package reaches PyPI, install the tagged release from the repository.
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
pipx install git+https://github.com/klappe-pm/stratarc@v0.1.0
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Once it is on PyPI:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
pipx install stratarc
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Scaffold a source root:
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
stratarc init ~/stratarc-source
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Edit `~/stratarc-source/stratarc.toml` to name the runtimes you use, then edit the rules, skills and hooks under the same directory.
|
|
48
|
+
|
|
49
|
+
Preview what a deployment would change without writing anything, then deploy to every enabled runtime:
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
cd ~/stratarc-source && stratarc diff
|
|
53
|
+
cd ~/stratarc-source && stratarc sync
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## documentation
|
|
57
|
+
|
|
58
|
+
Two trees, one per audience, each arranged by [Diátaxis](https://diataxis.fr/) quadrant: tutorials, how-to guides, reference and explanation.
|
|
59
|
+
|
|
60
|
+
- I use stratarc, where do I start: [getting started](docs/tutorials/getting-started.md), then the rest of [docs](docs/README.md).
|
|
61
|
+
- I change stratarc, where do I start: [first contribution](developer-docs/tutorials/first-contribution.md), then the rest of [developer-docs](developer-docs/README.md).
|
|
62
|
+
|
|
63
|
+
## support-and-contributing
|
|
64
|
+
|
|
65
|
+
[support.md](support.md) says where to ask for help and where to file an issue. [contributing.md](contributing.md) holds the contribution guidelines. Report vulnerabilities privately as described in [security.md](security.md).
|
|
66
|
+
|
|
67
|
+
## license
|
|
68
|
+
|
|
69
|
+
MIT. See [LICENSE](LICENSE).
|
stratarc-0.1.0/README.md
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# stratarc
|
|
2
|
+
|
|
3
|
+
stratarc compiles one configuration source root (instructions, rules, hooks, skills, commands, agents and permissions) into the native configuration of each agent runtime you use, then deploys it to that runtime's directory. You edit one tree; stratarc writes five formats. It ships as a Python package with shell hooks and needs only the Python 3.11 standard library at runtime.
|
|
4
|
+
|
|
5
|
+
Compatibility targets: Claude Code, Codex, Gemini CLI, Cursor and OpenCode.
|
|
6
|
+
|
|
7
|
+
## status
|
|
8
|
+
|
|
9
|
+
The engine was extracted from a private repository. The first release is `v0.1.0`, published as a GitHub release; there is no PyPI package yet, so you install from the tagged repository. `init`, `sync`, `check`, `diff`, `prune`, `reconcile`, `validate`, `doctor` and the `config`, `provider`, `adapter`, `log`, `verify`, `source`, `project`, `runtime`, `agent` and `account` resources are implemented, as is the optional terminal interface `stratarc ui`. The [cli backlog](developer-docs/explanation/cli-backlog.md) lists what ships and what is next, and [changelog.md](changelog.md) records changes.
|
|
10
|
+
|
|
11
|
+
## quickstart
|
|
12
|
+
|
|
13
|
+
Install the command. Until the package reaches PyPI, install the tagged release from the repository.
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
pipx install git+https://github.com/klappe-pm/stratarc@v0.1.0
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Once it is on PyPI:
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
pipx install stratarc
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Scaffold a source root:
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
stratarc init ~/stratarc-source
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Edit `~/stratarc-source/stratarc.toml` to name the runtimes you use, then edit the rules, skills and hooks under the same directory.
|
|
32
|
+
|
|
33
|
+
Preview what a deployment would change without writing anything, then deploy to every enabled runtime:
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
cd ~/stratarc-source && stratarc diff
|
|
37
|
+
cd ~/stratarc-source && stratarc sync
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## documentation
|
|
41
|
+
|
|
42
|
+
Two trees, one per audience, each arranged by [Diátaxis](https://diataxis.fr/) quadrant: tutorials, how-to guides, reference and explanation.
|
|
43
|
+
|
|
44
|
+
- I use stratarc, where do I start: [getting started](docs/tutorials/getting-started.md), then the rest of [docs](docs/README.md).
|
|
45
|
+
- I change stratarc, where do I start: [first contribution](developer-docs/tutorials/first-contribution.md), then the rest of [developer-docs](developer-docs/README.md).
|
|
46
|
+
|
|
47
|
+
## support-and-contributing
|
|
48
|
+
|
|
49
|
+
[support.md](support.md) says where to ask for help and where to file an issue. [contributing.md](contributing.md) holds the contribution guidelines. Report vulnerabilities privately as described in [security.md](security.md).
|
|
50
|
+
|
|
51
|
+
## license
|
|
52
|
+
|
|
53
|
+
MIT. See [LICENSE](LICENSE).
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# developer-docs
|
|
2
|
+
|
|
3
|
+
Documentation for people who change stratarc: you clone the repository, run its tests, add an adapter or fix a bug, and open a pull request. It uses the same four [Diátaxis](https://diataxis.fr/) quadrants as the user documentation under [docs](../docs/README.md), so the folder a page sits in tells you what kind of page it is. Nothing here is needed to use stratarc; everything here assumes you have read the user documentation for the part you are changing.
|
|
4
|
+
|
|
5
|
+
## tutorials
|
|
6
|
+
|
|
7
|
+
Lessons that take you through a task from start to finish, for someone new to the codebase. Start with [first contribution](tutorials/first-contribution.md), which goes from a fresh clone to a passing test suite and a pull request. Index: [tutorials](tutorials/README.md).
|
|
8
|
+
|
|
9
|
+
## how-to-guides
|
|
10
|
+
|
|
11
|
+
Recipes for a specific development goal. [add a runtime](how-to-guides/add-a-runtime.md) covers writing an adapter for another agent runtime, [run the tests](how-to-guides/run-the-tests.md) covers the suite, its markers and the CI checks, and [cut a release](how-to-guides/cut-a-release.md) covers versioning, the changelog and tagging. Index: [how-to guides](how-to-guides/README.md).
|
|
12
|
+
|
|
13
|
+
## reference
|
|
14
|
+
|
|
15
|
+
Lookup pages that describe the codebase as it is. [source layout](reference/source-layout.md) describes the source root that `stratarc init` creates and which runtimes consume each part, and [package data](reference/package-data.md) describes how the assets under `stratarc/data/` are packaged and resolved through `importlib.resources`. Index: [reference](reference/README.md).
|
|
16
|
+
|
|
17
|
+
## explanation
|
|
18
|
+
|
|
19
|
+
Discussion of why stratarc is built the way it is. [architecture](explanation/architecture.md) explains how one source root becomes several runtime configurations, and [decisions](explanation/decisions/README.md) holds stratarc's own decision records, one per choice that shaped the code. Index: [explanation](explanation/README.md).
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# explanation
|
|
2
|
+
|
|
3
|
+
Explanation pages give the reasoning behind the code: how the pipeline is shaped and why, what was decided and what was rejected. They are for a contributor who wants to understand stratarc before changing it, and they are the right place to read when a change you are planning touches something a decision record already settles.
|
|
4
|
+
|
|
5
|
+
## pages
|
|
6
|
+
|
|
7
|
+
- [architecture](architecture.md): how one source root becomes a configuration for each runtime, stage by stage.
|
|
8
|
+
- [decisions](decisions/README.md): stratarc's own decision records, one per choice that shaped the code.
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# decisions
|
|
2
|
+
|
|
3
|
+
This folder holds stratarc's decision records: one page per choice that shaped the code, written when the choice was made, so a later contributor can see what was decided, what was considered instead and why. A record is never rewritten once accepted; a reversal is a new record that names the one it supersedes. Read the records that touch a part of the code before proposing to change it.
|
|
4
|
+
|
|
5
|
+
## format
|
|
6
|
+
|
|
7
|
+
Each record is a file named `YYYY-MM-DD-<short-kebab-title>.md` with these sections: `## context` (the situation and the forces at play), `## decision` (what was chosen, in one paragraph), `## alternatives` (what else was considered and why it lost), and `## consequences` (what follows, good and bad). Add the record to the list below when it is accepted.
|
|
8
|
+
|
|
9
|
+
## records
|
|
10
|
+
|
|
11
|
+
Every record below is dated 2026-10-09 and was backfilled in one pass after the choices were made, so each carries the alternatives that were weighed then. The alternatives written from the code and the brief rather than from the maintainer's own words are marked for review in their pages. The terminal interface library record was proposed and open; the Textual record supersedes it, and the record stays as written. The two open points in accepted records, the `_modes` syntax in explicit list modes and whether the XDG path should be the primary home, are settled by later records (list modes use a modes table, the home is `.stratarc`); the earlier records are not edited.
|
|
12
|
+
|
|
13
|
+
Naming and scope:
|
|
14
|
+
|
|
15
|
+
- [rename to stratarc](2026-10-09-rename-to-stratarc.md)
|
|
16
|
+
- [the stratarc name passed its checks with two caveats](2026-10-10-the-stratarc-name-passed-its-checks-with-two-caveats.md) (confirms the rename; the trademark registers it left open were checked where a search could be run)
|
|
17
|
+
- [public package ships code only and no private integrations](2026-10-09-public-package-ships-code-only-and-no-private-integrations.md)
|
|
18
|
+
- [one engine name](2026-10-09-one-engine-name.md)
|
|
19
|
+
|
|
20
|
+
Source root and deployment:
|
|
21
|
+
|
|
22
|
+
- [guards overlay package data](2026-10-09-guards-overlay-package-data.md)
|
|
23
|
+
- [private extensions live in the source root](2026-10-09-private-extensions-live-in-the-source-root.md)
|
|
24
|
+
- [no deploy branch guard unless environments declared](2026-10-09-no-deploy-branch-guard-unless-environments-declared.md)
|
|
25
|
+
- [projects root from config](2026-10-09-projects-root-from-config.md)
|
|
26
|
+
- [diff is a read-only full render](2026-10-09-diff-is-a-read-only-full-render.md)
|
|
27
|
+
- [verify defines drift as a dry run](2026-10-09-verify-defines-drift-as-a-dry-run.md)
|
|
28
|
+
- [sync verifies and rolls back on drift](2026-10-09-sync-verifies-and-rolls-back-on-drift.md)
|
|
29
|
+
- [rollback places every adapter action line](2026-10-10-rollback-places-every-adapter-action-line.md), refines the verify and rollback record: relative and file-less lines are covered by the render's owned set
|
|
30
|
+
- [sync records changes at its write points](2026-10-09-sync-records-changes-at-its-write-points.md)
|
|
31
|
+
- [private checks gate deploy only when the source root opts in](2026-10-09-private-checks-gate-deploy-only-when-the-source-root-opts-in.md)
|
|
32
|
+
- [the active source root is resolved in one place](2026-10-09-the-active-source-root-is-resolved-in-one-place.md)
|
|
33
|
+
- [the source root private hook files are staged from the source only](2026-10-09-the-source-root-private-hook-files-are-staged-from-the-source-only.md) (narrows the staging exclusion in the two records on guards and private extensions)
|
|
34
|
+
- [rendered workflows must run files the sync delivers](2026-10-09-rendered-workflows-must-run-files-the-sync-delivers.md)
|
|
35
|
+
|
|
36
|
+
Settings, registries and state:
|
|
37
|
+
|
|
38
|
+
- [layer order and provenance](2026-10-09-layer-order-and-provenance.md)
|
|
39
|
+
- [explicit list modes in layers](2026-10-09-explicit-list-modes-in-layers.md)
|
|
40
|
+
- [list modes use a modes table](2026-10-09-list-modes-use-a-modes-table.md), settles the open syntax point above
|
|
41
|
+
- [list overrides never default their mode](2026-10-10-list-overrides-never-default-their-mode.md), settles the open default point in the two list mode records above
|
|
42
|
+
- [home layout and safe writes](2026-10-09-home-layout-and-safe-writes.md)
|
|
43
|
+
- [source root files keep their mode and the home stays private](2026-10-10-source-root-files-keep-their-mode-and-the-home-stays-private.md), refines the file modes in the home layout record
|
|
44
|
+
- [the home is dot stratarc with an environment override](2026-10-09-the-home-is-dot-stratarc-with-an-environment-override.md), settles the open home point above
|
|
45
|
+
- [adapter registry and support ranges](2026-10-09-adapter-registry-and-support-ranges.md)
|
|
46
|
+
- [version detection runs in an isolated home](2026-10-09-version-detection-runs-in-an-isolated-home.md)
|
|
47
|
+
- [providers hold secret references only](2026-10-09-providers-hold-secret-references-only.md)
|
|
48
|
+
- [optional change log](2026-10-09-optional-change-log.md)
|
|
49
|
+
|
|
50
|
+
Command line and interfaces:
|
|
51
|
+
|
|
52
|
+
- [resource verb command grammar](2026-10-09-resource-verb-command-grammar.md)
|
|
53
|
+
- [exit code map](2026-10-09-exit-code-map.md)
|
|
54
|
+
- [message catalog with ids](2026-10-09-message-catalog-with-ids.md)
|
|
55
|
+
- [read-only local API](2026-10-09-read-only-local-api.md)
|
|
56
|
+
- [local API safeguards](2026-10-09-local-api-safeguards.md)
|
|
57
|
+
- [terminal UI library is open](2026-10-09-terminal-ui-library-is-open.md), superseded by the Textual record below
|
|
58
|
+
- [Textual is an optional extra for the terminal interface](2026-10-09-textual-is-an-optional-extra-for-the-terminal-interface.md)
|
|
59
|
+
- [starc is the short command alias](2026-10-09-starc-is-the-short-command-alias.md), superseded by the drop record below
|
|
60
|
+
- [drop the starc alias](2026-10-09-drop-the-starc-alias.md), supersedes the starc alias record: the command is `stratarc` only
|
|
61
|
+
- [resource verbs fill the grammar gaps](2026-10-09-resource-verbs-fill-the-grammar-gaps.md)
|
|
62
|
+
- [JSON accounts support set and unset](2026-10-10-json-accounts-support-set-and-unset.md), extends the account verbs in the gaps record
|
|
63
|
+
- [explain follows the dispatch relay and flags are a layer](2026-10-09-explain-follows-the-dispatch-relay-and-flags-are-a-layer.md)
|
|
64
|
+
- [the interface validates edits and keeps slow work off its thread](2026-10-09-the-interface-validates-edits-and-keeps-slow-work-off-its-thread.md)
|
|
65
|
+
- [CLI design is delivered in ordered slices](2026-10-09-cli-design-is-delivered-in-ordered-slices.md)
|
|
66
|
+
- [first run is a choice, not a scan](2026-10-09-first-run-is-a-choice-not-a-scan.md)
|
|
67
|
+
|
|
68
|
+
Docs and tests:
|
|
69
|
+
|
|
70
|
+
- [static docs site built from the repo](2026-10-09-static-docs-site-built-from-the-repo.md)
|
|
71
|
+
- [example output is captured, not written](2026-10-09-example-output-is-captured-not-written.md)
|
|
72
|
+
- [pytest is the only test runner](2026-10-09-pytest-is-the-only-test-runner.md)
|
|
73
|
+
- [shellcheck gates at warning severity](2026-10-10-shellcheck-gates-at-warning-severity.md)
|
|
74
|
+
- [the stack merges through its top pull request](2026-10-11-the-stack-merges-through-its-top-pull-request.md)
|
|
75
|
+
- [new CLI tests carry mutation proofs](2026-10-09-new-cli-tests-carry-mutation-proofs.md)
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# how-to-guides
|
|
2
|
+
|
|
3
|
+
How-to guides are recipes for a development goal. Each one assumes you have the repository set up and know your way around it, and gives the steps for one task with the minimum of explanation. They link to the reference pages for the details they skip and to the explanation pages for the reasons behind them.
|
|
4
|
+
|
|
5
|
+
## pages
|
|
6
|
+
|
|
7
|
+
- [add a runtime](add-a-runtime.md): write an adapter for another agent runtime, register it and test its output.
|
|
8
|
+
- [run the tests](run-the-tests.md): the test suite, its markers, and the lint and scan checks CI runs.
|
|
9
|
+
- [cut a release](cut-a-release.md): bump the version, settle the changelog, tag and publish.
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# reference
|
|
2
|
+
|
|
3
|
+
Reference pages describe the codebase as it is: the layout of a source root, how packaged assets are found, the shape of each file. They are for looking something up while you change the code, so they are organised around the thing described, state facts without instruction, and aim to be complete. The how-to guides say what to do with these facts.
|
|
4
|
+
|
|
5
|
+
## pages
|
|
6
|
+
|
|
7
|
+
- [source layout](source-layout.md): the source root that `stratarc init` creates, what each file and directory holds and which runtimes consume it.
|
|
8
|
+
- [package data](package-data.md): how the templates, schemas, hooks and git hooks under `stratarc/data/` are packaged and resolved through `importlib.resources`.
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# tutorials
|
|
2
|
+
|
|
3
|
+
Tutorials are lessons for someone new to the codebase. Each one takes a reader through a development task from start to finish on one path, so the first contribution succeeds before the reader has to understand the whole repository. They link to the reference pages for detail rather than including it.
|
|
4
|
+
|
|
5
|
+
## pages
|
|
6
|
+
|
|
7
|
+
- [first contribution](first-contribution.md): from a fresh clone to a passing test suite, a small change and a pull request.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# docs
|
|
2
|
+
|
|
3
|
+
Documentation for people who use stratarc: you run the command, keep a source root and deploy it into your runtimes. It is arranged by the four [Diátaxis](https://diataxis.fr/) quadrants, so the folder a page sits in tells you what kind of page it is. If you change stratarc itself, the same shape exists under [developer-docs](../developer-docs/README.md).
|
|
4
|
+
|
|
5
|
+
## tutorials
|
|
6
|
+
|
|
7
|
+
Lessons that take you through a task from start to finish, for someone who has not done it before. Start with [getting started](tutorials/getting-started.md), which goes from an empty machine to a scaffolded source root and a first deployment. Index: [tutorials](tutorials/README.md).
|
|
8
|
+
|
|
9
|
+
## how-to-guides
|
|
10
|
+
|
|
11
|
+
Recipes for a specific goal, for someone who already knows the basics and wants the steps. [install](how-to-guides/install.md) covers every install method, [migrate existing config](how-to-guides/migrate-existing-config.md) brings a hand-maintained runtime directory under a source root, and [troubleshooting](how-to-guides/troubleshooting.md) matches a failure to its fix. Index: [how-to guides](how-to-guides/README.md).
|
|
12
|
+
|
|
13
|
+
## reference
|
|
14
|
+
|
|
15
|
+
Lookup pages that describe the machinery as it is, with no instruction attached. [cli](reference/cli.md) lists every subcommand and exit status, [configuration](reference/configuration.md) lists every key in `stratarc.toml` and the schemas that validate the JSON files, and [runtimes](reference/runtimes/README.md) names each supported runtime with a page per runtime: [claude](reference/runtimes/claude.md), [codex](reference/runtimes/codex.md), [cursor](reference/runtimes/cursor.md), [gemini](reference/runtimes/gemini.md) and [opencode](reference/runtimes/opencode.md). Index: [reference](reference/README.md).
|
|
16
|
+
|
|
17
|
+
## explanation
|
|
18
|
+
|
|
19
|
+
Discussion that gives background and reasons, for a reader who wants to understand rather than act. [security model](explanation/security-model.md) explains what stratarc protects against, what it trusts and what it leaves to the runtimes. Index: [explanation](explanation/README.md).
|
|
20
|
+
|
|
21
|
+
## documentation-guide
|
|
22
|
+
|
|
23
|
+
How this documentation is organised and how to add to it. [documentation guide](documentation-guide/README.md) says which folder a new page belongs in, and [feature documentation template](documentation-guide/feature-documentation-template.md) is the outline for a page that documents one feature end to end.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# documentation-guide
|
|
2
|
+
|
|
3
|
+
This guide says where a document goes in this repository and what each kind of page is for, so a new page lands where its readers will look for it. The documentation follows [Diátaxis](https://diataxis.fr/): every page is one of four kinds, and the folder it sits in names the kind. Two trees hold the same five folders, [docs](../README.md) for people who use stratarc and [developer-docs](../../developer-docs/README.md) for people who change it. Pick the tree by audience first, then the folder by kind.
|
|
4
|
+
|
|
5
|
+
## where-a-document-goes
|
|
6
|
+
|
|
7
|
+
- `tutorials/`: a lesson that takes a newcomer through a task from start to finish on one path. Written to be followed in order; links out for detail instead of including it.
|
|
8
|
+
- `how-to-guides/`: a recipe for one goal, for a reader who knows the basics. Steps first, explanation only where a step would otherwise surprise.
|
|
9
|
+
- `reference/`: a description of the machinery as it is, structured around the thing described, complete and free of instruction.
|
|
10
|
+
- `explanation/`: background and reasoning, read away from the keyboard; the place for why, for tradeoffs and for alternatives.
|
|
11
|
+
- `documentation-guide/`: this folder, holding the conventions and templates for the documentation itself.
|
|
12
|
+
|
|
13
|
+
A page that would need to be two of these is two pages. A reference table inside a tutorial moves to `reference/` and is linked; a paragraph of rationale inside a how-to guide moves to `explanation/`.
|
|
14
|
+
|
|
15
|
+
## conventions
|
|
16
|
+
|
|
17
|
+
- Filenames and headings are lowercase kebab-case; `README.md` keeps its name, and its H1 is the folder name.
|
|
18
|
+
- Every page opens with a paragraph stating its purpose and what it covers, written for its audience.
|
|
19
|
+
- Every `README.md` in a quadrant lists the pages in that quadrant with one line each, and the tree's top-level `README.md` has one paragraph per quadrant naming every page.
|
|
20
|
+
- One line per paragraph and per list item; no hard-wrapped prose.
|
|
21
|
+
- Every code fence carries a language tag.
|
|
22
|
+
- No dashes as punctuation; use a comma, colon, semicolon, period or parentheses.
|
|
23
|
+
- Links are relative paths within the repository.
|
|
24
|
+
- No frontmatter is required. The provenance keys `models`, `providers` and `session-link` are forbidden and a CI check rejects them.
|
|
25
|
+
|
|
26
|
+
## templates
|
|
27
|
+
|
|
28
|
+
- [feature documentation template](feature-documentation-template.md): the outline for a page that documents one feature end to end.
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# explanation
|
|
2
|
+
|
|
3
|
+
Explanation pages give background. They are for a reader who wants to understand stratarc rather than operate it: why it is shaped the way it is, what it trusts, what tradeoffs it makes and where its boundaries lie. They can be read away from the keyboard, they take a position, and they are the one place in the documentation where discussing alternatives is welcome.
|
|
4
|
+
|
|
5
|
+
## pages
|
|
6
|
+
|
|
7
|
+
- [security model](security-model.md): what stratarc protects against, how the detectors and hooks do it, what it trusts in a source root and what it leaves to the runtimes.
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# how-to-guides
|
|
2
|
+
|
|
3
|
+
How-to guides are recipes. Each one solves a specific problem for a reader who already knows what stratarc is and wants the steps, with the minimum of explanation along the way. They assume more than a tutorial and promise less: a guide gets you to one outcome, and links to the reference pages for the details it skips.
|
|
4
|
+
|
|
5
|
+
## pages
|
|
6
|
+
|
|
7
|
+
- [install](install.md): every supported way to install, upgrade and uninstall the command.
|
|
8
|
+
- [migrate existing config](migrate-existing-config.md): bring a hand-maintained runtime directory under one source root without losing local changes.
|
|
9
|
+
- [troubleshooting](troubleshooting.md): known failure modes matched to their fixes.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# reference
|
|
2
|
+
|
|
3
|
+
Reference pages describe the machinery: the commands, the keys, the files each runtime receives. They are for looking something up while you work, so they are structured around the thing they describe rather than around a task, they state facts without instruction, and they aim to be complete rather than friendly. A reference page says what an option does; the how-to guides say when to reach for it.
|
|
4
|
+
|
|
5
|
+
## pages
|
|
6
|
+
|
|
7
|
+
- [cli](cli.md): every subcommand of the `stratarc` command with its arguments and exit statuses.
|
|
8
|
+
- [config](config.md): the `stratarc config` commands, the layers and their precedence, the flags layer and the agent relay.
|
|
9
|
+
- [resources](resources.md): the resource verbs for projects, runtimes, agents, accounts and sources.
|
|
10
|
+
- [ui](ui.md): the terminal interface, its keys, editing, slow work and exit statuses.
|
|
11
|
+
- [api](api.md): the read-only local API, its transport, routes, response envelope and limits.
|
|
12
|
+
- [configuration](configuration.md): every key in `stratarc.toml`, the JSON Schemas that validate the source root, and the environment variables that override them.
|
|
13
|
+
- [runtimes](runtimes/README.md): the supported runtimes, their default targets and one page per runtime: [claude](runtimes/claude.md), [codex](runtimes/codex.md), [cursor](runtimes/cursor.md), [gemini](runtimes/gemini.md) and [opencode](runtimes/opencode.md).
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# runtimes
|
|
2
|
+
|
|
3
|
+
The agent runtimes stratarc targets, with the default directory it deploys each one to and a page per runtime describing the files stratarc writes for it. Each page is a reference: the file names, their formats and which part of the source root feeds each one. The pages fill in as the adapters are extracted.
|
|
4
|
+
|
|
5
|
+
| runtime | default target | page |
|
|
6
|
+
| --- | --- | --- |
|
|
7
|
+
| Claude Code | `~/.claude/` | [claude](claude.md) |
|
|
8
|
+
| Codex | `~/.codex/` | [codex](codex.md) |
|
|
9
|
+
| Cursor | `~/.cursor/` | [cursor](cursor.md) |
|
|
10
|
+
| Gemini CLI | `~/.gemini/` | [gemini](gemini.md) |
|
|
11
|
+
| OpenCode | `~/.config/opencode/` | [opencode](opencode.md) |
|
|
12
|
+
|
|
13
|
+
The target for each runtime is set in `stratarc.toml`; see [configuration](../configuration.md).
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# tutorials
|
|
2
|
+
|
|
3
|
+
Tutorials are lessons. Each one takes a reader who has not done the task before through it from start to finish, on one path, explaining only what that path needs. They exist so a new user succeeds at something real on the first try; they are not the place to look up an option or to understand a design, and they link out to the reference and explanation pages for that.
|
|
4
|
+
|
|
5
|
+
## pages
|
|
6
|
+
|
|
7
|
+
- [getting started](getting-started.md): from an empty machine to an installed command, a scaffolded source root, chosen runtimes and a first deployment.
|