au-federal recipe + 8 community commands (Australian Federal Government / DISP-supplier compliance overlay)#441
au-federal recipe + 8 community commands (Australian Federal Government / DISP-supplier compliance overlay)#441royster70 wants to merge 21 commits into
Conversation
|
Strengthened the testing/evaluation surface in New — New — 8 real bug fixes caught by activating CI: 6 commands had Out of scope, but flagged: the new CI workflow will surface 38 pre-existing failures on Test summary at Mechanical-grep counts on this PR's source files (also encoded as test assertions): The Layer A claims (9 evaluation runs / 25/25 scorecard / ~4,093 artefact lines / 220 AU references in artefacts) trace back to the MBB Group AU SMB engagement which is NDA-locked and not in the PR — that part still relies on reviewer trust in the scorecard prose. Happy to publish a redacted/synthetic version of the EVALUATION.md methodology as |
Code ReviewVerdict: Strong contribution, but 4 blockers prevent merge as-is. Quality of the AU framework content (terminology, regulatory anchors, DISP consolidation, NDB clock, FOCI declaration) is genuinely high. You've also been responsive — handoff bugs caught by activating CI are already fixed. The blockers below are integration issues, not domain quality. BLOCKERS (must fix before merge)1. Templates lack Fix: insert 2. Commands don't override the UK classification line — but body content uses AU classifications. Compare: Fix options: (a) add the same per-command override instruction to all 8 AU commands (cheap), or (b) ship 3. Compare: 4. Converter outputs are STALE — and the side-effect transparency note is inverted. Re-running Verification: on Fix: rebase on IMPORTANT (should fix)
MINOR
POSITIVE (worth calling out)
Recommended pre-merge sequence
After (1)–(4), mergeable. The AU domain content itself is high-quality and the test/CI scaffolding is a net win for the repo. |
Encodes the review checklist used on PR #441 (au-federal). Loads project-wide so reviewers and maintainers get the same checks on any overlay PR (xx-* commands, recipes, templates). Captures the four recurring blocker classes — missing Document Control heading, missing UK→regime classification override, generate-document-id.sh mis-invocation, and stale converter outputs — plus integration checks against doc-types.mjs / pages.md / RENDERING.md / CHANGELOG counts. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
… friction points Adds B5 — Regime not registered in REGIMES / REGIME_LABELS — surfaced by the test review of PR #432 (ca-federal-fitaa) which shipped 12 doc-types declaring regime: 'CA' while 'CA' was missing from the exported REGIMES array. Bug was only fixed retroactively in PR #441. Skill v1 missed this class entirely. Also addresses three friction points the test agent flagged: - Qualifies create-project.sh check — only required for project-bootstrap commands, not every overlay command (matches FR/AT/EU/CA precedent). - Adds a Python YAML-parser snippet for handoffs validation; raw grep misses nested frontmatter values. - Adds an explicit severity-HIGH grep to the integration table; previously documented in prose only. Updates the reference test cases to log #432 as the B5 fixture alongside #441 as the B1-B4 fixture. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…oise Previous pattern matched every doc-type entry (50+ noisy lines) before reaching the labels block, surfaced by the v2 regression test on PR #441. Anchor on the export blocks instead — clean two-line + labels-block output. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
ca33212 to
1ae61ea
Compare
…items 5-16 Per maintainer review at tractorjuice#441 BLOCKER 1 — Document Control heading missing from templates All 8 au-*-template.md files (in arckit-claude/templates and dual-synced to .arckit/templates) had `<!-- DOC-CONTROL-HEADER -->` directly under the Template Origin blockquote with no `## Document Control` heading. Mirrors ca-pia-template.md:5 pattern. Without the heading, partial inlining produced a Document Control table with no preceding section. BLOCKER 2a — UK classification leaked into AU artefacts RENDERING.md only routes UAE Federal to a non-UK partial; everything else (including AU) fell back to document-control-uk.md, rendering PUBLIC/OFFICIAL/SECRET while the body content used PSPF classifications. Per-command override added to all 8 au-*.md commands at the marker- resolution step, mirroring ca-pia.md:32. Use: UNOFFICIAL / OFFICIAL / OFFICIAL:Sensitive / PROTECTED / SECRET BLOCKER 3 — generate-document-id.sh mis-invoked All 8 commands wrote `generate-document-id.sh AUE8 --filename` (single positional). Script signature is PROJECT_ID DOC_TYPE [VERSION] — so the type code was being read as PROJECT_ID with no DOC_TYPE supplied. Fixed to ca-pia.md:32 form: `<PROJECT_ID> AUE8 --filename`. ITEM tractorjuice#5 — Standard Footer ArcKit Version line au-ndb-playbook-template.md and au-pspf-template.md were missing **ArcKit Version**: [VERSION] in the Standard Footer. Added. ITEM tractorjuice#7 — create-project.sh lookup step au-ai-assurance.md, au-ndb-playbook.md, au-pspf.md jumped straight from template-resolution to doc-id without the create-project.sh lookup step. Added, matching the pattern in the other 5 AU commands and all ca-*. ITEM tractorjuice#8 — non-canonical `name:` frontmatter field All 8 commands had `name: au-XXX` as line 2 of frontmatter. Not used by ca-*, uae-*, fr-*; not in CLAUDE.md schema. Stripped. ITEM tractorjuice#9 — au-ism-controls.md numbering bug Declared "all 12 ISM control domains" then listed 17 items. Reconciled to "all 17 ISM control areas (15 ASD ISM chapter domains plus 2 cross-cutting areas — Cloud/IaaS and Working-Off-Site)". ITEM tractorjuice#10 — inconsistent RENDERING.md reference 3 commands said `Resolve the marker.` without `per RENDERING.md`. Normalised to canonical form across all 8. MINOR tractorjuice#12 — YAML comment leak `# Note: when the au-energy sector recipe lands (tractorjuice#440)...` two-line comments inside frontmatter would pass through the converter to non- Claude targets unchanged. Removed from au-e8-posture.md and au-ndb-playbook.md (tracked separately in tractorjuice#440 work). MINOR tractorjuice#14 — au-disp-attestation step 1 missing AUPSPF input AU_DISP recipe deps include AU_PSPF, but the command's Process step 1 only listed E8/ISM/PIA/RISK. Added AUPSPF as a primary input (physical/personnel/governance security evidence). MINOR tractorjuice#15 — DISP template cross-references au-disp-attestation-template.md External References gained an "Upstream ArcKit Evidence" sub-section listing all 7 upstream artefacts (E8, ISM, PIA, NDB, PSPF, DSS, AIA) with their doc-ID patterns. MINOR tractorjuice#16 — au-pspf-template.md offset numbering Outcome 1–4 rendered as `## 2.`–`## 5.`. Dropped section numbers from `## N. Outcome M:` to `## Outcome M:` so headings align with PSPF outcome numbers themselves. Other sections also de-numbered for consistency.
…mmands Same-pass tidy noted in review tractorjuice#441 blocker 3: the AU bug was inherited from uae-* commands, which all used the broken single-positional form `generate-document-id.sh CODE --filename`. Script signature is PROJECT_ID DOC_TYPE [VERSION], so the code was being read as PROJECT_ID with no DOC_TYPE supplied. Fixed in all 12 UAE commands to the canonical form: generate-document-id.sh <PROJECT_ID> CODE --filename Files: uae-ai-autonomy-tier, uae-ai-charter, uae-classification, uae-cloud-residency, uae-data-sharing, uae-digital-records, uae-ias, uae-pdpl, uae-priorities-alignment, uae-procurement, uae-uaepass, uae-zero-bureaucracy Prevents the inherited defect from propagating into future overlays. Regression-guarded by test_blocker3_same_pass_uae_doc_id_invocation_fixed.
…ers and items Adds 76 new pytest checks alongside the existing 61, encoding every fixed condition from the maintainer review at tractorjuice#441 as a mechanical assertion so future edits cannot silently revert. Blocker 1 — Document Control heading present in all 8 templates (both arckit-claude/templates and .arckit/templates dual-paths) Blocker 2a — Each AU command instructs the resolver to swap the standard UK classification line for PSPF (UNOFFICIAL / OFFICIAL / OFFICIAL:Sensitive / PROTECTED / SECRET) Blocker 3 — Each of the 8 AU commands passes <PROJECT_ID> first to generate-document-id.sh; same regression guard for all 12 UAE commands Item tractorjuice#5 — Standard Footer ArcKit Version line in 2 templates Item tractorjuice#7 — create-project.sh lookup step in all 8 AU commands Item tractorjuice#8 — non-canonical `name:` frontmatter field absent from AU Item tractorjuice#9 — au-ism-controls.md says "all 17 ISM control areas" Item tractorjuice#10 — every marker step references `RENDERING.md` explicitly Item tractorjuice#12 — no YAML comments referencing tractorjuice#440 leak in frontmatter Item tractorjuice#14 — au-disp-attestation step 1 lists AUPSPF as input Item tractorjuice#16 — au-pspf-template.md has no offset-numbered Outcome headings (4 clean `## Outcome N:` headings, no `## M. Outcome N:`) Total: 61 + 76 = 137 tests, all green at this commit. Run from repo root: pytest tests/plugin/test_au_federal_recipe.py -v
Mechanical re-run of scripts/converter.py to propagate the review tractorjuice#441 source fixes into all extension formats. Touches: arckit-codex/commands/ 8 AU + 12 UAE arckit-codex/prompts/ 8 AU + 12 UAE arckit-codex/templates/ 8 AU arckit-codex/skills/ 8 AU SKILL.md per skill arckit-opencode/commands/ 8 AU + 12 UAE arckit-opencode/templates/ 8 AU arckit-copilot/prompts/ 8 AU + 12 UAE arckit-copilot/templates/ 8 AU arckit-paperclip/src/data/ commands.json (rebuilt) arckit-paperclip/templates/ 8 AU arckit-gemini/commands/ au-* + uae-* TOML No content changes here — every diff in this commit traces back to a source change in the prior 3 commits. Verified by running the converter on the prior commit and getting exactly this diff.
…torjuice#441 Blocker 2 follow-through) The guide previously told users that setting `governance_framework: AU Federal` + `classification_scheme: PSPF` would switch the Document Control header into PSPF rendering globally. Maintainer review tractorjuice#441 (Blocker 2) noted this is false: RENDERING.md only routes UAE Federal to a non-UK partial; everything else falls back to the UK partial. Under option (a) (per-command override at the marker-resolution step), the AU artefacts come out with PSPF rendering through their own commands, not via global routing. The userConfig values still record intent for project records and downstream tooling, but they don't drive the resolver today. Updates two sections so the guide describes what option (a) actually does, and flags the future option (b) work (`document-control-au.md` partial + extended RENDERING.md routing) as a follow-up that would make global rendering apply for *non-AU* artefacts inside an AU project too.
…tency, anchor URLs Builds on the review tractorjuice#441 regression guards with 31 additional tests that catch a different class of drift — *contract* numbers defined by the regulators (not implementation choices), and cross-source consistency that the existing repo-wide tests address generically but don't surface as AU-named failures. (A) Framework fidelity in templates (12 tests, 6 templates × 2 dirs) - au-pia: all 13 APP sections present (APP 1..13 — Privacy Act 1988 Sch 1) - au-e8-posture: all 8 strategies, official ASD names checked - au-ism-controls: all 17 control areas (15 ISM chapter domains + 2 cross-cutting — Cloud/IaaS, Working-Off-Site) - au-pspf: all 4 outcomes (Governance, Information, Personnel, Physical) - au-disp-attestation: all 4 security domains (Governance, Personnel, Physical, Information & Cyber) - au-dss: all 13 DTA Digital Service Standard criteria (B) Recipe ↔ source consistency (11 tests) - Every AU target's `skill:` resolves to an existing au-*.md command - Every AU target's `output.type` is registered in doc-types.mjs - AU target count == au-*.md command count (no scope drift) - Each AU command's `handoffs[].command` resolves to an existing file (parametrised — failures point at the source overlay, not just a path) (E) Authoritative anchor URLs in commands (8 tests) Each AU command must cite at least one regulatory URL fragment: au-pia → legislation.gov.au, oaic.gov.au au-e8-posture → cyber.gov.au au-ism-controls → cyber.gov.au au-pspf → protectivesecurity.gov.au au-dss → dta.gov.au au-ndb-playbook → oaic.gov.au au-ai-assurance → digital.gov.au (DTA's AI-policy domain) au-disp-attestation → defence.gov.au Guards traceability — if a future edit drops an authoritative anchor, the artefact loses provenance and /arckit:health won't catch it. Total: 168 tests, all green at this commit (was 137, now +31). Run from repo root: pytest tests/plugin/test_au_federal_recipe.py -v
|
Pushed fixes for the four blockers and review items 5–16. Seven new commits on top of the rebased branch. Blockers — all four resolved.
Important + minor items — all done in source.
Tests — 107 new (76 review-guard + 31 Tier 1 framework/anchor coverage), bringing total from 61 → 168, all green at HEAD.
|
Code Review (round 2 — after fix-up commits
|
Maintainer rebase pushed as
|
1ae61ea to
c78513f
Compare
…items 5-16 Per maintainer review at tractorjuice#441 BLOCKER 1 — Document Control heading missing from templates All 8 au-*-template.md files (in arckit-claude/templates and dual-synced to .arckit/templates) had `<!-- DOC-CONTROL-HEADER -->` directly under the Template Origin blockquote with no `## Document Control` heading. Mirrors ca-pia-template.md:5 pattern. Without the heading, partial inlining produced a Document Control table with no preceding section. BLOCKER 2a — UK classification leaked into AU artefacts RENDERING.md only routes UAE Federal to a non-UK partial; everything else (including AU) fell back to document-control-uk.md, rendering PUBLIC/OFFICIAL/SECRET while the body content used PSPF classifications. Per-command override added to all 8 au-*.md commands at the marker- resolution step, mirroring ca-pia.md:32. Use: UNOFFICIAL / OFFICIAL / OFFICIAL:Sensitive / PROTECTED / SECRET BLOCKER 3 — generate-document-id.sh mis-invoked All 8 commands wrote `generate-document-id.sh AUE8 --filename` (single positional). Script signature is PROJECT_ID DOC_TYPE [VERSION] — so the type code was being read as PROJECT_ID with no DOC_TYPE supplied. Fixed to ca-pia.md:32 form: `<PROJECT_ID> AUE8 --filename`. ITEM tractorjuice#5 — Standard Footer ArcKit Version line au-ndb-playbook-template.md and au-pspf-template.md were missing **ArcKit Version**: [VERSION] in the Standard Footer. Added. ITEM tractorjuice#7 — create-project.sh lookup step au-ai-assurance.md, au-ndb-playbook.md, au-pspf.md jumped straight from template-resolution to doc-id without the create-project.sh lookup step. Added, matching the pattern in the other 5 AU commands and all ca-*. ITEM tractorjuice#8 — non-canonical `name:` frontmatter field All 8 commands had `name: au-XXX` as line 2 of frontmatter. Not used by ca-*, uae-*, fr-*; not in CLAUDE.md schema. Stripped. ITEM tractorjuice#9 — au-ism-controls.md numbering bug Declared "all 12 ISM control domains" then listed 17 items. Reconciled to "all 17 ISM control areas (15 ASD ISM chapter domains plus 2 cross-cutting areas — Cloud/IaaS and Working-Off-Site)". ITEM tractorjuice#10 — inconsistent RENDERING.md reference 3 commands said `Resolve the marker.` without `per RENDERING.md`. Normalised to canonical form across all 8. MINOR tractorjuice#12 — YAML comment leak `# Note: when the au-energy sector recipe lands (tractorjuice#440)...` two-line comments inside frontmatter would pass through the converter to non- Claude targets unchanged. Removed from au-e8-posture.md and au-ndb-playbook.md (tracked separately in tractorjuice#440 work). MINOR tractorjuice#14 — au-disp-attestation step 1 missing AUPSPF input AU_DISP recipe deps include AU_PSPF, but the command's Process step 1 only listed E8/ISM/PIA/RISK. Added AUPSPF as a primary input (physical/personnel/governance security evidence). MINOR tractorjuice#15 — DISP template cross-references au-disp-attestation-template.md External References gained an "Upstream ArcKit Evidence" sub-section listing all 7 upstream artefacts (E8, ISM, PIA, NDB, PSPF, DSS, AIA) with their doc-ID patterns. MINOR tractorjuice#16 — au-pspf-template.md offset numbering Outcome 1–4 rendered as `## 2.`–`## 5.`. Dropped section numbers from `## N. Outcome M:` to `## Outcome M:` so headings align with PSPF outcome numbers themselves. Other sections also de-numbered for consistency.
…mmands Same-pass tidy noted in review tractorjuice#441 blocker 3: the AU bug was inherited from uae-* commands, which all used the broken single-positional form `generate-document-id.sh CODE --filename`. Script signature is PROJECT_ID DOC_TYPE [VERSION], so the code was being read as PROJECT_ID with no DOC_TYPE supplied. Fixed in all 12 UAE commands to the canonical form: generate-document-id.sh <PROJECT_ID> CODE --filename Files: uae-ai-autonomy-tier, uae-ai-charter, uae-classification, uae-cloud-residency, uae-data-sharing, uae-digital-records, uae-ias, uae-pdpl, uae-priorities-alignment, uae-procurement, uae-uaepass, uae-zero-bureaucracy Prevents the inherited defect from propagating into future overlays. Regression-guarded by test_blocker3_same_pass_uae_doc_id_invocation_fixed.
…ers and items Adds 76 new pytest checks alongside the existing 61, encoding every fixed condition from the maintainer review at tractorjuice#441 as a mechanical assertion so future edits cannot silently revert. Blocker 1 — Document Control heading present in all 8 templates (both arckit-claude/templates and .arckit/templates dual-paths) Blocker 2a — Each AU command instructs the resolver to swap the standard UK classification line for PSPF (UNOFFICIAL / OFFICIAL / OFFICIAL:Sensitive / PROTECTED / SECRET) Blocker 3 — Each of the 8 AU commands passes <PROJECT_ID> first to generate-document-id.sh; same regression guard for all 12 UAE commands Item tractorjuice#5 — Standard Footer ArcKit Version line in 2 templates Item tractorjuice#7 — create-project.sh lookup step in all 8 AU commands Item tractorjuice#8 — non-canonical `name:` frontmatter field absent from AU Item tractorjuice#9 — au-ism-controls.md says "all 17 ISM control areas" Item tractorjuice#10 — every marker step references `RENDERING.md` explicitly Item tractorjuice#12 — no YAML comments referencing tractorjuice#440 leak in frontmatter Item tractorjuice#14 — au-disp-attestation step 1 lists AUPSPF as input Item tractorjuice#16 — au-pspf-template.md has no offset-numbered Outcome headings (4 clean `## Outcome N:` headings, no `## M. Outcome N:`) Total: 61 + 76 = 137 tests, all green at this commit. Run from repo root: pytest tests/plugin/test_au_federal_recipe.py -v
Mechanical re-run of scripts/converter.py to propagate the review tractorjuice#441 source fixes into all extension formats. Touches: arckit-codex/commands/ 8 AU + 12 UAE arckit-codex/prompts/ 8 AU + 12 UAE arckit-codex/templates/ 8 AU arckit-codex/skills/ 8 AU SKILL.md per skill arckit-opencode/commands/ 8 AU + 12 UAE arckit-opencode/templates/ 8 AU arckit-copilot/prompts/ 8 AU + 12 UAE arckit-copilot/templates/ 8 AU arckit-paperclip/src/data/ commands.json (rebuilt) arckit-paperclip/templates/ 8 AU arckit-gemini/commands/ au-* + uae-* TOML No content changes here — every diff in this commit traces back to a source change in the prior 3 commits. Verified by running the converter on the prior commit and getting exactly this diff.
…torjuice#441 Blocker 2 follow-through) The guide previously told users that setting `governance_framework: AU Federal` + `classification_scheme: PSPF` would switch the Document Control header into PSPF rendering globally. Maintainer review tractorjuice#441 (Blocker 2) noted this is false: RENDERING.md only routes UAE Federal to a non-UK partial; everything else falls back to the UK partial. Under option (a) (per-command override at the marker-resolution step), the AU artefacts come out with PSPF rendering through their own commands, not via global routing. The userConfig values still record intent for project records and downstream tooling, but they don't drive the resolver today. Updates two sections so the guide describes what option (a) actually does, and flags the future option (b) work (`document-control-au.md` partial + extended RENDERING.md routing) as a follow-up that would make global rendering apply for *non-AU* artefacts inside an AU project too.
…tency, anchor URLs Builds on the review tractorjuice#441 regression guards with 31 additional tests that catch a different class of drift — *contract* numbers defined by the regulators (not implementation choices), and cross-source consistency that the existing repo-wide tests address generically but don't surface as AU-named failures. (A) Framework fidelity in templates (12 tests, 6 templates × 2 dirs) - au-pia: all 13 APP sections present (APP 1..13 — Privacy Act 1988 Sch 1) - au-e8-posture: all 8 strategies, official ASD names checked - au-ism-controls: all 17 control areas (15 ISM chapter domains + 2 cross-cutting — Cloud/IaaS, Working-Off-Site) - au-pspf: all 4 outcomes (Governance, Information, Personnel, Physical) - au-disp-attestation: all 4 security domains (Governance, Personnel, Physical, Information & Cyber) - au-dss: all 13 DTA Digital Service Standard criteria (B) Recipe ↔ source consistency (11 tests) - Every AU target's `skill:` resolves to an existing au-*.md command - Every AU target's `output.type` is registered in doc-types.mjs - AU target count == au-*.md command count (no scope drift) - Each AU command's `handoffs[].command` resolves to an existing file (parametrised — failures point at the source overlay, not just a path) (E) Authoritative anchor URLs in commands (8 tests) Each AU command must cite at least one regulatory URL fragment: au-pia → legislation.gov.au, oaic.gov.au au-e8-posture → cyber.gov.au au-ism-controls → cyber.gov.au au-pspf → protectivesecurity.gov.au au-dss → dta.gov.au au-ndb-playbook → oaic.gov.au au-ai-assurance → digital.gov.au (DTA's AI-policy domain) au-disp-attestation → defence.gov.au Guards traceability — if a future edit drops an authoritative anchor, the artefact loses provenance and /arckit:health won't catch it. Total: 168 tests, all green at this commit (was 137, now +31). Run from repo root: pytest tests/plugin/test_au_federal_recipe.py -v
Maintainer rebase of tractorjuice#441 onto current main (v4.19.2). Fast-forward rebase succeeded with zero conflicts — git auto-merged the AU additions on top of the v4.16-v4.19 main changes. Original review's "regression risk" finding was wrong; `git diff main..pr-441` showed symmetric difference, not the PR's actual delta. Selective extension regeneration: - Ran `python scripts/converter.py` to pick up the 8 AU canonical commands and propagate them to non-Claude formats. - Selectively reverted converter output for 4 commands across 5 extensions to preserve the established Claude-only divergence: * datascout, grants, gov-reuse — keep single-tier inlined-agent shape; do not propagate the v4.16+ reader/orchestrator/writer three-tier split to Codex / Gemini / OpenCode / Copilot. * wardley — keep main's preserved version; the v4.19.2 converter procedure references `${CLAUDE_PLUGIN_ROOT}/scripts/owm-to-mermaid.mjs` which doesn't ship to those extensions yet. * pages — keep main's preserved version; the v4.16+ canonical switched to "use the sync-guides hook" which non-Claude can't dispatch. Means non-Claude pages dashboards won't surface AU artefacts, matching the same loss for data-sources/tech-notes. - Surgically merged 8 AU entries into arckit-paperclip/src/data/commands.json preserving main's exact serialization (indent=2, ensure_ascii=False, no trailing newline, template:null for AU entries to match main's pre-template-population style). Semantic verification: 116/116 main entries preserved unchanged + 8 AU added. - Removed 6 untracked converter additions (READER-PATTERN.md and data-source-profile-template.md mirrors) — these are v4.16+ artefacts whose propagation to non-Claude is out of scope for this PR. - Fixed one consecutive-blank-line lint error in arckit-claude/templates/au-disp-attestation-template.md and mirrored to .arckit/templates/. Pytest: 31 fail / 1553 pass / 321 skip — same shape as main (30 known ca-*/uae-* `$ARGUMENTS` placeholder failures + 1 pre-existing template-consistency failure for data-source-profile-template.md missing from .arckit/templates/, which is a v4.16-era plugin/CLI sync gap not introduced by this PR). The 4 commands' Claude-only divergence will be addressed properly in a follow-up by patching scripts/converter.py with a per-command skip list for non-Claude targets, after which extensions can be regenerated without losing the divergence. For now this PR ships tractorjuice#441 cleanly without introducing extension regressions. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…ound-2 IMPORTANT tractorjuice#2) Round 1 added the External References citation-instructions reference to 4 of 8 AU commands (au-dss, au-e8-posture, au-ism-controls, au-pia). Round-2 review tractorjuice#441 flagged the asymmetry: au-ai-assurance, au-disp-attestation, au-ndb-playbook, au-pspf still missed it. Each affected command's step 7 now reads: "Populate the External References section per ${CLAUDE_PLUGIN_ROOT}/references/citation-instructions.md. ..." Brings all 8 AU commands to parity with the canonical reference pattern (matches ca-* precedent). Propagated to Codex / OpenCode / Copilot extension copies via converter regen.
…ANT tractorjuice#3) Round-2 review tractorjuice#441 flagged AUDSS (DTA Digital Service Standard Conformance) and AUPSPF (PSPF Scorecard) as severity-flag candidates. Both are assessment-class artefacts going to senior accountable officers (DTA conformance / Chief Security Officer); the heuristic that promotes AUE8 / AUISM / AUPIA / AUAIA / AUDISP to severity: HIGH applies to these two as well. AUNDB (response playbook) remains non-HIGH per the maintainer's read — operational playbooks are tier-different from compliance assessments.
tractorjuice#4) Round-2 review tractorjuice#441 noted the recipe omitted the top-level `flagship:` key even though both the comment header and README name AU_DISP as the consolidation flagship pulling evidence from AU_E8 / AU_ISM / AU_PIA / AU_NDB / AU_PSPF. Adding the explicit declaration makes the build runner's job unambiguous and matches the documented convention. (ca-federal-fitaa.yaml similarly lacks it — could be a follow-up sweep across recipes.)
|
Thank you for the courtesy rebase at Round-2 IMPORTANT items (your review) — addressed in 4 commits:
Currency update beyond the review —
Paperclip commands.json surgical regen ( Documentation catch-up ( Other items: #5 (CHANGELOG block) — populated. #6 (UK leakage at 2 intentional) — verified unchanged. The 32 pre-existing Tests — 168 → 191 tests, all green at HEAD:
Looking ahead — happy to follow up after merge with: (a) NAIC AI Governance Cluster in a Round 3 PR — Eight new commits since your rebase, in chronological order: ``` |
Code Review (round 3)Verdict: Ship-ready on the AU work itself — all 5 blocker classes pass on the AU-specific surface, the round-1 and round-2 review items are demonstrably addressed in the diff. One real defect remains: converter drift on non-AU canonical commands because the branch is ~2 days behind main. One rebase + BLOCKERSB4 — Converter drift on non-AU sourcesRe-running Fix: git rebase origin/main
python scripts/converter.py
git add arckit-codex/ arckit-copilot/ arckit-gemini/ arckit-opencode/ arckit-paperclip/
git commit -m \"build: rebase converter outputs on current main\"
git push --force-with-leaseNote: the B1 ✓ / B2 ✓ / B3 ✓ / B5 ✓All four other blocker classes pass cleanly:
The round-2 fixes are demonstrably present:
IMPORTANTI1 — Pre-existing failures not introduced by this PR (informational)`pytest tests/plugin/` reports 31 failures, but a breakdown shows 0 are from this PR:
`test_au_federal_recipe.py` reports 191 passed / 0 failed. The CHANGELOG says "168 → 190 tests" — actual is 191, slightly ahead. No action required on this PR; flagged so you can decide whether to bundle the MINORM1 —
|
…Federal / DISP-supplier overlay) Closes tractorjuice#424. Community-contributed overlay covering eleven Australian Federal regulatory anchors: ASD Essential Eight + Information Security Manual, DTA Digital Service Standard, Privacy Act 1988 + 13 Australian Privacy Principles, OAIC Notifiable Data Breach scheme, Defence Industry Security Program (DISP), Protective Security Policy Framework, Commonwealth Procurement Rules (November 2025 overhaul), DTA AI Assurance Framework + Responsible AI Policy v2.0, PGPA Act s16, and IRAP. Recipe (au-federal.yaml): 35 targets across 9 build waves + 2 post-build hooks. Wave shape mirrors ca-federal-fitaa: foundation -> research+early domain -> mid-domain -> late ADRs -> flagship -> synthesis. Maintainer's verbatim validation snippet from tractorjuice#424 returns 'ok'. 8 community commands: au-e8-posture ASD Essential Eight ML0-ML3 maturity au-ism-controls ASD ISM 17-domain Statement of Applicability au-pia Privacy Act 1988 s33D PIA + 13 APPs au-ndb-playbook OAIC NDB scheme operational response au-dss DTA Digital Service Standard 13 criteria au-pspf PSPF 4 outcomes + 16 core requirements au-ai-assurance DTA AI Assurance Framework + AI Policy v2.0 au-disp-attestation DISP Member self-attestation pack (4 domains) Recipe swaps from uk-saas baseline: arckit:tcop -> arckit:au-dss arckit:secure -> arckit:au-e8-posture arckit:dpia -> arckit:au-pia Doc-types registered: AUE8, AUISM, AUPIA, AUNDB, AUDSS, AUPSPF, AUAIA, AUDISP. New regime AU added to REGIMES + REGIME_LABELS (with corrective inclusion of pre-existing CA regime that was missing from the list). pages.md allow-list extended for the 8 AU type codes (dual registration with doc-types.mjs per the existing convention). arckit-build/SKILL.md recipes table updated to list au-federal and ca-federal-fitaa (the latter was previously missing from the documented table despite shipping in v4.15.0). Single overlay guide at docs/guides/au-federal-overlay.md (UAE-style minimum). Per-command guides in Canada-style can follow in a subsequent PR if the maintainer prefers that pattern. Codex / OpenCode / Copilot / Paperclip / Gemini extension formats regenerated via scripts/converter.py for the 8 new commands. The converter run also incidentally synchronised pre-existing variant drift on arckit-pages (7 files) - drift is not introduced by this PR; the converter is bringing variants in sync with the canonical arckit-claude/commands/pages.md source. Reference test fixture: arckit-test-project-v44-australian-gov. Sibling sector recipe au-energy (AESCSF + SOCI Act CIRMP + AER ring-fencing) drafted but held in tractorjuice#440 - separate PR after au-federal lands and a sector test fixture is identified. Sanity checks: - Schema validation: ok - UK leakage: 2 (intentional comparisons in au-dss + au-pia) - AU framework presence: 188 references across the 8 commands Domain co-maintainer: @royster70. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Adds the validation scorecard alongside the PR per maintainer's explicit request on tractorjuice#424: > alongside the PR, please publish the evaluation scorecard (or a > redacted version) — even just a one-page table of what was tested, > against which framework, and the pass/fail signal. Two layers: Layer A — SKILL.md content quality (validated against AU SMB engagement). 9 evaluation runs / 8 artefacts (~4,093 lines) / 25/25 scorecard pass at Run 3 / 0 UK leakage / 220 AU references. Layer B — Recipe wave-plan validity. Schema validates 'ok' against maintainer's verbatim snippet; topological sort over deps produces 9 build waves + 2 post-build hooks across 35 targets, max parallelism 11. Reproducible mechanical-grep commands for reviewer sanity-check included for each headline number. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…doff refs caught by tests This commit lands tractorjuice#1 of the testing/evaluation strengthening agreed on PR review: NEW — tests/plugin/test_au_federal_recipe.py (61 tests) Codifies every headline claim in docs/au-federal-validation-scorecard.md as reproducible pytest checks, so reviewers can re-run mechanically rather than trusting prose: - Maintainer's verbatim validation snippet from tractorjuice#424 returns ok - Top-level recipe shape (recipe/schema_version/defaults/optional_targets/ post_build_hooks/targets keys with correct types and values) - Target count locked to 35 (regression guard) - All 8 expected AU_* IDs present in targets (parametrized) - AU_DISP consolidation flagship deps include all 5 prereqs (AU_E8 + AU_ISM + AU_PIA + AU_NDB + AU_PSPF) - Topological sort completes — no cycles, no orphan deps - All 8 AU type codes registered in doc-types.mjs (parametrized) - 'AU' regime in REGIMES array and REGIME_LABELS map - All 8 AU type codes in pages.md allow-list (dual registration) - All 8 SKILL.md commands present in arckit-claude/commands/ - All 8 templates dual-pathed (arckit-claude/templates/ AND .arckit/templates/) - UK leakage capped at <= 2 in arckit-claude/commands/au-*.md - AU framework presence >= 150 in arckit-claude/commands/au-*.md - au-federal listed in arckit-build/SKILL.md recipes table NEW — .github/workflows/test.yml First test-runner CI workflow for the repo. Runs pytest tests/ on push and PR to main. Installs pytest + pyyaml. Uses Python 3.12. FIX — handoff command references corrected in 6 commands Caught by the existing test_handoff_commands_reference_existing_files test once activated under CI: 6 of 8 au-* commands had handoff references to 'risks' (plural) but the actual command file is 'risk.md' (singular). Mechanical fix: arckit-claude/commands/au-ai-assurance.md arckit-claude/commands/au-dss.md arckit-claude/commands/au-e8-posture.md arckit-claude/commands/au-ism-controls.md arckit-claude/commands/au-ndb-playbook.md arckit-claude/commands/au-pia.md FIX — forward-references to au-energy commands removed (held until tractorjuice#440 lands) The handoff in au-e8-posture.md referenced 'au-aescsf' and the handoff in au-ndb-playbook.md referenced 'au-soci-cirmp'. Both commands ship in the sibling au-energy recipe (tractorjuice#440), not this PR. Removed the handoffs to make the test suite green; replaced with comments noting they'll be re-added in tractorjuice#440. Cleaner than committing forward-references that only resolve after a different PR merges. CONVERTER — re-ran scripts/converter.py to propagate the 8 frontmatter fixes across all 6 platform variants (Codex Extension, Codex Skills, OpenCode, Gemini, Copilot, Paperclip). Manifest at arckit-paperclip/src/data/commands.json regenerated. STAGING — contrib-side mirrors at contrib/staging/arckit-claude/commands/ also updated for record-keeping. (Not in this commit — those files are in the cowork session folder, outside this repo.) Test summary at commit: tests/plugin/test_au_federal_recipe.py 61 passed in 0.15s tests/plugin/test_template_consistency.py 16 passed (au-* selection) tests/plugin/test_commands_structure.py 72 passed (au-* selection; was 6 failing before this commit's handoff fixes) Pre-existing test debt on ca-* and uae-* commands (38 failures on test_arguments_placeholder_present) is OUT OF SCOPE for this PR and is left untouched. The new CI workflow runs pytest tests/ and will surface those failures — happy to either (a) leave the workflow as-is to prompt a follow-up, or (b) scope the workflow to only the green tests if maintainer prefers. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…locker 4) Re-runs scripts/converter.py on the rebased branch so the paperclip extension picks up the tractorjuice#442 prompt-injection hardening from upstream/main (Guardrails / What you produce / Toolchain sections) for all 10 research agents. Previous PR commit shipped the pre-tractorjuice#442 prompts here because the converter was last run before the rebase. Addresses maintainer review Blocker 4 (variant drift). Now diff-clean against running converter.py from a fresh checkout.
…items 5-16 Per maintainer review at tractorjuice#441 BLOCKER 1 — Document Control heading missing from templates All 8 au-*-template.md files (in arckit-claude/templates and dual-synced to .arckit/templates) had `<!-- DOC-CONTROL-HEADER -->` directly under the Template Origin blockquote with no `## Document Control` heading. Mirrors ca-pia-template.md:5 pattern. Without the heading, partial inlining produced a Document Control table with no preceding section. BLOCKER 2a — UK classification leaked into AU artefacts RENDERING.md only routes UAE Federal to a non-UK partial; everything else (including AU) fell back to document-control-uk.md, rendering PUBLIC/OFFICIAL/SECRET while the body content used PSPF classifications. Per-command override added to all 8 au-*.md commands at the marker- resolution step, mirroring ca-pia.md:32. Use: UNOFFICIAL / OFFICIAL / OFFICIAL:Sensitive / PROTECTED / SECRET BLOCKER 3 — generate-document-id.sh mis-invoked All 8 commands wrote `generate-document-id.sh AUE8 --filename` (single positional). Script signature is PROJECT_ID DOC_TYPE [VERSION] — so the type code was being read as PROJECT_ID with no DOC_TYPE supplied. Fixed to ca-pia.md:32 form: `<PROJECT_ID> AUE8 --filename`. ITEM tractorjuice#5 — Standard Footer ArcKit Version line au-ndb-playbook-template.md and au-pspf-template.md were missing **ArcKit Version**: [VERSION] in the Standard Footer. Added. ITEM tractorjuice#7 — create-project.sh lookup step au-ai-assurance.md, au-ndb-playbook.md, au-pspf.md jumped straight from template-resolution to doc-id without the create-project.sh lookup step. Added, matching the pattern in the other 5 AU commands and all ca-*. ITEM tractorjuice#8 — non-canonical `name:` frontmatter field All 8 commands had `name: au-XXX` as line 2 of frontmatter. Not used by ca-*, uae-*, fr-*; not in CLAUDE.md schema. Stripped. ITEM tractorjuice#9 — au-ism-controls.md numbering bug Declared "all 12 ISM control domains" then listed 17 items. Reconciled to "all 17 ISM control areas (15 ASD ISM chapter domains plus 2 cross-cutting areas — Cloud/IaaS and Working-Off-Site)". ITEM tractorjuice#10 — inconsistent RENDERING.md reference 3 commands said `Resolve the marker.` without `per RENDERING.md`. Normalised to canonical form across all 8. MINOR tractorjuice#12 — YAML comment leak `# Note: when the au-energy sector recipe lands (tractorjuice#440)...` two-line comments inside frontmatter would pass through the converter to non- Claude targets unchanged. Removed from au-e8-posture.md and au-ndb-playbook.md (tracked separately in tractorjuice#440 work). MINOR tractorjuice#14 — au-disp-attestation step 1 missing AUPSPF input AU_DISP recipe deps include AU_PSPF, but the command's Process step 1 only listed E8/ISM/PIA/RISK. Added AUPSPF as a primary input (physical/personnel/governance security evidence). MINOR tractorjuice#15 — DISP template cross-references au-disp-attestation-template.md External References gained an "Upstream ArcKit Evidence" sub-section listing all 7 upstream artefacts (E8, ISM, PIA, NDB, PSPF, DSS, AIA) with their doc-ID patterns. MINOR tractorjuice#16 — au-pspf-template.md offset numbering Outcome 1–4 rendered as `## 2.`–`## 5.`. Dropped section numbers from `## N. Outcome M:` to `## Outcome M:` so headings align with PSPF outcome numbers themselves. Other sections also de-numbered for consistency.
…mmands Same-pass tidy noted in review tractorjuice#441 blocker 3: the AU bug was inherited from uae-* commands, which all used the broken single-positional form `generate-document-id.sh CODE --filename`. Script signature is PROJECT_ID DOC_TYPE [VERSION], so the code was being read as PROJECT_ID with no DOC_TYPE supplied. Fixed in all 12 UAE commands to the canonical form: generate-document-id.sh <PROJECT_ID> CODE --filename Files: uae-ai-autonomy-tier, uae-ai-charter, uae-classification, uae-cloud-residency, uae-data-sharing, uae-digital-records, uae-ias, uae-pdpl, uae-priorities-alignment, uae-procurement, uae-uaepass, uae-zero-bureaucracy Prevents the inherited defect from propagating into future overlays. Regression-guarded by test_blocker3_same_pass_uae_doc_id_invocation_fixed.
…ers and items Adds 76 new pytest checks alongside the existing 61, encoding every fixed condition from the maintainer review at tractorjuice#441 as a mechanical assertion so future edits cannot silently revert. Blocker 1 — Document Control heading present in all 8 templates (both arckit-claude/templates and .arckit/templates dual-paths) Blocker 2a — Each AU command instructs the resolver to swap the standard UK classification line for PSPF (UNOFFICIAL / OFFICIAL / OFFICIAL:Sensitive / PROTECTED / SECRET) Blocker 3 — Each of the 8 AU commands passes <PROJECT_ID> first to generate-document-id.sh; same regression guard for all 12 UAE commands Item tractorjuice#5 — Standard Footer ArcKit Version line in 2 templates Item tractorjuice#7 — create-project.sh lookup step in all 8 AU commands Item tractorjuice#8 — non-canonical `name:` frontmatter field absent from AU Item tractorjuice#9 — au-ism-controls.md says "all 17 ISM control areas" Item tractorjuice#10 — every marker step references `RENDERING.md` explicitly Item tractorjuice#12 — no YAML comments referencing tractorjuice#440 leak in frontmatter Item tractorjuice#14 — au-disp-attestation step 1 lists AUPSPF as input Item tractorjuice#16 — au-pspf-template.md has no offset-numbered Outcome headings (4 clean `## Outcome N:` headings, no `## M. Outcome N:`) Total: 61 + 76 = 137 tests, all green at this commit. Run from repo root: pytest tests/plugin/test_au_federal_recipe.py -v
Mechanical re-run of scripts/converter.py to propagate the review tractorjuice#441 source fixes into all extension formats. Touches: arckit-codex/commands/ 8 AU + 12 UAE arckit-codex/prompts/ 8 AU + 12 UAE arckit-codex/templates/ 8 AU arckit-codex/skills/ 8 AU SKILL.md per skill arckit-opencode/commands/ 8 AU + 12 UAE arckit-opencode/templates/ 8 AU arckit-copilot/prompts/ 8 AU + 12 UAE arckit-copilot/templates/ 8 AU arckit-paperclip/src/data/ commands.json (rebuilt) arckit-paperclip/templates/ 8 AU arckit-gemini/commands/ au-* + uae-* TOML No content changes here — every diff in this commit traces back to a source change in the prior 3 commits. Verified by running the converter on the prior commit and getting exactly this diff.
…torjuice#441 Blocker 2 follow-through) The guide previously told users that setting `governance_framework: AU Federal` + `classification_scheme: PSPF` would switch the Document Control header into PSPF rendering globally. Maintainer review tractorjuice#441 (Blocker 2) noted this is false: RENDERING.md only routes UAE Federal to a non-UK partial; everything else falls back to the UK partial. Under option (a) (per-command override at the marker-resolution step), the AU artefacts come out with PSPF rendering through their own commands, not via global routing. The userConfig values still record intent for project records and downstream tooling, but they don't drive the resolver today. Updates two sections so the guide describes what option (a) actually does, and flags the future option (b) work (`document-control-au.md` partial + extended RENDERING.md routing) as a follow-up that would make global rendering apply for *non-AU* artefacts inside an AU project too.
…tency, anchor URLs Builds on the review tractorjuice#441 regression guards with 31 additional tests that catch a different class of drift — *contract* numbers defined by the regulators (not implementation choices), and cross-source consistency that the existing repo-wide tests address generically but don't surface as AU-named failures. (A) Framework fidelity in templates (12 tests, 6 templates × 2 dirs) - au-pia: all 13 APP sections present (APP 1..13 — Privacy Act 1988 Sch 1) - au-e8-posture: all 8 strategies, official ASD names checked - au-ism-controls: all 17 control areas (15 ISM chapter domains + 2 cross-cutting — Cloud/IaaS, Working-Off-Site) - au-pspf: all 4 outcomes (Governance, Information, Personnel, Physical) - au-disp-attestation: all 4 security domains (Governance, Personnel, Physical, Information & Cyber) - au-dss: all 13 DTA Digital Service Standard criteria (B) Recipe ↔ source consistency (11 tests) - Every AU target's `skill:` resolves to an existing au-*.md command - Every AU target's `output.type` is registered in doc-types.mjs - AU target count == au-*.md command count (no scope drift) - Each AU command's `handoffs[].command` resolves to an existing file (parametrised — failures point at the source overlay, not just a path) (E) Authoritative anchor URLs in commands (8 tests) Each AU command must cite at least one regulatory URL fragment: au-pia → legislation.gov.au, oaic.gov.au au-e8-posture → cyber.gov.au au-ism-controls → cyber.gov.au au-pspf → protectivesecurity.gov.au au-dss → dta.gov.au au-ndb-playbook → oaic.gov.au au-ai-assurance → digital.gov.au (DTA's AI-policy domain) au-disp-attestation → defence.gov.au Guards traceability — if a future edit drops an authoritative anchor, the artefact loses provenance and /arckit:health won't catch it. Total: 168 tests, all green at this commit (was 137, now +31). Run from repo root: pytest tests/plugin/test_au_federal_recipe.py -v
Maintainer rebase of tractorjuice#441 onto current main (v4.19.2). Fast-forward rebase succeeded with zero conflicts — git auto-merged the AU additions on top of the v4.16-v4.19 main changes. Original review's "regression risk" finding was wrong; `git diff main..pr-441` showed symmetric difference, not the PR's actual delta. Selective extension regeneration: - Ran `python scripts/converter.py` to pick up the 8 AU canonical commands and propagate them to non-Claude formats. - Selectively reverted converter output for 4 commands across 5 extensions to preserve the established Claude-only divergence: * datascout, grants, gov-reuse — keep single-tier inlined-agent shape; do not propagate the v4.16+ reader/orchestrator/writer three-tier split to Codex / Gemini / OpenCode / Copilot. * wardley — keep main's preserved version; the v4.19.2 converter procedure references `${CLAUDE_PLUGIN_ROOT}/scripts/owm-to-mermaid.mjs` which doesn't ship to those extensions yet. * pages — keep main's preserved version; the v4.16+ canonical switched to "use the sync-guides hook" which non-Claude can't dispatch. Means non-Claude pages dashboards won't surface AU artefacts, matching the same loss for data-sources/tech-notes. - Surgically merged 8 AU entries into arckit-paperclip/src/data/commands.json preserving main's exact serialization (indent=2, ensure_ascii=False, no trailing newline, template:null for AU entries to match main's pre-template-population style). Semantic verification: 116/116 main entries preserved unchanged + 8 AU added. - Removed 6 untracked converter additions (READER-PATTERN.md and data-source-profile-template.md mirrors) — these are v4.16+ artefacts whose propagation to non-Claude is out of scope for this PR. - Fixed one consecutive-blank-line lint error in arckit-claude/templates/au-disp-attestation-template.md and mirrored to .arckit/templates/. Pytest: 31 fail / 1553 pass / 321 skip — same shape as main (30 known ca-*/uae-* `$ARGUMENTS` placeholder failures + 1 pre-existing template-consistency failure for data-source-profile-template.md missing from .arckit/templates/, which is a v4.16-era plugin/CLI sync gap not introduced by this PR). The 4 commands' Claude-only divergence will be addressed properly in a follow-up by patching scripts/converter.py with a per-command skip list for non-Claude targets, after which extensions can be regenerated without losing the divergence. For now this PR ships tractorjuice#441 cleanly without introducing extension regressions. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…ound-2 IMPORTANT tractorjuice#2) Round 1 added the External References citation-instructions reference to 4 of 8 AU commands (au-dss, au-e8-posture, au-ism-controls, au-pia). Round-2 review tractorjuice#441 flagged the asymmetry: au-ai-assurance, au-disp-attestation, au-ndb-playbook, au-pspf still missed it. Each affected command's step 7 now reads: "Populate the External References section per ${CLAUDE_PLUGIN_ROOT}/references/citation-instructions.md. ..." Brings all 8 AU commands to parity with the canonical reference pattern (matches ca-* precedent). Propagated to Codex / OpenCode / Copilot extension copies via converter regen.
…ANT tractorjuice#3) Round-2 review tractorjuice#441 flagged AUDSS (DTA Digital Service Standard Conformance) and AUPSPF (PSPF Scorecard) as severity-flag candidates. Both are assessment-class artefacts going to senior accountable officers (DTA conformance / Chief Security Officer); the heuristic that promotes AUE8 / AUISM / AUPIA / AUAIA / AUDISP to severity: HIGH applies to these two as well. AUNDB (response playbook) remains non-HIGH per the maintainer's read — operational playbooks are tier-different from compliance assessments.
tractorjuice#4) Round-2 review tractorjuice#441 noted the recipe omitted the top-level `flagship:` key even though both the comment header and README name AU_DISP as the consolidation flagship pulling evidence from AU_E8 / AU_ISM / AU_PIA / AU_NDB / AU_PSPF. Adding the explicit declaration makes the build runner's job unambiguous and matches the documented convention. (ca-federal-fitaa.yaml similarly lacks it — could be a follow-up sweep across recipes.)
Adds 11 new pytest checks codifying the round-2 review fixes as mechanical regression-detectors: Round-2 tractorjuice#2 (8 tests, parametrised over all AU commands) Each AU command must reference `references/citation-instructions.md` in its External References step. Brings all 8 to parity with the canonical pattern. Round-2 tractorjuice#3 (2 tests, parametrised over AUDSS + AUPSPF) doc-types.mjs entry for AUDSS and AUPSPF must declare severity: 'HIGH' to match the senior-accountable-officer heuristic used by AUE8 / AUISM / AUPIA / AUAIA / AUDISP. Round-2 tractorjuice#4 (1 test) au-federal.yaml must declare top-level flagship: AU_DISP. Catches the documented-but-not-formalised flagship convention. Total: 168 + 11 = 179 tests, all green at this commit. Run from repo root: pytest tests/plugin/test_au_federal_recipe.py
Maintainer's c18eefa fixed a consecutive-blank-line lint error in arckit-claude/templates/au-disp-attestation-template.md (and dual-synced to .arckit/templates/) but the fix was not propagated to the four extension-format copies. Converter regen now completes the propagation so all six copies match. No content change — purely the removal of one redundant blank line at the end of the Upstream ArcKit Evidence cross-reference block. Verified against canonical template diff.
… overlay
Round-2 currency update — the National AI Centre's Essential AI Practices
("AI6") was published October 2025 and current implementation guidance is
issued via ai.gov.au. Omitting it from au-ai-assurance.md was a notable
gap for any 2026 AI assurance assessment, especially given:
- AI6 is now the most operationally-current Australian AI guidance
- Both the Foundations and Implementation Guidance pages are published
by the National AI Centre as the canonical advisory source
- Each AI6 practice has explicit "Getting started" and "Next steps"
prompts on ai.gov.au — useful for filling in evidence/action columns
Changes:
au-ai-assurance.md
- Context: AI6 added to landscape framing as NAIC operational guidance
- Authoritative anchors: AI6 Foundations + Implementation Guidance URLs added
- Process step 6: new "AU Essential AI Practices (AI6) Alignment" section
enumerating the 6 practices with assessment columns (status / evidence /
gap / action), mirroring the existing AU AI Ethics Principles structure
- Process step 6 cross-reference note explaining how AI6 practices align
with DTA Responsible AI Policy six accountabilities (different framing,
same underlying principles)
- Process step 7 (External Refs MUST list): AI6 added
au-ai-assurance-template.md (and .arckit/ dual-sync)
- New section 4: AU Essential AI Practices (AI6) Alignment with full
6-row assessment table
- Sections 4-11 renumbered to 5-12
- Document Register: 2 new rows (AI6F Foundations + AI6IG Implementation)
- Verification table: 2 new URL rows for the canonical NAIC pages
The 6 AI6 practices in canonical NAIC wording from ai.gov.au:
1. Decide who is accountable
2. Understand impacts and plan accordingly
3. Measure and manage risks
4. Share essential information
5. Test and monitor
6. Maintain human control
Tests added (11 new in test_au_federal_recipe.py):
- au-ai-assurance.md references AI6 framework + NAIC by name
- All 6 canonical practice names appear in the command
- Templates contain the AI6 alignment section with all 6 practices
- Templates' External References include both AI6 URL fragments
- URL test now requires both digital.gov.au AND ai.gov.au for au-ai-assurance
Total: 190 tests, all green at this commit (was 179, +11).
Public-domain content only — no proprietary AI6↔ISO/NIST/AI Verify
crosswalks included.
The maintainer's c18eefa surgically merged 8 AU entries into the v4.19.2 commands.json while preserving 116 non-AU entries from main verbatim. That preservation correctly protected the v4.16+ Claude-only divergence for 5 entries (datascout, gov-reuse, grants, pages, wardley) but, as a side-effect, also missed the round-1 UAE doc-id fix (which existed in my source files but had never been in main's paperclip JSON). This commit reconciles paperclip with the canonical AU+UAE source by: 1. Running scripts/converter.py to regenerate the full commands.json 2. Restoring the 5 maintainer-preserved entries verbatim from HEAD 3. Allowing the AU + UAE entries to propagate from current source Net effect — 16 entries updated to match canonical: arckit-au-ai-assurance (+1719 chars: AI6 + citation-instructions) arckit-au-disp-attestation (+55: citation-instructions ref) arckit-au-ndb-playbook (+55: citation-instructions ref) arckit-au-pspf (+55: citation-instructions ref) arckit-uae-* (12 entries) (+13 each: <PROJECT_ID> doc-id fix) The 5 v4.16+ Claude-only entries (datascout, gov-reuse, grants, pages, wardley) are byte-identical to c18eefa — preserved exactly as the maintainer's selective revert intended. Verification: 124/124 entries present, ordering preserved, prompt content matches canonical for AU + UAE, matches HEAD for the 5 preserved entries.
Catches the user-facing documentation up to the round-2 source changes that have landed since the maintainer's c18eefa rebase. CHANGELOG.md - New [Unreleased] block under Added/Fixed/Tests covering: - AU AI6 (Essential AI Practices) added to au-ai-assurance - Round-2 IMPORTANT items 2/3/4 (citation-instructions parity, severity flags, flagship key) - DISP template lint propagation across extensions - Paperclip commands.json surgical regen - Test growth from 168 -> 190 (now 191 with the guide guard) docs/guides/au-federal-overlay.md - au-ai-assurance section extended to describe AI6 coverage with inline links to the canonical NAIC Foundations + Implementation Guidance pages - Use-case bullet list now mentions NAIC Essential AI Practices alongside DTA Responsible AI Policy v2.0 - Reference Anchors block adds the two ai.gov.au URLs tests/plugin/test_au_federal_recipe.py - New test_ai6_overlay_guide_mentions_ai6 asserting the guide cites AI6 by acronym, by canonical name, and links to the Foundations URL. Catches doc/source drift where a command body covers AI6 but the user-facing guide doesn't surface it. Total tests: 191, all green at this commit.
…-2 + AI6) The scorecard was a PR-open snapshot (2026-05-06) reflecting Layer A (SKILL.md content quality against the AU SMB engagement) and Layer B (recipe wave-plan structural validity). Three rounds of changes have landed since — round-1 review fixes (already verified at the original push), round-2 review-feedback fixes (2026-05-07), and the AI6 currency update (2026-05-08). This commit adds Layer C as an addendum that captures changes since PR open without rewriting any of Layer A's or Layer B's claims. Layer A remains anchored to the original SMB engagement; Layer B remains the structural validity check; Layer C uses a different evidence type (source verification + mechanical grep + regression-test pass) and explicitly documents that distinction. Sub-section 1 — Round-2 review-feedback fixes - IMPORTANT items tractorjuice#2 (citation-instructions parity), tractorjuice#3 (severity flags for AUDSS+AUPSPF), tractorjuice#4 (flagship: AU_DISP), plus the maintainer's lint propagation, paperclip surgical regen, and documentation catch-up - 11 regression-guard tests - Reproducible grep commands matching the Layer A pattern Sub-section 2 — AU Essential AI Practices (AI6) currency addition - NAIC source verification (URL + last-verified status) - 6 canonical practice names enumerated verbatim from ai.gov.au - 12 regression-guard tests (11 framework-fidelity + 1 doc-drift) - Reproducible grep commands including a confidentiality boundary check that mechanically verifies no proprietary AI6 crosswalks (ISO 42001 / NIST AI RMF / AI Verify) have leaked into the public PR Drift table — rerun of Layer A's PR-open headline grep counts against the current branch state. AU framework presence drifted from 188 -> 190 (AI6 added "NAIC" + canonical anchor mentions); all other Layer A counts unchanged. Layer B counts (35 targets, 9 waves) unchanged. Test architecture evolution table — full 61 -> 191 progression broken out by tier, including the 5-tier coverage architecture established in round 1. Footer extended with "Layer C addendum: 2026-05-08" timestamp so the provenance of each section is auditable.
Round-3 review (tractorjuice#441 comment 4459176602) flagged converter drift on the PR branch ~2 days behind main. Rebased onto upstream/main (v4.21.0 release set: tractorjuice#460-462, tractorjuice#463-465, tractorjuice#467, tractorjuice#470-477, tractorjuice#480) and re-ran `python scripts/converter.py` to regenerate the 5 extension formats from current sources. Drifts picked up: - AU command/prompt/skill files brought into consistency with current `project_template_overrides` rewrite (`.arckit/templates/` -> `.arckit/templates-custom/` in the "Then" row; CA/UAE files already reflect this pattern) - `pages`, `framework`, `uae-priorities-alignment` extension outputs regenerated from upstream source updates - Skill SKILL.md files (`architecture-workflow`, `mermaid-syntax`, `plantuml-syntax`, `wardley-mapping`) regenerated for tractorjuice#455/tractorjuice#480 changes - `config/doc-types.mjs`, `docs/guides/custom-commands.md`, `templates/pages-template.html`, `plugin.json`, and `arckit-paperclip/src/data/commands.json` propagated CHANGELOG conflict resolved: AU round-2/AI6 entries moved to the re-opened [Unreleased] section above the new [4.21.0] block. Reviewer's "neighbourly fix" (`.arckit/templates/data-source-profile-template.md`) no longer needed — already tracked in upstream/main. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
292b7aa to
03233e2
Compare
Adds the
au-federalcommunity recipe — Australian Federal Government / DISP-supplier compliance overlay — closing #424. Single bundle PR matching the UAE Federal (v4.10.0) and Canada Federal (v4.15.0) precedent.What ships
Recipe:
arckit-claude/skills/arckit-build/recipes/au-federal.yaml8 community-overlay commands (validated end-to-end against a real AU SMB engagement; DISP-track, OFFICIAL:Sensitive):
au-e8-postureau-piaau-dssau-ism-controlsau-ndb-playbookau-pspfau-ai-assuranceau-disp-attestation8 templates (one per command) shipped to both
arckit-claude/templates/and.arckit/templates/.8 type codes registered in
arckit-claude/config/doc-types.mjs:AUE8,AUISM,AUPIA,AUNDB,AUDSS,AUPSPF,AUAIA,AUDISP. New regimeAUadded toREGIMES/REGIME_LABELS(with corrective inclusion of pre-existingCAregime that was missing from the list).Dual registration in
arckit-claude/commands/pages.mdallow-list per the existing convention noted indoc-types.mjs:7.Single overlay guide at
docs/guides/au-federal-overlay.md(UAE-style minimum). Per-command guides in Canada-style can follow in a subsequent PR if you prefer that pattern.Validation scorecard published as
docs/au-federal-validation-scorecard.mdper your explicit request on #424 ("rather than take them on trust").Converter outputs for Codex / OpenCode / Gemini / Copilot / Paperclip generated via
python scripts/converter.pyagainst the 8 SKILL.md sources — included in the diff.Docs updates:
README.md(community-overlay section),CHANGELOG.md(Unreleased entry),arckit-claude/skills/arckit-build/SKILL.md(recipes table, with corrective addition ofca-federal-fitaawhich was previously missing despite shipping in v4.15.0).docs/index.htmlis generated byarckit:pagesso not included;docs/DEPENDENCY-MATRIX.mdis the official-baseline DSM and not updated for community overlays per the existing convention.Recipe shape
35 targets across 9 build waves + 2 post-build hooks. Wave shape mirrors
ca-federal-fitaa: foundation → research+early domain → mid-domain → late ADRs → flagship → synthesis.AU_DISP(DISP attestation) is the consolidation flagship in W5, depending onAU_E8,AU_ISM,AU_PIA,AU_NDB, andAU_PSPFhaving completed in earlier waves.ORG_RESEARCH,PRINGLOSSARY,REQ,STKEADR-002,ADR-008,AU_E8,AU_PIA,AWS_RESEARCH,AZURE_RESEARCH,DATASCOUT,GCP_RESEARCH,RESEARCH,STRATEGY,WARDLEYADR-001,ADR-007,AU_AI,AU_DSS,AU_ISM,AU_NDB,DATA_MODELADR-003,ADR-004,ADR-005,AU_PSPFADR-006,AIP,AU_DISPHLD,RISKSOBC,TRACEABILITYFRAMEWORKarckit:health,arckit:pagesComputed via topological sort matching the algorithm in
arckit-claude/skills/arckit-build/SKILL.md§ "Wave plan algorithm". Comparable shape toca-federal-fitaa.yaml.Recipe swaps from
uk-saas.yamlbaselineRegulatory anchors
Validation evidence — two layers
arckit-test-project-v44-australian-gov(full name; thearckit-test-project-v44shorthand on #424 expanded — see full name in the README repo table)okagainst your verbatim snippet; 35 targets / 9 build waves / max parallelism 11 computed locally via topological sort matching the build harness algorithmHeadline numbers (reproducible mechanical-grep commands in the published scorecard):
arckit-claude/commands/au-dss.md+au-pia.md(DTA-DSS-vs-UK-TCoP context, Privacy-Act-vs-UK-GDPR context — the swap rationale)grep -rE '\b(ASD|ACSC|OAIC|DTA|PSPF|IRAP|DISP|APP|ISM|Privacy Act 1988)\b' arckit-claude/commands/au-*.md | wc -l)okagainst the recipeAcceptance-criteria coverage (per #424)
arckit-claude/skills/arckit-build/recipes/au-federal.yamlmatching the schema inarckit-claude/skills/arckit-build/SKILL.md§ "Recipe schema (v1)"okagainst the recipefr-*/eu-*/at-*/uae-*/ca-*patternarckit-claude/templates/and.arckit/templates/python scripts/converter.py) executed — Codex / OpenCode / Gemini / Copilot / Paperclip variants generated for all 8 commandsREADME.mdupdated with Australian Federal / DISP-supplier Overlay community sectionCHANGELOG.mdupdated with Unreleased entryarckit-build/SKILL.mdrecipes table updated (corrective inclusion ofca-federal-fitaawhich was previously missing despite shipping in v4.15.0)docs/guides/au-federal-overlay.mddocs/au-federal-validation-scorecard.mdper maintainer's explicit request on help wanted: contribute a /arckit:build recipe for your jurisdiction #424Side-effect transparency note
Running
python scripts/converter.py(mandatory acceptance criterion) regenerated the 7 platform-variant copies ofarckit-pagesto bring them in sync with the canonicalarckit-claude/commands/pages.mdsource. This drift is not introduced by this PR — the canonical source had been updated upstream but the variants weren't re-synced. The converter run (a) propagates my pages.md allow-list extension to all 6 platform variants, AND (b) incidentally fixes the pre-existing variant drift. Happy to split into a separate housekeeping commit if preferred.The 7 modified files are:
arckit-codex/commands/arckit.pages.mdarckit-codex/prompts/arckit.pages.mdarckit-codex/skills/arckit-pages/SKILL.mdarckit-copilot/prompts/arckit-pages.prompt.mdarckit-gemini/commands/arckit/pages.tomlarckit-opencode/commands/arckit.pages.mdarckit-paperclip/src/data/commands.jsonSector overlay → #440
The
au-energysector overlay (AESCSF + SOCI Act CIRMP + AER ring-fencing — 2 community commands:au-aescsfandau-soci-cirmp) is drafted and ready but held in #440 until this PR lands. The 2 sector commands are mechanically clean but not yet validated end-to-end — the federal test fixture is an advisory firm, not an energy market participant or SOCI-designated critical-asset operator. The #440 PR will explicitly invite community collaboration on validation against an appropriate sector test fixture.Reviewer notes
au-dss.md+au-pia.md(the swap rationale)Process improvement worth folding into the recipe-development guide
Discovered during validation work; might be useful for other community contributors:
Happy to PR this as a note into
arckit-claude/skills/arckit-build/SKILL.mdor wherever recipe-author guidance lives, if useful.Likely review questions
SVCASSreplacement? DTA Digital Service Standard provides partial coverage of UK GDS Service Assessment functionality; no direct AU equivalent at Federal level. Could be a Phase 2 candidate if an AU equivalent emerges.AU_VENDOR_RESEARCHnot a separate command? Out of scope for this PR. Current PR scope is the 8 compliance-domain commands. Would fit as a Phase 2 addition.au-federalnaming reserves headroom for state-level overlays (au-vic-*,au-nsw-*, etc.) in future contributions./cc @tractorjuice
🤖 PR built collaboratively with Claude Code