Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 25 additions & 0 deletions .go-arch-lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -305,6 +305,12 @@ components:
infra-mcp:
in: infrastructure/mcp

domain-transcript:
in: domain/transcript

infra-transcript:
in: infrastructure/transcript

# INTERFACES LAYER
interfaces-cli:
in: interfaces/cli
Expand Down Expand Up @@ -342,6 +348,7 @@ deps:
- domain-errors
- domain-plugin
- domain-operation
- domain-transcript
canUse:
- go-stdlib
domain-errors:
Expand Down Expand Up @@ -371,6 +378,7 @@ deps:
- domain-errors
- domain-plugin
- domain-operation
- domain-transcript
- application-tools
- infra-agents
- infra-expression
Expand All @@ -394,8 +402,10 @@ deps:
- domain-ports
- domain-errors
- domain-plugin
- domain-transcript
canUse:
- go-stdlib
- uuid

# INFRASTRUCTURE — domain + vendors
infra-agents:
Expand All @@ -404,6 +414,7 @@ deps:
- domain-ports
- domain-errors
- domain-plugin
- domain-transcript
- infra-logger
canUse:
- go-stdlib
Expand Down Expand Up @@ -644,6 +655,19 @@ deps:
canUse:
- go-stdlib

domain-transcript:
mayDependOn: []
canUse:
- go-stdlib

infra-transcript:
mayDependOn:
- domain-transcript
- domain-ports
canUse:
- go-stdlib
- uuid

# INTERFACES — wiring layer (app + infra + domain)
interfaces-cli:
mayDependOn:
Expand Down Expand Up @@ -677,6 +701,7 @@ deps:
- infra-tokenizer
- infra-tools
- infra-tools-builtins
- infra-transcript
- infra-updater
- infra-workflowpkg
- infra-xdg
Expand Down
25 changes: 25 additions & 0 deletions .golangci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -199,6 +199,18 @@ linters:
linters:
- gocritic

# gocritic hugeParam - test fake implementations satisfy interfaces by value
- path: _test\.go
text: "hugeParam"
linters:
- gocritic

# gocritic unnamedResult - test fakes implement interfaces; named returns optional
- path: _test\.go
text: "unnamedResult"
linters:
- gocritic

# gocritic elseif - acceptable in tests for clarity
- path: _test\.go
text: "elseif"
Expand All @@ -211,6 +223,12 @@ linters:
linters:
- gocritic

# staticcheck S1005 - test files use _ = <-ch for clarity when draining channels
- path: _test\.go
text: "S1005"
linters:
- staticcheck

# gocritic rangeValCopy - performance is not critical in CLI display functions
- path: internal/interfaces/cli/(run|status)\.go
text: "rangeValCopy"
Expand All @@ -234,6 +252,13 @@ linters:
linters:
- revive

# Test helper functions use (svc, ctx) parameter order intentionally
# to group the service under test with its arguments; ctx is still present
- path: _test\.go
text: context-as-argument
linters:
- revive

# Internal infrastructure packages use directory names matching stdlib (http, github)
# This is intentional and scoped to internal packages only
- path: internal/infrastructure/http/
Expand Down
9 changes: 9 additions & 0 deletions .zpm/kb/feedback/journal.wal
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{"ts":1780826633,"op":"assert","clause":"feedback:rule(plan_preexisting_violations, review, 'When an implementation plan adds new files to a package that already has a missing_test (or other) integrity_violation, each affected component MUST name the violating file and state RESOLVE-in-feature or DEFER-with-ticket; new files must each ship a test so debt never grows silently. Query integrity_violation/2 in ZPM default before finalizing a plan.', high, plan_review_F106)"}
{"ts":1780826633,"op":"assert","clause":"feedback:trigger(plan_preexisting_violations, '.specify/implementation/', directory)"}
{"ts":1780828489,"op":"assert","clause":"feedback:rule(verify_zpm_violation_before_acting, review, 'ZPM integrity_violation(missing_test,F) is a DERIVED rule from source_file/1 + missing test_file/2 facts — it can be STALE (test exists on disk but no test_file/2 fact). Before treating it as debt in a plan/review, confirm the _test.go sibling is truly absent; if it exists, add the missing test_file/2 fact to default memory instead. Never add a duplicate test file to resolve a phantom violation.', high, plan_review_F106_postmortem)"}
{"ts":1780828489,"op":"assert","clause":"feedback:trigger(verify_zpm_violation_before_acting, '.specify/implementation/', directory)"}
{"ts":1780828573,"op":"retractall","clause":"feedback:rule(plan_preexisting_violations, _, _, _, _)"}
{"ts":1780828573,"op":"retractall","clause":"feedback:trigger(plan_preexisting_violations, _, _)"}
{"ts":1780828725,"op":"retractall","clause":"feedback:rule(plan_preexisting_violations, _, _, _, _, _, _)"}
{"ts":1780828725,"op":"assert","clause":"feedback:rule(plan_preexisting_violations, review, 'STALE-CHECK before acting on a ZPM integrity_violation(missing_test,F): it is a DERIVED rule (source_file + missing test_file/2 + not covered_by), so it goes stale when a _test.go sibling exists on disk but no test_file/2 fact was recorded. Verify the sibling is truly absent; if it exists, add the missing test_file/2 fact to default memory rather than treating it as debt or adding a duplicate test.', high, plan_review_F106_postmortem)"}
{"ts":1780828739,"op":"retractall","clause":"feedback:trigger(verify_zpm_violation_before_acting, '.specify/implementation/', directory)"}
Loading
Loading