Skip to content

docs: make policy gates enforcement-first#180

Merged
phuongnse merged 4 commits into
mainfrom
codex/enforcement-first-doc-gates
Jun 5, 2026
Merged

docs: make policy gates enforcement-first#180
phuongnse merged 4 commits into
mainfrom
codex/enforcement-first-doc-gates

Conversation

@phuongnse

@phuongnse phuongnse commented Jun 4, 2026

Copy link
Copy Markdown
Owner

Summary

Make policy docs enforcement-first: every recurring rule now has an explicit Enforced / Partial / Review-only / Guidance / Not a rule status instead of being described as a blanket gate. Add counterexample tests for custom Python policy gates and run them from both verify and the CI Doc drift job. Narrow doc drift to deterministic checks so docs are updated for behavior/spec/status changes, not as token churn for every code-path diff. Add an enforced tracked-text encoding gate (UTF-8 without BOM + LF) and normalize existing BOM-bearing files.

Linked spec

N/A: governance, documentation, and policy-tooling cleanup; no product use-case AC changed.

Requirements & rules followed

  • Spec -> code - N/A: no product AC changed; this aligns policy docs and gate implementation.
  • Ready review - N/A: no behavior implementation; touched policy owners were identified (REVIEW_FINDINGS.md, agent checklist, repo-layout/script docs, PR template, CI).
  • Path coverage matrix - N/A: no runtime user path changed; policy counterexamples were added in scripts/tests/test_policy_gates.py, including encoding failures for BOM/CRLF/invalid UTF-8/mojibake.
  • Verification gate - python scripts/axis.py verify ran green outside sandbox on the latest commit; full dotnet test Axis.sln remains CI/branch-protection owned.
  • Docs review - Owning docs updated for policy/tooling behavior: review findings, agent checklist, repo-layout discovery, docs style, scripts docs, PR template, CLAUDE, CONTRIBUTING.
  • Retrospective review - The repeated finding class documented rule without enforcement is recorded in REVIEW_FINDINGS.md; custom gate proof is now scripts/tests/test_policy_gates.py.
  • Workarounds - N/A: no P0/P1 workaround introduced or resolved.
  • No new TODO / FIXME / NotImplementedException / placeholder / stub under src/, tests/, frontend/src/ - confirmed by doc drift.

@coderabbitai

coderabbitai Bot commented Jun 4, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@phuongnse, we couldn't start this review because you've reached your PR review rate limit.

More reviews will be available in 41 minutes and 45 seconds. Learn how PR review limits work.

Your organization has run out of usage credits. Purchase more in the billing tab.

⌛ How to resolve this issue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available.

Please see our Fair Usage Limits Policy for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 5c3f0da4-ba6c-4629-a806-1c3698a59eeb

📥 Commits

Reviewing files that changed from the base of the PR and between de06467 and 32ac6ce.

📒 Files selected for processing (3)
  • CONTRIBUTING.md
  • scripts/axis.py
  • scripts/tests/test_policy_gates.py
📝 Walkthrough

Walkthrough

Refactors doc-drift to README-status checks, adds policy-tests and text-encoding gates in scripts/axis.py and CI, extends unit tests for policy gates, updates CI/PR templates and playbooks to the new Ready/Verification/Retrospective checkpoint model, and normalizes BOM/encoding across many files.

Changes

Policy Gates and Doc Drift Checkpoint Refactor

Layer / File(s) Summary
Doc-drift domain checker refactor
scripts/doc_drift_domains.py
Simplifies domain discovery and doc-drift --check to README API-status validation, removes prior rule-discovery machinery, adds --list mappings output and widened discovery filters.
axis.py policy gates and added-line/handler rules
scripts/axis.py
Adds check policy-tests and check text-encoding, data-driven added-line doc-drift rules, missing_handler_test_issues, integrates doc_drift_domains.check_readme_api_status, and runs policy-tests before doc-drift in verify.
Policy gate unit tests
scripts/tests/test_policy_gates.py
Adds TestTextEncodingGate and extends existing tests to validate text-encoding, policy-tests behavior, doc-drift ratchets, handler-test ratchet, discovery checks, and PR guard validation.
CI workflow and PR/contributor wiring
.github/workflows/build-and-test.yml, .github/PULL_REQUEST_TEMPLATE.md, CONTRIBUTING.md, .editorconfig
Removes doc-drift-scope export/filter, runs doc-drift job unconditionally, adds “Test policy gates” step before doc-drift, updates PR template and contributor instructions to reference policy-tests and new checkpoint language; notes text-encoding enforcement in .editorconfig.
Governance docs and enforcement taxonomy
CLAUDE.md, docs/REVIEW_FINDINGS.md, docs/playbooks/*, .coderabbit.yaml
Rewrites gates/ownership language to Ready/Verification/Retrospective, defines enforcement taxonomy and ledger shape in REVIEW_FINDINGS.md, clarifies authoritative sources (CLAUDE.md, .editorconfig, docs/REVIEW_FINDINGS.md), and updates playbooks to require local check policy-tests + check doc-drift where applicable.
BOM/encoding normalization
multiple .csproj, migration, JSON, .sln, and script files
Removes stray BOM/non-printing leading characters at file starts; no functional/project-setting changes.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Possibly related PRs

  • phuongnse/axis#178: Standardizes CI/hooks/playbooks to call axis.py commands; directly connected to this PR's extension of axis.py with check policy-tests and refactored check_doc_drift/doc_drift_domains behavior.
  • phuongnse/axis#179: Overlaps on gate orchestration and axis.py verify/check command adjustments; related to adding/enforcing policy/test gates.
  • phuongnse/axis#72: Prior work modifying doc-drift gating in .github/workflows/build-and-test.yml; relevant to the CI detect/doc-drift gating changes.
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title 'docs: make policy gates enforcement-first' directly and accurately reflects the main objective of this PR: refactoring policy documentation to emphasize enforcement mechanisms and status taxonomy rather than gate-based descriptions.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/enforcement-first-doc-gates

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (3)
scripts/doc_drift_domains.py (2)

74-77: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Match only the exact endpoint file path, not a stem prefix.

Line 76 builds a stem-prefix regex and Line 77 uses re.search, which can incorrectly trigger API-status checks for unrelated files that share the same prefix in src/Axis.Api/Endpoints/.

Suggested fix
-    for endpoint_file in ENDPOINTS_DIR.glob("*Endpoints.cs"):
-        stem = endpoint_file.stem[: -len("Endpoints")]
-        pattern = f"src/Axis\\.Api/Endpoints/{re.escape(stem)}"
-        if not any(path_matches_pattern(p, pattern) for p in changed_paths):
+    for endpoint_file in ENDPOINTS_DIR.glob("*Endpoints.cs"):
+        endpoint_rel = f"src/Axis.Api/Endpoints/{endpoint_file.name}"
+        if endpoint_rel not in changed_paths:
             continue
         domains_to_check.add(module_to_domain_slug(primary_application_module(endpoint_file)))
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@scripts/doc_drift_domains.py` around lines 74 - 77, The current loop builds a
stem-prefix pattern from ENDPOINTS_DIR by using stem and then checks
changed_paths with path_matches_pattern, which can match unrelated files sharing
that prefix; update the pattern to match the exact endpoint filename (include
the "Endpoints.cs" suffix or anchor the regex to the filename) or use the full
endpoint_file.name (e.g., re.escape(endpoint_file.name)) so path_matches_pattern
only returns true for the exact path in src/Axis.Api/Endpoints/, and preserve
use locations: ENDPOINTS_DIR, endpoint_file, stem, pattern, and
path_matches_pattern.

79-79: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Handle mapping errors here to avoid hard-failing doc-drift execution.

Line 79 can raise ValueError. In scripts/axis.py (check_doc_drift), discovery errors are collected but check_readme_api_status() is still called, so this can crash the command instead of reporting issues cleanly.

Suggested fix
-        domains_to_check.add(module_to_domain_slug(primary_application_module(endpoint_file)))
+        try:
+            domains_to_check.add(module_to_domain_slug(primary_application_module(endpoint_file)))
+        except ValueError as exc:
+            errors.append(str(exc))
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@scripts/doc_drift_domains.py` at line 79, The line adding domains_to_check
can raise ValueError via primary_application_module or module_to_domain_slug;
wrap the call to primary_application_module(endpoint_file) and
module_to_domain_slug(...) in a try/except ValueError block inside
scripts/doc_drift_domains.py, catch the exception, record the error into the
existing discovery_errors collection or log it (instead of re-raising), and
continue so check_readme_api_status() won't hard-fail; reference the symbols
domains_to_check, primary_application_module, module_to_domain_slug, and
discovery_errors when making the change.
docs/playbooks/repo-layout-discovery.md (1)

69-77: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Checklist A/B are out of sync with the pre-push command requirements.

Line 39-44 requires both python scripts/axis.py check policy-tests and python scripts/axis.py check doc-drift, but Line 69 and Line 77 only call out check doc-drift.

Suggested fix
-- [ ] Run `python scripts/axis.py check doc-drift` and full `dotnet test` on `Axis.sln`.
+- [ ] Run `python scripts/axis.py check policy-tests`, `python scripts/axis.py check doc-drift`, and full `dotnet test` on `Axis.sln`.

-- [ ] `python scripts/axis.py check doc-drift`.
+- [ ] `python scripts/axis.py check policy-tests` and `python scripts/axis.py check doc-drift`.

As per coding guidelines: “Keep a single owner per fact—edit one canonical location and link from other docs instead of duplicating commands/steps/versions/paths.”

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/playbooks/repo-layout-discovery.md` around lines 69 - 77, Checklist
items for "A" and "B — New use case" are inconsistent: the A checklist requires
both "python scripts/axis.py check policy-tests" and "python scripts/axis.py
check doc-drift" while the B checklist only lists "python scripts/axis.py check
doc-drift"; update the B checklist entries under "B — New use case" to include
the missing "python scripts/axis.py check policy-tests" command (and any other
pre-push checks present in the A block) so both checklists call the same
pre-push checks, and if this command list is duplicated elsewhere, consolidate
to a single canonical instruction location and link to it instead of duplicating
the commands.
🧹 Nitpick comments (1)
scripts/tests/test_policy_gates.py (1)

163-168: ⚡ Quick win

Add one positive test for endpoint-change enforcement.

This class only verifies the non-trigger path. Please add a case where a changed *Endpoints.cs path maps to a domain whose README still has | API | ⏳, and assert that check_readme_api_status() returns the expected error.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@scripts/tests/test_policy_gates.py` around lines 163 - 168, Add a positive
test method inside TestDocDomainDiscovery that exercises endpoint-change
enforcement: create a test (e.g., test_endpoint_change_enforces_doc_activity)
that calls doc_drift_domains.check_readme_api_status with a list containing a
changed endpoint path matching "*Endpoints.cs" (for example
"src/Modules/Identity/Axis.Identity.Application/UsersEndpoints.cs") and set up
the README state so it contains the table entry "| API | ⏳" for the mapped
domain; assert that check_readme_api_status returns the expected non-empty error
list (the specific error string/tuple your code produces) indicating the README
API status must be updated. Reference the existing TestDocDomainDiscovery class
and the function check_readme_api_status when adding the test. Ensure the test
mirrors the style of the existing negative case (using
self.assertEqual/assertTrue) and uses the same input/output shape as other tests
in the file.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@CONTRIBUTING.md`:
- Line 22: Update the pointer in the CONTRIBUTING.md sentence that currently
references "repo-layout-discovery.md section D" to point to the repository proto
guidance section or table in docs/playbooks/repo-layout-discovery.md (the
section covering .proto/buf usage and proto checklist) so contributors are
routed correctly; edit the phrase after "see" to reference the correct heading
name or anchor (e.g., "proto guidance" or the exact section title) and ensure
the surrounding text mentioning "python scripts/axis.py generate buf-yaml",
"buf.yaml", and "buf lint" remains unchanged.

---

Outside diff comments:
In `@docs/playbooks/repo-layout-discovery.md`:
- Around line 69-77: Checklist items for "A" and "B — New use case" are
inconsistent: the A checklist requires both "python scripts/axis.py check
policy-tests" and "python scripts/axis.py check doc-drift" while the B checklist
only lists "python scripts/axis.py check doc-drift"; update the B checklist
entries under "B — New use case" to include the missing "python scripts/axis.py
check policy-tests" command (and any other pre-push checks present in the A
block) so both checklists call the same pre-push checks, and if this command
list is duplicated elsewhere, consolidate to a single canonical instruction
location and link to it instead of duplicating the commands.

In `@scripts/doc_drift_domains.py`:
- Around line 74-77: The current loop builds a stem-prefix pattern from
ENDPOINTS_DIR by using stem and then checks changed_paths with
path_matches_pattern, which can match unrelated files sharing that prefix;
update the pattern to match the exact endpoint filename (include the
"Endpoints.cs" suffix or anchor the regex to the filename) or use the full
endpoint_file.name (e.g., re.escape(endpoint_file.name)) so path_matches_pattern
only returns true for the exact path in src/Axis.Api/Endpoints/, and preserve
use locations: ENDPOINTS_DIR, endpoint_file, stem, pattern, and
path_matches_pattern.
- Line 79: The line adding domains_to_check can raise ValueError via
primary_application_module or module_to_domain_slug; wrap the call to
primary_application_module(endpoint_file) and module_to_domain_slug(...) in a
try/except ValueError block inside scripts/doc_drift_domains.py, catch the
exception, record the error into the existing discovery_errors collection or log
it (instead of re-raising), and continue so check_readme_api_status() won't
hard-fail; reference the symbols domains_to_check, primary_application_module,
module_to_domain_slug, and discovery_errors when making the change.

---

Nitpick comments:
In `@scripts/tests/test_policy_gates.py`:
- Around line 163-168: Add a positive test method inside TestDocDomainDiscovery
that exercises endpoint-change enforcement: create a test (e.g.,
test_endpoint_change_enforces_doc_activity) that calls
doc_drift_domains.check_readme_api_status with a list containing a changed
endpoint path matching "*Endpoints.cs" (for example
"src/Modules/Identity/Axis.Identity.Application/UsersEndpoints.cs") and set up
the README state so it contains the table entry "| API | ⏳" for the mapped
domain; assert that check_readme_api_status returns the expected non-empty error
list (the specific error string/tuple your code produces) indicating the README
API status must be updated. Reference the existing TestDocDomainDiscovery class
and the function check_readme_api_status when adding the test. Ensure the test
mirrors the style of the existing negative case (using
self.assertEqual/assertTrue) and uses the same input/output shape as other tests
in the file.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 062bfe33-7aba-4fe3-8488-1e8c93ff2a92

📥 Commits

Reviewing files that changed from the base of the PR and between 0f18bb8 and 5ad6017.

📒 Files selected for processing (16)
  • .coderabbit.yaml
  • .editorconfig
  • .github/PULL_REQUEST_TEMPLATE.md
  • .github/workflows/build-and-test.yml
  • CLAUDE.md
  • CONTRIBUTING.md
  • docs/ARCHITECTURE.md
  • docs/README.md
  • docs/REVIEW_FINDINGS.md
  • docs/playbooks/agent-checklist.md
  • docs/playbooks/docs-style.md
  • docs/playbooks/repo-layout-discovery.md
  • docs/playbooks/scripts.md
  • scripts/axis.py
  • scripts/doc_drift_domains.py
  • scripts/tests/test_policy_gates.py

Comment thread CONTRIBUTING.md Outdated

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
docs/playbooks/agent-checklist.md (1)

149-165: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Fix the docs-only example; it contradicts the trigger matrix.

Line 149 requires policy-tests + doc-drift for docs/scripts/layout/policy changes, but Line 165 says docs-only means every verification line is “not triggered.” This will cause incorrect checklist claims.

Suggested edit
-Example (docs-only): every line `not triggered — no src/, tests/, or frontend/ changes`.
+Example (docs-only): policy gate tests + doc drift ran; .NET/frontend lines `not triggered` when no src/tests/frontend code changed.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/playbooks/agent-checklist.md` around lines 149 - 165, The docs-only
example is inconsistent with the trigger matrix: update the "Example
(docs-only)" section so that when the change touches docs/scripts/layout/policy
it does not mark every verification as "not triggered" — specifically set the
"policy gate tests" (policy-tests) and "python scripts/axis.py check doc-drift"
entries under the "Verification gate self-check" block to show they ran (e.g.,
"ran") with appropriate reasons, while leaving unrelated checks as "not
triggered"; locate the "Verification gate self-check" block and the "Example
(docs-only)" paragraph and modify only the policy-tests and doc-drift lines
accordingly.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@scripts/axis.py`:
- Around line 231-245: The MOJIBAKE_MARKERS tuple currently contains a raw
"\u00c2" entry which causes valid "Â" characters to be treated as mojibake;
remove that raw "\u00c2" element from MOJIBAKE_MARKERS (leave the other
mojibake_marker(...) entries intact) so legitimate UTF-8 "Â" is not flagged by
check text-encoding, and run the encoding checks to confirm no false positives.

---

Outside diff comments:
In `@docs/playbooks/agent-checklist.md`:
- Around line 149-165: The docs-only example is inconsistent with the trigger
matrix: update the "Example (docs-only)" section so that when the change touches
docs/scripts/layout/policy it does not mark every verification as "not
triggered" — specifically set the "policy gate tests" (policy-tests) and "python
scripts/axis.py check doc-drift" entries under the "Verification gate
self-check" block to show they ran (e.g., "ran") with appropriate reasons, while
leaving unrelated checks as "not triggered"; locate the "Verification gate
self-check" block and the "Example (docs-only)" paragraph and modify only the
policy-tests and doc-drift lines accordingly.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 94490fb5-a9e0-4efe-ac21-e26fa822dafb

📥 Commits

Reviewing files that changed from the base of the PR and between 5ad6017 and de06467.

📒 Files selected for processing (46)
  • .editorconfig
  • .github/PULL_REQUEST_TEMPLATE.md
  • .github/workflows/build-and-test.yml
  • Axis.sln
  • CLAUDE.md
  • CONTRIBUTING.md
  • docs/README.md
  • docs/REVIEW_FINDINGS.md
  • docs/playbooks/agent-checklist.md
  • docs/playbooks/design-gate.md
  • docs/playbooks/docs-style.md
  • docs/playbooks/pr-slicing.md
  • docs/playbooks/repo-layout-discovery.md
  • docs/playbooks/scripts.md
  • docs/playbooks/testing.md
  • docs/wireframes/generate-screens.mjs
  • scripts/axis.py
  • scripts/tests/test_policy_gates.py
  • src/Axis.Api/Properties/launchSettings.json
  • src/Modules/DataModeling/Axis.DataModeling.Application/Axis.DataModeling.Application.csproj
  • src/Modules/DataModeling/Axis.DataModeling.Domain/Axis.DataModeling.Domain.csproj
  • src/Modules/DataModeling/Axis.DataModeling.Infrastructure/Axis.DataModeling.Infrastructure.csproj
  • src/Modules/DataModeling/Axis.DataModeling.Infrastructure/Migrations/20260526031047_InitialCreate.Designer.cs
  • src/Modules/DataModeling/Axis.DataModeling.Infrastructure/Migrations/DataModelingDbContextModelSnapshot.cs
  • src/Modules/FormBuilder/Axis.FormBuilder.Application/Axis.FormBuilder.Application.csproj
  • src/Modules/FormBuilder/Axis.FormBuilder.Domain/Axis.FormBuilder.Domain.csproj
  • src/Modules/FormBuilder/Axis.FormBuilder.Infrastructure/Axis.FormBuilder.Infrastructure.csproj
  • src/Modules/FormBuilder/Axis.FormBuilder.Infrastructure/Migrations/20260526031056_InitialCreate.Designer.cs
  • src/Modules/FormBuilder/Axis.FormBuilder.Infrastructure/Migrations/FormBuilderDbContextModelSnapshot.cs
  • src/Modules/Identity/Axis.Identity.Application/Axis.Identity.Application.csproj
  • src/Modules/Identity/Axis.Identity.Domain/Axis.Identity.Domain.csproj
  • src/Modules/Identity/Axis.Identity.Infrastructure/Migrations/20260603100509_InitialIdentitySchema.Designer.cs
  • src/Modules/Identity/Axis.Identity.Infrastructure/Migrations/IdentityDbContextModelSnapshot.cs
  • src/Modules/PageBuilder/Axis.PageBuilder.Application/Axis.PageBuilder.Application.csproj
  • src/Modules/PageBuilder/Axis.PageBuilder.Domain/Axis.PageBuilder.Domain.csproj
  • src/Modules/PageBuilder/Axis.PageBuilder.Infrastructure/Axis.PageBuilder.Infrastructure.csproj
  • src/Modules/WorkflowBuilder/Axis.WorkflowBuilder.Application/Axis.WorkflowBuilder.Application.csproj
  • src/Modules/WorkflowBuilder/Axis.WorkflowBuilder.Domain/Axis.WorkflowBuilder.Domain.csproj
  • src/Modules/WorkflowBuilder/Axis.WorkflowBuilder.Infrastructure/Axis.WorkflowBuilder.Infrastructure.csproj
  • src/Modules/WorkflowBuilder/Axis.WorkflowBuilder.Infrastructure/Migrations/20260526031052_InitialCreate.Designer.cs
  • src/Modules/WorkflowBuilder/Axis.WorkflowBuilder.Infrastructure/Migrations/WorkflowBuilderDbContextModelSnapshot.cs
  • src/Modules/WorkflowEngine/Axis.WorkflowEngine.Domain/Axis.WorkflowEngine.Domain.csproj
  • src/Modules/WorkflowEngine/Axis.WorkflowEngine.Infrastructure/Migrations/20260526031100_InitialCreate.Designer.cs
  • src/Modules/WorkflowEngine/Axis.WorkflowEngine.Infrastructure/Migrations/WorkflowEngineDbContextModelSnapshot.cs
  • src/Shared/Axis.Shared.Application/Axis.Shared.Application.csproj
  • src/Shared/Axis.Shared.Domain/Axis.Shared.Domain.csproj
✅ Files skipped from review due to trivial changes (38)
  • src/Modules/WorkflowBuilder/Axis.WorkflowBuilder.Domain/Axis.WorkflowBuilder.Domain.csproj
  • src/Modules/Identity/Axis.Identity.Domain/Axis.Identity.Domain.csproj
  • src/Modules/DataModeling/Axis.DataModeling.Application/Axis.DataModeling.Application.csproj
  • src/Modules/WorkflowBuilder/Axis.WorkflowBuilder.Application/Axis.WorkflowBuilder.Application.csproj
  • src/Modules/WorkflowEngine/Axis.WorkflowEngine.Infrastructure/Migrations/20260526031100_InitialCreate.Designer.cs
  • src/Modules/FormBuilder/Axis.FormBuilder.Infrastructure/Axis.FormBuilder.Infrastructure.csproj
  • src/Modules/Identity/Axis.Identity.Infrastructure/Migrations/20260603100509_InitialIdentitySchema.Designer.cs
  • src/Shared/Axis.Shared.Domain/Axis.Shared.Domain.csproj
  • src/Modules/DataModeling/Axis.DataModeling.Domain/Axis.DataModeling.Domain.csproj
  • src/Modules/PageBuilder/Axis.PageBuilder.Application/Axis.PageBuilder.Application.csproj
  • src/Modules/PageBuilder/Axis.PageBuilder.Infrastructure/Axis.PageBuilder.Infrastructure.csproj
  • src/Modules/DataModeling/Axis.DataModeling.Infrastructure/Migrations/DataModelingDbContextModelSnapshot.cs
  • src/Modules/FormBuilder/Axis.FormBuilder.Domain/Axis.FormBuilder.Domain.csproj
  • src/Axis.Api/Properties/launchSettings.json
  • src/Modules/Identity/Axis.Identity.Application/Axis.Identity.Application.csproj
  • src/Modules/FormBuilder/Axis.FormBuilder.Application/Axis.FormBuilder.Application.csproj
  • src/Modules/PageBuilder/Axis.PageBuilder.Domain/Axis.PageBuilder.Domain.csproj
  • src/Modules/WorkflowBuilder/Axis.WorkflowBuilder.Infrastructure/Migrations/20260526031052_InitialCreate.Designer.cs
  • src/Modules/WorkflowEngine/Axis.WorkflowEngine.Domain/Axis.WorkflowEngine.Domain.csproj
  • src/Modules/WorkflowBuilder/Axis.WorkflowBuilder.Infrastructure/Axis.WorkflowBuilder.Infrastructure.csproj
  • docs/wireframes/generate-screens.mjs
  • src/Modules/WorkflowBuilder/Axis.WorkflowBuilder.Infrastructure/Migrations/WorkflowBuilderDbContextModelSnapshot.cs
  • src/Modules/Identity/Axis.Identity.Infrastructure/Migrations/IdentityDbContextModelSnapshot.cs
  • src/Modules/DataModeling/Axis.DataModeling.Infrastructure/Axis.DataModeling.Infrastructure.csproj
  • src/Shared/Axis.Shared.Application/Axis.Shared.Application.csproj
  • src/Modules/WorkflowEngine/Axis.WorkflowEngine.Infrastructure/Migrations/WorkflowEngineDbContextModelSnapshot.cs
  • src/Modules/DataModeling/Axis.DataModeling.Infrastructure/Migrations/20260526031047_InitialCreate.Designer.cs
  • Axis.sln
  • src/Modules/FormBuilder/Axis.FormBuilder.Infrastructure/Migrations/20260526031056_InitialCreate.Designer.cs
  • docs/playbooks/testing.md
  • docs/playbooks/scripts.md
  • src/Modules/FormBuilder/Axis.FormBuilder.Infrastructure/Migrations/FormBuilderDbContextModelSnapshot.cs
  • .github/PULL_REQUEST_TEMPLATE.md
  • docs/playbooks/design-gate.md
  • .editorconfig
  • CONTRIBUTING.md
  • docs/playbooks/docs-style.md
  • docs/playbooks/repo-layout-discovery.md
🚧 Files skipped from review as they are similar to previous changes (2)
  • .github/workflows/build-and-test.yml
  • scripts/tests/test_policy_gates.py

Comment thread scripts/axis.py
@phuongnse phuongnse merged commit 7467eb1 into main Jun 5, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant