Project Governance, Codespaces Trial, NL RBAC, Optimistic Locking Fixes
Project Governance, Codespaces Trial, Optimistic Locking Fixes
This release brings three things to GenAI-Logic: a Project Governance technology preview (traceability from requirement through to verified correctness), a no-install Codespaces trial path, and two correctness fixes to optimistic locking and LogicBank's multi-relationship handling.
Project Governance (Technology Preview)
GenAI-Logic projects are governed by declarative rules. Project Governance extends that into a complete, generated story from business requirement through to verified correctness — no separate documentation, no drift, because every layer traces back to the same logic file:
Business Requirement → Declarative Rules → Logic Flow → Tests
(docstring) (Rule.* DSL) (diagram) (Behave)
Three tools, all generated from code:
| Tool | Question answered | How to invoke |
|---|---|---|
| Logic Flow | What does this system do? | "create logic diagram" |
| Vital Signs (Health Check) | Is it implemented correctly? | "vital signs" |
| Behave Tests | Did it work as specified? | run your Behave suite |
Logic Flow renders an SVG dependency diagram plus a numbered rule summary, sourced from your rule declarations and the module docstring in each logic/logic_discovery/*.py file. Vital Signs checks rule adoption, dependency tracking, and docstring hygiene (flags any calling= function missing a one-line docstring — that line is what shows up in the diagram).
Docs: https://apilogicserver.github.io/Docs/IDE-Health-Check/
Try It Without Installing — Codespaces
A trimmed-down Manager workspace is now available for trying GenAI-Logic entirely in the browser via GitHub Codespaces — no local Python, no venv setup. Click through from the template, and you're in a working Manager in a couple of minutes.
Docs: https://apilogicserver.github.io/Docs/DevOps-GitHub/
Natural Language RBAC Grants
Role-based access control declarations (security/declare_security.py) can now be generated directly from natural language security requirements, the same translation philosophy already used for business logic rules. Describe roles, default table-level permissions, and row-level Grant/GlobalFilter requirements in plain English; the AI assistant translates them into the declarative security DSL — roles, DefaultRolePermission, Grant (including multi-tenant row filters keyed off user properties), and GlobalFilter.
Docs: https://apilogicserver.github.io/Docs/Security-Overview/
Fixes
Optimistic Locking — S_CheckSum now populated on insert, and stable across processes.
Two related bugs in api/system/opt_locking/opt_locking.py, fixed together:
S_CheckSumpreviously came backnullon aPOST(insert) response — the checksum-stamping listener only fires on read, not on a row created in the same request. A client had to issue an extraGETbefore it couldPATCH/DELETEa row it just created, underopt_locking=required. Fixed: the checksum is now stamped at flush time too, soPOSTandGETare symmetric.- The checksum itself used Python's built-in
hash(), which is seed/platform-dependent — different processes (replicas, restarts, mixed-arch nodes) could compute different checksums for the same row, causing spurious409lock failures on valid updates. Fixed: checksums are now computed withsha256, deterministic everywhere. ThePYTHONHASHSEED=0workaround for repeatable test checksums is no longer needed.
Docs: https://apilogicserver.github.io/Docs/API-Opt-Lock/
LogicBank — child_role_name now works correctly for multi-relationship parent/child pairs.
If a child class has two or more relationships to the same parent class (e.g. an Employee that can be works_for one Department and on_loan to another), Rule.sum, Rule.count, and Rule.copy previously could pick the wrong relationship, fail to disambiguate, or — for Rule.copy — had no way to disambiguate at all. Fixed across all three, plus the underlying live-formula cascade and LogicRow.link(). LogicBank bumped to 1.31.04.
Docs: https://apilogicserver.github.io/Docs/Logic-Type-Sum/#multiple-relationships-to-the-same-parent