Added
-
DRR Linking (FPF E.9): Decision records now create graph relations to hypotheses.
quint_decideaccepts newrejected_idsparameter for rejected alternatives.- Creates
selectsrelation: DRR → winner hypothesis. - Creates
rejectsrelations: DRR → each rejected alternative. - Enables queries: "What alternatives were considered for this DRR?"
-
Context Markdown Formatting:
quint_record_contextnow normalizes input to proper markdown.- Vocabulary entries formatted as definition list (
- **Term**: definition). - Invariants formatted as numbered list with line breaks.
- Vocabulary entries formatted as definition list (
-
Audit Tree Shows MemberOf Relations:
quint_audit_treenow displaysmemberOfgroupings.- Decision context alternatives are shown under
[members]section. - Member R scores displayed for comparison (no WLNK propagation per FPF spec).
- Decision context alternatives are shown under
-
Improved Tool Descriptions:
quint_proposeparameters now have actionable descriptions.depends_on: Explains WLNK impact and when to use.decision_context: Explains grouping purpose and when to use.q1-hypothesize.md: Added "Linking Checklist" before proposing hypotheses.
-
Merged
/q-auditinto/q-query: Simplified command set./q-querynow shows R_eff and dependency trees for found holons.- Removed standalone
/q-auditutility (redundant with enhanced/q-query). /q4-audit(FPF phase) remains unchanged.
-
sqlc Integration: Type-safe database queries generated from SQL.
- All database operations now use sqlc-generated code with proper type safety.
- New
db/store.gowrapper provides clean API while preserving schema bootstrap. - Added comprehensive test suite for database operations (
db/store_test.go).
-
GetHolon Query: Added query to fetch hypothesis metadata by ID (foundation for future Kind-CAL work).
-
New MCP Tools for Trust Calculus (B.3):
quint_audit_tree: Visualize assurance tree with R scores, dependencies, and CL penalties.quint_calculate_r: Compute R_eff with detailed breakdown (self score, weakest link, decay penalties).quint_check_decay: Identify holons with expired evidence (epistemic debt detection).
-
Parent ID Chain (FPF Enforcement):
- Added
parent_idforeign key to holons table for L0→L1→L2 progression tracking. - New queries:
GetHolonsByParent,GetHolonLineagefor traversing hypothesis chains. CreateHolonnow accepts parent_id parameter for linking hypothesis progression.- Enables auditable chain from L2 decision back to original L0 hypothesis.
- Added
-
Derived Phase (FPF Enforcement):
- Phase is now computed from holons.layer data instead of stored in state.json.
- New
DerivePhase()method computes phase from database state. - New
GetPhase()returns derived phase when DB available, falls back to State.Phase. - Prevents AI bypass of FPF phase controls via direct file manipulation.
-
Audit Logging (FPF Enforcement):
- New
audit_logtable tracks all MCP tool invocations. - Captures: tool name, operation, actor, target ID, input hash, result, and details.
- Instrumented tools:
quint_propose,quint_verify,quint_decide,quint_move. - Enables detection of FPF bypasses through audit trail analysis.
- Context-aware logging supports multi-session isolation.
- New
-
Self-Healing Signed Projections (FPF Enforcement):
- All hypothesis/evidence/DRR files now include
content_hashin YAML frontmatter. - New
WriteWithHash()function adds cryptographic hash (SHA-256 truncated) on write. - New
ValidateFile()detects tampering by comparing stored vs computed hash. - New
ReadWithValidation()on Tools automatically detects and logs tampering. - When tampering detected: regenerates file from DB (DB is source of truth).
- Tampering events logged to audit_log for violation tracking.
- All hypothesis/evidence/DRR files now include
-
DRR Holon Tracking:
FinalizeDecisionnow creates DRR holon in database (enables derived phase detection).- DRR holons linked to winner hypothesis via parent_id.
-
Tool Preconditions (FPF Enforcement):
- All MCP tools now validate preconditions before execution.
quint_propose: Validates title, content, and kind fields.quint_verify: Confirms hypothesis exists in L0, validates verdict.quint_test: Ensures hypothesis is in L1 (not L0), validates verdict.quint_audit: Confirms hypothesis is in L2 before audit.quint_decide: Requires L2 hypotheses exist, validates winner_id and title.quint_calculate_r/quint_audit_tree: Validates holon existence in DB.- Precondition failures logged to audit_log with BLOCKED status.
- Each error includes actionable suggestion for the user.
-
Command Contracts (FPF Enforcement):
- All FPF command prompts (q0-q5) now include formal enforcement contracts.
- YAML frontmatter with
pre,post,invariant, andrequired_toolsfields. - RFC 2119 bindings (MUST, MUST NOT, SHALL) for mandatory behaviors.
- "Invalid Behaviors" section explicitly lists protocol violations.
- "Checkpoint" section with verification checklist before phase transition.
- Success/failure path examples with few-shot learning.
- "State machine executor" mechanical persona to reduce AI improvisation.
- Defense in depth: soft gate (prompts) + hard gate (preconditions).
-
Inline Schema Migrations:
- Existing databases automatically upgraded on startup.
- Adds
parent_idandcached_r_scorecolumns to existingholonstable. - Safe to run multiple times (idempotent).
-
Holon Linking in
quint_propose:- New
depends_onparameter to declare dependencies on other holons. - New
decision_contextparameter to group alternatives under a decision. - New
dependency_clparameter (1-3) for congruence level of dependencies. - Creates
ComponentOfrelations for system holons,ConstituentOffor episteme. - Creates
MemberOfrelations for decision grouping (no R propagation). - Added SQL indexes for efficient WLNK traversal.
- Documented structural relations (B.1.1) in CLAUDE.md.
- New
-
Evidence Freshness Management (FPF B.3.4):
- New
waiverstable for tracking temporary risk acceptance with full audit trail. quint_check_decaynow supports three modes:- Report mode (default): Shows freshness report with STALE/FRESH/WAIVED holons.
- Deprecate mode: Downgrades hypothesis (L2→L1 or L1→L0) when evidence is terminally stale.
- Waive mode: Records explicit risk acceptance with rationale and expiration date.
quint_testnow accepts L2 hypotheses for evidence refresh (L2 + PASS stays L2 with fresh evidence).- Freshness report now shows individual evidence IDs (not just counts) for actionable output.
- Implements WLNK principle: one expired evidence item = entire holon is STALE.
- Natural language support: users can say "waive the benchmark until February" and the agent handles ID resolution.
- New documentation:
docs/evidence-freshness.md— practical guide to managing stale evidence. - Updated command documentation:
q-decay.mdandq3-validate.md.
- New
-
CI/CD Pipeline:
- New GitHub Actions workflow (
.github/workflows/ci.yml) for pull requests. - Triggers on PRs and pushes to
mainanddevbranches. - Runs tests with race detector and coverage reporting.
- Runs
golangci-lintfor code quality (errcheck, govet, staticcheck, unused, misspell). - Uses
golangci-lint-action@v7with golangci-lint v2 config schema. - Added
.golangci.ymlconfiguration for consistent linting.
- New GitHub Actions workflow (
-
Pre-commit Hooks:
- Added
.pre-commit-config.yamlfor use with pre-commit tool. - Added
.githooks/pre-commitfor simple git-native hooks (no dependencies). - Hooks include: gofmt, goimports, go build, go test, golangci-lint.
- Setup via
./scripts/setup-hooks.shor./scripts/setup-hooks.sh --precommit. - Also checks: trailing whitespace, end-of-file, yaml syntax, large files, merge conflicts, private keys.
- Added
Changed
-
Updated FPF Commands: Commands now leverage new MCP tools for computed data:
/q4-audit: Now callsquint_calculate_randquint_audit_treebefore recording findings./q5-decide: Now usesquint_calculate_rfor final R_eff comparison before decision./q-audit: Updated to use visualization tools./q-decay: Updated to usequint_check_decayfor proactive decay detection./q-status: Now proactively checks for expired evidence.
-
SQLite Driver Migration: Replaced CGO-based
mattn/go-sqlite3with pure Gomodernc.org/sqlite.- Enables
CGO_ENABLED=0builds for simplified cross-compilation. - Cross-compilation now works for linux/amd64, linux/arm64, darwin/*, windows/amd64.
- Unblocks single-runner GoReleaser builds.
- No functional changes to database behavior.
- Enables
-
FSM Phase Derivation:
CanTransition()now usesGetPhase()(derived from DB) instead ofState.Phase.- Phase transitions are validated against actual database state.
- Hardens FPF enforcement against state.json manipulation.
Fixed
-
Evidence Decay Bug: Evidence was stored with
NULLvalid_until, making/q-decayalways report "no expired evidence."ManageEvidencenow sets a default 90-day validity period whenvalidUntilis empty.- Affects all evidence added via
quint_verify,quint_test, andquint_audit.
-
Go Module Import Paths: Standardized import paths to use the correct module name across all packages. (PR #16, @blib)