diff --git a/.generated-work-records.json b/.generated-work-records.json new file mode 100644 index 0000000..37c5f42 --- /dev/null +++ b/.generated-work-records.json @@ -0,0 +1 @@ +{"version":1,"repo_slug":"repo-manager"} diff --git a/.generated-work-records.mk b/.generated-work-records.mk new file mode 100644 index 0000000..b00381a --- /dev/null +++ b/.generated-work-records.mk @@ -0,0 +1,8 @@ +# Explicit opt-in recipe; no environment files or external make includes. +CUSTODIAN_SOURCE ?= /home/worsch/the-custodian +GENERATED_REPO_SLUG ?= repo-manager +.PHONY: generated-work-records generated-work-records-check +generated-work-records: + python3 "$(CUSTODIAN_SOURCE)/scripts/generate_staged_work_records.py" --repo . --repo-slug "$(GENERATED_REPO_SLUG)" +generated-work-records-check: + python3 "$(CUSTODIAN_SOURCE)/scripts/generate_staged_work_records.py" --repo . --repo-slug "$(GENERATED_REPO_SLUG)" --check diff --git a/.githooks/pre-commit b/.githooks/pre-commit index ea0d516..47bb3ed 100755 --- a/.githooks/pre-commit +++ b/.githooks/pre-commit @@ -2,6 +2,7 @@ # CUST-WP-0080 / RMGR-WP-0021: preserve generated-only guard and exact local scan scope. set -eu python3 /home/worsch/the-custodian/scripts/check_generated_only_commit.py --staged +python3 /home/worsch/the-custodian/scripts/run_generated_work_records_hook.py case "$(git rev-parse --show-toplevel)" in /home/worsch/access-engine|/home/worsch/approval-engine|/home/worsch/audit-core|/home/worsch/gate-house|/home/worsch/glas-harness|/home/worsch/key-cape|/home/worsch/kings-guard|/home/worsch/maturity-engine|/home/worsch/net-kingdom|/home/worsch/ops-mason|/home/worsch/ops-warden|/home/worsch/policy-nexus|/home/worsch/railiance-forge|/home/worsch/railiance-platform|/home/worsch/repo-manager|/home/worsch/role-engine|/home/worsch/secrets-engine|/home/worsch/security-canon|/home/worsch/tenant-engine|/home/worsch/the-custodian|/home/worsch/user-engine|/home/worsch/zone-engine) exec python3 /home/worsch/repo-manager/src/repo_manager/secret_scan.py --path . --binary /home/worsch/.local/lib/repo-manager/gitleaks/8.30.1/gitleaks diff --git a/Makefile b/Makefile index a425d1f..d554a35 100644 --- a/Makefile +++ b/Makefile @@ -40,3 +40,10 @@ container-build: --build-arg VERSION=0.1.0 \ --build-arg VCS_REF=$$(git rev-parse HEAD) \ -t $(IMAGE_REPOSITORY):$(IMAGE_TAG) . + +# CUST-WP-0079-T05: staged-source generation; hook uses the isolated recipe. +.PHONY: generated-work-records generated-work-records-check +generated-work-records: + $(MAKE) --no-print-directory -f .generated-work-records.mk generated-work-records +generated-work-records-check: + $(MAKE) --no-print-directory -f .generated-work-records.mk generated-work-records-check diff --git a/SCOPE.md b/SCOPE.md index e3a31c1..e66b4b3 100644 --- a/SCOPE.md +++ b/SCOPE.md @@ -77,3 +77,16 @@ resulting repository revision and normalized event are recorded. Per-repository Make targets and build pipelines own their generated artifacts. Repository reconciliation and hook installation do not transfer that ownership or establish a general generated-file pipeline. + + +## Staged work-record generator adoption + +The tracked `.generated-work-records.json` opts this repository into the shared +pre-commit generation lane. `make generated-work-records` uses the isolated +`.generated-work-records.mk` recipe and the Custodian adapter to render from +staged Markdown with the existing State Hub renderer. `make +generated-work-records-check` verifies the staged result without writes. +Unstaged source edits are preserved; unstaged generated-file edits and unresolved +conflicts stop the commit. The existing generated-only guard and secret scan +remain in place. This adoption covers WORK-RECORDS.md only; other owner indexes +retain their own generators. It makes no schedule or public-release change. diff --git a/WORK-RECORDS.md b/WORK-RECORDS.md index e8cd41d..9c61dd4 100644 --- a/WORK-RECORDS.md +++ b/WORK-RECORDS.md @@ -32,6 +32,7 @@ | workplan | RMGR-WP-0018 | finished | — | workplans/RMGR-WP-0018-publisher-registry-image-refresh.md | | workplan | RMGR-WP-0019 | finished | — | workplans/RMGR-WP-0019-historical-source-admission.md | | workplan | RMGR-WP-0020 | blocked | — | workplans/RMGR-WP-0020-bounded-freshness-runner.md | +| workplan | RMGR-WP-0021 | active | — | workplans/RMGR-WP-0021-secret-detection-controls.md | | task | RMGR-WP-ADHOC-2026-09-06-T01 | done | — | workplans/ADHOC-2026-09-06.md | | task | RMGR-WP-ADHOC-2026-09-09-T01 | done | — | workplans/ADHOC-2026-09-09.md | | task | RMGR-WP-ADHOC-2026-09-11-T01 | done | — | workplans/ADHOC-2026-09-11.md | @@ -134,11 +135,19 @@ | task | RMGR-WP-0019-T01 | done | — | workplans/RMGR-WP-0019-historical-source-admission.md | | task | RMGR-WP-0019-T02 | done | — | workplans/RMGR-WP-0019-historical-source-admission.md | | task | RMGR-WP-0019-T03 | done | — | workplans/RMGR-WP-0019-historical-source-admission.md | +| task | RMGR-WP-0019-T04 | done | — | workplans/RMGR-WP-0019-historical-source-admission.md | +| task | RMGR-WP-0019-T05 | done | — | workplans/RMGR-WP-0019-historical-source-admission.md | +| task | RMGR-WP-0019-T06 | done | — | workplans/RMGR-WP-0019-historical-source-admission.md | | task | RMGR-WP-0020-T01 | done | — | workplans/RMGR-WP-0020-bounded-freshness-runner.md | | task | RMGR-WP-0020-T02 | done | — | workplans/RMGR-WP-0020-bounded-freshness-runner.md | | task | RMGR-WP-0020-T03 | done | — | workplans/RMGR-WP-0020-bounded-freshness-runner.md | | task | RMGR-WP-0020-T04 | wait | — | workplans/RMGR-WP-0020-bounded-freshness-runner.md | | task | RMGR-WP-0020-T05 | wait | — | workplans/RMGR-WP-0020-bounded-freshness-runner.md | +| task | RMGR-WP-0021-T01 | done | — | workplans/RMGR-WP-0021-secret-detection-controls.md | +| task | RMGR-WP-0021-T02 | done | — | workplans/RMGR-WP-0021-secret-detection-controls.md | +| task | RMGR-WP-0021-T03 | progress | — | workplans/RMGR-WP-0021-secret-detection-controls.md | +| task | RMGR-WP-0021-T04 | todo | — | workplans/RMGR-WP-0021-secret-detection-controls.md | +| task | RMGR-WP-0021-T05 | done | — | workplans/RMGR-WP-0021-secret-detection-controls.md | | intake | RMGR-IN-0001 | closed | — | intakes/intakes.md | | intake | RMGR-IN-0002 | closed | — | intakes/intakes.md | | intake | RMGR-IN-0004 | closed | — | intakes/intakes.md |