+0.04 A most elegant TCP hole punching algorithm (robertsdotpm.github.io S:+0.00 )
219 points by Uptrenda 7 days ago | 109 comments on HN | Neutral Low agreement (3 models) Editorial · v3.7 · 2026-03-15 22:43:55 0
Summary Free Expression & Scientific Knowledge Advocates
This technical documentation advocates for free access to cryptographic knowledge by publishing a detailed educational tutorial on TCP hole punching algorithms. The content strongly supports Articles 19 (free expression through unrestricted information dissemination), 26 (educational access), and 27 (scientific participation) through free public access and comprehensive technical explanation. However, structural accessibility barriers regress rights for readers with disabilities, and the content remains primarily technical rather than explicitly rights-focused.
Rights Tensions 1 pair
Art 19 Art 2 Free expression of technical knowledge is maximized through unrestricted public access, but accessibility barriers for disabled readers limit equal enjoyment of that knowledge expression.
Article Heatmap
Preamble: +0.09 — Preamble P Article 1: +0.03 — Freedom, Equality, Brotherhood 1 Article 2: -0.27 — Non-Discrimination 2 Article 3: 0.00 — Life, Liberty, Security 3 Article 4: 0.00 — No Slavery 4 Article 5: 0.00 — No Torture 5 Article 6: 0.00 — Legal Personhood 6 Article 7: 0.00 — Equality Before Law 7 Article 8: 0.00 — Right to Remedy 8 Article 9: 0.00 — No Arbitrary Detention 9 Article 10: 0.00 — Fair Hearing 10 Article 11: 0.00 — Presumption of Innocence 11 Article 12: +0.06 — Privacy 12 Article 13: 0.00 — Freedom of Movement 13 Article 14: 0.00 — Asylum 14 Article 15: 0.00 — Nationality 15 Article 16: 0.00 — Marriage & Family 16 Article 17: 0.00 — Property 17 Article 18: 0.00 — Freedom of Thought 18 Article 19: +0.62 — Freedom of Expression 19 Article 20: 0.00 — Assembly & Association 20 Article 21: 0.00 — Political Participation 21 Article 22: 0.00 — Social Security 22 Article 23: 0.00 — Work & Equal Pay 23 Article 24: 0.00 — Rest & Leisure 24 Article 25: 0.00 — Standard of Living 25 Article 26: +0.20 — Education 26 Article 27: +0.35 — Cultural Participation 27 Article 28: 0.00 — Social & International Order 28 Article 29: 0.00 — Duties to Community 29 Article 30: 0.00 — No Destruction of Rights 30
Negative Neutral Positive No Data
Aggregates
E
+0.04
S
+0.00
Weighted Mean +0.06 Unweighted Mean +0.04
Max +0.62 Article 19 Min -0.27 Article 2
Signal 31 No Data 0
Volatility 0.14 (Medium)
Negative 1 Channels E: 0.6 S: 0.4
SETL +0.17 Editorial-dominant
FW Ratio 57% 16 facts · 12 inferences
Agreement Low 3 models · spread ±0.222
Evidence 54% coverage
1H 4M 2L
Theme Radar
Foundation Security Legal Privacy & Movement Personal Expression Economic & Social Cultural Order & Duties Foundation: -0.05 (3 articles) Security: 0.00 (3 articles) Legal: 0.00 (6 articles) Privacy & Movement: 0.01 (4 articles) Personal: 0.00 (3 articles) Expression: 0.21 (3 articles) Economic & Social: 0.00 (4 articles) Cultural: 0.28 (2 articles) Order & Duties: 0.00 (3 articles)
HN Discussion 16 top-level · 17 replies
jcalvinowens 2026-03-15 05:28 UTC link
If you're asking "where is the listener", you don't need one: https://datatracker.ietf.org/doc/html/rfc9293#simul_connect
EnigmaCurry 2026-03-15 05:37 UTC link
> Many home routers try to preserve the source port in external mappings. This is a property called “equal delta mapping” – it won’t work on all routers but for our algorithm we’re sacrificing coverage for simplicity.

It is precisely this point that has flummoxed me when connecting my p2p wireguard config[1] with a friend that uses a pfsense router, no matter what we tried, pfsense always chooses a random source port.

But in the simple case this blog outlines, if both ends use the same source port, this method punches through 2 firewalls effortlessly:

[1] https://blog.rymcg.tech/blog/linux/wireguard_p2p/

athrowaway3z 2026-03-15 06:59 UTC link
- you know each others IP's (or have a way to signal it)

- can't decide on a port in the same message

- don't suffer from NAT port randomization

I'm not saying it will never happen, but the Venn diagram of this being the minimum complexity solution just doesn't seem very large?

sholladay 2026-03-15 06:59 UTC link
This is a great algorithm!

In this era where AI is eating away at how deterministic computers are, I really appreciate reading about an elegant solution to a real problem using deterministic logic.

Veserv 2026-03-15 07:32 UTC link
Needing to punch holes in NAT is one of the most idiotic own-goals in the entire field of networking.

NAT is effectively your router doing DHCP with a 17-bit suffix (16-bit port + 1 bit for UDP vs TCP) to each of your applications and then not telling you the address it gave you or how long it is good for (which is what a regular DHCP lease does). This is in addition to it, most likely, already doing regular DHCP and allocating you a IP address that it does tell you about, but which is basically worthless since routing to just that prefix without the hidden suffix goes into a black hole.

If you could just ask your router for a lease on a chunk of IP+NAT addresses that you could allocate to your applications and rotate them as they expire, you would not need this horrifying mess.

The router would just need to maintain the last-leg routing table (what a concept, a router doing routing with routing tables) just like it already does DHCP.

The applications would have short-term stable addresses that they could just tell their peers and just directly tell the router/firewall to block anybody except the desired peer short-term address.

lxgr 2026-03-15 08:46 UTC link
Does TCP hole punching actually work with common CPEs and CG-NATs?

I don’t think I’ve ever seen it done successfully and have often wondered if it’s for a lack of use cases or due to its bad success rate and complexity compared to UDP hole punching.

That said, I really wish there was a standardized way to do it. Some sort of explicit (or at least implicit but unambiguous) indicator to all firewalls that a connection from a given host/port pair is desired for the next few seconds. Basically a lightweight, in-band port mapping protocol.

It could have well been an official recommendation to facilitate TCP hole punching, but I guess it’s too late now, as firewall behaviors have had decades to evolve into different directions.

ufocia 2026-03-15 12:02 UTC link
Meh. "It is assumed another process will coordinate the running of this tool." Coordination is the crux of the problem for fast convergence. Otherwise you're stuck with an infinity cubed, hypercubed, or worse problem.
ata-sesli 2026-03-15 12:27 UTC link
The timestamp bucket idea for generating shared port candidates is clever.

Do you find this works reliably outside routers that preserve source ports? My understanding was that TCP punching tends to depend heavily on NAT behavior.

enoint 2026-03-15 12:29 UTC link
Looks like a typo in the degraded timestamp “bucket”. That “window” value should be based on the min threshold.
sylware 2026-03-15 12:53 UTC link
Dudes: IPv6, please, come on, meh.
melson 2026-03-15 14:27 UTC link
I made a udp Windows wintun based p2p vpn tunnel https://github.com/mascarenhasmelson/Windows-P2P-UDP
jder 2026-03-15 16:29 UTC link
I don’t think the bucket-choosing algorithm works? The two hosts can be just on opposite sides of a bucket edge. For example if one host sees t=61 and another sees t=62, they will get different buckets despite being less than 20 seconds apart. You’ve got to check adjacent buckets within your error tolerance, not expand the bucket windows in size based on it.
abcd_f 2026-03-15 17:20 UTC link
Claimed elegance is based on a very bold assumption that the NAT device preserves the source port of outbound connection.

Hardly the case in even half of typical deployment cases.

ray_v 2026-03-15 20:43 UTC link
One thing about this get I just realized is that if the defect exists on some home networking equipment, then the defect can be leveraged in corporate network environments to disable this functionality. If the user of the algorithm (or, person using an app using it for userspace) isn't aware of the limitations, that would be super frustrating!
kordlessagain 2026-03-16 00:16 UTC link
This perfectly eliminates the last centralized bottleneck for P2P agent networks.

We are dropping this deterministic punch directly into the grubcrawler.dev edge binaries. Instead of relying on STUN/TURN servers to coordinate a swarm, millions of nodes trapped behind residential NATs will use the unix timestamp to mathematically predict a collision course, aggressively punch through their firewalls, and instantly hand the raw TCP socket over to rust-lightning (LDK).

No DNS. No signaling servers. No legacy IP registries. Just a self-assembling Lightning mesh of autonomous agents spinning up encrypted channels and executing paid RPC calls entirely in the dark.

stainlu 2026-03-16 01:49 UTC link
The deeper question is whether the problem this solves is still worth solving with this level of complexity. A TURN relay on a $5/month VPS handles TCP and UDP, works behind any NAT topology including CGNAT, and takes about 20 minutes to set up with coturn. WebRTC defaults to TURN fallback not out of laziness but because the engineering effort to handle the long tail of NAT behaviors (symmetric NAT, CGNAT, mobile carriers that actively block SYN from non-established flows) exceeds the cost of just relaying.

That said, I think the article's real contribution is pedagogical. The timestamp-to-port derivation strips away infrastructure complexity (STUN, signaling servers, NTP) so you can see the actual packet dance clearly. Evaluated as a teaching tool for how NAT traversal works mechanically, it's genuinely useful. Evaluated as a production solution, the comments here are right that the constraints are too narrow.

jonathanlydall 2026-03-15 06:27 UTC link
Does your friend setting up port forwarding on their pfSense not help in your scenario?
cperciva 2026-03-15 07:22 UTC link
RFCs may say that simultaneous connect must be allowed, but that doesn't mean that firewalls can't block it. Plenty of setups block incoming SYN,!ACK packets, and if both sides do that, the connection is never getting established.
eptcyka 2026-03-15 07:35 UTC link
Why not use plain IPv6 instead?
takipsizad 2026-03-15 07:52 UTC link
it's been already done ISPs just don't properly implement it (NAT-PMP and it's relatives)
lxgr 2026-03-15 08:52 UTC link
> If you could just ask your router for a lease on a chunk of IP+NAT addresses

The “just” is doing a lot of lifting there. I’m glad the various port mapping protocols didn’t really take off and it looks like IPv6 is going to actually make it instead. Much less complexity in most parts of the stack and network.

littlestymaar 2026-03-15 09:10 UTC link
Hole punching is doing exactly what you describe, just in a non-standardized way.

We could have a standard for doing that directly at the NAT box level instead of relying on a third party STUN server, it simply didn't happen (and in fairness, the benefits would be quite minimal).

CamelCaseCondo 2026-03-15 09:13 UTC link
We still live in an age of deterministic computers. It’s the software that’s become fuzzy. (And since we’re on the subject: there’s no AI)
hdgvhicv 2026-03-15 10:56 UTC link
In my experience, Cisco ASA does source port persistence by default (when it can’t do it then it falls back to random), fortigates can do it (in various ways depending on version, although fallback method in the map-ports doesn’t work), juniper SRXs can’t, unless you guarentee a 1:1 map.
ignoramous 2026-03-15 13:06 UTC link
> really wish there was a standardized way to do it. Some sort of explicit (or at least implicit but unambiguous) indicator to all firewalls that a connection from a given host/port pair is desired for the next few seconds

NAT Behavioural Requirements for Unicast UDP, https://datatracker.ietf.org/doc/html/rfc4787

NAT Behavioural Requirements for TCP, https://datatracker.ietf.org/doc/html/rfc5382

Arch485 2026-03-15 15:08 UTC link
I think many people know how to google "what is my IP" and send that to a friend, but don't necessarily know what a port is.

NAT randomization, I don't know. Depends on your setup, I guess.

aboardRat4 2026-03-15 15:42 UTC link
The standard way to do it is called ipv6. Implementing it is probably easier than any of those RFCs
jeroenhd 2026-03-15 15:48 UTC link
If only router manufacturers could be trusted to implement UPnP safely, then none I'd this bullshit would be necessary.

At least with IPv6 this crap becomes a little easier because you no longer have randomized source ports (which this article just ignores because some devices indeed maintain the same source port) and the IP address contains all the routing information you need. A simple simultaneous open is all you need.

taftster 2026-03-15 17:40 UTC link
I like your comment, but it seems the author acknowledged this as a caveat to the algorithm.

>Many home routers try to preserve the source port in external mappings. This is a property called “equal delta mapping” – it won’t work on all routers but for our algorithm we’re sacrificing coverage for simplicity.

So to what percentage is this coverage sacrificed exactly? No idea. Not as useful if the percentage is high, as you are implying.

K0IN 2026-03-15 22:14 UTC link
i was also thinking about this, what keeps you from just using a (predefined) random port (or 10)?
ranger_danger 2026-03-15 23:03 UTC link
Can't both sides just keep trying different ports until they get lucky? There's not that many of them, and even if it takes several minutes to get a match, that's better than nothing at all.
kpil 2026-03-15 23:36 UTC link
My internet provider didn't even maintain the ip-address. They have a pool of egress routes and seems to route round-robin. Basically every new connection can be from any address in the pool.

I had to call them to make it stop since it tripped the VPN solution at work, that interpreted it as a MIM attack. They disabled it no questions asked as soon as I called, so I guess it mostly works for most people, but not all.

But on that note, isn't it basically time now for IPv6 so we can stop shit like this and go to directly addressable devices like everyone did in the early 90s.

majorchord 2026-03-16 01:55 UTC link
maybe in another 20 years my local monopoly will consider IPv6 adoption, but I'm not holding my breath
Editorial Channel
What the content says
+0.40
Article 19 Freedom of Expression
High A: Free expression through technical knowledge dissemination P: Unrestricted public access
Editorial
+0.40
SETL
+0.28

Content directly advances free expression and information access. Educational publication of cryptography research supports the right to seek, receive, and impart information without interference. No gatekeeping or censorship.

+0.35
Article 27 Cultural Participation
Medium A: Scientific knowledge advancement P: Unrestricted technical dissemination
Editorial
+0.35
SETL
+0.30

Content directly advances participation in scientific and technical culture. Publication of cryptographic research contributes to shared scientific progress. No restrictions on who may access or benefit from technical knowledge.

+0.25
Article 26 Education
Medium A: Educational access and scientific participation
Editorial
+0.25
SETL
+0.25

Content advances right to education through technical knowledge dissemination. Free publication supports universal access to scientific and technical education without discrimination. Enables readers to participate in cryptographic research field.

+0.15
Preamble Preamble
Medium A: Educational accessibility
Editorial
+0.15
SETL
+0.15

Content promotes human dignity and mutual respect through knowledge dissemination of cryptographic techniques. Technical documentation advances shared human understanding of network security.

+0.10
Article 12 Privacy
Low A: Privacy and anonymity enablement
Editorial
+0.10
SETL
+0.10

TCP hole punching enables peer-to-peer communication that can circumvent centralized surveillance. Content does not explicitly discuss privacy but technique itself supports privacy-preserving network architectures.

+0.05
Article 1 Freedom, Equality, Brotherhood
Low
Editorial
+0.05
SETL
+0.05

Technical content does not directly address equality or freedom; neutral treatment of algorithm.

0.00
Article 3 Life, Liberty, Security
Editorial
0.00
SETL
ND

Right to life not engaged by technical cryptography documentation.

0.00
Article 4 No Slavery
Editorial
0.00
SETL
ND

Slavery and servitude not engaged by technical documentation.

0.00
Article 5 No Torture
Editorial
0.00
SETL
ND

Torture and cruel treatment not engaged by technical cryptography content.

0.00
Article 6 Legal Personhood
Editorial
0.00
SETL
ND

Right to recognition as a person not engaged by technical documentation.

0.00
Article 7 Equality Before Law
Editorial
0.00
SETL
ND

Equality before law not engaged by cryptography tutorial.

0.00
Article 8 Right to Remedy
Editorial
0.00
SETL
ND

Right to effective remedy not engaged by technical documentation.

0.00
Article 9 No Arbitrary Detention
Editorial
0.00
SETL
ND

Arbitrary detention not engaged by cryptography content.

0.00
Article 10 Fair Hearing
Editorial
0.00
SETL
ND

Fair trial rights not engaged by technical documentation.

0.00
Article 11 Presumption of Innocence
Editorial
0.00
SETL
ND

Criminal responsibility not engaged by cryptography tutorial.

0.00
Article 13 Freedom of Movement
Editorial
0.00
SETL
ND

Freedom of movement not engaged by technical documentation.

0.00
Article 14 Asylum
Editorial
0.00
SETL
ND

Asylum and political refuge not engaged by cryptography content.

0.00
Article 15 Nationality
Editorial
0.00
SETL
ND

Nationality rights not engaged by technical documentation.

0.00
Article 16 Marriage & Family
Editorial
0.00
SETL
ND

Marriage and family rights not engaged by cryptography tutorial.

0.00
Article 17 Property
Editorial
0.00
SETL
ND

Property rights not engaged by technical documentation.

0.00
Article 18 Freedom of Thought
Editorial
0.00
SETL
ND

Conscience and religion not engaged by cryptography content.

0.00
Article 20 Assembly & Association
Editorial
0.00
SETL
ND

Peaceful assembly and association not engaged by technical documentation.

0.00
Article 21 Political Participation
Editorial
0.00
SETL
ND

Political participation not engaged by cryptography tutorial.

0.00
Article 22 Social Security
Editorial
0.00
SETL
ND

Social and economic rights not engaged by technical documentation.

0.00
Article 23 Work & Equal Pay
Editorial
0.00
SETL
ND

Labor rights and just working conditions not engaged by cryptography content.

0.00
Article 24 Rest & Leisure
Editorial
0.00
SETL
ND

Rest and leisure not engaged by technical documentation.

0.00
Article 25 Standard of Living
Editorial
0.00
SETL
ND

Health and welfare rights not engaged by cryptography tutorial.

0.00
Article 28 Social & International Order
Editorial
0.00
SETL
ND

Social and international order not engaged by technical documentation.

0.00
Article 29 Duties to Community
Editorial
0.00
SETL
ND

Community duties and limitations not explicitly engaged by cryptography tutorial.

0.00
Article 30 No Destruction of Rights
Editorial
0.00
SETL
ND

Prohibition of right restrictions not engaged by technical documentation.

-0.10
Article 2 Non-Discrimination
Medium F: Accessibility barriers
Editorial
-0.10
SETL
+0.09

Content does not address discrimination. Technical content itself is neutral but excludes discussion of access equity.

Structural Channel
What the site does
Element Modifier Affects Note
Legal & Terms
Privacy
No privacy policy detected on domain; static educational content hosted on GitHub Pages.
Terms of Service
No terms of service; GitHub Pages default TOS apply to hosting.
Identity & Mission
Mission +0.10
Article 19 Article 27
Domain appears educational/research-focused; cryptography knowledge dissemination supports free expression and scientific participation.
Editorial Code
No editorial code detected; technical documentation format.
Ownership
GitHub Pages personal domain; no conflicts apparent.
Access & Distribution
Access Model +0.20
Article 19 Article 26
Free public access to technical knowledge; no paywall or authentication barrier supports open access to information.
Ad/Tracking
No advertising or tracking detected on static domain.
Accessibility -0.15
Article 2 Article 26
Page lacks ARIA labels, alt text for code blocks, and semantic HTML structure. No keyboard navigation indicators. Regresses accessibility for readers with disabilities.
br_tracking +0.05
Preamble ¶5 Article 12 Article 19
No third-party trackers detected
br_security -0.05
Article 3 Article 12
Security headers: HTTPS
br_accessibility 0.00
Article 26 Article 27 ¶1
Accessibility: lang attr
br_consent 0.00
Article 12 Article 19 Article 20 ¶2
No cookie consent banner detected
+0.20
Article 19 Freedom of Expression
High A: Free expression through technical knowledge dissemination P: Unrestricted public access
Structural
+0.20
Context Modifier
+0.30
SETL
+0.28

Free public access without authentication, paywall, or geofencing (per DCP access_model modifier +0.2). GitHub Pages hosting supports open dissemination. No observed content restrictions.

+0.10
Article 27 Cultural Participation
Medium A: Scientific knowledge advancement P: Unrestricted technical dissemination
Structural
+0.10
Context Modifier
+0.10
SETL
+0.30

Free public access (per DCP access_model +0.2) and educational mission (per DCP mission +0.1) support scientific participation, though limited interactivity and no comment/collaboration features.

0.00
Preamble Preamble
Medium A: Educational accessibility
Structural
0.00
Context Modifier
0.00
SETL
+0.15

Static GitHub Pages hosting with no interactive features; structure neither advances nor impedes preamble values.

0.00
Article 1 Freedom, Equality, Brotherhood
Low
Structural
0.00
Context Modifier
0.00
SETL
+0.05

No structural signals relevant to equal dignity or rights.

0.00
Article 3 Life, Liberty, Security
Structural
0.00
Context Modifier
0.00
SETL
ND

No structural signals relevant to right to life.

0.00
Article 4 No Slavery
Structural
0.00
Context Modifier
0.00
SETL
ND

No structural signals relevant to slavery prohibition.

0.00
Article 5 No Torture
Structural
0.00
Context Modifier
0.00
SETL
ND

No structural signals relevant to protection from torture.

0.00
Article 6 Legal Personhood
Structural
0.00
Context Modifier
0.00
SETL
ND

No structural signals relevant to personhood recognition.

0.00
Article 7 Equality Before Law
Structural
0.00
Context Modifier
0.00
SETL
ND

No structural signals relevant to legal equality.

0.00
Article 8 Right to Remedy
Structural
0.00
Context Modifier
0.00
SETL
ND

No structural signals relevant to legal remedies.

0.00
Article 9 No Arbitrary Detention
Structural
0.00
Context Modifier
0.00
SETL
ND

No structural signals relevant to detention rights.

0.00
Article 10 Fair Hearing
Structural
0.00
Context Modifier
0.00
SETL
ND

No structural signals relevant to fair trial.

0.00
Article 11 Presumption of Innocence
Structural
0.00
Context Modifier
0.00
SETL
ND

No structural signals relevant to criminal law.

0.00
Article 12 Privacy
Low A: Privacy and anonymity enablement
Structural
0.00
Context Modifier
0.00
SETL
+0.10

Static content with no tracking or privacy incursions; neutral structurally.

0.00
Article 13 Freedom of Movement
Structural
0.00
Context Modifier
0.00
SETL
ND

No structural signals relevant to movement rights.

0.00
Article 14 Asylum
Structural
0.00
Context Modifier
0.00
SETL
ND

No structural signals relevant to asylum rights.

0.00
Article 15 Nationality
Structural
0.00
Context Modifier
0.00
SETL
ND

No structural signals relevant to nationality.

0.00
Article 16 Marriage & Family
Structural
0.00
Context Modifier
0.00
SETL
ND

No structural signals relevant to family rights.

0.00
Article 17 Property
Structural
0.00
Context Modifier
0.00
SETL
ND

No structural signals relevant to property.

0.00
Article 18 Freedom of Thought
Structural
0.00
Context Modifier
0.00
SETL
ND

No structural signals relevant to conscience rights.

0.00
Article 20 Assembly & Association
Structural
0.00
Context Modifier
0.00
SETL
ND

No structural signals relevant to assembly rights.

0.00
Article 21 Political Participation
Structural
0.00
Context Modifier
0.00
SETL
ND

No structural signals relevant to political rights.

0.00
Article 22 Social Security
Structural
0.00
Context Modifier
0.00
SETL
ND

No structural signals relevant to social security.

0.00
Article 23 Work & Equal Pay
Structural
0.00
Context Modifier
0.00
SETL
ND

No structural signals relevant to work rights.

0.00
Article 24 Rest & Leisure
Structural
0.00
Context Modifier
0.00
SETL
ND

No structural signals relevant to leisure rights.

0.00
Article 25 Standard of Living
Structural
0.00
Context Modifier
0.00
SETL
ND

No structural signals relevant to health rights.

0.00
Article 26 Education
Medium A: Educational access and scientific participation
Structural
0.00
Context Modifier
+0.05
SETL
+0.25

Free access supports educational rights but accessibility barriers (per DCP -0.15 modifier) partially undermine implementation for readers with disabilities.

0.00
Article 28 Social & International Order
Structural
0.00
Context Modifier
0.00
SETL
ND

No structural signals relevant to international order.

0.00
Article 29 Duties to Community
Structural
0.00
Context Modifier
0.00
SETL
ND

No structural signals relevant to duty framework.

0.00
Article 30 No Destruction of Rights
Structural
0.00
Context Modifier
0.00
SETL
ND

No structural signals relevant to rights restrictions.

-0.15
Article 2 Non-Discrimination
Medium F: Accessibility barriers
Structural
-0.15
Context Modifier
-0.15
SETL
+0.09

Page lacks alt text, ARIA labels, and semantic HTML structure; regresses accessibility for readers with visual impairments or assistive technology users per DCP accessibility modifier.

Supplementary Signals
How this content communicates, beyond directional lean. Learn more
Epistemic Quality
How well-sourced and evidence-based is this content?
0.72 low claims
Sources
0.6
Evidence
0.8
Uncertainty
0.7
Purpose
0.8
Propaganda Flags
No manipulative rhetoric detected
0 techniques detected
Emotional Tone
Emotional character: positive/negative, intensity, authority
measured
Valence
+0.3
Arousal
0.2
Dominance
0.4
Transparency
Does the content identify its author and disclose interests?
0.25
✗ Author
More signals: context, framing & audience
Solution Orientation
Does this content offer solutions or only describe problems?
0.72 solution oriented
Reader Agency
0.8
Stakeholder Voice
Whose perspectives are represented in this content?
0.30 1 perspective
Speaks: institution
Temporal Framing
Is this content looking backward, at the present, or forward?
present immediate
Geographic Scope
What geographic area does this content cover?
global
Complexity
How accessible is this content to a general audience?
technical high jargon domain specific
Longitudinal 622 HN snapshots · 54 evals
+1 0 −1 HN
Audit Trail 74 entries
2026-03-16 00:42 eval_success PSQ evaluated: g-PSQ=0.120 (3 dims) - -
2026-03-16 00:42 eval Evaluated by llama-4-scout-wai-psq: +0.12 (Mild positive) 0.00
2026-03-16 00:21 eval_success PSQ evaluated: g-PSQ=-0.069 (3 dims) - -
2026-03-16 00:21 eval Evaluated by llama-3.3-70b-wai-psq: -0.07 (Neutral)
2026-03-16 00:18 eval_success Lite evaluated: Moderate negative (-0.38) - -
2026-03-16 00:18 eval Evaluated by llama-3.3-70b-wai: -0.38 (Moderate negative)
reasoning
Technical content, zero rights discussion
2026-03-16 00:18 rater_validation_warn Lite validation warnings for model llama-3.3-70b-wai: 1W 0R - -
2026-03-15 23:43 eval_success Lite evaluated: Neutral (0.00) - -
2026-03-15 23:43 rater_validation_warn Lite validation warnings for model llama-4-scout-wai: 1W 0R - -
2026-03-15 23:43 eval Evaluated by llama-4-scout-wai: 0.00 (Neutral) 0.00
reasoning
Technical content on TCP hole punching algorithm, no human rights discussion
2026-03-15 22:43 eval_success Evaluated: Neutral (0.06) - -
2026-03-15 22:43 eval Evaluated by claude-haiku-4-5-20251001: +0.06 (Neutral) 12,221 tokens -0.56
2026-03-15 22:40 eval_success Evaluated: Strong positive (0.62) - -
2026-03-15 22:39 eval Evaluated by claude-haiku-4-5-20251001: +0.62 (Strong positive) 11,942 tokens
2026-03-15 22:39 rater_validation_warn Validation warnings for model claude-haiku-4-5-20251001: 23W 28R - -
2026-03-15 21:50 eval_success PSQ evaluated: g-PSQ=0.120 (3 dims) - -
2026-03-15 21:50 eval Evaluated by llama-4-scout-wai-psq: +0.12 (Mild positive) 0.00
2026-03-15 21:29 eval_success Lite evaluated: Neutral (0.00) - -
2026-03-15 21:29 rater_validation_warn Lite validation warnings for model llama-4-scout-wai: 1W 0R - -
2026-03-15 21:29 eval Evaluated by llama-4-scout-wai: 0.00 (Neutral) 0.00
reasoning
Technical content on TCP hole punching algorithm, no human rights discussion
2026-03-15 21:07 eval_success PSQ evaluated: g-PSQ=0.120 (3 dims) - -
2026-03-15 21:07 eval Evaluated by llama-4-scout-wai-psq: +0.12 (Mild positive) 0.00
2026-03-15 20:51 eval_success Lite evaluated: Neutral (0.00) - -
2026-03-15 20:51 eval Evaluated by llama-4-scout-wai: 0.00 (Neutral) 0.00
reasoning
Technical content on TCP hole punching algorithm, no human rights discussion
2026-03-15 20:51 rater_validation_warn Lite validation warnings for model llama-4-scout-wai: 1W 0R - -
2026-03-15 20:32 eval_success PSQ evaluated: g-PSQ=0.120 (3 dims) - -
2026-03-15 20:32 eval Evaluated by llama-4-scout-wai-psq: +0.12 (Mild positive) 0.00
2026-03-15 20:15 eval_success Lite evaluated: Neutral (0.00) - -
2026-03-15 20:15 eval Evaluated by llama-4-scout-wai: 0.00 (Neutral) 0.00
reasoning
Technical content on TCP hole punching algorithm, no human rights discussion
2026-03-15 20:15 rater_validation_warn Lite validation warnings for model llama-4-scout-wai: 1W 0R - -
2026-03-15 19:55 eval_success PSQ evaluated: g-PSQ=0.120 (3 dims) - -
2026-03-15 19:55 eval Evaluated by llama-4-scout-wai-psq: +0.12 (Mild positive) 0.00
2026-03-15 19:41 eval_success Lite evaluated: Neutral (0.00) - -
2026-03-15 19:41 eval Evaluated by llama-4-scout-wai: 0.00 (Neutral) 0.00
reasoning
Technical content on TCP hole punching algorithm, no human rights discussion
2026-03-15 19:18 eval Evaluated by llama-4-scout-wai-psq: +0.12 (Mild positive) 0.00
2026-03-15 19:03 eval Evaluated by llama-4-scout-wai: 0.00 (Neutral) 0.00
reasoning
Technical content on TCP hole punching algorithm, no human rights discussion
2026-03-15 18:34 eval Evaluated by llama-4-scout-wai-psq: +0.12 (Mild positive) 0.00
2026-03-15 18:15 eval Evaluated by llama-4-scout-wai: 0.00 (Neutral) 0.00
reasoning
Technical content on TCP hole punching algorithm, no human rights discussion
2026-03-15 17:23 eval Evaluated by llama-4-scout-wai-psq: +0.12 (Mild positive) 0.00
2026-03-15 17:02 eval Evaluated by llama-4-scout-wai: 0.00 (Neutral) 0.00
reasoning
Technical content on TCP hole punching algorithm, no human rights discussion
2026-03-15 16:09 eval Evaluated by llama-4-scout-wai-psq: +0.12 (Mild positive) 0.00
2026-03-15 15:54 eval Evaluated by llama-4-scout-wai: 0.00 (Neutral) 0.00
reasoning
Technical content on TCP hole punching algorithm, no human rights discussion
2026-03-15 15:34 eval Evaluated by llama-4-scout-wai-psq: +0.12 (Mild positive) 0.00
2026-03-15 15:17 eval Evaluated by llama-4-scout-wai: 0.00 (Neutral) 0.00
reasoning
Technical content on TCP hole punching algorithm, no human rights discussion
2026-03-15 14:57 eval Evaluated by llama-4-scout-wai-psq: +0.12 (Mild positive) 0.00
2026-03-15 14:43 eval Evaluated by llama-4-scout-wai: 0.00 (Neutral) 0.00
reasoning
Technical content on TCP hole punching algorithm, no human rights discussion
2026-03-15 14:21 eval Evaluated by llama-4-scout-wai-psq: +0.12 (Mild positive) 0.00
2026-03-15 14:04 eval Evaluated by llama-4-scout-wai: 0.00 (Neutral) 0.00
reasoning
Technical content on TCP hole punching algorithm, no human rights discussion
2026-03-15 13:41 eval Evaluated by llama-4-scout-wai-psq: +0.12 (Mild positive) 0.00
2026-03-15 13:27 eval Evaluated by llama-4-scout-wai: 0.00 (Neutral) 0.00
reasoning
Technical content on TCP hole punching algorithm, no human rights discussion
2026-03-15 13:02 eval Evaluated by llama-4-scout-wai-psq: +0.12 (Mild positive) 0.00
2026-03-15 12:49 eval Evaluated by llama-4-scout-wai: 0.00 (Neutral) 0.00
reasoning
Technical content on TCP hole punching algorithm, no human rights discussion
2026-03-15 12:22 eval Evaluated by llama-4-scout-wai-psq: +0.12 (Mild positive) 0.00
2026-03-15 12:09 eval Evaluated by llama-4-scout-wai: 0.00 (Neutral) 0.00
reasoning
Technical content on TCP hole punching algorithm, no human rights discussion
2026-03-15 11:42 eval Evaluated by llama-4-scout-wai-psq: +0.12 (Mild positive) 0.00
2026-03-15 11:32 eval Evaluated by llama-4-scout-wai: 0.00 (Neutral) 0.00
reasoning
Technical content on TCP hole punching algorithm, no human rights discussion
2026-03-15 11:01 eval Evaluated by llama-4-scout-wai-psq: +0.12 (Mild positive) 0.00
2026-03-15 10:51 eval Evaluated by llama-4-scout-wai: 0.00 (Neutral) 0.00
reasoning
Technical content on TCP hole punching algorithm, no human rights discussion
2026-03-15 10:22 eval Evaluated by llama-4-scout-wai-psq: +0.12 (Mild positive) 0.00
2026-03-15 10:12 eval Evaluated by llama-4-scout-wai: 0.00 (Neutral) 0.00
reasoning
Technical content on TCP hole punching algorithm, no human rights discussion
2026-03-15 09:38 eval Evaluated by llama-4-scout-wai-psq: +0.12 (Mild positive) 0.00
2026-03-15 09:32 eval Evaluated by llama-4-scout-wai: 0.00 (Neutral) 0.00
reasoning
Technical content on TCP hole punching algorithm, no human rights discussion
2026-03-15 08:55 eval Evaluated by llama-4-scout-wai-psq: +0.12 (Mild positive) 0.00
2026-03-15 08:52 eval Evaluated by llama-4-scout-wai: 0.00 (Neutral) 0.00
reasoning
Technical content on TCP hole punching algorithm, no human rights discussion
2026-03-15 08:12 eval Evaluated by llama-4-scout-wai-psq: +0.12 (Mild positive) 0.00
2026-03-15 08:09 eval Evaluated by llama-4-scout-wai: 0.00 (Neutral) 0.00
reasoning
Technical content on TCP hole punching algorithm, no human rights discussion
2026-03-15 07:27 eval Evaluated by llama-4-scout-wai-psq: +0.12 (Mild positive) 0.00
2026-03-15 07:26 eval Evaluated by llama-4-scout-wai: 0.00 (Neutral) 0.00
reasoning
Technical content on TCP hole punching algorithm, no human rights discussion
2026-03-15 06:50 eval Evaluated by llama-4-scout-wai-psq: +0.12 (Mild positive) 0.00
2026-03-15 06:49 eval Evaluated by llama-4-scout-wai: 0.00 (Neutral) 0.00
reasoning
Technical content on TCP hole punching algorithm, no human rights discussion
2026-03-15 06:15 eval Evaluated by llama-4-scout-wai-psq: +0.12 (Mild positive) 0.00
2026-03-15 06:14 eval Evaluated by llama-4-scout-wai: 0.00 (Neutral) 0.00
reasoning
Technical content on TCP hole punching algorithm, no human rights discussion
2026-03-15 05:40 eval Evaluated by llama-4-scout-wai-psq: +0.12 (Mild positive)
2026-03-15 05:39 eval Evaluated by llama-4-scout-wai: 0.00 (Neutral)
reasoning
Technical content on TCP hole punching algorithm, no human rights discussion