AI Slop Code Risk Monitor

juanfont/headscale

SlopCodeMonitor badge for juanfont/headscale Adjusted legacy signal; badge bands: 25 / 50 / 75 (different from dashboard bands).

An open source, self-hosted implementation of the Tailscale control server

2.7 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for juanfont/headscale, a Go project with 45,219 GitHub stars. SynthScan examined 223,100 lines of code across 624 source files, recording 563 pattern matches distributed across 8 syntactic categories. The legacy adjusted pattern signal is 2.7 (Low pattern signal); it is not an authorship estimate.

Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.

2.7
Adjusted Signal
2.7
Raw Pattern Score
100%
Time Factor
2026-10-31
Last Push
45.2K
Stars
Go
Language
223.1K
Lines of Code
624
Files
563
Pattern Hits
2026-10-31
Scan Date
0.00
HC Hit Rate

Risk Review · Payload v1

Use each vector to guide manual verification of the underlying findings.

Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.

Cognitive Ownership Risk 11.3/100 · LOW

Can maintainers explain intent, assumptions, and trade-offs? 491 finding(s).

Hallucinated Dependency & Supply Chain Risk 1.5/100 · LOW

Are imports declared and package/API names verified? 72 finding(s).

Agent Over-Engineering Ratio 0.0/100 · LOW

Are wrappers, guards, and repeated structures necessary? 0 finding(s).

PR Review Velocity Impact 12.0/100 · LOW

Which changes need focused human review? 563 finding(s).

What These Metrics Mean

Adjusted Signal
Legacy pattern score normalized per 1,000 scanned lines and multiplied by the repository-level time factor. It is not an estimate of AI authorship.
Raw Pattern Score
Sum of severity- and context-weighted pattern findings before applying the time factor.
Time Factor
A coarse multiplier based on repository last-push metadata. It does not identify when individual code was written.
Pattern Hits
Count of configured pattern findings. Review each location and surrounding code before acting.
HC Hit Rate
High- and critical-severity findings per scanned file. Severity is a configured detector weight, not proof of a vulnerability or authorship.
Lines / Files
Scan coverage denominators used by the legacy normalized score.

Pattern-Signal History

This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.

Severity Breakdown

Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.

CRITICAL 0HIGH 0MEDIUM 3LOW 560

Directory Score Breakdown

This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.

Pattern Findings

The scanner identified 563 distinct pattern matches across 8 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.

Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.

Over-Commented Block296 hits · 276 pts
SeverityFileLineSnippetContext
LOWconfig-example.yaml1---COMMENT
LOWconfig-example.yaml21# Address to listen to /metrics and /debug, you may wantCOMMENT
LOWconfig-example.yaml41# List of IP prefixes to allocate tailaddresses from.COMMENT
LOWconfig-example.yaml61 v6: fd7a:115c:a1e0::/48COMMENT
LOWconfig-example.yaml81 # Region ID to use for the embedded DERP server.COMMENT
LOWconfig-example.yaml121 # https://tailscale.com/docs/reference/derp-servers/custom-derp-serversCOMMENT
LOWconfig-example.yaml141 # Default key expiry for non-tagged nodes, regardless of registration methodCOMMENT
LOWconfig-example.yaml161 # When HA routes exist (2+ nodes advertising the same prefix), headscaleCOMMENT
LOWconfig-example.yaml201COMMENT
LOWconfig-example.yaml221 # port: 5432COMMENT
LOWconfig-example.yaml281COMMENT
LOWconfig-example.yaml301# https://tailscale.com/docs/reference/faq/dns-resolv-confCOMMENT
LOWconfig-example.yaml341 # Set custom DNS search domains. With MagicDNS enabled,COMMENT
LOWconfig-example.yaml361 # Let nodes get TLS certificates for their MagicDNS name withCOMMENT
LOWconfig-example.yaml381 # keys are settings of that provider; add _path to a key to read it fromCOMMENT
LOWconfig-example.yaml401COMMENT
LOWconfig-example.yaml421# # Note: client_secret and client_secret_path are mutually exclusive.COMMENT
LOWconfig-example.yaml441# # default. Unverified emails may be allowed in case an identity providerCOMMENT
LOWconfig-example.yaml461# allowed_groups:COMMENT
LOWconfig-example.yaml481# https://tailscale.com/docs/features/logging#opt-out-of-client-loggingCOMMENT
LOWconfig-example.yaml501# default. Setting it back to false flips the default for futureCOMMENT
LOWconfig-example.yaml521# # The NodeStore batches write operations before rebuilding peer relationships,COMMENT
LOWcmd/vendorhash/main.go1// vendorhash maintains the Nix SRI hash for the Go module vendor treeCOMMENT
LOWcmd/gen-openapi/main.go1// Command gen-openapi emits a Headscale OpenAPI document from the authoritativeCOMMENT
LOWtools/bump/main.go1// Command bump keeps headscale's pinned versions current and puts the resultCOMMENT
LOWintegration/auth_oidc_test.go121 t.Fatalf("unexpected users: %s", diff)COMMENT
LOWintegration/auth_oidc_test.go1101// - The same client logs back in via OIDC as the same user (user1)COMMENT
LOWintegration/auth_oidc_test.go1461// https://github.com/juanfont/headscale/issues/2888COMMENT
LOWintegration/auth_oidc_test.go1741 assert.Equal(ct, "oidcuser", oidcUserFound.Name)COMMENT
LOWintegration/ts2021_websocket_test.go41// client uses. It is fast and always on.COMMENT
LOWintegration/auth_key_test.go541// after a node logs out and re-authenticates with the same user.COMMENT
LOWintegration/acl_test.go621 assertCurlDockerHostname(c, client, url, "Verifying user2 can reach user1")COMMENT
LOWintegration/acl_test.go641// }, {COMMENT
LOWintegration/acl_test.go3121COMMENT
LOWintegration/acl_test.go3141// 2. Create policy with group:admin = [user1@]COMMENT
LOWintegration/acl_test.go3301 t.Logf("Filter rules: %d", len(filter))COMMENT
LOWintegration/auth_web_flow_test.go381// - Multiple clients authenticate via web flow, each to their respective users (user1, user2)COMMENT
LOWintegration/tags_test.go581}COMMENT
LOWintegration/tags_test.go1261 }, integrationutil.ScaledTimeout(10*time.Second), integrationutil.SlowPoll, "admin tags should be preserved after --resCOMMENT
LOWintegration/tags_test.go1381COMMENT
LOWintegration/tags_test.go3621// owned tag. Because a tag-owned node has no user and its IP is in no ownerCOMMENT
LOWintegration/route_test.go2161 for _, node := range nodes {COMMENT
LOWintegration/route_test.go3861// the route have been offline simultaneously and one of them returns.COMMENT
LOWintegration/route_test.go4061 returnCOMMENT
LOWintegration/route_test.go4281// docker network disconnects — the same failure primitive nblockCOMMENT
LOWintegration/scenario.go61COMMENT
LOWintegration/scenario.go121COMMENT
LOWintegration/scenario.go141COMMENT
LOWintegration/scenario.go161 // OIDCSkipUserCreation, if true, skips creating users via headscale CLICOMMENT
LOWintegration/scenario.go1801 // httpClient := &http.Client{}COMMENT
LOWintegration/k8s_operator_test.go41 Sources: []policyv2.Alias{policyv2.Wildcard},COMMENT
LOWintegration/cli_policy_test.go21// - policyMode: server runs with policy_mode=file vs policy_mode=database.COMMENT
LOWintegration/tsic/tsic.go1621// SaveLog saves the current stdout log of the container to a pathCOMMENT
LOWintegration/wasmic/wasmclient/main.go1//go:build jsCOMMENT
LOWintegration/k3sic/k3sic.go1// Package k3sic wraps a single-container k3s cluster (server + agent) as aCOMMENT
LOWintegration/k3sic/k3sic.go221COMMENT
LOWintegration/k3sic/k3sic.go241COMMENT
LOWintegration/k3sic/k3sic.go461 // Proxy pods' tailscaled logs: DERP-connection and registration failuresCOMMENT
LOWgen/client/v1/client.gen.go481 // Takes any type of body and a specified content type.COMMENT
LOWgen/client/v1/client.gen.go501 //COMMENT
236 more matches not shown…
Structural Annotation Overuse95 hits · 124 pts
SeverityFileLineSnippetContext
LOWconfig-example.yaml45# WARNING: These prefixes MUST be subsets of the standard Tailscale ranges:COMMENT
LOWintegration/auth_oidc_test.go1837 // Step 1: Verify initial route is advertised, approved, and SERVINGCOMMENT
LOWintegration/auth_oidc_test.go1866 // Step 2: LogoutCOMMENT
LOWintegration/auth_oidc_test.go1888 // Step 3: Re-authenticate via OIDC as the same userCOMMENT
LOWintegration/auth_oidc_test.go1906 // Step 4: THE CRITICAL TEST - Verify routes are STILL SERVING after re-authenticationCOMMENT
LOWintegration/auth_key_test.go610 // Step 1: Verify initial route is advertised, approved, and SERVINGCOMMENT
LOWintegration/auth_key_test.go639 // Step 2: LogoutCOMMENT
LOWintegration/auth_key_test.go661 // Step 3: Re-authenticate with the SAME user (using auth key)COMMENT
LOWintegration/auth_key_test.go684 // Step 4: THE CRITICAL TEST - Verify routes are STILL SERVING after re-authenticationCOMMENT
LOW⚡integration/acl_test.go2809 // Step 1: Verify initial state - HTTP on port 80 should work with tag:webserverCOMMENT
LOW⚡integration/acl_test.go2815 // Step 2: Change tag from webserver to sshonlyCOMMENT
LOW⚡integration/acl_test.go3275 // Step 4: Create a NEW user - this triggers [State.updatePolicyManagerUsers]COMMENT
LOW⚡integration/acl_test.go3282 // Step 5: THE CRITICAL TEST - verify connectivity STILL worksCOMMENT
LOWintegration/acl_test.go2573 // Step 1: Verify initial access stateCOMMENT
LOWintegration/acl_test.go2606 // Step 2: Apply tag changeCOMMENT
LOWintegration/acl_test.go2624 // Step 3: Verify final NetMap visibility first (fast signal thatCOMMENT
LOWintegration/acl_test.go2652 // Step 4: Verify final access state (this is the key test for #2389).COMMENT
LOWintegration/acl_test.go2836 // Step 3: Verify peer is still visible in NetMap (partial access, not full removal)COMMENT
LOWintegration/acl_test.go2855 // Step 4: Verify HTTP on port 80 now fails (tag:sshonly only allows port 22).COMMENT
LOWintegration/acl_test.go3051 // Step 1: Verify initial connectivity - all users can reach each otherCOMMENT
LOWintegration/acl_test.go3063 // Step 2: Get user3's node and user, then delete themCOMMENT
LOWintegration/acl_test.go3088 // Step 3: Verify that user1 and user2 can still communicate (before triggering policy refresh)COMMENT
LOWintegration/acl_test.go3099 // Step 4: Create a NEW user - this triggers [State.updatePolicyManagerUsers] whichCOMMENT
LOWintegration/acl_test.go3111 // Step 5: THIS IS THE CRITICAL TEST - verify connectivity STILL works afterCOMMENT
LOWintegration/acl_test.go3228 // Step 1: Verify initial connectivity - user1 and user3 can ping each otherCOMMENT
LOWintegration/acl_test.go3242 // Step 2: Delete user2's node and user (like reporter deleting "deleteable")COMMENT
LOWintegration/acl_test.go3260 // Step 3: Verify connectivity still works after user2 deletionCOMMENT
LOWintegration/acl_test.go3392 // Step 1: Verify initial connectivity with VALID policyCOMMENT
LOWintegration/acl_test.go3406 // Step 2: DYNAMICALLY update policy to add unknown userCOMMENT
LOWintegration/acl_test.go3436 // Step 3: THE CRITICAL TEST - verify connectivity STILL worksCOMMENT
LOWintegration/acl_test.go3540 // Step 1: Verify initial connectivity WITH unknown user in policyCOMMENT
LOWintegration/acl_test.go3555 // Step 2: Update policy to REMOVE the unknown userCOMMENT
LOWintegration/acl_test.go3584 // Step 3: Verify connectivity after removing unknown userCOMMENT
LOW⚡integration/tags_test.go3391 // Step 3: Register via CLI with user (the step that triggered the panic)COMMENT
LOW⚡integration/tags_test.go3398 // Step 4: The tagged node stays and the user gets a device of its own. TheCOMMENT
LOWintegration/tags_test.go527 // Step 2: Admin assigns different tags via headscale CLICOMMENT
LOWintegration/tags_test.go549 // Step 3: Force reauthenticationCOMMENT
LOWintegration/tags_test.go858 // Step 2: Admin assigns multiple tags via headscale CLICOMMENT
LOWintegration/tags_test.go879 // Step 3: Attempt to reduce tags via CLICOMMENT
LOWintegration/tags_test.go1220 // Step 2: Admin assigns tagsCOMMENT
LOWintegration/tags_test.go1241 // Step 3: Run tailscale up with --resetCOMMENT
LOWintegration/tags_test.go1339 // Step 2: Admin assigns tagsCOMMENT
LOWintegration/tags_test.go1360 // Step 3: Run tailscale up with empty --advertise-tagsCOMMENT
LOWintegration/tags_test.go1458 // Step 2: Admin assigns multiple tagsCOMMENT
LOWintegration/tags_test.go1479 // Step 3: Attempt to reduce tags via CLICOMMENT
LOWintegration/tags_test.go1757 // Step 1: Create and register with one tagCOMMENT
LOWintegration/tags_test.go1787 // Step 2: Try to add second tag via CLICOMMENT
LOWintegration/tags_test.go1848 // Step 1: Create and register with two tagsCOMMENT
LOWintegration/tags_test.go1878 // Step 2: Try to remove second tag via CLICOMMENT
LOWintegration/tags_test.go1939 // Step 1: Register with one tagCOMMENT
LOWintegration/tags_test.go1973 // Step 2: Admin assigns different tagCOMMENT
LOWintegration/tags_test.go1993 // Step 3: Try to change tags via CLICOMMENT
LOWintegration/tags_test.go2056 // Step 1: Register with one tagCOMMENT
LOWintegration/tags_test.go2089 // Step 2: Admin assigns both tagsCOMMENT
LOWintegration/tags_test.go2109 // Step 3: Try to reduce tags via CLICOMMENT
LOWintegration/tags_test.go2783 // Step 2: Admin changes tag to tag:second (FIRST CALL - this is "tag:bar" in issue terms)COMMENT
LOWintegration/tags_test.go2838 // Step 3: Call SetNodeTags AGAIN with the SAME tag (SECOND CALL)COMMENT
LOWintegration/tags_test.go2857 // Step 4: Do another tag change to verify the pattern repeatsCOMMENT
LOWintegration/tags_test.go2893 // Step 5: Call SetNodeTags AGAIN with the SAME tagCOMMENT
LOWintegration/tags_test.go3043 // Step 1: Create and register a node with tagsCOMMENT
35 more matches not shown…
Verbosity Indicators94 hits · 123 pts
SeverityFileLineSnippetContext
LOWintegration/auth_oidc_test.go1837 // Step 1: Verify initial route is advertised, approved, and SERVINGCOMMENT
LOWintegration/auth_oidc_test.go1866 // Step 2: LogoutCOMMENT
LOWintegration/auth_oidc_test.go1888 // Step 3: Re-authenticate via OIDC as the same userCOMMENT
LOWintegration/auth_oidc_test.go1906 // Step 4: THE CRITICAL TEST - Verify routes are STILL SERVING after re-authenticationCOMMENT
LOWintegration/auth_key_test.go610 // Step 1: Verify initial route is advertised, approved, and SERVINGCOMMENT
LOWintegration/auth_key_test.go639 // Step 2: LogoutCOMMENT
LOWintegration/auth_key_test.go661 // Step 3: Re-authenticate with the SAME user (using auth key)COMMENT
LOWintegration/auth_key_test.go684 // Step 4: THE CRITICAL TEST - Verify routes are STILL SERVING after re-authenticationCOMMENT
LOW⚡integration/acl_test.go2809 // Step 1: Verify initial state - HTTP on port 80 should work with tag:webserverCOMMENT
LOW⚡integration/acl_test.go2815 // Step 2: Change tag from webserver to sshonlyCOMMENT
LOW⚡integration/acl_test.go3275 // Step 4: Create a NEW user - this triggers [State.updatePolicyManagerUsers]COMMENT
LOW⚡integration/acl_test.go3282 // Step 5: THE CRITICAL TEST - verify connectivity STILL worksCOMMENT
LOWintegration/acl_test.go2573 // Step 1: Verify initial access stateCOMMENT
LOWintegration/acl_test.go2606 // Step 2: Apply tag changeCOMMENT
LOWintegration/acl_test.go2624 // Step 3: Verify final NetMap visibility first (fast signal thatCOMMENT
LOWintegration/acl_test.go2652 // Step 4: Verify final access state (this is the key test for #2389).COMMENT
LOWintegration/acl_test.go2836 // Step 3: Verify peer is still visible in NetMap (partial access, not full removal)COMMENT
LOWintegration/acl_test.go2855 // Step 4: Verify HTTP on port 80 now fails (tag:sshonly only allows port 22).COMMENT
LOWintegration/acl_test.go3051 // Step 1: Verify initial connectivity - all users can reach each otherCOMMENT
LOWintegration/acl_test.go3063 // Step 2: Get user3's node and user, then delete themCOMMENT
LOWintegration/acl_test.go3088 // Step 3: Verify that user1 and user2 can still communicate (before triggering policy refresh)COMMENT
LOWintegration/acl_test.go3099 // Step 4: Create a NEW user - this triggers [State.updatePolicyManagerUsers] whichCOMMENT
LOWintegration/acl_test.go3111 // Step 5: THIS IS THE CRITICAL TEST - verify connectivity STILL works afterCOMMENT
LOWintegration/acl_test.go3228 // Step 1: Verify initial connectivity - user1 and user3 can ping each otherCOMMENT
LOWintegration/acl_test.go3242 // Step 2: Delete user2's node and user (like reporter deleting "deleteable")COMMENT
LOWintegration/acl_test.go3260 // Step 3: Verify connectivity still works after user2 deletionCOMMENT
LOWintegration/acl_test.go3392 // Step 1: Verify initial connectivity with VALID policyCOMMENT
LOWintegration/acl_test.go3406 // Step 2: DYNAMICALLY update policy to add unknown userCOMMENT
LOWintegration/acl_test.go3436 // Step 3: THE CRITICAL TEST - verify connectivity STILL worksCOMMENT
LOWintegration/acl_test.go3540 // Step 1: Verify initial connectivity WITH unknown user in policyCOMMENT
LOWintegration/acl_test.go3555 // Step 2: Update policy to REMOVE the unknown userCOMMENT
LOWintegration/acl_test.go3584 // Step 3: Verify connectivity after removing unknown userCOMMENT
LOW⚡integration/tags_test.go3391 // Step 3: Register via CLI with user (the step that triggered the panic)COMMENT
LOW⚡integration/tags_test.go3398 // Step 4: The tagged node stays and the user gets a device of its own. TheCOMMENT
LOWintegration/tags_test.go527 // Step 2: Admin assigns different tags via headscale CLICOMMENT
LOWintegration/tags_test.go549 // Step 3: Force reauthenticationCOMMENT
LOWintegration/tags_test.go858 // Step 2: Admin assigns multiple tags via headscale CLICOMMENT
LOWintegration/tags_test.go879 // Step 3: Attempt to reduce tags via CLICOMMENT
LOWintegration/tags_test.go1220 // Step 2: Admin assigns tagsCOMMENT
LOWintegration/tags_test.go1241 // Step 3: Run tailscale up with --resetCOMMENT
LOWintegration/tags_test.go1339 // Step 2: Admin assigns tagsCOMMENT
LOWintegration/tags_test.go1360 // Step 3: Run tailscale up with empty --advertise-tagsCOMMENT
LOWintegration/tags_test.go1458 // Step 2: Admin assigns multiple tagsCOMMENT
LOWintegration/tags_test.go1479 // Step 3: Attempt to reduce tags via CLICOMMENT
LOWintegration/tags_test.go1757 // Step 1: Create and register with one tagCOMMENT
LOWintegration/tags_test.go1787 // Step 2: Try to add second tag via CLICOMMENT
LOWintegration/tags_test.go1848 // Step 1: Create and register with two tagsCOMMENT
LOWintegration/tags_test.go1878 // Step 2: Try to remove second tag via CLICOMMENT
LOWintegration/tags_test.go1939 // Step 1: Register with one tagCOMMENT
LOWintegration/tags_test.go1973 // Step 2: Admin assigns different tagCOMMENT
LOWintegration/tags_test.go1993 // Step 3: Try to change tags via CLICOMMENT
LOWintegration/tags_test.go2056 // Step 1: Register with one tagCOMMENT
LOWintegration/tags_test.go2089 // Step 2: Admin assigns both tagsCOMMENT
LOWintegration/tags_test.go2109 // Step 3: Try to reduce tags via CLICOMMENT
LOWintegration/tags_test.go2783 // Step 2: Admin changes tag to tag:second (FIRST CALL - this is "tag:bar" in issue terms)COMMENT
LOWintegration/tags_test.go2838 // Step 3: Call SetNodeTags AGAIN with the SAME tag (SECOND CALL)COMMENT
LOWintegration/tags_test.go2857 // Step 4: Do another tag change to verify the pattern repeatsCOMMENT
LOWintegration/tags_test.go2893 // Step 5: Call SetNodeTags AGAIN with the SAME tagCOMMENT
LOWintegration/tags_test.go3043 // Step 1: Create and register a node with tagsCOMMENT
LOWintegration/tags_test.go3084 // Step 2: Reauth with empty tags to remove all tagsCOMMENT
34 more matches not shown…
Fake / Example Data72 hits · 67 pts
SeverityFileLineSnippetContext
LOWhscontrol/types/config_test.go1408 Email: "admin@example.com",CODE
LOWhscontrol/types/testcapture/testcapture_test.go425 "full_policy": {"tagOwners": {"tag:ops": ["user@example.com"]}},CODE
LOWhscontrol/types/testcapture/testcapture_test.go443 want := `{"tagOwners":{"tag:ops":["user@example.com"]}}`CODE
LOWhscontrol/servertest/via_ha_compat_test.go404 "thor@example.org": "thor",CODE
LOWhscontrol/templates/auth_success.go25 // e.g. "user@example.com".COMMENT
LOWhscontrol/policy/v2/policy_test.go1152 {ID: 1, Name: "admin", Email: "admin@example.com"},CODE
LOWhscontrol/policy/v2/policy_test.go1191 "group:admin": ["admin@example.com"]CODE
LOWhscontrol/policy/v2/policy_test.go1315 {ID: 2, Name: "admin", Email: "admin@example.com"},CODE
LOWhscontrol/policy/v2/policy_test.go1397 "group:admin": ["admin@example.com"],CODE
LOWhscontrol/policy/v2/policy_test.go1480 {ID: 1, Name: "admin", Email: "admin@example.com"},CODE
LOWhscontrol/policy/v2/policy_test.go1510 "group:admin": ["admin@example.com"]CODE
LOWhscontrol/policy/v2/policy_test.go1546 {ID: 1, Name: "admin", Email: "admin@example.com"},CODE
LOWhscontrol/policy/v2/policy_test.go1585 "group:admin": ["admin@example.com"]CODE
LOWhscontrol/policy/v2/policytester_compat_test.go48 {ID: 2, Name: "thor", Email: "thor@example.org"},CODE
LOW⚡hscontrol/policy/v2/types_test.go42 Group("group:example"): []Username{Username("user@example.com")},CODE
LOW⚡hscontrol/policy/v2/types_test.go48 Tag("tag:test"): Owners{up("user@example.com")},CODE
LOW⚡hscontrol/policy/v2/types_test.go55 new(Username("user@example.com")),CODE
LOW⚡hscontrol/policy/v2/types_test.go6052 "tagOwners": {"tag:server": ["admin@example.org"]},CODE
LOW⚡hscontrol/policy/v2/types_test.go6054 {"src": "thor@example.org", "dst": ["tag:server"], "accept": ["root"]}CODE
LOW⚡hscontrol/policy/v2/types_test.go6063 require.Equal(t, "thor@example.org", got.Src.String())CODE
LOW⚡hscontrol/policy/v2/types_test.go6128 "tagOwners": {"tag:server": ["admin@example.org"]},CODE
LOW⚡hscontrol/policy/v2/types_test.go6130 {"src": "thor@example.org", "dst": ["tag:server:22"], "accept": ["root"]}CODE
LOW⚡hscontrol/policy/v2/types_test.go6140 "tagOwners": {"tag:server": ["admin@example.org"]},CODE
LOW⚡hscontrol/policy/v2/types_test.go6142 {"src": "thor@example.org", "dst": ["10.0.0.0/8"], "accept": ["root"]}CODE
LOW⚡hscontrol/policy/v2/types_test.go6198 "tagOwners": {"tag:server": ["admin@example.org"]},CODE
LOW⚡hscontrol/policy/v2/types_test.go6200 {"src": "thor@example.org", "dst": ["autogroup:internet"], "accept": ["root"]}CODE
LOW⚡hscontrol/policy/v2/types_test.go6210 "tagOwners": {"tag:server": ["admin@example.org"]},CODE
LOW⚡hscontrol/policy/v2/types_test.go6212 {"src": "thor@example.org", "dst": ["tag:not-in-tagOwners"], "accept": ["root"]}CODE
LOW⚡hscontrol/policy/v2/types_test.go6222 "tagOwners": {"tag:server": ["admin@example.org"]},CODE
LOWhscontrol/policy/v2/types_test.go74 assert.Contains(t, jsonString, "user@example.com")CODE
LOWhscontrol/policy/v2/types_test.go422 "group:c": ["thor@example.org"],CODE
LOWhscontrol/policy/v2/types_test.go661 "group:admins": ["admin@example.com"]CODE
LOWhscontrol/policy/v2/types_test.go682 Group("group:admins"): []Username{Username("admin@example.com")},CODE
LOWhscontrol/policy/v2/types_test.go709 "tag:web": ["admin@example.com"],CODE
LOWhscontrol/policy/v2/types_test.go710 "tag:server": ["admin@example.com"]CODE
LOWhscontrol/policy/v2/types_test.go733 "group:admins": ["admin@example.com"]CODE
LOWhscontrol/policy/v2/types_test.go752 Group("group:admins"): []Username{Username("admin@example.com")},CODE
LOWhscontrol/policy/v2/types_test.go1031 "group:test": ["user@example.com"],CODE
LOWhscontrol/policy/v2/types_test.go1032 "INVALID_GROUP_FIELD": ["user@example.com"]CODE
LOWhscontrol/policy/v2/types_test.go1043 "group:test": ["user@example.com"],CODE
LOWhscontrol/policy/v2/types_test.go1055 "group:test": ["user@example.com"],CODE
LOWhscontrol/policy/v2/types_test.go1079 "tag:test": ["user@example.com"],CODE
LOWhscontrol/policy/v2/types_test.go1110 "src": ["user@example.com"],CODE
LOWhscontrol/policy/v2/types_test.go1111 "dst": ["user@example.com"],CODE
LOWhscontrol/policy/v2/types_test.go1143 "10.0.0.0/8": ["user@example.com"]CODE
LOWhscontrol/policy/v2/types_test.go1145 "exitNode": ["user@example.com"],CODE
LOWhscontrol/policy/v2/types_test.go1198 "user@example.com"CODE
LOWhscontrol/policy/v2/types_test.go1201 "user@example.com"CODE
LOWhscontrol/policy/v2/types_test.go2175 "tag:client": ["admin@example.com"]CODE
LOWhscontrol/policy/v2/types_test.go2197 "tag:client": ["admin@example.com"]CODE
LOWhscontrol/policy/v2/types_test.go2217 "tag:client": ["admin@example.com"]CODE
LOWhscontrol/policy/v2/types_test.go2237 "tag:client": ["admin@example.com"]CODE
LOWhscontrol/policy/v2/types_test.go6076 "tagOwners": {"tag:server": ["admin@example.org"]},CODE
LOWhscontrol/policy/v2/types_test.go6079 "src": "thor@example.org",CODE
LOWhscontrol/policy/v2/types_test.go6105 "tagOwners": {"tag:server": ["admin@example.org"]},CODE
LOWhscontrol/policy/v2/types_test.go6107 {"src": "thor@example.org", "dst": ["tag:server"]}CODE
LOWhscontrol/policy/v2/types_test.go6156 "tagOwners": {"tag:server": ["admin@example.org"]},CODE
LOWhscontrol/policy/v2/types_test.go6158 {"src": "thor@example.org", "dst": ["100.64.0.16"], "accept": ["root"]}CODE
LOWhscontrol/policy/v2/types_test.go6178 "tagOwners": {"tag:server": ["admin@example.org"]},CODE
LOWhscontrol/policy/v2/types_test.go6180 {"src": "thor@example.org", "dst": ["fd7a:115c:a1e0::10"], "accept": ["root"]}CODE
12 more matches not shown…
AI Slop Vocabulary2 hits · 6 pts
SeverityFileLineSnippetContext
MEDIUMintegration/route_test.go684 // Get the expected router IP - use a more robust approach to handle temporary disconnectionsCOMMENT
MEDIUMintegration/dockertestutil/config.go70 // This could be improved with more robust detection if neededCOMMENT
Redundant / Tautological Comments2 hits · 3 pts
SeverityFileLineSnippetContext
LOWintegration/run.sh59# Check if both arguments are providedCOMMENT
LOW.github/workflows/needs-more-info-timer.yml81 # Check if 3 days have passedCOMMENT
Modern AI Meta-Vocabulary1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMintegration/README.md52## Required scaffoldingCOMMENT
TODO Padding1 hit · 2 pts
SeverityFileLineSnippetContext
LOWhscontrol/mapper/tail_test.go203 // TODO: Add tests to check other aspects of the node conversion:COMMENT