@amsterdamdatalabs/adl-agent-control-linux-x64 0.1.12 → 0.1.26
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.
- package/bin/adl +2 -2
- package/bin/git +16 -17
- package/bin/git-ado +25 -24
- package/bin/git-defaults +173 -0
- package/bin/health-check +8 -1
- package/bin/kimi-hooks +1 -1
- package/bin/lib/adl-package.sh +257 -0
- package/bin/lib/fleet-host.sh +8 -5
- package/bin/reconcile +482 -232
- package/bin/reconcile-host +30 -20
- package/bin/setup +20 -17
- package/bin/shell-path-policy +15 -5
- package/bin/sync-and-reconcile +62 -64
- package/bin/validate-manifest +33 -9
- package/package.json +2 -10
- package/packages/agent-hooks/README.md +14 -9
- package/packages/agent-hooks/assets/hooks.json +0 -20
- package/packages/agent-hooks/src/cli/args.ts +1 -1
- package/packages/agent-hooks/src/cli/doctor.ts +6 -58
- package/packages/agent-hooks/src/deploy/deploy.ts +12 -41
- package/packages/agent-hooks/src/deploy/doctor.ts +8 -11
- package/packages/agent-hooks/src/deploy/index.ts +14 -14
- package/packages/agent-hooks/src/deploy/json-merge.ts +7 -8
- package/packages/agent-hooks/src/deploy/legacy-lock.ts +2 -2
- package/packages/agent-hooks/src/deploy/list.ts +1 -1
- package/packages/agent-hooks/src/deploy/lock.ts +31 -12
- package/packages/agent-hooks/src/deploy/profile.ts +3 -4
- package/packages/agent-hooks/src/deploy/source.ts +1 -1
- package/packages/agent-hooks/src/gating/config.ts +10 -24
- package/packages/agent-hooks/src/gating/root.ts +3 -3
- package/packages/agent-hooks/src/hooks/briefing/handler.ts +2 -2
- package/packages/agent-hooks/src/hooks/briefing/index.ts +27 -287
- package/packages/agent-hooks/src/hooks/contract.ts +17 -17
- package/packages/agent-hooks/src/hooks/crg/background.ts +27 -0
- package/packages/agent-hooks/src/hooks/crg/index.ts +7 -6
- package/packages/agent-hooks/src/hooks/log.ts +8 -10
- package/packages/agent-hooks/src/hooks/user-prompt-submit/match.ts +1 -1
- package/packages/agent-hooks/src/hooks/user-prompt-submit/tokenizer.ts +1 -1
- package/packages/agent-hooks/src/hooks/user-prompt-submit/vector.ts +6 -5
- package/packages/agent-hooks/src/hosts/registry.ts +1 -1
- package/packages/agent-hooks/src/log/adl-dir.ts +44 -0
- package/packages/agent-hooks/src/log/writer.ts +16 -2
- package/packages/agent-hooks/src/main.ts +7 -41
- package/packages/agent-hooks/src/pre-tool-use/handler.ts +71 -82
- package/packages/agent-hooks/src/rules/engine.ts +13 -17
- package/packages/agent-hooks/src/rules/impl/adl-build-run-denied.ts +3 -3
- package/packages/agent-hooks/src/rules/impl/adl-git-credential-bypass.ts +12 -14
- package/packages/agent-hooks/src/rules/impl/adl-git-identity.ts +28 -28
- package/packages/agent-hooks/src/rules/impl/adl-git-push-policy.ts +8 -9
- package/packages/agent-hooks/src/rules/impl/adl-human-azdo-bypass.ts +56 -59
- package/packages/agent-hooks/src/rules/impl/adl-identity.ts +16 -23
- package/packages/agent-hooks/src/rules/impl/adl-mcp-cli.ts +19 -16
- package/packages/agent-hooks/src/rules/impl/adl-pr-complete-pending.ts +2 -2
- package/packages/agent-hooks/src/rules/impl/adl-pr-review-role.ts +9 -12
- package/packages/agent-hooks/src/rules/impl/adl-pr-role.ts +5 -7
- package/packages/agent-hooks/src/rules/impl/adl-run-required.ts +411 -0
- package/packages/agent-hooks/src/rules/impl/adl-token-minting-role.ts +4 -5
- package/packages/agent-hooks/src/rules/impl/adl-workitem-role.ts +6 -7
- package/packages/agent-hooks/src/rules/impl/agent-tamper-protection.ts +77 -70
- package/packages/agent-hooks/src/rules/impl/deny-allowlist.ts +159 -0
- package/packages/agent-hooks/src/rules/impl/git-helpers.ts +21 -23
- package/packages/agent-hooks/src/rules/impl/git-worktree.ts +14 -28
- package/packages/agent-hooks/src/rules/impl/mcp-tool.ts +3 -3
- package/packages/agent-hooks/src/rules/impl/messages.ts +1 -1
- package/packages/agent-hooks/src/rules/impl/pr-completion.ts +1 -1
- package/packages/agent-hooks/src/rules/impl/tool-azure-devops.ts +35 -46
- package/packages/agent-hooks/src/rules/impl/tool-find.ts +34 -7
- package/packages/agent-hooks/src/rules/impl/tool-grep.ts +34 -12
- package/packages/agent-hooks/src/rules/impl/tool-native-search.ts +52 -9
- package/packages/agent-hooks/src/rules/ports.ts +5 -7
- package/packages/agent-hooks/src/rules/registry.ts +4 -6
- package/packages/agent-hooks/src/rules/shell/git-identity.ts +86 -101
- package/packages/agent-hooks/src/rules/shell/git-internals.ts +1 -1
- package/packages/agent-hooks/src/rules/shell/invocation.ts +24 -118
- package/packages/agent-hooks/src/rules/shell/piped-script.ts +1 -1
- package/packages/agent-hooks/src/rules/shell/prefixes.ts +1 -1
- package/packages/agent-hooks/src/rules/shell/protected-carrier-writes.ts +11 -10
- package/packages/agent-hooks/src/rules/shell/protected-carriers.ts +26 -26
- package/packages/agent-hooks/src/rules/shell/substitution.ts +1 -1
- package/packages/agent-hooks/src/rules/shell/xargs.ts +2 -2
- package/packages/agent-hooks/src/rules/spec.ts +2 -2
- package/packages/agent-settings/README.md +287 -0
- package/packages/agent-settings/assets/GLOBAL-AGENTS.md +14 -16
- package/packages/agent-settings/assets/agents/architect.toml +2 -0
- package/packages/agent-settings/assets/agents/code-reviewer.toml +2 -0
- package/packages/agent-settings/assets/agents/executor.toml +2 -0
- package/packages/agent-settings/assets/agents/explore.toml +2 -0
- package/packages/agent-settings/assets/agents/planner.toml +2 -0
- package/packages/agent-settings/assets/mcp.json +0 -4
- package/packages/agent-settings/deploy-profile.json +139 -0
- package/packages/agent-settings/deploy-profile.schema.json +147 -0
- package/packages/agent-settings/managed/README.md +29 -30
- package/packages/agent-settings/managed/codex-requirements.toml +9 -9
- package/packages/agent-settings/package.json +20 -0
- package/packages/agent-settings/src/deploy/agent-render.ts +2 -2
- package/packages/agent-settings/src/deploy/agent-toml.ts +1 -1
- package/packages/agent-settings/src/deploy/agents-deploy.ts +17 -3
- package/packages/agent-settings/src/deploy/doctor.ts +3 -83
- package/packages/agent-settings/src/deploy/index.ts +6 -33
- package/packages/agent-settings/src/deploy/legacy-lock.ts +6 -6
- package/packages/agent-settings/src/deploy/list.ts +5 -19
- package/packages/agent-settings/src/deploy/lock.ts +8 -18
- package/packages/agent-settings/src/deploy/mcp-deploy.ts +10 -5
- package/packages/agent-settings/src/deploy/mcp-merge.ts +22 -3
- package/packages/agent-settings/src/deploy/mcp-source.ts +1 -1
- package/packages/agent-settings/src/deploy/profile.ts +11 -35
- package/packages/agent-settings/src/deploy/retire-lean-ctx.ts +184 -0
- package/packages/agent-settings/src/deploy/settings.ts +17 -22
- package/packages/agent-settings/src/global-surface-sweep.ts +0 -2
- package/packages/agent-settings/src/kimi-hooks.ts +339 -192
- package/packages/agent-settings/src/opencode-hooks.ts +1 -1
- package/packages/agent-settings/tsconfig.json +23 -0
- package/packages/agent-skills/assets/agent-search-tool-audit/SKILL.md +120 -0
- package/packages/agent-skills/assets/agent-search-tool-audit/scripts/audit.sh +276 -0
- package/packages/agent-skills/assets/debug-issue/SKILL.md +8 -7
- package/packages/agent-skills/assets/explore-codebase/SKILL.md +13 -13
- package/packages/agent-skills/assets/refactor-safely/SKILL.md +12 -11
- package/packages/agent-skills/assets/review-changes/SKILL.md +7 -7
- package/packages/agent-skills/assets/testing/references/e2e.md +37 -0
- package/packages/agent-skills/assets/testing/references/integration.md +37 -0
- package/packages/agent-skills/assets/testing/references/unit.md +32 -0
- package/packages/agent-skills/dist/deploy.d.ts +2 -0
- package/packages/agent-skills/dist/deploy.d.ts.map +1 -1
- package/packages/agent-skills/dist/deploy.js +27 -1
- package/packages/agent-skills/dist/deploy.js.map +1 -1
- package/packages/agent-skills/dist/doctor.d.ts +0 -2
- package/packages/agent-skills/dist/doctor.d.ts.map +1 -1
- package/packages/agent-skills/dist/doctor.js +1 -1
- package/packages/agent-skills/dist/doctor.js.map +1 -1
- package/packages/agent-skills/dist/fs-utils.d.ts +0 -1
- package/packages/agent-skills/dist/fs-utils.d.ts.map +1 -1
- package/packages/agent-skills/dist/fs-utils.js +1 -1
- package/packages/agent-skills/dist/fs-utils.js.map +1 -1
- package/packages/agent-skills/src/deploy.ts +29 -1
- package/packages/agent-skills/src/doctor.ts +1 -1
- package/packages/agent-skills/src/fs-utils.ts +1 -1
- package/packages/azdo/README.md +10 -9
- package/packages/azdo/package.json +1 -3
- package/packages/azdo/src/azdo-pl.ts +2 -54
- package/packages/azdo/src/azdo-pr-review.ts +4 -4
- package/packages/azdo/src/azdo-repo-doctor.ts +101 -52
- package/packages/azdo/src/azdo-wit.ts +41 -2
- package/packages/azdo/src/lib/agent-identity.ts +12 -14
- package/packages/azdo/src/lib/agent-token.ts +2 -2
- package/packages/azdo/src/lib/client.ts +0 -5
- package/packages/azdo/src/lib/graph-identity.ts +4 -4
- package/packages/azdo/src/workflow-rules-matrix.csv +85 -0
- package/packages/azdo/src/workflow-rules.ts +128 -0
- package/packages/fleet/manifest.json +35 -11
- package/packages/fleet/manifest.schema.json +62 -10
- package/packages/fleet/src/default-agent-file.ts +3 -3
- package/packages/fleet/src/install-adl-package.ts +73 -15
- package/packages/fleet/src/install-embedding-model.ts +13 -13
- package/packages/fleet/src/managed-settings.ts +7 -7
- package/packages/fleet/src/repo-maintain.ts +91 -55
- package/packages/fleet/src/scratch-reap.ts +5 -5
- package/packages/fleet/src/vscode-settings.ts +5 -5
- package/packages/repo-controls/README.md +141 -43
- package/packages/repo-controls/assets/promote.ts +4 -4
- package/packages/repo-controls/assets/reconcile-guard.sh +10 -46
- package/packages/repo-controls/assets/version-bump.sh +31 -84
- package/packages/repo-controls/bunfig.toml +6 -7
- package/packages/repo-controls/package/adl-compliance/AGENTS.md +5 -6
- package/packages/repo-controls/package/adl-compliance/conftest.py +3 -1
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/__init__.py +4 -16
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/adr_lifecycle/test_check.py +9 -2
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/closed_set/fixtures/docs/notes.md +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/closed_set/test_check.py +11 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/__init__.py +7 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/check.py +266 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-assets/docs/guide/.drafts/c.md +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-assets/docs/guide/.drafts/d.md +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-assets/docs/guide/.hidden.md +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-assets/docs/guide/a.md +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-assets/docs/guide/b.md +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-assets/docs/guide/data.csv +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-assets/docs/guide/diagram.png +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-assets/docs/guide/mock.png +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-assets/docs/guide/sub/nested.md +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-assets/docs.md +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-assets/grants.yaml +4 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-assets/plans/deep/p1.md +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-assets/plans/deep/p2.md +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-assets/plans/deep/p3.md +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-assets/plans/deep/p4.md +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-assets/plans/deep/p5.md +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-clean/docs/architecture/build.md +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-clean/docs/architecture/overview.md +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-clean/docs/guide/install.md +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-clean/docs/guide/start.md +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-clean/grants.yaml +4 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-decisions/docs/decisions/adr-001-tenancy.md +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-decisions/docs/decisions/adr-002-carrier.md +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-decisions/docs/decisions/adr-003-cli.md +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-decisions/docs/decisions/archive/adr-000-old.md +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-decisions/docs/decisions/archive/adr-000-older.md +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-decisions/docs/guide/a.md +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-decisions/docs/guide/b.md +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-decisions/docs/guide/c.md +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-decisions/grants.yaml +4 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-default-cap/docs/guide/page-01.md +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-default-cap/docs/guide/page-02.md +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-default-cap/docs/guide/page-03.md +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-default-cap/docs/guide/page-04.md +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-default-cap/docs/guide/page-05.md +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-default-cap/docs/guide/page-06.md +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-default-cap/docs/guide/page-07.md +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-default-cap/docs/guide/page-08.md +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-default-cap/docs/guide/page-09.md +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-default-cap/docs/guide/page-10.md +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-default-cap/docs/guide/page-11.md +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-default-cap/docs/guide/page-12.md +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-default-cap/docs/guide/page-13.md +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-default-cap/docs/guide/page-14.md +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-default-cap/docs/guide/page-15.md +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-default-cap/docs/guide/page-16.md +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-default-cap/grants.yaml +4 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-exempt/docs/guide/a.md +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-exempt/docs/guide/b.md +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-exempt/docs/guide/c.md +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-exempt/grants.yaml +4 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-grew/docs/guide/a.md +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-grew/docs/guide/b.md +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-grew/docs/guide/c.md +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-grew/grants.yaml +4 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-no-section/docs/guide/a.md +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-no-section/docs/guide/b.md +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-no-section/docs/guide/c.md +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-no-section/docs/guide/d.md +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-no-section/docs/guide/e.md +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-no-section/grants.yaml +4 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-over-cap/docs/guide/a.md +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-over-cap/docs/guide/b.md +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-over-cap/docs/guide/c.md +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-over-cap/docs/short/only.md +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-over-cap/grants.yaml +4 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-stale/docs/held/a.md +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-stale/docs/held/b.md +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-stale/docs/held/c.md +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-stale/docs/held/d.md +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-stale/docs/shrunk/a.md +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-stale/docs/shrunk/b.md +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-stale/grants.yaml +6 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-unusable/docs/guide/a.md +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-unusable/docs/guide/b.md +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-unusable/docs/guide/c.md +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/fixtures/docs-size-unusable/grants.yaml +3 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/directory_size/test_check.py +345 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/english_only/check.py +18 -5
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/english_only/test_check.py +35 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/filename/__init__.py +7 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/filename/check.py +91 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/filename/fixtures/docs/AGENTS.md +3 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/filename/fixtures/docs/CLAUDE.md +3 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/filename/fixtures/docs/architecture/-leading-hyphen.md +3 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/filename/fixtures/docs/architecture/AGENTS.md +3 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/filename/fixtures/docs/architecture/double--hyphen.md +3 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/filename/fixtures/docs/architecture/getting started.md +3 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/filename/fixtures/docs/architecture/nested/page-here.md +3 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/filename/fixtures/docs/architecture/trailing-hyphen-.md +3 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/filename/fixtures/docs/architecture/ui-contract.md +4 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/filename/fixtures/docs/architecture/user_profile.md +3 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/filename/fixtures/docs/assets/UI-CONTRACT.png +2 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/filename/fixtures/docs/assets/diagram.png +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/filename/fixtures/docs/index.md +4 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/filename/fixtures/docs/notes.md +3 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/filename/fixtures/docs/reference.html +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/filename/fixtures/docs/research/2026-10-experiment.md +3 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/filename/fixtures/docs/research/UI-CONTRACT.md +6 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/filename/fixtures/docs.md +5 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/filename/test_check.py +194 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/indexes/check.py +14 -2
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/indexes/docs-knowledge-indexes.yaml +5 -5
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/indexes/fixtures/knowledge-indexes-shipped-register-legacy/docs/compliance/index.md +10 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/indexes/fixtures/knowledge-indexes-shipped-register-type/docs/compliance/index.md +10 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/indexes/test_check.py +58 -6
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/ledger/test_check.py +0 -1
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/okf_profile/check.py +64 -17
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/okf_profile/docs-okf-profiles.yaml +60 -9
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/okf_profile/fixtures/okf-ledger-clean/docs/notes.md +17 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/okf_profile/fixtures/okf-ledger-no-lines/docs/notes.md +13 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/okf_profile/fixtures/okf-profile-clean/docs/architecture/demo.md +0 -1
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/okf_profile/fixtures/okf-profile-clean/docs-okf-profiles.yaml +0 -1
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/okf_profile/fixtures/okf-profile-untyped/docs/research/no-type.md +9 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/okf_profile/fixtures/okf-profile-untyped/docs/research/typed-experiment.md +10 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/okf_profile/fixtures/okf-profile-untyped/docs/research/typed-research.md +10 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/okf_profile/fixtures/okf-profile-untyped/docs-okf-profiles.yaml +5 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/okf_profile/fixtures/okf-profile-violation/docs/architecture/bad-status.md +0 -1
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/okf_profile/fixtures/okf-profile-violation/docs-okf-profiles.yaml +0 -1
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/okf_profile/fixtures/okf-research/docs/research/experiment-ok.md +15 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/okf_profile/fixtures/okf-research/docs/research/extra-key.md +15 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/okf_profile/fixtures/okf-research/docs/research/extra-keys.md +16 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/okf_profile/fixtures/okf-research/docs/research/missing-created.md +11 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/okf_profile/fixtures/okf-research/docs/research/missing-description.md +11 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/okf_profile/fixtures/okf-research/docs/research/missing-last-update.md +11 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/okf_profile/fixtures/okf-research/docs/research/missing-sources.md +10 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/okf_profile/fixtures/okf-research/docs/research/missing-status.md +11 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/okf_profile/fixtures/okf-research/docs/research/missing-title.md +11 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/okf_profile/fixtures/okf-research/docs/research/optional-keys.md +16 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/okf_profile/fixtures/okf-research/docs/research/research-ok.md +14 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/okf_profile/fixtures/okf-research-neighbours/docs/architecture/created-date.md +21 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/okf_profile/fixtures/okf-research-neighbours/docs/architecture/research-shaped.md +19 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/okf_profile/fixtures/okf-research-neighbours/docs/operations/runbook.md +26 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/okf_profile/test_check.py +228 -2
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/register.py +5 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/semantics/test_check.py +11 -2
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/layout/directory_ratchet/__init__.py +5 -3
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/layout/directory_ratchet/check.py +160 -44
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/layout/directory_ratchet/fixtures/directory-ratchet-clean/grants.yaml +0 -2
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/layout/directory_ratchet/fixtures/directory-ratchet-empty-register/frontend/packages/desktop/src/a.ts +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/layout/directory_ratchet/fixtures/directory-ratchet-empty-register/frontend/packages/desktop/src/b.ts +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/layout/directory_ratchet/fixtures/directory-ratchet-empty-register/grants.yaml +3 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/layout/directory_ratchet/fixtures/directory-ratchet-excluded/grants.yaml +0 -2
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/layout/directory_ratchet/fixtures/directory-ratchet-missing-tree/frontend/packages/desktop/src/renderer/solo/item.ts +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/layout/directory_ratchet/fixtures/directory-ratchet-missing-tree/grants.yaml +5 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/layout/directory_ratchet/fixtures/directory-ratchet-no-ceilings/frontend/packages/desktop/src/a.ts +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/layout/directory_ratchet/fixtures/directory-ratchet-no-ceilings/frontend/packages/desktop/src/b.ts +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/layout/directory_ratchet/fixtures/directory-ratchet-no-ceilings/frontend/packages/desktop/src/c.ts +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/layout/directory_ratchet/fixtures/directory-ratchet-no-ceilings/grants.yaml +4 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/layout/directory_ratchet/fixtures/directory-ratchet-stale-entry/frontend/packages/desktop/src/renderer/solo/item.ts +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/layout/directory_ratchet/fixtures/directory-ratchet-stale-entry/grants.yaml +5 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/layout/directory_ratchet/fixtures/directory-ratchet-unbaselined/grants.yaml +0 -2
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/layout/directory_ratchet/fixtures/directory-ratchet-unusable-register/frontend/packages/desktop/src/renderer/solo/item.ts +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/layout/directory_ratchet/fixtures/directory-ratchet-unusable-register/grants.yaml +3 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/layout/directory_ratchet/register.py +127 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/layout/directory_ratchet/test_check.py +265 -29
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/layout/markdown_trees/check.py +75 -2
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/layout/markdown_trees/test_check.py +194 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/layout/open_work_cap/check.py +56 -10
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/layout/open_work_cap/test_check.py +256 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/layout/placement/check.py +40 -12
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/layout/placement/test_check.py +108 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/layout/plans_layout/test_check.py +1 -1
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/layout/references/check.py +2 -3
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/layout/root_closed_set/check.py +23 -6
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/layout/root_closed_set/test_check.py +76 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/layout/root_markdown_allowlist/check.py +58 -17
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/layout/root_markdown_allowlist/test_check.py +161 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/layout/scripts_size_depth/check.py +35 -3
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/layout/scripts_size_depth/test_check.py +108 -1
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/lfs/integrity/check.py +281 -61
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/lfs/integrity/fixtures/malformed/absolute-path.yaml +3 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/lfs/integrity/fixtures/malformed/backslash-path.yaml +3 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/lfs/integrity/fixtures/malformed/baseline-is-a-list.yaml +2 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/lfs/integrity/fixtures/malformed/boolean-size.yaml +3 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/lfs/integrity/fixtures/malformed/dot-segment.yaml +3 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/lfs/integrity/fixtures/malformed/duplicate-path.yaml +4 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/lfs/integrity/fixtures/malformed/empty-file.yaml +0 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/lfs/integrity/fixtures/malformed/empty-segment.yaml +3 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/lfs/integrity/fixtures/malformed/float-size.yaml +3 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/lfs/integrity/fixtures/malformed/negative-size.yaml +3 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/lfs/integrity/fixtures/malformed/no-over-limit-baseline.yaml +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/lfs/integrity/fixtures/malformed/no-schema-version.yaml +1 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/lfs/integrity/fixtures/malformed/non-string-path.yaml +3 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/lfs/integrity/fixtures/malformed/not-yaml.yaml +2 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/lfs/integrity/fixtures/malformed/null-size.yaml +3 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/lfs/integrity/fixtures/malformed/parent-segment.yaml +3 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/lfs/integrity/fixtures/malformed/string-size.yaml +3 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/lfs/integrity/fixtures/malformed/top-level-is-a-list.yaml +2 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/lfs/integrity/fixtures/malformed/trailing-slash.yaml +3 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/lfs/integrity/fixtures/malformed/unknown-key.yaml +3 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/lfs/integrity/fixtures/malformed/wrong-schema-version.yaml +2 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/lfs/integrity/fixtures/malformed/zero-size.yaml +3 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/lfs/integrity/fixtures/valid.yaml +4 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/lfs/integrity/test_check.py +758 -45
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/repository/ignored_paths/check.py +4 -3
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/repository/ignored_paths/test_check.py +2 -2
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/repository/lockfile_integrity/cargo_lock.py +490 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/repository/lockfile_integrity/check.py +368 -55
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/repository/lockfile_integrity/test_check.py +4 -2
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/repository/lockfile_integrity/test_declared_paths.py +523 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/repository/lockfile_integrity/test_stale_lock.py +1179 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/cli.py +122 -3
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/core/check.py +33 -1
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/core/constants.py +0 -11
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/core/context.py +16 -1
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/policy/config.py +1 -2
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/policy/docs_shape.py +12 -1
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/policy/gate-registry.alt.yaml +133 -147
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/policy/gate-registry.yaml +133 -147
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/policy/registry.py +1 -1
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/policy/root_shape.py +52 -10
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/runner.py +23 -4
- package/packages/repo-controls/package.json +2 -9
- package/packages/repo-controls/scripts/hooks/post-merge +13 -0
- package/packages/repo-controls/scripts/hooks/pre-push +3 -3
- package/packages/repo-controls/src/azdo-push.ts +64 -36
- package/packages/repo-controls/src/azure-devops-governance.ts +7 -9
- package/packages/repo-controls/src/azure-devops-remote.ts +1 -1
- package/packages/repo-controls/src/cli.ts +29 -8
- package/packages/repo-controls/src/compliance-config.ts +410 -2
- package/packages/repo-controls/src/config.ts +133 -60
- package/packages/repo-controls/src/constants.ts +13 -27
- package/packages/repo-controls/src/coverage-ratchet.ts +4 -4
- package/packages/repo-controls/src/doctor.ts +46 -19
- package/packages/repo-controls/src/gitignore-block.ts +5 -29
- package/packages/repo-controls/src/hook-log.ts +1 -2
- package/packages/repo-controls/src/hook.ts +201 -45
- package/packages/repo-controls/src/install.ts +14 -8
- package/packages/repo-controls/src/integrity.ts +3 -3
- package/packages/repo-controls/src/lfs.ts +111 -0
- package/packages/repo-controls/src/promote.ts +8 -8
- package/packages/repo-controls/src/runtime.ts +9 -1
- package/packages/repo-controls/src/workflows-drift.ts +4 -5
- package/packages/repo-controls/src/worktree-guard.ts +3 -3
|
@@ -66,7 +66,9 @@ def the_corpora_declare_their_shape(
|
|
|
66
66
|
# empty packaged map. Seeding it here would make them vacuous.
|
|
67
67
|
return
|
|
68
68
|
|
|
69
|
-
seeded
|
|
69
|
+
def seeded() -> config.TreeMap:
|
|
70
|
+
return config.TreeMap(version=1, trees=fixture_trees())
|
|
71
|
+
|
|
70
72
|
monkeypatch.setattr(config, "load", seeded)
|
|
71
73
|
monkeypatch.setattr(registry, "load_tree_map", seeded)
|
|
72
74
|
|
|
@@ -13,14 +13,11 @@ scan would blur the difference.
|
|
|
13
13
|
from __future__ import annotations
|
|
14
14
|
|
|
15
15
|
from ..core.check import Check
|
|
16
|
-
from .coverage.backend_crate import BackendCrate
|
|
17
|
-
from .coverage.backend_ratchet import BackendRatchet
|
|
18
|
-
from .coverage.baseline import CoverageBaseline
|
|
19
|
-
from .coverage.config_committed import CoverageConfigCommitted
|
|
20
|
-
from .coverage.full import CoverageFull
|
|
21
16
|
from .docs.adr_lifecycle import AdrLifecycle
|
|
22
17
|
from .docs.closed_set import DocsClosedSet
|
|
18
|
+
from .docs.directory_size import DocsDirectorySize
|
|
23
19
|
from .docs.english_only import DocsEnglishOnly
|
|
20
|
+
from .docs.filename import DocsFilename
|
|
24
21
|
from .docs.index_updated import IndexUpdated
|
|
25
22
|
from .docs.indexes import Indexes
|
|
26
23
|
from .docs.ledger import DocsLedger
|
|
@@ -34,15 +31,12 @@ from .layout.markdown_trees import MarkdownTrees
|
|
|
34
31
|
from .layout.open_work_cap import OpenWorkCap
|
|
35
32
|
from .layout.placement import Placement
|
|
36
33
|
from .layout.plans_layout import PlansLayout
|
|
37
|
-
from .layout.profile_data import ProfileData
|
|
38
34
|
from .layout.references import References
|
|
39
35
|
from .layout.root_closed_set import RootClosedSet
|
|
40
36
|
from .layout.root_markdown_allowlist import RootMarkdownAllowlist
|
|
41
37
|
from .layout.scripts_size_depth import ScriptsSizeDepth
|
|
42
38
|
from .lfs.integrity import Integrity
|
|
43
39
|
from .pipeline.phase_disjoint import PhaseDisjoint
|
|
44
|
-
from .release.changeset_plan import ChangesetPlan
|
|
45
|
-
from .release.version_release import VersionRelease
|
|
46
40
|
from .repository.banned_commands import BannedCommands
|
|
47
41
|
from .repository.ignored_paths import IgnoredPaths
|
|
48
42
|
from .repository.license_declared import LicenseDeclared
|
|
@@ -51,17 +45,13 @@ from .repository.lockfile_integrity import LockfileIntegrity
|
|
|
51
45
|
CHECKS: tuple[type[Check], ...] = (
|
|
52
46
|
AdrLifecycle,
|
|
53
47
|
AgentsLayout,
|
|
54
|
-
BackendCrate,
|
|
55
|
-
BackendRatchet,
|
|
56
48
|
BannedCommands,
|
|
57
|
-
ChangesetPlan,
|
|
58
49
|
CiPaths,
|
|
59
|
-
CoverageBaseline,
|
|
60
|
-
CoverageConfigCommitted,
|
|
61
|
-
CoverageFull,
|
|
62
50
|
DirectoryRatchet,
|
|
63
51
|
DocsClosedSet,
|
|
52
|
+
DocsDirectorySize,
|
|
64
53
|
DocsEnglishOnly,
|
|
54
|
+
DocsFilename,
|
|
65
55
|
DocsLedger,
|
|
66
56
|
DocsSemantics,
|
|
67
57
|
IgnoredPaths,
|
|
@@ -77,12 +67,10 @@ CHECKS: tuple[type[Check], ...] = (
|
|
|
77
67
|
PhaseDisjoint,
|
|
78
68
|
Placement,
|
|
79
69
|
PlansLayout,
|
|
80
|
-
ProfileData,
|
|
81
70
|
References,
|
|
82
71
|
RootClosedSet,
|
|
83
72
|
RootMarkdownAllowlist,
|
|
84
73
|
ScriptsSizeDepth,
|
|
85
|
-
VersionRelease,
|
|
86
74
|
)
|
|
87
75
|
|
|
88
76
|
_BY_ID: dict[str, type[Check]] = {check.id: check for check in CHECKS}
|
|
@@ -111,8 +111,15 @@ def test_a_redeclared_docs_tree_is_still_graded(tmp_path) -> None:
|
|
|
111
111
|
def test_an_absent_decisions_directory_is_a_finding_not_a_pass() -> None:
|
|
112
112
|
"""An absent directory yields an empty set, and an empty set is a clean pass
|
|
113
113
|
everywhere else in this estate. Without this structural probe the tree
|
|
114
|
-
losing docs/decisions/ entirely would pass in silence.
|
|
115
|
-
|
|
114
|
+
losing docs/decisions/ entirely would pass in silence.
|
|
115
|
+
|
|
116
|
+
The root is `repository/lockfile-integrity`'s `clean` corpus, which holds no
|
|
117
|
+
`docs/` at all (a backend/frontend lockfile pair). It was the retired
|
|
118
|
+
`coverage/baseline` `passing` corpus until the `coverage` domain was deleted
|
|
119
|
+
2026-10-01."""
|
|
120
|
+
verdict = verdict_for(
|
|
121
|
+
"DOC-001", corpus("repository", "lockfile-integrity") / "clean", given=()
|
|
122
|
+
)
|
|
116
123
|
assert verdict.outcome is Outcome.FINDINGS, verdict.render()
|
|
117
124
|
assert "decisions directory is missing" in verdict.render()
|
|
118
125
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# notes
|
|
@@ -92,6 +92,17 @@ def test_declared_dirs_and_files_stay_silent() -> None:
|
|
|
92
92
|
assert f"docs/{entry}: undeclared" not in text
|
|
93
93
|
|
|
94
94
|
|
|
95
|
+
def test_the_task_ledger_is_declared() -> None:
|
|
96
|
+
"""`docs/notes.md` is the repository's task ledger (global agent rule: one
|
|
97
|
+
line at the start and one at the finish of every task), so it is a
|
|
98
|
+
declared top-level file. The stray file next to it is still reported, which
|
|
99
|
+
proves the ledger is allowed by name and not because the gate went quiet."""
|
|
100
|
+
assert "docs/notes.md" in corpus_files(CORPUS)
|
|
101
|
+
messages = tuple(f.render() for f in findings_for(corpus_files(CORPUS)))
|
|
102
|
+
assert not any("docs/notes.md" in m for m in messages), messages
|
|
103
|
+
assert any("docs/stray-root-file.md" in m for m in messages), messages
|
|
104
|
+
|
|
105
|
+
|
|
95
106
|
def test_an_empty_set_grades_nothing() -> None:
|
|
96
107
|
"""Every undeclared entry is still on disk. A check that grades only what
|
|
97
108
|
it is handed must report none of them against an empty given set."""
|
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
"""DOC-012 — the page-count cap for every directory directly under `docs/`.
|
|
2
|
+
|
|
3
|
+
The rules this gate grades, over ONE measurement — a directory's DIRECT `.md`
|
|
4
|
+
PAGE COUNT — minting the next ids in the DIR family LAY-004
|
|
5
|
+
(`layout.directory-ratchet`) owns over this SAME register file:
|
|
6
|
+
|
|
7
|
+
DIR-004 over the cap with no exemption entry.
|
|
8
|
+
DIR-005 grew past its own recorded exemption.
|
|
9
|
+
DIR-006 an exemption entry that is no longer required. **This grades
|
|
10
|
+
ABSENCE** — the same shape as LAY-004's DIR-003: an entry whose
|
|
11
|
+
directory dropped back under the cap, or vanished entirely.
|
|
12
|
+
|
|
13
|
+
THE CAP IS CONFIG, NOT REGISTER CONTENT — owner ruling 2026-10-02 (v2,
|
|
14
|
+
reworked from v1 the same day; Tarun: "Move ALL configurations to
|
|
15
|
+
adl-config.toml"). The cap in force is the repository's declared
|
|
16
|
+
`[controls.compliance.limits].docs_pages_per_directory`, arriving as the
|
|
17
|
+
`docs-pages-per-directory` declaration; absent, the engine default
|
|
18
|
+
`MAX_PAGES` (15) stands. `page_cap` resolves it exactly the way LAY-014's
|
|
19
|
+
`direct_file_limit` resolves `scripts-direct-files`: the declared value wins,
|
|
20
|
+
a value that is not a base-10 positive integer is could-not-run naming the
|
|
21
|
+
config key, never a quiet fall back to the default, and there is no down-only
|
|
22
|
+
ratchet — a repository may declare any cap it chooses.
|
|
23
|
+
|
|
24
|
+
THE REGISTER IS EXEMPTIONS ONLY — the same consumer-owned file LAY-004 reads,
|
|
25
|
+
`<compliance>/ratchets/LAY-004-over-limit-directory.yaml`, whose `docs_pages`
|
|
26
|
+
section is a `baseline` of directory -> recorded page count and NOTHING else:
|
|
27
|
+
"if its there... then the violations will be exempted, if its not there..
|
|
28
|
+
means no violations allowed." An absent register, or a register with no
|
|
29
|
+
`docs_pages` section, records NO exemptions, so the cap is enforced BARE —
|
|
30
|
+
zero forgiveness, which is STRICTER, the widening input's normal contract.
|
|
31
|
+
(V1 read the same absence as a clean pass under LAY-004's "ratchets sit ON
|
|
32
|
+
TOP" ruling; that exception belongs to LAY-004, whose configuration IS the
|
|
33
|
+
register. DOC-012's configuration is the declared limit, so its register is
|
|
34
|
+
pure ratchet: spent BEFORE counting, and only ever REMOVES findings.) At zero
|
|
35
|
+
exemptions the file has no meaning and is deleted — "We cleaned up the
|
|
36
|
+
house!" An all-empty register (neither `max_children` nor `docs_pages`) is
|
|
37
|
+
still a LOAD FAILURE, held by the cross-field validator on the shared model —
|
|
38
|
+
emptied mid-cleanup is not the same as deleted. And a register that EXISTS
|
|
39
|
+
but is unusable (invalid YAML, schema violation) is could-not-run either
|
|
40
|
+
way: it may be mid-edit, and reading it as "no exemptions" would silently
|
|
41
|
+
drop every baseline it names.
|
|
42
|
+
|
|
43
|
+
`<docs>/decisions/` IS EXEMPT BY RULE, at any depth below it. Owner ruling
|
|
44
|
+
2026-10-02, unchanged by the v2 rework: the flat ADR log is flat-by-design
|
|
45
|
+
per the docs convention — the count of ADRs a repository carries is not a
|
|
46
|
+
docs-hygiene question, so the log is neither counted nor graded. This mirrors
|
|
47
|
+
DOC-011's rule-level GUIDE_NAMES exemption: a property of the RULE, not of
|
|
48
|
+
one scope, so it is applied in code wherever the path sits, not left to the
|
|
49
|
+
row's scope to exclude.
|
|
50
|
+
|
|
51
|
+
Pages means `.md` FILES ONLY, counted per DIRECT parent from the GIVEN SET —
|
|
52
|
+
DOC-011's reasoning: docs trees legitimately hold `.png`/`.html`/`.csv`
|
|
53
|
+
assets, and the rule is about page count, not file count; a directory holding
|
|
54
|
+
twelve diagrams and two pages is a two-page directory. LAY-004's measurement
|
|
55
|
+
discipline applies verbatim: a dot-prefixed component anywhere in the path
|
|
56
|
+
excludes the file (matching the walker every other tool in this repository
|
|
57
|
+
uses), and a file failing the `is_file` liveness check is skipped — a set may
|
|
58
|
+
name a file this commit just deleted. The parent of a direct child at the
|
|
59
|
+
tree root is `docs_root` itself; nothing here walks.
|
|
60
|
+
|
|
61
|
+
`structural_grant` is LAY-004's arithmetic, for the same reason: the row's
|
|
62
|
+
`grants:` names a REGISTER this check grades, not a catalogue of signed
|
|
63
|
+
exceptions, so the allowance is 0 and the register is spent BEFORE counting,
|
|
64
|
+
never subtracted after. Severity M, a hard blocker when armed.
|
|
65
|
+
|
|
66
|
+
There is no `structural` half, the same call DOC-011 makes: every rule here
|
|
67
|
+
is answered from the GIVEN SET, and a repository whose docs/ tree holds no
|
|
68
|
+
`.md` page is permitted, not failing.
|
|
69
|
+
"""
|
|
70
|
+
|
|
71
|
+
from __future__ import annotations
|
|
72
|
+
|
|
73
|
+
import re
|
|
74
|
+
from collections.abc import Iterable
|
|
75
|
+
from typing import ClassVar
|
|
76
|
+
|
|
77
|
+
from ....core.check import Check
|
|
78
|
+
from ....core.context import Context, FileSet
|
|
79
|
+
from ....core.errors import CouldNotRun, SchemaInvalid
|
|
80
|
+
from ....core.finding import Report
|
|
81
|
+
from ...layout.directory_ratchet.register import Ratchet
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
class DocsDirectorySize(Check):
|
|
85
|
+
id: ClassVar[str] = "DOC-012"
|
|
86
|
+
structural_grant: ClassVar[bool] = True
|
|
87
|
+
|
|
88
|
+
# The engine default. A repository states its own with the
|
|
89
|
+
# `docs-pages-per-directory` declaration (`[controls.compliance.limits].
|
|
90
|
+
# docs_pages_per_directory` in its adl-config.toml); see `page_cap`.
|
|
91
|
+
MAX_PAGES: ClassVar[int] = 15
|
|
92
|
+
PAGES_DECLARATION: ClassVar[str] = "docs-pages-per-directory"
|
|
93
|
+
|
|
94
|
+
# CONSUMER-OWNED, not package data — the same `<compliance>/ratchets/`
|
|
95
|
+
# register LAY-004 grades, sharing only the FILE. What LAY-004 reads as
|
|
96
|
+
# configuration (tree ceilings), DOC-012 reads as nothing; what DOC-012
|
|
97
|
+
# reads (docs_pages.baseline) is exemptions only — the v2 ruling that
|
|
98
|
+
# moved the cap into the declared limit is recorded in the module
|
|
99
|
+
# docstring.
|
|
100
|
+
inputs: ClassVar[dict[str, str]] = {
|
|
101
|
+
"register": "<compliance>/ratchets/LAY-004-over-limit-directory.yaml",
|
|
102
|
+
"docs_root": "<docs>",
|
|
103
|
+
}
|
|
104
|
+
"""`docs_root` for the same reason DOC-011 declares it (K-42: a hardcoded
|
|
105
|
+
`"docs"` literal silently drops every page when a repository names its
|
|
106
|
+
documentation tree something else)."""
|
|
107
|
+
|
|
108
|
+
# The runner's OPTIONAL-INPUT channel, in its NORMAL direction — v2
|
|
109
|
+
# restored the contract the channel documents: `core.check` says a
|
|
110
|
+
# widening input's absence can only grade STRICTER, and here it does: no
|
|
111
|
+
# register means no recorded exemptions, so the cap is enforced bare.
|
|
112
|
+
# (V1 carried LAY-004's "ratchets sit ON TOP" exception on this input;
|
|
113
|
+
# that exception belongs to LAY-004, whose configuration IS the register.
|
|
114
|
+
# DOC-012's configuration is the declared limit, so the register only ever
|
|
115
|
+
# removes findings, and removing the file removes the removals.)
|
|
116
|
+
widening_inputs: ClassVar[frozenset[str]] = frozenset({"register"})
|
|
117
|
+
|
|
118
|
+
OVER: ClassVar[str] = "DIR-004"
|
|
119
|
+
GREW: ClassVar[str] = "DIR-005"
|
|
120
|
+
STALE: ClassVar[str] = "DIR-006"
|
|
121
|
+
|
|
122
|
+
DECISIONS: ClassVar[str] = "decisions"
|
|
123
|
+
"""The flat ADR log's directory name, exempt by rule at any depth below
|
|
124
|
+
`<docs>` — the ruling is recorded in the module docstring; the shape is
|
|
125
|
+
DOC-011's GUIDE_NAMES exemption: the rule's property, not one scope's."""
|
|
126
|
+
|
|
127
|
+
def page_cap(self, ctx: Context) -> int:
|
|
128
|
+
"""The page cap in force: the declared one, else `MAX_PAGES`.
|
|
129
|
+
|
|
130
|
+
Mirrored on LAY-014's `direct_file_limit`. ASCII digits only, so
|
|
131
|
+
`+20`, `1_0`, ` 20` and full-width digits are refused, which `int()`
|
|
132
|
+
alone would accept. A declaration that cannot be read as a positive
|
|
133
|
+
integer is could-not-run: falling back to the default would grade
|
|
134
|
+
the repository against a cap it explicitly replaced.
|
|
135
|
+
"""
|
|
136
|
+
declared = ctx.declarations.get(self.PAGES_DECLARATION)
|
|
137
|
+
if declared is None:
|
|
138
|
+
return self.MAX_PAGES
|
|
139
|
+
if re.fullmatch(r"[0-9]+", declared) is None or int(declared) < 1:
|
|
140
|
+
raise CouldNotRun(
|
|
141
|
+
f"declaration {self.PAGES_DECLARATION}={declared!r} is not a "
|
|
142
|
+
"base-10 positive integer; set [controls.compliance.limits]."
|
|
143
|
+
"docs_pages_per_directory to a whole number of at least 1"
|
|
144
|
+
)
|
|
145
|
+
return int(declared)
|
|
146
|
+
|
|
147
|
+
def graded(self, ctx: Context, files: FileSet) -> Iterable[Report]:
|
|
148
|
+
ratchet = self._register(ctx)
|
|
149
|
+
baseline: dict[str, int] = {}
|
|
150
|
+
if ratchet is not None and ratchet.docs_pages is not None:
|
|
151
|
+
baseline = ratchet.docs_pages.baseline
|
|
152
|
+
|
|
153
|
+
docs_root = ctx.relative(ctx.inputs["docs_root"])
|
|
154
|
+
measured = self._measure(ctx, files, docs_root)
|
|
155
|
+
yield from self._graded_cap(measured, baseline, self.page_cap(ctx))
|
|
156
|
+
|
|
157
|
+
# ------------------------------------------------------------ the register
|
|
158
|
+
|
|
159
|
+
def _register(self, ctx: Context) -> Ratchet | None:
|
|
160
|
+
"""The repository's own exemption register — LAY-004's reading
|
|
161
|
+
logic, shared file, v2 semantics.
|
|
162
|
+
|
|
163
|
+
Absent is None: no file, or the input dropped because the `compliance`
|
|
164
|
+
tree is undeclared or declared absent. V2 (owner ruling 2026-10-02):
|
|
165
|
+
absence removes the register, not the cap — `graded` reads None as an
|
|
166
|
+
EMPTY exemption baseline and enforces the declared limit bare. What
|
|
167
|
+
never changes, in either ruling shape: a register that EXISTS but
|
|
168
|
+
cannot be used (invalid YAML, schema violation) is could-not-run — it
|
|
169
|
+
may be mid-edit, and grading it as "no exemptions" would silently drop
|
|
170
|
+
every baseline it names, including the ones LAY-004 reads from the
|
|
171
|
+
same file. `exists()` follows symlinks, so a broken symlink at the
|
|
172
|
+
register path reads as absent — no exemptions.
|
|
173
|
+
"""
|
|
174
|
+
target = ctx.inputs.get("register")
|
|
175
|
+
if target is None or not target.exists():
|
|
176
|
+
return None
|
|
177
|
+
if not target.is_file():
|
|
178
|
+
shown = ctx.relative(target)
|
|
179
|
+
raise CouldNotRun(f"directory-ratchet register {shown} exists but is not a file")
|
|
180
|
+
try:
|
|
181
|
+
return self.parse_yaml(ctx, target, Ratchet)
|
|
182
|
+
except SchemaInvalid as exc:
|
|
183
|
+
raise CouldNotRun(f"ratchet register is unusable: {exc.detail}") from exc
|
|
184
|
+
|
|
185
|
+
# ----------------------------------------------------------- the measure
|
|
186
|
+
|
|
187
|
+
def _measure(self, ctx: Context, files: FileSet, docs_root: str) -> dict[str, int]:
|
|
188
|
+
"""Direct `.md` page counts per directory, from the given set alone.
|
|
189
|
+
|
|
190
|
+
LAY-004's `_measure` discipline with DOC-011's page filter: the path
|
|
191
|
+
must sit under the resolved `docs_root` (a lookalike `docs.md` beside
|
|
192
|
+
the tree is outside it), the basename must be `.md` (assets don't
|
|
193
|
+
count), no dot-prefixed component may appear anywhere in the path
|
|
194
|
+
(matching the walker every other tool uses), and `is_file` is a
|
|
195
|
+
liveness check on ONE named path — a set may name a file that has just
|
|
196
|
+
been deleted — not a search for paths. The `decisions/` exemption is
|
|
197
|
+
applied to the COUNT, not the walk: a directory that is the ADR log or
|
|
198
|
+
sits under it is removed from the counts, at any depth.
|
|
199
|
+
"""
|
|
200
|
+
counts: dict[str, int] = {}
|
|
201
|
+
prefix = f"{docs_root}/"
|
|
202
|
+
log = f"{prefix}{self.DECISIONS}"
|
|
203
|
+
|
|
204
|
+
for relative in sorted(files):
|
|
205
|
+
if not relative.startswith(prefix):
|
|
206
|
+
continue
|
|
207
|
+
inside = relative[len(prefix):]
|
|
208
|
+
if not inside.endswith(".md"):
|
|
209
|
+
continue
|
|
210
|
+
if not ctx.path(relative).is_file():
|
|
211
|
+
continue
|
|
212
|
+
parts = inside.split("/")
|
|
213
|
+
# A dot-prefixed component anywhere excludes the file, matching the
|
|
214
|
+
# walker every other tool in this repository uses.
|
|
215
|
+
if any(part.startswith(".") for part in parts):
|
|
216
|
+
continue
|
|
217
|
+
parent = "/".join([docs_root, *parts[:-1]]) if len(parts) > 1 else docs_root
|
|
218
|
+
counts[parent] = counts.get(parent, 0) + 1
|
|
219
|
+
|
|
220
|
+
return {
|
|
221
|
+
path: count
|
|
222
|
+
for path, count in counts.items()
|
|
223
|
+
if path != log and not path.startswith(f"{log}/")
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
# --------------------------------------------------------------- the rules
|
|
227
|
+
|
|
228
|
+
def _graded_cap(
|
|
229
|
+
self, measured: dict[str, int], baseline: dict[str, int], cap: int
|
|
230
|
+
) -> Iterable[Report]:
|
|
231
|
+
"""DIR-004/005/006 — LAY-004's `_graded_over` loop, pages for children.
|
|
232
|
+
|
|
233
|
+
The loop structure and message phrasing mirror LAY-004 exactly,
|
|
234
|
+
"children" read as "pages" and `over_children_baseline` as the
|
|
235
|
+
`docs_pages` section's `baseline` — the two gates grade one register
|
|
236
|
+
file and must read as one family. `baseline` is the exemption set:
|
|
237
|
+
empty when the register is absent or records no `docs_pages` section,
|
|
238
|
+
so the cap is enforced bare.
|
|
239
|
+
"""
|
|
240
|
+
for path, count in sorted(measured.items()):
|
|
241
|
+
if count > cap and path not in baseline:
|
|
242
|
+
yield self.report(
|
|
243
|
+
path,
|
|
244
|
+
f"{count} pages (max {cap}), no ratchet entry",
|
|
245
|
+
f"add a docs_pages baseline entry for {path} to the ratchet "
|
|
246
|
+
"register, or split the directory",
|
|
247
|
+
rule=self.OVER,
|
|
248
|
+
)
|
|
249
|
+
recorded = baseline.get(path)
|
|
250
|
+
if isinstance(recorded, int) and count > recorded:
|
|
251
|
+
yield self.report(
|
|
252
|
+
path, f"{count} pages (baseline {recorded})",
|
|
253
|
+
f"reduce {path} back to at most {recorded} pages, or raise its "
|
|
254
|
+
"docs_pages baseline entry",
|
|
255
|
+
rule=self.GREW,
|
|
256
|
+
)
|
|
257
|
+
|
|
258
|
+
for path in sorted(baseline):
|
|
259
|
+
count = measured.get(path)
|
|
260
|
+
if count is None or count <= cap:
|
|
261
|
+
yield self.report(
|
|
262
|
+
path, "ratchet entry is no longer required",
|
|
263
|
+
f"delete {path}'s stale docs_pages baseline entry from the "
|
|
264
|
+
"ratchet register",
|
|
265
|
+
rule=self.STALE,
|
|
266
|
+
)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
draft
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
draft
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
hidden
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
a
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
b
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
csv
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
png
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
png
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
nested
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
lookalike
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
p
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
p
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
p
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
p
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
p
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
build
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
overview
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
install
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
start
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
adr
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
adr
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
adr
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
adr
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
adr
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
a
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
b
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
c
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
page 01
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
page 02
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
page 03
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
page 04
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
page 05
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
page 06
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
page 07
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
page 08
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
page 09
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
page 10
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
page 11
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
page 12
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
page 13
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
page 14
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
page 15
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
page 16
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
a
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
b
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
c
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
a
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
b
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
c
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
a
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
b
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
c
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
d
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
e
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
a
|