Core changes: - Add @defgroup/@ingroup to 1791 C2+ contracts (555 files) for HCA 128× pre-training DSA grouping - Add §0.1 Pre-Training Frequency matrix to semantics-core - Add §VIII Attention Architecture rules (ATTN_1-4) with MLA/CSA/HCA/DSA mechanics - Add @defgroup/@ingroup to canonical syntax (§II) and all contract examples Agent prompts (5 files): - Add ZERO-STATE RATIONALE with MLA/CSA/HCA/DSA compression mechanics - Add pre-training note: @RATIONALE/@REJECTED are in-context learned tags - svelte-coder: add missing #region contract, fix Svelte rule violations - python-coder/fullstack-coder: honor function contracts from speckit plan - qa-tester: add attention compliance audit (P3 ATTN_1-4 checks) Skills (6 files): - Translate all axiom_config descriptions to English - Fix doc_dirs to index .opencode/ and .specify/ - Deduplicate 5× complexity_rules → single global_tags catalog - Reduce semantics-svelte 591→485 lines (remove duplicate code blocks) - Fix semantics-testing: 'Short IDs' → 'Short hierarchical IDs' - Fix all examples: flat IDs → hierarchical Domain.Name format - Fix Svelte examples: replace raw Tailwind + <button> with semantic tokens + /ui Speckit workflow (commands + templates): - speckit.plan: add Function-Level Contracts for C3+ with @PRE/@POST/@TEST_EDGE - speckit.plan: add Attention Compliance Gate (ATTN_1-4 before contract generation) - speckit.tasks: add function contract inlining format (constraints in task description) - speckit.specify: load semantics-core for spec density rules - spec-template: add #region contract, @SEMANTICS grouping, hierarchical IDs - ux-reference-template: add #region wrapper - plan-template: add attention gate, @defgroup/@ingroup guidance - tasks-template: add attention audit + rebuild + orphan check tasks - constitution.md: translate to English, add Principle VIII (attention-optimized contracts) Reference modules rewritten (hierarchical IDs + full contracts): - Auth.Jwt: 6 child contracts with @RATIONALE/@REJECTED/@TEST_EDGE - Api.Auth: 5 endpoints with @TEST_EDGE + molecular CoT markers - Migration.Model: @defgroup Migration with 18 @ACTION + 6 @INVARIANT Scripts: - add_defgroup_ingroup.py: zero-risk additive @ingroup migration (1791 insertions) - migrate_hierarchical.py: flat→hierarchical ID dry-run analysis (792 contracts) - merge_prompts.py: merge all prompts/skills/commands into one review file Config: - axiom_config.yaml: 749→395 lines (-47%), English, doc_dirs include prompts - Fix test_datasets.py import collision (rename → test_datasets_routes.py) - Fix test_preview.py: SupersetClient→get_superset_client, AsyncMock, logger f-string
85 lines
3.4 KiB
Python
85 lines
3.4 KiB
Python
# #region AssistantModels [C:3] [TYPE Module] [SEMANTICS sqlalchemy, assistant, model, schema, audit, assistant-audit-record]
|
|
# @defgroup Models Module group.
|
|
# @BRIEF SQLAlchemy models for assistant audit trail and confirmation tokens.
|
|
# @LAYER Domain
|
|
# @RELATION DEPENDS_ON -> MappingModels
|
|
# @INVARIANT Assistant records preserve immutable ids and creation timestamps.
|
|
# @SIDE_EFFECT Defines assistant audit/message/confirmation tables
|
|
# @DATA_CONTRACT AssistantData -> AssistantRecord
|
|
|
|
from datetime import UTC, datetime
|
|
|
|
from sqlalchemy import JSON, Column, DateTime, String, Text
|
|
|
|
from .mapping import Base
|
|
|
|
|
|
# #region AssistantAuditRecord [C:3] [TYPE Class]
|
|
# @defgroup Models Module group.
|
|
# @BRIEF Store audit decisions and outcomes produced by assistant command handling.
|
|
# @RELATION INHERITS -> MappingModels
|
|
# @PRE user_id must identify the actor for every record.
|
|
# @POST Audit payload remains available for compliance and debugging.
|
|
class AssistantAuditRecord(Base):
|
|
__tablename__ = "assistant_audit"
|
|
|
|
id = Column(String, primary_key=True)
|
|
user_id = Column(String, index=True, nullable=False)
|
|
conversation_id = Column(String, index=True, nullable=True)
|
|
decision = Column(String, nullable=True)
|
|
task_id = Column(String, nullable=True)
|
|
message = Column(Text, nullable=True)
|
|
payload = Column(JSON, nullable=True)
|
|
created_at = Column(DateTime, default=lambda: datetime.now(UTC), nullable=False)
|
|
|
|
|
|
# #endregion AssistantAuditRecord
|
|
|
|
|
|
# #region AssistantMessageRecord [C:3] [TYPE Class]
|
|
# @defgroup Models Module group.
|
|
# @BRIEF Persist chat history entries for assistant conversations.
|
|
# @RELATION INHERITS -> MappingModels
|
|
# @PRE user_id, conversation_id, role and text must be present.
|
|
# @POST Message row can be queried in chronological order.
|
|
class AssistantMessageRecord(Base):
|
|
__tablename__ = "assistant_messages"
|
|
|
|
id = Column(String, primary_key=True)
|
|
user_id = Column(String, index=True, nullable=False)
|
|
conversation_id = Column(String, index=True, nullable=False)
|
|
role = Column(String, nullable=False) # user | assistant
|
|
text = Column(Text, nullable=False)
|
|
state = Column(String, nullable=True)
|
|
task_id = Column(String, nullable=True)
|
|
confirmation_id = Column(String, nullable=True)
|
|
payload = Column(JSON, nullable=True)
|
|
created_at = Column(DateTime, default=lambda: datetime.now(UTC), nullable=False)
|
|
|
|
|
|
# #endregion AssistantMessageRecord
|
|
|
|
|
|
# #region AssistantConfirmationRecord [C:3] [TYPE Class]
|
|
# @defgroup Models Module group.
|
|
# @BRIEF Persist risky operation confirmation tokens with lifecycle state.
|
|
# @RELATION INHERITS -> MappingModels
|
|
# @PRE intent/dispatch and expiry timestamp must be provided.
|
|
# @POST State transitions can be tracked and audited.
|
|
class AssistantConfirmationRecord(Base):
|
|
__tablename__ = "assistant_confirmations"
|
|
|
|
id = Column(String, primary_key=True)
|
|
user_id = Column(String, index=True, nullable=False)
|
|
conversation_id = Column(String, index=True, nullable=False)
|
|
state = Column(String, index=True, nullable=False, default="pending")
|
|
intent = Column(JSON, nullable=False)
|
|
dispatch = Column(JSON, nullable=False)
|
|
expires_at = Column(DateTime, nullable=False)
|
|
created_at = Column(DateTime, default=lambda: datetime.now(UTC), nullable=False)
|
|
consumed_at = Column(DateTime, nullable=True)
|
|
|
|
|
|
# #endregion AssistantConfirmationRecord
|
|
# #endregion AssistantModels
|