From 70dd2e6bd9b9bc37fea61dfad0f21b0714e19d38 Mon Sep 17 00:00:00 2001 From: Jacob Seman <90524106+Jbsco@users.noreply.github.com> Date: Mon, 2 Feb 2026 12:56:15 -0700 Subject: [PATCH 01/11] Create target paper skeleton draft candidates --- docs/whitepapers/formal-verification-lens.tex | 222 ++++++++++++++++ docs/whitepapers/hadlink.tex | 243 ++++++++++++++++++ docs/whitepapers/sprint-projects.tex | 181 +++++++++++++ 3 files changed, 646 insertions(+) create mode 100644 docs/whitepapers/formal-verification-lens.tex create mode 100644 docs/whitepapers/hadlink.tex create mode 100644 docs/whitepapers/sprint-projects.tex diff --git a/docs/whitepapers/formal-verification-lens.tex b/docs/whitepapers/formal-verification-lens.tex new file mode 100644 index 0000000..fc61b6c --- /dev/null +++ b/docs/whitepapers/formal-verification-lens.tex @@ -0,0 +1,222 @@ +\documentclass[11pt,letterpaper]{article} +\usepackage[margin=1in]{geometry} +\usepackage{parskip} +\usepackage{hyperref} +\usepackage{listings} +\usepackage{xcolor} +\usepackage{booktabs} + +\lstset{ + basicstyle=\small\ttfamily, + keywordstyle=\color{blue!70!black}, + commentstyle=\color{gray}, + stringstyle=\color{red!60!black}, + breaklines=true, + frame=single, + xleftmargin=1em, + framexleftmargin=0.5em, +} + +\title{SPARK as a Design Lens:\\Beyond Verification in High-Assurance Systems} +\author{} % TODO: Add author name +\date{} + +\begin{document} +\maketitle + +\begin{abstract} +% TODO: Write abstract (~100 words) +% Core argument: SPARK is typically discussed as a verification tool---a way to +% prove that code satisfies its specification. This paper argues that the greater +% benefit, particularly for small infrastructure projects, is architectural. +% Writing SPARK contracts forces the engineer to define boundaries, assumptions, +% and scope before implementation begins. The act of specifying preconditions and +% postconditions serves as cognitive scaffolding that shapes design, limits +% complexity, and produces more maintainable systems. We illustrate this with +% hadlink, a URL redirection service where SPARK contracts guided architectural +% decisions from project inception. +\end{abstract} + +% ============================================================================ +\section{Introduction} +% ============================================================================ + +% Thesis: Using SPARK not only verifies code correctness---it forces the engineer +% to explicitly define boundaries, assumptions, and scope. This shapes architecture, +% limits unnecessary complexity, and produces more predictable systems. +% +% Frame the conventional view: formal verification as a post-hoc correctness check. +% Then the alternative: formal verification as a design-time discipline that +% produces better architecture as a side effect. +% +% "The act of annotating contracts acts as mental scaffolding, shaping architecture +% and forcing minimalism." +% +% TODO: Write 2-3 paragraphs. + +% ============================================================================ +\section{Contracts as Design Decisions} +% ============================================================================ + +% Every precondition, postcondition, and type declaration is a decision about what +% the system can and cannot safely assume. +% +% Concrete example---Canonicalize postcondition: +% +% \begin{lstlisting}[language=Ada] +% function Canonicalize (Input : String) return Canonicalize_Result +% with +% Pre => Input'Length >= 1 and then +% Input'Length <= Max_URL_Length and then +% Input'First = 1 and then +% Input'Last < Integer'Last - 10, +% Post => (if Canonicalize'Result.Status = Success +% then To_String (Canonicalize'Result.URL) = Input and then +% Is_HTTP_Or_HTTPS (Canonicalize'Result.URL) and then +% Not_Private_Address (Canonicalize'Result.URL) and then +% No_Credentials (Canonicalize'Result.URL)); +% \end{lstlisting} +% +% This postcondition is not just a correctness check. It is a design statement: +% "On success, the output preserves the input exactly, and four security properties +% hold." Every downstream consumer can rely on these properties without +% re-checking them. The contract defines the trust boundary. +% +% Similarly, Make_Short_Code: +% +% \begin{lstlisting}[language=Ada] +% function Make_Short_Code (URL : Valid_URL; Secret : Secret_Key) +% return Short_Code +% with +% Pre => Length (URL) >= 7, +% Post => Length (Make_Short_Code'Result) = Short_Code_Length; +% \end{lstlisting} +% +% Fixed-length output. Deterministic. No side effects. These are architectural +% commitments, not just proof obligations. +% +% TODO: Write 2-3 paragraphs with embedded code listings. + +% ============================================================================ +\section{Architecture Emerging from Constraints} +% ============================================================================ + +% SPARK constraints directly influenced hadlink's architecture in several ways: +% +% \subsection{Opaque Types as Proof-Driven Encapsulation} +% +% Valid_URL and Short_Code are declared as private types: +% +% \begin{lstlisting}[language=Ada] +% type Valid_URL is private; +% type Short_Code is private; +% \end{lstlisting} +% +% This was not a style choice. The prover cannot reason about internal +% representation unless construction goes through a proven function +% (Make_Valid_URL). This enforces the invariant: Valid_URL can only be +% created by Canonicalize. The type system becomes an architectural boundary. +% +% \subsection{Expression Functions for Proof Transparency} +% +% Query functions are written as expression functions (single-line definitions) +% because they are fully expanded during proof: +% +% \begin{lstlisting}[language=Ada] +% function Is_HTTP_Or_HTTPS (URL : Valid_URL) return Boolean is +% (Has_Valid_Scheme (To_String (URL))); +% \end{lstlisting} +% +% A multi-line body function would require an additional assume. The proof +% requirement drove the code structure. +% +% \subsection{Ghost Lemma for Predicate Substitution} +% +% An attempt to use Type_Invariant was blocked by SPARK RM 7.3.2(2). The +% workaround---a ghost lemma with two documented assumes for pure function +% determinism---confined all trust assumptions to a single location: +% +% \begin{lstlisting}[language=Ada] +% pragma Assume (Has_Credentials (A) = Has_Credentials (B), +% "Pure function determinism: A = B implies f(A) = f(B)"); +% \end{lstlisting} +% +% This is 2 assumes in the entire codebase, both in a ghost procedure that +% generates no runtime code. The constraint shaped the proof strategy, which +% shaped the architecture. +% +% \subsection{Split Binaries from Proof Boundaries} +% +% The separation into shorten and redirect binaries was reinforced by SPARK: +% the redirect path needs no validation logic (URLs are already canonical), +% so it has zero SPARK dependency. The proof boundary became an architectural +% boundary became a deployment boundary. +% +% TODO: Write subsection prose with code listings. + +% ============================================================================ +\section{Proof Results} +% ============================================================================ + +% Present the verification outcomes concisely: +% +% \begin{table}[h] +% \centering +% \begin{tabular}{lr} +% \toprule +% Metric & Value \\ +% \midrule +% Total proof obligations & 137 \\ +% Verified automatically (CVC5) & 137 (100\%) \\ +% Explicit assumes & 2 (ghost lemma only) \\ +% Assumes in business logic & 0 \\ +% \bottomrule +% \end{tabular} +% \end{table} +% +% Breakdown by check type: range checks (31), overflow (30), precondition (29), +% index (11), loop invariant init/preserv (18), postcondition (9), assert (3), +% length (3), division (2), initialization (1). +% +% Key point: all checks solved in 0--1 SMT steps. The proofs are not expensive +% or fragile---they are consequences of clean contracts. +% +% TODO: Write 1-2 paragraphs with table. + +% ============================================================================ +\section{Lessons Beyond SPARK} +% ============================================================================ + +% The mindset transfers even without SPARK: +% +% - "Every function must declare its assumptions explicitly" leads to cleaner APIs +% - Defining what the system will NOT do (non-goals) is as valuable as defining +% what it will do +% - If you cannot state a function's postcondition, you do not understand +% what it does +% - Minimalism is a natural consequence of having to prove things about your code +% +% SPARK enforces this via the compiler. Without SPARK, the same discipline can +% be applied through design reviews, documentation, and property-based testing. +% The compiler just makes it non-optional. +% +% TODO: Write 2-3 paragraphs. + +% ============================================================================ +\section{Conclusion} +% ============================================================================ + +% Reinforce: +% - SPARK is both a guardrail and a mentor +% - The verification output is valuable, but the design discipline is more so +% - For small infrastructure projects, formal methods are not overhead---they +% are architecture +% - The question is not "can we afford to verify?" but "can we afford not to +% think this carefully?" +% +% TODO: Write 1-2 paragraphs. + +% References: +% - https://www.adacore.com/uploads/books/Spark-Guidance-1.2-web.pdf +% - https://docs.adacore.com/live/wave/spark2014/html/spark2014_ug/en/usage_scenarios.html#tool-qualification +\end{document} diff --git a/docs/whitepapers/hadlink.tex b/docs/whitepapers/hadlink.tex new file mode 100644 index 0000000..a3d9267 --- /dev/null +++ b/docs/whitepapers/hadlink.tex @@ -0,0 +1,243 @@ +\documentclass[11pt,letterpaper]{article} +\usepackage[margin=1in]{geometry} +\usepackage{parskip} +\usepackage{hyperref} +\usepackage{listings} +\usepackage{xcolor} +\usepackage{booktabs} + +\lstset{ + basicstyle=\small\ttfamily, + keywordstyle=\color{blue!70!black}, + commentstyle=\color{gray}, + stringstyle=\color{red!60!black}, + breaklines=true, + frame=single, + xleftmargin=1em, + framexleftmargin=0.5em, +} + +\title{hadlink: A Minimal, High-Assurance URL Redirection Service} +\author{} % TODO: Add author name +\date{} + +\begin{document} +\maketitle + +\begin{abstract} +% TODO: Write abstract (~100 words) +% Core argument: URL shorteners are deceptively small systems with disproportionate +% blast radius. Most implementations conflate policy and mechanism, trust input too +% broadly, and are difficult to reason about. hadlink is a URL redirection service +% designed for infrastructure use cases (CI/CD, QR codes, SMS) where deterministic +% behavior, security, and auditability matter more than feature breadth. Its core +% validation and encoding logic is formally verified using SPARK Ada, while the +% service layer is composed in Haskell. This paper describes the system's design, +% assurance model, and deployment approach. +\end{abstract} + +% ============================================================================ +\section{Problem Statement} +% ============================================================================ + +% "This is a deceptively small problem with disproportionate blast radius." +% +% URL shorteners are frequently: +% - Abuse targets (spam, phishing, malware distribution) +% - Redirectors of last resort (anything that accepts a URL becomes an open relay) +% - Deployed casually (minimal validation, no formal reasoning about behavior) +% +% Most implementations: +% - Conflate policy and mechanism (validation mixed with routing mixed with storage) +% - Trust input too much (accepting arbitrary URLs, including private addresses) +% - Are hard to reason about (no formal specification, behavior varies by input) +% +% The problem is small enough to be tractable for formal methods, but consequential +% enough that the effort is justified. +% +% TODO: Write 2-3 paragraphs. + +% ============================================================================ +\section{Design Goals and Non-Goals} +% ============================================================================ + +% This section signals scope maturity. +% +% \subsection{Goals} +% - Deterministic behavior (same URL always produces same short code) +% - Minimal trusted computing base +% - Explicit failure modes (enumerated error codes, no silent failures) +% - Deployable on constrained systems (single binary, SQLite, no external services) +% +% \subsection{Non-Goals} +% - Marketing analytics or click tracking +% - User accounts or dashboards +% - Custom aliases +% - Dynamic policy engines +% - JavaScript redirects or link previews +% - Feature parity with SaaS shorteners (Bitly, TinyURL) +% +% "These are conscious trade-offs, not omissions." +% +% Non-goals are documented in the repository and enforced in the contribution +% policy. Pull requests that conflict with non-goals are closed with explanation. +% +% TODO: Write 2-3 paragraphs. + +% ============================================================================ +\section{Architecture} +% ============================================================================ + +% Two-layer design with intentional separation: +% +% \subsection{SPARK Core} +% Formally verified logic for: +% - URL canonicalization (scheme validation, private address rejection, +% credentials detection) +% - Short code generation (HMAC-SHA256 via SPARKNaCl, Base62 encoding) +% +% Contains no IO, networking, storage, concurrency, or configuration parsing. +% 137 proof obligations, all verified automatically by CVC5. +% +% \subsection{Haskell Service Layer} +% Composes the system: HTTP (Warp), storage (SQLite), rate limiting, structured +% logging, proof-of-work validation. Property-tested via Hedgehog. +% +% \subsection{FFI Boundary} +% Minimal and frozen (API version 1). Three exported C functions: +% hadlink\_canonicalize, hadlink\_make\_short\_code, hadlink\_api\_version. +% FFI layer is explicitly outside SPARK verification (pragma SPARK\_Mode Off). +% A freeze test ensures the interface does not change without a version bump. +% - The FFI is thin by design +% - HTTP (Warp) is selected because it is thin +% +% \subsection{Split Binaries} +% Two separate executables: +% - \texttt{hadlink-redirect}: Read-only, fast, no SPARK dependency. Exposed +% to network. +% - \texttt{hadlink-shorten}: Write path, includes SPARK FFI, rate limiting, +% PoW. Restricted to LAN/VPN. +% +% The redirect binary does not link libHadlink\_Core.so. This is least-privilege +% at the binary level. +% +% \subsection{Storage} +% SQLite in WAL mode. Append-only on the write path. Read-only access for +% redirect. Schema: short\_code (PK) -> canonical\_url, created\_at. +% INSERT OR IGNORE provides idempotent creation (deterministic codes mean +% duplicate requests are harmless). +% +% TODO: Write section prose, optionally include architecture diagram. + +% ============================================================================ +\section{Formal Assurance} +% ============================================================================ + +% What is proven: +% - All stored URLs have valid HTTP/HTTPS scheme +% - No stored URL contains credentials (user:pass@host) +% - No stored URL points to a private address (RFC 1918, RFC 4193, link-local) +% - Short codes are exactly 8 Base62 characters +% - All array accesses are in bounds +% - No integer overflow in encoding logic +% +% What is NOT proven: +% - FFI marshaling correctness (pragma SPARK_Mode Off) +% - Haskell service behavior (property-tested, not formally verified) +% - SQLite behavior (trusted dependency) +% - Network-level properties (TLS, DNS) +% +% Assumptions made explicit: +% - 2 pragma Assume statements, both in a ghost lemma, both documenting +% pure function determinism (A = B implies f(A) = f(B)) +% - Zero assumes in business logic +% +% \begin{table}[h] +% \centering +% \begin{tabular}{lr} +% \toprule +% Check type & Count \\ +% \midrule +% Range checks & 31 \\ +% Overflow checks & 30 \\ +% Precondition & 29 \\ +% Index checks & 11 \\ +% Loop invariants & 18 \\ +% Postcondition & 9 \\ +% Other & 9 \\ +% \midrule +% Total & 137 \\ +% \bottomrule +% \end{tabular} +% \end{table} +% +% The project references DO-278A (SIL-3) integrity objectives as an architectural +% guide, but is not certified. This is a single-developer project without +% independent verification resources. +% +% TODO: Write 2-3 paragraphs with table. + +% ============================================================================ +\section{Deployment} +% ============================================================================ + +% This section is rare in whitepapers and valuable. +% +% Three deployment methods: +% - Docker (pre-built binaries via GitHub Releases, or build from source) +% - Systemd (direct installation with security-hardened unit files) +% - Arch Linux AUR (hadlink-bin package) +% +% Systemd hardening: NoNewPrivileges, ProtectSystem=strict, ProtectHome, +% PrivateTmp, MemoryDenyWriteExecute, resource limits (128M shorten, 64M redirect). +% +% Configuration minimalism: environment variables only, no config file parser, +% no YAML/TOML. Secret management via file-based EnvironmentFile. +% +% Failure behavior: both services restart on failure (RestartSec=5s). Redirect +% service is stateless and recovers instantly. Shorten service holds no +% in-memory state beyond rate limiter (STM-based, rebuilt on restart). +% +% Pre-built binaries available from GitHub Releases---no build toolchain +% required for deployment. +% +% TODO: Write 2-3 paragraphs. + +% ============================================================================ +\section{Limitations and Future Work} +% ============================================================================ + +% This section earns credibility. +% +% Intentional limitations: +% - SQLite scaling envelope (sufficient for infrastructure use, not for +% high-volume marketing workloads) +% - No built-in abuse detection (rate limiting and PoW mitigate, but do not +% detect malicious URLs) +% - Single-node only (no replication, no distributed deployment) +% - No URL expiration or deletion (append-only by design) +% +% Potential future work: +% - LMDB backend for higher read throughput +% - TLS termination (currently relies on reverse proxy) +% - Metrics export (Prometheus endpoint) +% +% "These are conscious trade-offs, not omissions. Each limitation preserves +% a property the system depends on." +% +% TODO: Write 1-2 paragraphs. + +% ============================================================================ +\section{Conclusion} +% ============================================================================ + +% Reinforce: +% - Correctness over features +% - Simplicity as a security primitive +% - Formal methods are tractable for small infrastructure services +% - The approach---SPARK core, thin FFI, Haskell composition---is applicable +% to other services with similar trust requirements +% +% TODO: Write 1-2 paragraphs. + +\end{document} diff --git a/docs/whitepapers/sprint-projects.tex b/docs/whitepapers/sprint-projects.tex new file mode 100644 index 0000000..adc39e4 --- /dev/null +++ b/docs/whitepapers/sprint-projects.tex @@ -0,0 +1,181 @@ +\documentclass[11pt,letterpaper]{article} +\usepackage[margin=1in]{geometry} +\usepackage{parskip} +\usepackage{hyperref} +\usepackage{enumitem} + +\title{From Coursework to Craft:\\Single-Sprint Projects as Engineering Practice} +\author{} % TODO: Add author name +\date{} + +\begin{document} +\maketitle + +\begin{abstract} +% TODO: Write abstract (~100 words) +% Core argument: Undergraduate engineering coursework builds breadth and teaches +% students to finish. Short-timeline personal projects---constrained to one or two +% weeks---complement this by training scope discipline, invariant-driven design, +% and the judgment to stop. This paper compares both modes of learning and argues +% that single-sprint projects are effective deliberate practice for professional +% engineering skills that coursework alone does not emphasize. + +% note: coursework alone is insufficient, this is a major case for frequent project +% work in academia prior to jumping into professional work. +\end{abstract} + +% ============================================================================ +\section{Introduction} +% ============================================================================ + +% Thesis: Fast project turnover in undergraduate engineering builds breadth, +% and single-sprint personal projects build judgment and carry momentum. +% +% Frame this as complementary, not adversarial. College teaches you to finish +% under constraints set by others. Sprint projects teach you to set your own +% constraints and live with them. This cultivates senior engineers early. +% +% Key observation: "You learn how to finish. You rarely learn how to stop." +% +% TODO: Write 2-3 paragraphs introducing the comparison. + +% ============================================================================ +\section{What Coursework Does Well} +% ============================================================================ + +% Be fair and specific. ECE programs in particular expose students to: +% +% - Multiple parallel projects across domains (digital, analog, embedded, software) +% - Fixed deadlines with moving scopes +% - Collaboration and communication under pressure +% - Foundational knowledge across a broad surface area +% +% These are genuinely valuable. The point is not that coursework is insufficient--- +% it is that it trains a specific set of muscles. Programs that encourage +% project work alongside coursework enhance development of real-world skills: +% +% - Time & scope management +% - Design by invariants (project rubric requirements) +% - Documentation of friction points and future work +% +% Acknowledge: grades incentivize completion, which is a real and useful skill. +% Completing a project under someone else's constraints is not trivial. +% +% TODO: Write 2-3 paragraphs. + +% ============================================================================ +\section{What Coursework Does Not Emphasize} +% ============================================================================ + +% Three skills that sprint projects train more directly: +% +% \subsection{Scope Discipline} +% +% In coursework, scope creep is expected---requirements change, features get added +% to meet rubric items. Cutting features feels like failure. +% +% In practice, cutting features is the job. Most engineering value comes from what +% you don't build. A constrained personal project forces this: there is no rubric +% to optimize for, no TA to ask for an extension. You must decide what matters and +% what doesn't, then commit. +% +% \subsection{Invariant-Driven Design} +% +% Course projects emphasize outputs: demonstrations, reports, "it works on the +% happy path." Sprint projects reward defining invariants early---what must always +% be true---and designing around failure modes. This is where professional +% engineering actually lives. +% +% Introduce the concept of "design by non-goals": explicitly documenting what the +% system will never do, and enforcing those boundaries. This is uncommon in +% coursework but standard in mature engineering organizations. +% +% \subsection{Taste and Restraint} +% +% You cannot brute-force a one-week project with complexity. You must choose +% conservative tools, reject clever abstractions, and bias toward debuggability. +% This is professional taste forming---and it is difficult to practice in a +% semester-long project where complexity can always be deferred. +% +% TODO: Write 3-4 paragraphs across subsections. + +% ============================================================================ +\section{Single-Sprint Projects as Deliberate Practice} +% ============================================================================ + +% Define the format: 1--2 weeks, self-imposed scope, production-quality target. +% +% Characteristics: +% - No grade safety net---every decision reflects directly on you +% - Design trade-offs are permanent (no "fix it next sprint") +% - Forces early architectural clarity +% - Simulates real sprint timelines +% +% Compare to coursework sprints: in college, a "sprint" often means a burst +% of effort before a deadline. In industry, a sprint is a bounded commitment +% with explicit deliverables and explicit cuts. Single-sprint personal projects +% practice the latter. +% +% This is also where time management and expectation management are learned +% organically. There is no project manager---you are the project manager. +% +% TODO: Write 2-3 paragraphs. + +% ============================================================================ +\section{A Concrete Example} +% ============================================================================ + +% Introduce hadlink subtly---not as a showcase, but as an illustration. +% +% "In a recent single-sprint project, I constrained myself to a ten-day timeline +% and a sharply defined problem: a URL redirection service with formally verified +% core logic. The limitation forced me to define non-goals early (no analytics, +% no user accounts, no custom aliases), choose conservative tools (SQLite, Warp), +% and freeze scope quickly. The result was a small but production-ready system +% with formal proof obligations rather than an expanding prototype." +% +% Key details to weave in: +% - 10 days from first commit to v1.0.0 (Jan 22 -- Feb 1, 2026) +% - Explicit non-goals documented and enforced in contribution policy +% - Scope cuts made visible: no web UI, no click tracking, no custom aliases +% - Design by invariant: "All stored URLs are canonicalized" as a system property +% that guided every architectural decision +% - Phased roadmap (v0.1.0 -> v0.5.0 -> v1.0.0) within the sprint +% +% Tone: understated. The project is the example, not the point. +% +% TODO: Write 2-3 paragraphs. + +% ============================================================================ +\section{Lessons and Advice} +% ============================================================================ + +% Addressed to students and early-career engineers. +% +% Practical suggestions: +% - Pick a problem you can define in one sentence +% - Write your non-goals before your goals +% - Set a hard deadline and do not move it +% - Ship something real, even if small +% - Treat the constraint as the feature, not the limitation +% +% Broader point: the habit of scoping, cutting, and shipping builds a skill set +% that complements coursework. Neither alone is sufficient. Together, they +% approximate the reality of professional engineering more closely than either +% can alone. +% +% TODO: Write 2-3 paragraphs. + +% ============================================================================ +\section{Conclusion} +% ============================================================================ + +% Reinforce: +% - Coursework and sprint projects are complementary, not competing +% - Sprint projects train judgment, ownership, and restraint +% - These are the skills that distinguish an engineer who can build from one +% who can decide what to build +% +% TODO: Write 1-2 paragraphs. + +\end{document} From 108a890c7994b7bc95cd92051b13429449e8c30c Mon Sep 17 00:00:00 2001 From: Jacob Seman <90524106+Jbsco@users.noreply.github.com> Date: Mon, 2 Feb 2026 21:54:52 -0700 Subject: [PATCH 02/11] Draft first cut of sprint-projects paper --- docs/whitepapers/sprint-projects.tex | 177 +++++++-------------------- 1 file changed, 47 insertions(+), 130 deletions(-) diff --git a/docs/whitepapers/sprint-projects.tex b/docs/whitepapers/sprint-projects.tex index adc39e4..3a921c4 100644 --- a/docs/whitepapers/sprint-projects.tex +++ b/docs/whitepapers/sprint-projects.tex @@ -5,177 +5,94 @@ \usepackage{enumitem} \title{From Coursework to Craft:\\Single-Sprint Projects as Engineering Practice} -\author{} % TODO: Add author name +\author{Jacob Seman} \date{} \begin{document} \maketitle \begin{abstract} -% TODO: Write abstract (~100 words) -% Core argument: Undergraduate engineering coursework builds breadth and teaches -% students to finish. Short-timeline personal projects---constrained to one or two -% weeks---complement this by training scope discipline, invariant-driven design, -% and the judgment to stop. This paper compares both modes of learning and argues -% that single-sprint projects are effective deliberate practice for professional -% engineering skills that coursework alone does not emphasize. - -% note: coursework alone is insufficient, this is a major case for frequent project -% work in academia prior to jumping into professional work. +Undergraduate engineering coursework builds breadth and teaches students to finish under externally imposed constraints. These are necessary skills, but they are not sufficient preparation for professional practice. Short-timeline personal projects, constrained to one or two weeks, complement coursework by training scope discipline, invariant-driven design, and the judgment to stop. This paper compares both modes of learning and argues that single-sprint projects are effective deliberate practice for engineering skills that coursework alone does not emphasize. Programs that integrate frequent project work alongside traditional coursework better prepare students for the realities of professional engineering. \end{abstract} % ============================================================================ \section{Introduction} % ============================================================================ -% Thesis: Fast project turnover in undergraduate engineering builds breadth, -% and single-sprint personal projects build judgment and carry momentum. -% -% Frame this as complementary, not adversarial. College teaches you to finish -% under constraints set by others. Sprint projects teach you to set your own -% constraints and live with them. This cultivates senior engineers early. -% -% Key observation: "You learn how to finish. You rarely learn how to stop." -% -% TODO: Write 2-3 paragraphs introducing the comparison. +Not all engineering programs are structured the same way. Some are built primarily around homework sets and exams, with projects appearing only as semester-long capstones. Others intersperse shorter, frequent projects on two- to four-week timelines alongside traditional coursework. The difference matters. In programs that provision sprint-like projects throughout the curriculum, students practice scoping, designing, and delivering complete systems multiple times per semester. In programs that do not, students may graduate having completed only one or two open-ended projects in four years. + +Both models build foundational knowledge. But programs that include frequent short projects better approximate the rhythm of professional engineering, where the unit of work is not a problem set or an exam but a bounded deliverable with real trade-offs. Students in these programs learn earlier that finishing is not the same as completing, and that deciding what to leave out is as important as deciding what to include. + +This paper argues that single-sprint personal projects, constrained to one or two weeks with a self-imposed scope and a production-quality target, complement both models of coursework. For students in project-heavy programs, they reinforce and extend skills already being developed. For students in traditional programs, they fill a gap that homework and exams cannot address. In either case, they train ownership, architectural judgment, and restraint in ways that externally defined coursework does not. % ============================================================================ \section{What Coursework Does Well} % ============================================================================ -% Be fair and specific. ECE programs in particular expose students to: -% -% - Multiple parallel projects across domains (digital, analog, embedded, software) -% - Fixed deadlines with moving scopes -% - Collaboration and communication under pressure -% - Foundational knowledge across a broad surface area -% -% These are genuinely valuable. The point is not that coursework is insufficient--- -% it is that it trains a specific set of muscles. Programs that encourage -% project work alongside coursework enhance development of real-world skills: -% -% - Time & scope management -% - Design by invariants (project rubric requirements) -% - Documentation of friction points and future work -% -% Acknowledge: grades incentivize completion, which is a real and useful skill. -% Completing a project under someone else's constraints is not trivial. -% -% TODO: Write 2-3 paragraphs. +Electrical and computer engineering programs, in particular, expose students to a demanding breadth of work. In any given semester a student may be running multiple parallel efforts across digital design, analog circuits, embedded systems, and software, each with its own tools, constraints, and deadlines. This forces rapid context-switching and builds a broad technical surface area that is difficult to acquire any other way. Grades incentivize finishing, and finishing under someone else's constraints is not trivial. Fixed deadlines, shifting requirements, and collaborative dynamics all mirror aspects of professional work. + +Programs that provision shorter, frequent projects within the syllabus go further. When a two- to four-week project appears alongside homework and exams, students practice a different set of skills: time and scope management against competing obligations, design around fixed requirements with real trade-offs, and documentation of friction points and future work. These programs produce graduates who have already experienced the cycle of scoping, building, and delivering multiple times before entering the workforce. The project cadence itself is a form of training. + +Programs built exclusively around homework, exams, and a single capstone do not offer this repetition. Students in these programs are often technically strong but have limited practice making the kinds of decisions that define professional work: what to build, what to cut, and when a system is done. The grade incentive rewards completion and breadth, which are necessary but not sufficient. The skills that distinguish a competent engineer from a mature one, scope judgment, architectural restraint, and the confidence to leave things out, require repeated practice that traditional coursework alone does not provide. % ============================================================================ \section{What Coursework Does Not Emphasize} % ============================================================================ -% Three skills that sprint projects train more directly: -% -% \subsection{Scope Discipline} -% -% In coursework, scope creep is expected---requirements change, features get added -% to meet rubric items. Cutting features feels like failure. -% -% In practice, cutting features is the job. Most engineering value comes from what -% you don't build. A constrained personal project forces this: there is no rubric -% to optimize for, no TA to ask for an extension. You must decide what matters and -% what doesn't, then commit. -% -% \subsection{Invariant-Driven Design} -% -% Course projects emphasize outputs: demonstrations, reports, "it works on the -% happy path." Sprint projects reward defining invariants early---what must always -% be true---and designing around failure modes. This is where professional -% engineering actually lives. -% -% Introduce the concept of "design by non-goals": explicitly documenting what the -% system will never do, and enforcing those boundaries. This is uncommon in -% coursework but standard in mature engineering organizations. -% -% \subsection{Taste and Restraint} -% -% You cannot brute-force a one-week project with complexity. You must choose -% conservative tools, reject clever abstractions, and bias toward debuggability. -% This is professional taste forming---and it is difficult to practice in a -% semester-long project where complexity can always be deferred. -% -% TODO: Write 3-4 paragraphs across subsections. +Programs that include frequent projects develop these skills partially, but even in those programs the scope is externally defined. The rubric sets the floor, the deadline sets the ceiling, and the student optimizes within that frame. Three skills in particular are difficult to train under externally imposed constraints. + +\subsection{Scope Discipline} + +In coursework, scope creep is expected. Requirements change mid-semester, features get added to satisfy rubric items, and cutting functionality feels like losing points. The incentive structure rewards inclusion: more features, more demonstrations, more coverage. Even in project-heavy programs, the scope is given, not chosen. + +In professional practice, the opposite is often true. Most engineering value comes from what you choose not to build. A self-directed project forces this directly. There is no rubric to optimize for, no teaching assistant to ask for an extension. You must decide what matters, what does not, and then commit to the boundary. This is scope discipline, and it is difficult to practice when someone else defines the scope for you. + +\subsection{Invariant-Driven Design} + +Course projects tend to emphasize outputs: demonstrations, reports, and the happy path working on presentation day. Sprint projects reward a different approach, defining invariants early and designing around failure modes. When you have one week, you cannot afford to discover your core assumptions were wrong on day five. You are forced to state what must always be true and build outward from there. + +This extends naturally to the concept of design by non-goals: explicitly documenting what the system will never do and enforcing those boundaries in practice. Non-goal documentation is uncommon in coursework but standard in mature engineering organizations, where it prevents scope drift and communicates intent to future maintainers. + +\subsection{Taste and Restraint} + +You cannot brute-force a one-week project with complexity. You must choose conservative tools, reject clever abstractions, and bias toward debuggability over expressiveness. This is professional taste forming, the development of judgment about what belongs in a system and what does not. It is difficult to practice in a semester-long project where complexity can always be deferred to next week or absorbed by a teammate. % ============================================================================ \section{Single-Sprint Projects as Deliberate Practice} % ============================================================================ -% Define the format: 1--2 weeks, self-imposed scope, production-quality target. -% -% Characteristics: -% - No grade safety net---every decision reflects directly on you -% - Design trade-offs are permanent (no "fix it next sprint") -% - Forces early architectural clarity -% - Simulates real sprint timelines -% -% Compare to coursework sprints: in college, a "sprint" often means a burst -% of effort before a deadline. In industry, a sprint is a bounded commitment -% with explicit deliverables and explicit cuts. Single-sprint personal projects -% practice the latter. -% -% This is also where time management and expectation management are learned -% organically. There is no project manager---you are the project manager. -% -% TODO: Write 2-3 paragraphs. +The format is simple: one to two weeks, a self-imposed scope, and a production-quality target. The project must be something you can define in a single sentence, small enough to be tractable but real enough to require genuine design decisions. The constraint is the point. There is no grade safety net, no partial credit. Every decision reflects directly on you, and design trade-offs are permanent. + +In academic settings, a ``sprint'' usually means a burst of effort before a deadline. In professional practice, a sprint is a bounded commitment with explicit deliverables and explicit cuts. Single-sprint personal projects practice the latter. They force you to decide what ships and what does not before the work begins, then hold yourself to that boundary as the work reveals its actual complexity. + +This is also where time management and expectation management are learned organically. There is no project manager. You are the project manager. You estimate, you prioritize, you cut, and you ship. The feedback loop is immediate: if you scoped poorly, you either ship something incomplete or you learn to scope better next time. Both outcomes are instructive. % ============================================================================ \section{A Concrete Example} % ============================================================================ -% Introduce hadlink subtly---not as a showcase, but as an illustration. -% -% "In a recent single-sprint project, I constrained myself to a ten-day timeline -% and a sharply defined problem: a URL redirection service with formally verified -% core logic. The limitation forced me to define non-goals early (no analytics, -% no user accounts, no custom aliases), choose conservative tools (SQLite, Warp), -% and freeze scope quickly. The result was a small but production-ready system -% with formal proof obligations rather than an expanding prototype." -% -% Key details to weave in: -% - 10 days from first commit to v1.0.0 (Jan 22 -- Feb 1, 2026) -% - Explicit non-goals documented and enforced in contribution policy -% - Scope cuts made visible: no web UI, no click tracking, no custom aliases -% - Design by invariant: "All stored URLs are canonicalized" as a system property -% that guided every architectural decision -% - Phased roadmap (v0.1.0 -> v0.5.0 -> v1.0.0) within the sprint -% -% Tone: understated. The project is the example, not the point. -% -% TODO: Write 2-3 paragraphs. +In a recent single-sprint project, I constrained myself to a ten-day timeline and a sharply defined problem: a URL redirection service with formally verified core logic. The first commit was on January 22, 2026; version 1.0.0 shipped on February 1. The timeline forced decisions that a longer project would have deferred. Non-goals were documented before goals: no analytics, no user accounts, no custom aliases, no web interface, no click tracking. These were not features cut for time. They were excluded by design and enforced in the contribution policy. + +The central design invariant, that all stored URLs are canonicalized and satisfy four security properties, was established on day one and guided every subsequent architectural decision. The validated core was written in SPARK Ada with formal proof obligations. The service layer was composed in Haskell using conservative dependencies: SQLite for storage, Warp for HTTP. A phased internal roadmap, from v0.1.0 through v0.5.0 to v1.0.0, provided structure within the sprint and made scope visible at each stage. + +The result was a small but production-ready system with 137 verified proof obligations rather than an expanding prototype. The project succeeded not because the timeline was generous, but because the scope was honest. Every feature that shipped was intentional, and every feature that was excluded was documented. % ============================================================================ \section{Lessons and Advice} % ============================================================================ -% Addressed to students and early-career engineers. -% -% Practical suggestions: -% - Pick a problem you can define in one sentence -% - Write your non-goals before your goals -% - Set a hard deadline and do not move it -% - Ship something real, even if small -% - Treat the constraint as the feature, not the limitation -% -% Broader point: the habit of scoping, cutting, and shipping builds a skill set -% that complements coursework. Neither alone is sufficient. Together, they -% approximate the reality of professional engineering more closely than either -% can alone. -% -% TODO: Write 2-3 paragraphs. +For students and early-career engineers looking to build this practice, the approach is straightforward. Pick a problem you can define in one sentence. Write your non-goals before your goals. Set a hard deadline and do not move it. Ship something real, even if small. Treat the constraint as the feature, not the limitation. + +The temptation will be to expand scope once the work feels productive. Resist it. The discipline of stopping, of declaring a system complete while there are still obvious things you could add, is the skill being practiced. A finished project with clear boundaries teaches more than an ambitious prototype that never ships. + +The broader point is that the habit of scoping, cutting, and shipping builds a skill set that coursework alone does not develop. Neither mode of learning is sufficient on its own. Together, they approximate the reality of professional engineering, where the ability to decide what to build matters as much as the ability to build it. % ============================================================================ \section{Conclusion} % ============================================================================ -% Reinforce: -% - Coursework and sprint projects are complementary, not competing -% - Sprint projects train judgment, ownership, and restraint -% - These are the skills that distinguish an engineer who can build from one -% who can decide what to build -% -% TODO: Write 1-2 paragraphs. +Coursework and single-sprint projects are complementary forms of engineering practice. Programs that already integrate frequent short projects into the syllabus have a measurable advantage: their students arrive at the workforce having practiced the cycle of scoping, building, and shipping multiple times. Sprint projects extend this further by removing the external scaffolding entirely, training judgment, ownership, and restraint in their purest form. For students in traditional, exam-heavy programs, self-directed sprint projects fill a critical gap that no amount of problem sets can address. + +These are the skills that distinguish an engineer who can build from one who can decide what to build. They are best developed through repetition, through the habit of picking a small problem, defining its boundaries honestly, and finishing it well. The earlier that habit forms, whether through program structure or personal initiative, the stronger the engineer it produces. \end{document} From 52557da3ab65ddab22d5a986d07e402ad27b031d Mon Sep 17 00:00:00 2001 From: Jacob Seman <90524106+Jbsco@users.noreply.github.com> Date: Mon, 2 Feb 2026 22:32:04 -0700 Subject: [PATCH 03/11] Revisions to sprint-projects paper --- docs/whitepapers/sprint-projects.tex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/whitepapers/sprint-projects.tex b/docs/whitepapers/sprint-projects.tex index 3a921c4..b1c13f7 100644 --- a/docs/whitepapers/sprint-projects.tex +++ b/docs/whitepapers/sprint-projects.tex @@ -61,11 +61,11 @@ \subsection{Taste and Restraint} \section{Single-Sprint Projects as Deliberate Practice} % ============================================================================ -The format is simple: one to two weeks, a self-imposed scope, and a production-quality target. The project must be something you can define in a single sentence, small enough to be tractable but real enough to require genuine design decisions. The constraint is the point. There is no grade safety net, no partial credit. Every decision reflects directly on you, and design trade-offs are permanent. +The format is simple: one to two weeks, a self-imposed scope, and a production-quality target. The project must be something you can define in a single sentence, small enough to be tractable but real enough to require genuine design decisions. The constraint is the point, and there is no grade safety net or partial credit to fall back on. Every decision reflects directly on you, and design trade-offs are permanent. In academic settings, a ``sprint'' usually means a burst of effort before a deadline. In professional practice, a sprint is a bounded commitment with explicit deliverables and explicit cuts. Single-sprint personal projects practice the latter. They force you to decide what ships and what does not before the work begins, then hold yourself to that boundary as the work reveals its actual complexity. -This is also where time management and expectation management are learned organically. There is no project manager. You are the project manager. You estimate, you prioritize, you cut, and you ship. The feedback loop is immediate: if you scoped poorly, you either ship something incomplete or you learn to scope better next time. Both outcomes are instructive. +This is also where time management and expectation management are learned organically. There is no project manager but yourself, responsible for estimating, prioritizing, cutting, and shipping. The feedback loop is immediate: if you scoped poorly, you either ship something incomplete or you learn to scope better next time. Both outcomes are instructive. % ============================================================================ \section{A Concrete Example} From f680898ae224d43054937117094185a5cefa49f1 Mon Sep 17 00:00:00 2001 From: Jacob Seman <90524106+Jbsco@users.noreply.github.com> Date: Wed, 4 Feb 2026 13:11:35 -0700 Subject: [PATCH 04/11] Publish PDF of sprint-projects paper --- docs/whitepapers/sprint-projects.pdf | Bin 0 -> 85300 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/whitepapers/sprint-projects.pdf diff --git a/docs/whitepapers/sprint-projects.pdf b/docs/whitepapers/sprint-projects.pdf new file mode 100644 index 0000000000000000000000000000000000000000..9246ffb8df46d642af0f56a433f94d69dabc1d56 GIT binary patch literal 85300 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
    xQ)U6m5J=&j9q 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 P#KO>+OI6j?-;E0Z$ZMrI literal 0 HcmV?d00001 From 85ce04b8932f9574dea9269299db7cd8cdc616dd Mon Sep 17 00:00:00 2001 From: Jacob Seman <90524106+Jbsco@users.noreply.github.com> Date: Mon, 2 Feb 2026 21:55:02 -0700 Subject: [PATCH 05/11] Draft first cut of hadlink paper --- docs/whitepapers/hadlink.tex | 274 ++++++++++++----------------------- 1 file changed, 95 insertions(+), 179 deletions(-) diff --git a/docs/whitepapers/hadlink.tex b/docs/whitepapers/hadlink.tex index a3d9267..e41d351 100644 --- a/docs/whitepapers/hadlink.tex +++ b/docs/whitepapers/hadlink.tex @@ -18,226 +18,142 @@ } \title{hadlink: A Minimal, High-Assurance URL Redirection Service} -\author{} % TODO: Add author name +\author{Jacob Seman} \date{} \begin{document} \maketitle \begin{abstract} -% TODO: Write abstract (~100 words) -% Core argument: URL shorteners are deceptively small systems with disproportionate -% blast radius. Most implementations conflate policy and mechanism, trust input too -% broadly, and are difficult to reason about. hadlink is a URL redirection service -% designed for infrastructure use cases (CI/CD, QR codes, SMS) where deterministic -% behavior, security, and auditability matter more than feature breadth. Its core -% validation and encoding logic is formally verified using SPARK Ada, while the -% service layer is composed in Haskell. This paper describes the system's design, -% assurance model, and deployment approach. +URL shorteners are deceptively small systems with disproportionate blast radius. Most implementations conflate policy and mechanism, trust input too broadly, and are difficult to reason about. hadlink is a URL redirection service designed for infrastructure use cases (CI/CD pipelines, QR codes, SMS notifications) where deterministic behavior, security, and auditability matter more than feature breadth. Its core validation and encoding logic is formally verified using SPARK Ada, while the service layer is composed in Haskell with conservative dependencies. This paper describes the system's design philosophy, assurance model, and deployment approach. \end{abstract} % ============================================================================ \section{Problem Statement} % ============================================================================ -% "This is a deceptively small problem with disproportionate blast radius." -% -% URL shorteners are frequently: -% - Abuse targets (spam, phishing, malware distribution) -% - Redirectors of last resort (anything that accepts a URL becomes an open relay) -% - Deployed casually (minimal validation, no formal reasoning about behavior) -% -% Most implementations: -% - Conflate policy and mechanism (validation mixed with routing mixed with storage) -% - Trust input too much (accepting arbitrary URLs, including private addresses) -% - Are hard to reason about (no formal specification, behavior varies by input) -% -% The problem is small enough to be tractable for formal methods, but consequential -% enough that the effort is justified. -% -% TODO: Write 2-3 paragraphs. +URL shortening is a deceptively small problem with disproportionate blast radius. Any service that accepts arbitrary URLs and redirects traffic to them becomes, in effect, an open relay. Shorteners are frequent abuse targets for spam campaigns, phishing attacks, and malware distribution. The opacity of the short code, hiding the destination until the redirect occurs, is precisely what makes them useful and precisely what makes them dangerous. + +Most URL shortener implementations share common weaknesses. They conflate policy and mechanism, mixing validation logic with routing logic with storage logic in ways that make reasoning about behavior difficult. They trust input too broadly, accepting URLs that point to private network addresses, contain embedded credentials, or use non-HTTP schemes. They offer no formal specification of what the system guarantees, leaving behavior to vary unpredictably with input. + +The problem is small enough to be tractable for formal methods. A URL shortener's core logic (validating input, generating short codes, storing mappings, and performing redirects) can be specified precisely and verified completely. The effort is justified because the consequences of getting it wrong extend beyond the service itself to every system that trusts its output. % ============================================================================ \section{Design Goals and Non-Goals} % ============================================================================ -% This section signals scope maturity. -% -% \subsection{Goals} -% - Deterministic behavior (same URL always produces same short code) -% - Minimal trusted computing base -% - Explicit failure modes (enumerated error codes, no silent failures) -% - Deployable on constrained systems (single binary, SQLite, no external services) -% -% \subsection{Non-Goals} -% - Marketing analytics or click tracking -% - User accounts or dashboards -% - Custom aliases -% - Dynamic policy engines -% - JavaScript redirects or link previews -% - Feature parity with SaaS shorteners (Bitly, TinyURL) -% -% "These are conscious trade-offs, not omissions." -% -% Non-goals are documented in the repository and enforced in the contribution -% policy. Pull requests that conflict with non-goals are closed with explanation. -% -% TODO: Write 2-3 paragraphs. +\subsection{Goals} + +hadlink targets infrastructure use cases where predictability matters more than features. Four goals guide the design. First, deterministic behavior: the same input URL always produces the same short code, enabling idempotent operations and predictable caching. Second, a minimal trusted computing base: the verified core contains no I/O, networking, storage, or concurrency, limiting the attack surface to well-understood components. Third, explicit failure modes: all errors are enumerated, and the system never fails silently or returns ambiguous results. Fourth, constrained deployability: a single binary with SQLite storage runs on minimal hardware with no external service dependencies. + +\subsection{Non-Goals} + +Equally important are the things hadlink will not do. It provides no marketing analytics or click tracking. It has no user accounts, dashboards, or authentication layer. It does not support custom aliases, vanity URLs, or dynamic policy engines. It performs no JavaScript redirects, link previews, or interstitial pages. It does not aim for feature parity with SaaS shorteners like Bitly or TinyURL. + +These are conscious trade-offs, not omissions. Each excluded feature would add complexity, expand the attack surface, or conflict with the determinism requirement. Non-goals are documented in the repository and enforced in the contribution policy: pull requests that conflict with stated non-goals are closed with explanation, not negotiated. % ============================================================================ \section{Architecture} % ============================================================================ -% Two-layer design with intentional separation: -% -% \subsection{SPARK Core} -% Formally verified logic for: -% - URL canonicalization (scheme validation, private address rejection, -% credentials detection) -% - Short code generation (HMAC-SHA256 via SPARKNaCl, Base62 encoding) -% -% Contains no IO, networking, storage, concurrency, or configuration parsing. -% 137 proof obligations, all verified automatically by CVC5. -% -% \subsection{Haskell Service Layer} -% Composes the system: HTTP (Warp), storage (SQLite), rate limiting, structured -% logging, proof-of-work validation. Property-tested via Hedgehog. -% -% \subsection{FFI Boundary} -% Minimal and frozen (API version 1). Three exported C functions: -% hadlink\_canonicalize, hadlink\_make\_short\_code, hadlink\_api\_version. -% FFI layer is explicitly outside SPARK verification (pragma SPARK\_Mode Off). -% A freeze test ensures the interface does not change without a version bump. -% - The FFI is thin by design -% - HTTP (Warp) is selected because it is thin -% -% \subsection{Split Binaries} -% Two separate executables: -% - \texttt{hadlink-redirect}: Read-only, fast, no SPARK dependency. Exposed -% to network. -% - \texttt{hadlink-shorten}: Write path, includes SPARK FFI, rate limiting, -% PoW. Restricted to LAN/VPN. -% -% The redirect binary does not link libHadlink\_Core.so. This is least-privilege -% at the binary level. -% -% \subsection{Storage} -% SQLite in WAL mode. Append-only on the write path. Read-only access for -% redirect. Schema: short\_code (PK) -> canonical\_url, created\_at. -% INSERT OR IGNORE provides idempotent creation (deterministic codes mean -% duplicate requests are harmless). -% -% TODO: Write section prose, optionally include architecture diagram. +hadlink uses a two-layer design with intentional separation between verified core logic and service composition. + +\subsection{SPARK Core} + +The formally verified core handles URL canonicalization and short code generation. Canonicalization validates the URL scheme (HTTP or HTTPS only), rejects URLs pointing to private addresses (RFC 1918, RFC 4193, link-local), and detects embedded credentials. Short code generation uses HMAC-SHA256 via SPARKNaCl, producing deterministic 8-character Base62 codes. + +The SPARK core contains no I/O, networking, storage, concurrency, or configuration parsing. It is pure computation with explicit preconditions and postconditions. All 137 proof obligations are verified automatically by the CVC5 SMT solver. + +\subsection{Haskell Service Layer} + +The service layer composes the system from conservative dependencies. HTTP handling uses Warp, chosen for its minimal API surface and proven reliability. Storage uses SQLite in WAL mode. Rate limiting, structured logging, and proof-of-work validation are implemented in Haskell and tested via Hedgehog property tests. + +The service layer trusts the SPARK core's postconditions: if canonicalization succeeds, the URL satisfies all security properties. This trust boundary is explicit and documented. + +\subsection{FFI Boundary} + +The interface between layers is minimal and frozen at API version 1. Three C functions are exported: \texttt{hadlink\_canonicalize}, \texttt{hadlink\_make\_short\_code}, and \texttt{hadlink\_api\_version}. The FFI marshaling code is explicitly outside SPARK verification (\texttt{pragma SPARK\_Mode Off}) and is tested separately. + +A freeze test in the test suite ensures the interface does not change without a corresponding version bump. The FFI is thin by design: data crosses the boundary as C strings with explicit length parameters, and all memory is caller-allocated. + +\subsection{Split Binaries} + +Two separate executables serve different trust profiles. \texttt{hadlink-redirect} handles the read path: it looks up short codes and returns redirects. It is fast, stateless, and links no SPARK code; the redirect binary does not depend on \texttt{libHadlink\_Core.so}. It is designed to be exposed to the public network. + +\texttt{hadlink-shorten} handles the write path: it validates URLs, generates short codes, and stores mappings. It includes the SPARK FFI, rate limiting, and proof-of-work validation. It is designed to be restricted to internal networks or authenticated access. + +This separation is least-privilege at the binary level. The component exposed to untrusted traffic has the smallest possible attack surface. + +\subsection{Storage} + +SQLite in WAL mode provides the storage layer. The schema is minimal: short code (primary key), canonical URL, and creation timestamp. The write path is append-only; there is no update or delete operation. + +\texttt{INSERT OR IGNORE} provides idempotent creation. Because short codes are deterministic (same URL always produces same code), duplicate requests are harmless: they either insert a new row or silently succeed when the row already exists. The redirect service opens the database read-only. % ============================================================================ \section{Formal Assurance} % ============================================================================ -% What is proven: -% - All stored URLs have valid HTTP/HTTPS scheme -% - No stored URL contains credentials (user:pass@host) -% - No stored URL points to a private address (RFC 1918, RFC 4193, link-local) -% - Short codes are exactly 8 Base62 characters -% - All array accesses are in bounds -% - No integer overflow in encoding logic -% -% What is NOT proven: -% - FFI marshaling correctness (pragma SPARK_Mode Off) -% - Haskell service behavior (property-tested, not formally verified) -% - SQLite behavior (trusted dependency) -% - Network-level properties (TLS, DNS) -% -% Assumptions made explicit: -% - 2 pragma Assume statements, both in a ghost lemma, both documenting -% pure function determinism (A = B implies f(A) = f(B)) -% - Zero assumes in business logic -% -% \begin{table}[h] -% \centering -% \begin{tabular}{lr} -% \toprule -% Check type & Count \\ -% \midrule -% Range checks & 31 \\ -% Overflow checks & 30 \\ -% Precondition & 29 \\ -% Index checks & 11 \\ -% Loop invariants & 18 \\ -% Postcondition & 9 \\ -% Other & 9 \\ -% \midrule -% Total & 137 \\ -% \bottomrule -% \end{tabular} -% \end{table} -% -% The project references DO-278A (SIL-3) integrity objectives as an architectural -% guide, but is not certified. This is a single-developer project without -% independent verification resources. -% -% TODO: Write 2-3 paragraphs with table. +The SPARK core provides machine-checked guarantees about the system's behavior. All stored URLs have a valid HTTP or HTTPS scheme. No stored URL contains embedded credentials. No stored URL points to a private address. Short codes are exactly 8 Base62 characters. All array accesses are proven in-bounds, and the encoding logic is free of integer overflow. + +\begin{table}[h] +\centering +\begin{tabular}{lr} +\toprule +Check type & Count \\ +\midrule +Range checks & 31 \\ +Overflow checks & 30 \\ +Preconditions & 29 \\ +Loop invariants & 18 \\ +Index checks & 11 \\ +Postconditions & 9 \\ +Other (assert, length, division, init) & 9 \\ +\midrule +Total & 137 \\ +\bottomrule +\end{tabular} +\caption{Proof obligation breakdown by check type.} +\end{table} + +The verification boundary is explicit about what is not proven. FFI marshaling is outside SPARK verification and tested separately. The Haskell service layer is property-tested via Hedgehog but not formally verified. SQLite is a trusted dependency. Network-level properties (TLS termination, DNS resolution) are outside the system's scope. + +Assumptions are confined and documented. The codebase contains exactly two \texttt{pragma Assume} statements, both in a ghost lemma that generates no runtime code. Both document pure function determinism: if two inputs are equal, their outputs are equal. There are zero assumes in business logic. + +The project references DO-278A (Software Integrity Level 3) as an architectural guide for separation of concerns and evidence requirements. It is not certified; this is a single-developer project without independent verification resources. The formal methods provide confidence, not certification. % ============================================================================ \section{Deployment} % ============================================================================ -% This section is rare in whitepapers and valuable. -% -% Three deployment methods: -% - Docker (pre-built binaries via GitHub Releases, or build from source) -% - Systemd (direct installation with security-hardened unit files) -% - Arch Linux AUR (hadlink-bin package) -% -% Systemd hardening: NoNewPrivileges, ProtectSystem=strict, ProtectHome, -% PrivateTmp, MemoryDenyWriteExecute, resource limits (128M shorten, 64M redirect). -% -% Configuration minimalism: environment variables only, no config file parser, -% no YAML/TOML. Secret management via file-based EnvironmentFile. -% -% Failure behavior: both services restart on failure (RestartSec=5s). Redirect -% service is stateless and recovers instantly. Shorten service holds no -% in-memory state beyond rate limiter (STM-based, rebuilt on restart). -% -% Pre-built binaries available from GitHub Releases---no build toolchain -% required for deployment. -% -% TODO: Write 2-3 paragraphs. +hadlink supports three deployment methods. Docker images use pre-built binaries from GitHub Releases or can be built from source. Systemd unit files provide direct installation with security hardening. An Arch Linux AUR package (\texttt{hadlink-bin}) offers distribution-native installation. + +The systemd configuration applies defense-in-depth hardening: \texttt{NoNewPrivileges}, \texttt{ProtectSystem=strict}, \texttt{ProtectHome}, \texttt{PrivateTmp}, and \texttt{MemoryDenyWriteExecute}. Resource limits are conservative: 128MB for the shorten service, 64MB for redirect. Both services restart on failure with a 5-second delay. + +Configuration follows a minimalist approach: environment variables only, with no configuration file parser. There is no YAML, no TOML, no JSON configuration. Secret management uses systemd's \texttt{EnvironmentFile} directive, keeping secrets out of unit files and command lines. + +The redirect service is stateless and recovers instantly from restarts. The shorten service holds no persistent in-memory state; its STM-based rate limiter rebuilds on startup. Pre-built binaries are available from GitHub Releases, so deployment requires no build toolchain. Operators can run hadlink without installing GHC, GNAT, or any development dependencies. % ============================================================================ \section{Limitations and Future Work} % ============================================================================ -% This section earns credibility. -% -% Intentional limitations: -% - SQLite scaling envelope (sufficient for infrastructure use, not for -% high-volume marketing workloads) -% - No built-in abuse detection (rate limiting and PoW mitigate, but do not -% detect malicious URLs) -% - Single-node only (no replication, no distributed deployment) -% - No URL expiration or deletion (append-only by design) -% -% Potential future work: -% - LMDB backend for higher read throughput -% - TLS termination (currently relies on reverse proxy) -% - Metrics export (Prometheus endpoint) -% -% "These are conscious trade-offs, not omissions. Each limitation preserves -% a property the system depends on." -% -% TODO: Write 1-2 paragraphs. +hadlink has intentional limitations that preserve its design properties. SQLite's scaling envelope is sufficient for infrastructure use cases but not for high-volume marketing workloads processing millions of redirects per second. There is no built-in abuse detection; rate limiting and proof-of-work mitigate automated abuse but do not detect malicious destination URLs. The system is single-node only, with no replication or distributed deployment. URLs cannot expire or be deleted; the append-only design ensures that short codes are permanent and deterministic. + +These are conscious trade-offs. SQLite's simplicity eliminates an entire class of distributed systems failures. The absence of abuse detection keeps the system policy-neutral, allowing operators to layer their own detection upstream. Single-node deployment means no consensus protocol, no split-brain scenarios, no coordination overhead. Permanent URLs mean short codes can be printed on physical media without expiration concerns. + +Potential future work includes an LMDB backend for higher read throughput, native TLS termination (currently the system relies on a reverse proxy), and a Prometheus metrics endpoint for operational visibility. None of these would change the core assurance model. % ============================================================================ \section{Conclusion} % ============================================================================ -% Reinforce: -% - Correctness over features -% - Simplicity as a security primitive -% - Formal methods are tractable for small infrastructure services -% - The approach---SPARK core, thin FFI, Haskell composition---is applicable -% to other services with similar trust requirements -% -% TODO: Write 1-2 paragraphs. +hadlink demonstrates that formal methods are tractable for small infrastructure services. The system prioritizes correctness over features and treats simplicity as a security primitive. By confining verified logic to a pure computational core and composing the service layer from conservative dependencies, it achieves high assurance without the overhead typically associated with formal verification. + +The approach (SPARK core with explicit contracts, thin FFI boundary, Haskell composition layer) is applicable to other services with similar trust requirements: authentication tokens, configuration validators, cryptographic utilities, and anywhere a small component has disproportionate security impact. The question for such systems is not whether formal methods are worth the effort, but whether the alternative, trusting unverified code in critical paths, is acceptable. + +\section*{Availability} + +hadlink is open source and available at \url{https://github.com/Jbsco/hadlink}. \end{document} From 8eb9eedd1c1ec2aba2b8d69f52801fbe4a5d860d Mon Sep 17 00:00:00 2001 From: Jacob Seman <90524106+Jbsco@users.noreply.github.com> Date: Mon, 2 Feb 2026 22:32:21 -0700 Subject: [PATCH 06/11] Revisions to hadlink paper --- docs/whitepapers/hadlink.tex | 49 ++++++++++++++++++++++-------------- 1 file changed, 30 insertions(+), 19 deletions(-) diff --git a/docs/whitepapers/hadlink.tex b/docs/whitepapers/hadlink.tex index e41d351..9495f67 100644 --- a/docs/whitepapers/hadlink.tex +++ b/docs/whitepapers/hadlink.tex @@ -11,13 +11,14 @@ keywordstyle=\color{blue!70!black}, commentstyle=\color{gray}, stringstyle=\color{red!60!black}, + showstringspaces=false, breaklines=true, frame=single, xleftmargin=1em, framexleftmargin=0.5em, } -\title{hadlink: A Minimal, High-Assurance URL Redirection Service} +\title{\texttt{hadlink}: A Minimal, High-Assurance URL Redirection Service} \author{Jacob Seman} \date{} @@ -25,14 +26,14 @@ \maketitle \begin{abstract} -URL shorteners are deceptively small systems with disproportionate blast radius. Most implementations conflate policy and mechanism, trust input too broadly, and are difficult to reason about. hadlink is a URL redirection service designed for infrastructure use cases (CI/CD pipelines, QR codes, SMS notifications) where deterministic behavior, security, and auditability matter more than feature breadth. Its core validation and encoding logic is formally verified using SPARK Ada, while the service layer is composed in Haskell with conservative dependencies. This paper describes the system's design philosophy, assurance model, and deployment approach. +URL shorteners are deceptively small systems with disproportionate security consequences. Most implementations conflate policy and mechanism, trust input too broadly, and are difficult to reason about. \texttt{hadlink} is a URL redirection service designed for infrastructure use cases (CI/CD pipelines, QR codes, SMS notifications) where deterministic behavior, security, and auditability matter more than feature breadth. Its core validation and encoding logic is formally verified using SPARK Ada, while the service layer is composed in Haskell with conservative dependencies. This paper describes the system's design philosophy, assurance model, and deployment approach. \end{abstract} % ============================================================================ \section{Problem Statement} % ============================================================================ -URL shortening is a deceptively small problem with disproportionate blast radius. Any service that accepts arbitrary URLs and redirects traffic to them becomes, in effect, an open relay. Shorteners are frequent abuse targets for spam campaigns, phishing attacks, and malware distribution. The opacity of the short code, hiding the destination until the redirect occurs, is precisely what makes them useful and precisely what makes them dangerous. +Any service that accepts arbitrary URLs and redirects traffic to them becomes, in effect, an open relay. URL shorteners are frequent abuse targets for spam campaigns, phishing attacks, and malware distribution. The opacity of the short code, hiding the destination until the redirect occurs, is precisely what makes them useful and precisely what makes them dangerous. Despite this, most shorteners are deployed casually, with minimal validation and no formal reasoning about their behavior. Most URL shortener implementations share common weaknesses. They conflate policy and mechanism, mixing validation logic with routing logic with storage logic in ways that make reasoning about behavior difficult. They trust input too broadly, accepting URLs that point to private network addresses, contain embedded credentials, or use non-HTTP schemes. They offer no formal specification of what the system guarantees, leaving behavior to vary unpredictably with input. @@ -44,11 +45,11 @@ \section{Design Goals and Non-Goals} \subsection{Goals} -hadlink targets infrastructure use cases where predictability matters more than features. Four goals guide the design. First, deterministic behavior: the same input URL always produces the same short code, enabling idempotent operations and predictable caching. Second, a minimal trusted computing base: the verified core contains no I/O, networking, storage, or concurrency, limiting the attack surface to well-understood components. Third, explicit failure modes: all errors are enumerated, and the system never fails silently or returns ambiguous results. Fourth, constrained deployability: a single binary with SQLite storage runs on minimal hardware with no external service dependencies. +\texttt{hadlink} targets infrastructure use cases where predictability matters more than features. Four goals guide the design. First, deterministic behavior: the same input URL always produces the same short code, enabling idempotent operations and predictable caching. Second, a minimal trusted computing base: the verified core contains no I/O, networking, storage, or concurrency, limiting the attack surface to well-understood components. Third, explicit failure modes: all errors are enumerated, and the system never fails silently or returns ambiguous results. Fourth, constrained deployability: a single binary with SQLite storage runs on minimal hardware with no external service dependencies. \subsection{Non-Goals} -Equally important are the things hadlink will not do. It provides no marketing analytics or click tracking. It has no user accounts, dashboards, or authentication layer. It does not support custom aliases, vanity URLs, or dynamic policy engines. It performs no JavaScript redirects, link previews, or interstitial pages. It does not aim for feature parity with SaaS shorteners like Bitly or TinyURL. +Equally important are the things \texttt{hadlink} will not do. It provides no marketing analytics or click tracking. It has no user accounts, dashboards, or authentication layer. It does not support custom aliases, vanity URLs, or dynamic policy engines. It performs no JavaScript redirects, link previews, or interstitial pages. It does not aim for feature parity with SaaS shorteners like Bitly or TinyURL. These are conscious trade-offs, not omissions. Each excluded feature would add complexity, expand the attack surface, or conflict with the determinism requirement. Non-goals are documented in the repository and enforced in the contribution policy: pull requests that conflict with stated non-goals are closed with explanation, not negotiated. @@ -56,29 +57,29 @@ \subsection{Non-Goals} \section{Architecture} % ============================================================================ -hadlink uses a two-layer design with intentional separation between verified core logic and service composition. +\texttt{hadlink} uses a two-layer design with intentional separation between verified core logic and service composition. \subsection{SPARK Core} The formally verified core handles URL canonicalization and short code generation. Canonicalization validates the URL scheme (HTTP or HTTPS only), rejects URLs pointing to private addresses (RFC 1918, RFC 4193, link-local), and detects embedded credentials. Short code generation uses HMAC-SHA256 via SPARKNaCl, producing deterministic 8-character Base62 codes. -The SPARK core contains no I/O, networking, storage, concurrency, or configuration parsing. It is pure computation with explicit preconditions and postconditions. All 137 proof obligations are verified automatically by the CVC5 SMT solver. +The SPARK core contains no I/O, networking, storage, concurrency, or configuration parsing. It is pure computation with explicit preconditions and postconditions \cite{sparkguidance}. All 137 proof obligations are verified automatically by the CVC5 SMT solver. \subsection{Haskell Service Layer} -The service layer composes the system from conservative dependencies. HTTP handling uses Warp, chosen for its minimal API surface and proven reliability. Storage uses SQLite in WAL mode. Rate limiting, structured logging, and proof-of-work validation are implemented in Haskell and tested via Hedgehog property tests. +The service layer composes the system from conservative dependencies. HTTP handling uses Warp, chosen for its minimal API surface and proven reliability. Storage relies on SQLite in WAL mode for its simplicity and reliability. Rate limiting, structured logging, and proof-of-work validation are implemented in Haskell and tested via Hedgehog property tests. The service layer trusts the SPARK core's postconditions: if canonicalization succeeds, the URL satisfies all security properties. This trust boundary is explicit and documented. -\subsection{FFI Boundary} +\subsection{Foreign Function Interface} -The interface between layers is minimal and frozen at API version 1. Three C functions are exported: \texttt{hadlink\_canonicalize}, \texttt{hadlink\_make\_short\_code}, and \texttt{hadlink\_api\_version}. The FFI marshaling code is explicitly outside SPARK verification (\texttt{pragma SPARK\_Mode Off}) and is tested separately. +The Foreign Function Interface (FFI) between layers is minimal and frozen at API version 1. Three C functions are exported: \texttt{hadlink\_canonicalize}, \texttt{hadlink\_make\_short\_code}, and \texttt{hadlink\_api\_version}. The FFI marshaling code is explicitly outside SPARK verification (\texttt{pragma SPARK\_Mode Off}) and is tested separately. A freeze test in the test suite ensures the interface does not change without a corresponding version bump. The FFI is thin by design: data crosses the boundary as C strings with explicit length parameters, and all memory is caller-allocated. \subsection{Split Binaries} -Two separate executables serve different trust profiles. \texttt{hadlink-redirect} handles the read path: it looks up short codes and returns redirects. It is fast, stateless, and links no SPARK code; the redirect binary does not depend on \texttt{libHadlink\_Core.so}. It is designed to be exposed to the public network. +Two separate executables serve different trust profiles. \texttt{hadlink-redirect} handles the read path, looking up short codes and returning redirects. It is fast and stateless, linking no SPARK code and carrying no dependency on \texttt{libHadlink\_Core.so}. This binary is designed to be exposed to the public network. \texttt{hadlink-shorten} handles the write path: it validates URLs, generates short codes, and stores mappings. It includes the SPARK FFI, rate limiting, and proof-of-work validation. It is designed to be restricted to internal networks or authenticated access. @@ -86,7 +87,7 @@ \subsection{Split Binaries} \subsection{Storage} -SQLite in WAL mode provides the storage layer. The schema is minimal: short code (primary key), canonical URL, and creation timestamp. The write path is append-only; there is no update or delete operation. +SQLite in WAL mode provides the storage layer. The schema contains three columns: the short code serving as primary key, the canonical URL, and a creation timestamp. The write path is append-only, with no update or delete operations supported. \texttt{INSERT OR IGNORE} provides idempotent creation. Because short codes are deterministic (same URL always produces same code), duplicate requests are harmless: they either insert a new row or silently succeed when the row already exists. The redirect service opens the database read-only. @@ -94,7 +95,7 @@ \subsection{Storage} \section{Formal Assurance} % ============================================================================ -The SPARK core provides machine-checked guarantees about the system's behavior. All stored URLs have a valid HTTP or HTTPS scheme. No stored URL contains embedded credentials. No stored URL points to a private address. Short codes are exactly 8 Base62 characters. All array accesses are proven in-bounds, and the encoding logic is free of integer overflow. +The SPARK core provides machine-checked guarantees about the system's behavior. Every stored URL is proven to have a valid HTTP or HTTPS scheme, contain no embedded credentials, and point to no private network address. Short codes are guaranteed to be exactly 8 Base62 characters. All array accesses are proven in-bounds, and the encoding logic is verified free of integer overflow. \begin{table}[h] \centering @@ -126,19 +127,19 @@ \section{Formal Assurance} \section{Deployment} % ============================================================================ -hadlink supports three deployment methods. Docker images use pre-built binaries from GitHub Releases or can be built from source. Systemd unit files provide direct installation with security hardening. An Arch Linux AUR package (\texttt{hadlink-bin}) offers distribution-native installation. +\texttt{hadlink} supports three deployment methods. Docker images use pre-built binaries from GitHub Releases or can be built from source. Systemd unit files provide direct installation with security hardening. An Arch Linux AUR package (\texttt{hadlink-bin}) offers distribution-native installation. The systemd configuration applies defense-in-depth hardening: \texttt{NoNewPrivileges}, \texttt{ProtectSystem=strict}, \texttt{ProtectHome}, \texttt{PrivateTmp}, and \texttt{MemoryDenyWriteExecute}. Resource limits are conservative: 128MB for the shorten service, 64MB for redirect. Both services restart on failure with a 5-second delay. -Configuration follows a minimalist approach: environment variables only, with no configuration file parser. There is no YAML, no TOML, no JSON configuration. Secret management uses systemd's \texttt{EnvironmentFile} directive, keeping secrets out of unit files and command lines. +Configuration follows a minimalist approach, using environment variables only with no configuration file parser to introduce complexity or parsing vulnerabilities. Secret management uses systemd's \texttt{EnvironmentFile} directive, keeping secrets out of unit files and command lines. -The redirect service is stateless and recovers instantly from restarts. The shorten service holds no persistent in-memory state; its STM-based rate limiter rebuilds on startup. Pre-built binaries are available from GitHub Releases, so deployment requires no build toolchain. Operators can run hadlink without installing GHC, GNAT, or any development dependencies. +The redirect service is stateless and recovers instantly from restarts. The shorten service holds no persistent in-memory state; its STM-based rate limiter rebuilds on startup. Pre-built binaries are available from GitHub Releases, so deployment requires no build toolchain. Operators can run \texttt{hadlink} without installing GHC, GNAT, or any development dependencies. % ============================================================================ \section{Limitations and Future Work} % ============================================================================ -hadlink has intentional limitations that preserve its design properties. SQLite's scaling envelope is sufficient for infrastructure use cases but not for high-volume marketing workloads processing millions of redirects per second. There is no built-in abuse detection; rate limiting and proof-of-work mitigate automated abuse but do not detect malicious destination URLs. The system is single-node only, with no replication or distributed deployment. URLs cannot expire or be deleted; the append-only design ensures that short codes are permanent and deterministic. +\texttt{hadlink} has intentional limitations that preserve its design properties. SQLite's scaling envelope is sufficient for infrastructure use cases but not for high-volume marketing workloads processing millions of redirects per second. There is no built-in abuse detection; rate limiting and proof-of-work mitigate automated abuse but do not detect malicious destination URLs. The system is single-node only, with no replication or distributed deployment. URLs cannot expire or be deleted; the append-only design ensures that short codes are permanent and deterministic. These are conscious trade-offs. SQLite's simplicity eliminates an entire class of distributed systems failures. The absence of abuse detection keeps the system policy-neutral, allowing operators to layer their own detection upstream. Single-node deployment means no consensus protocol, no split-brain scenarios, no coordination overhead. Permanent URLs mean short codes can be printed on physical media without expiration concerns. @@ -148,12 +149,22 @@ \section{Limitations and Future Work} \section{Conclusion} % ============================================================================ -hadlink demonstrates that formal methods are tractable for small infrastructure services. The system prioritizes correctness over features and treats simplicity as a security primitive. By confining verified logic to a pure computational core and composing the service layer from conservative dependencies, it achieves high assurance without the overhead typically associated with formal verification. +\texttt{hadlink} demonstrates that formal methods are tractable for small infrastructure services. The system prioritizes correctness over features and treats simplicity as a security primitive. By confining verified logic to a pure computational core and composing the service layer from conservative dependencies, it achieves high assurance without the overhead typically associated with formal verification. The approach (SPARK core with explicit contracts, thin FFI boundary, Haskell composition layer) is applicable to other services with similar trust requirements: authentication tokens, configuration validators, cryptographic utilities, and anywhere a small component has disproportionate security impact. The question for such systems is not whether formal methods are worth the effort, but whether the alternative, trusting unverified code in critical paths, is acceptable. \section*{Availability} -hadlink is open source and available at \url{https://github.com/Jbsco/hadlink}. +\texttt{hadlink} is open source and available at \url{https://github.com/Jbsco/hadlink}. + +\begin{thebibliography}{9} + +\bibitem{sparkguidance} +AdaCore and Thales. +\textit{Implementation Guidance for the Adoption of SPARK}, Release 1.2. +AdaCore, 2022. +\url{https://www.adacore.com/uploads/books/Spark-Guidance-1.2-web.pdf} + +\end{thebibliography} \end{document} From 0dc61d0058ae9d02d6e8bc6bfad4b4428ab473c6 Mon Sep 17 00:00:00 2001 From: Jacob Seman <90524106+Jbsco@users.noreply.github.com> Date: Wed, 4 Feb 2026 13:11:47 -0700 Subject: [PATCH 07/11] Publish PDF of hadlink paper --- docs/whitepapers/hadlink.pdf | Bin 0 -> 124323 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/whitepapers/hadlink.pdf diff --git a/docs/whitepapers/hadlink.pdf b/docs/whitepapers/hadlink.pdf new file mode 100644 index 0000000000000000000000000000000000000000..49af6db5fbc5fdb6b54fe72fb20e14eab9e715d5 GIT binary patch literal 124323 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 bxO>>Rd0 Date: Mon, 2 Feb 2026 21:55:14 -0700 Subject: [PATCH 08/11] Draft first cut of formal-verification paper --- docs/whitepapers/formal-verification-lens.tex | 273 +++++++----------- 1 file changed, 109 insertions(+), 164 deletions(-) diff --git a/docs/whitepapers/formal-verification-lens.tex b/docs/whitepapers/formal-verification-lens.tex index fc61b6c..4004379 100644 --- a/docs/whitepapers/formal-verification-lens.tex +++ b/docs/whitepapers/formal-verification-lens.tex @@ -18,205 +18,150 @@ } \title{SPARK as a Design Lens:\\Beyond Verification in High-Assurance Systems} -\author{} % TODO: Add author name +\author{Jacob Seman} \date{} \begin{document} \maketitle \begin{abstract} -% TODO: Write abstract (~100 words) -% Core argument: SPARK is typically discussed as a verification tool---a way to -% prove that code satisfies its specification. This paper argues that the greater -% benefit, particularly for small infrastructure projects, is architectural. -% Writing SPARK contracts forces the engineer to define boundaries, assumptions, -% and scope before implementation begins. The act of specifying preconditions and -% postconditions serves as cognitive scaffolding that shapes design, limits -% complexity, and produces more maintainable systems. We illustrate this with -% hadlink, a URL redirection service where SPARK contracts guided architectural -% decisions from project inception. +SPARK is typically discussed as a verification tool, a way to prove that code satisfies its specification. This paper argues that verification carries a significant secondary benefit, particularly for small infrastructure projects: architectural clarity. Writing SPARK contracts forces the engineer to define boundaries, assumptions, and scope before implementation begins. The act of specifying preconditions and postconditions serves as cognitive scaffolding that shapes design, limits complexity, and produces more maintainable systems. We illustrate this with hadlink, a URL redirection service where SPARK contracts guided architectural decisions from project inception. \end{abstract} % ============================================================================ \section{Introduction} % ============================================================================ -% Thesis: Using SPARK not only verifies code correctness---it forces the engineer -% to explicitly define boundaries, assumptions, and scope. This shapes architecture, -% limits unnecessary complexity, and produces more predictable systems. -% -% Frame the conventional view: formal verification as a post-hoc correctness check. -% Then the alternative: formal verification as a design-time discipline that -% produces better architecture as a side effect. -% -% "The act of annotating contracts acts as mental scaffolding, shaping architecture -% and forcing minimalism." -% -% TODO: Write 2-3 paragraphs. +The conventional view of formal verification treats it as a post-hoc correctness check. You write the code, then you write the specification, then the prover tells you whether they match. This framing positions verification as an auditing step, valuable but separate from design. SPARK supports this workflow, but it also supports something else: using contracts as a design-time discipline that shapes architecture as a side effect. + +When you write a SPARK contract before writing the implementation, you are forced to answer questions that might otherwise remain implicit. What can this function assume about its inputs? What does it guarantee about its outputs? What states are unreachable? These questions have architectural consequences. A precondition that requires normalized input implies that normalization happens elsewhere. A postcondition that guarantees a security property implies that the property need not be re-checked downstream. The contract becomes a design document that the compiler enforces. + +This paper explores the architectural effects of contract-first development using SPARK, drawing on hadlink, a URL redirection service where contracts guided design from project inception. The primary value of SPARK remains verification: machine-checked guarantees about program behavior. But the discipline of writing contracts produces cleaner architecture as a welcome side effect, and that effect is worth examining. % ============================================================================ \section{Contracts as Design Decisions} % ============================================================================ -% Every precondition, postcondition, and type declaration is a decision about what -% the system can and cannot safely assume. -% -% Concrete example---Canonicalize postcondition: -% -% \begin{lstlisting}[language=Ada] -% function Canonicalize (Input : String) return Canonicalize_Result -% with -% Pre => Input'Length >= 1 and then -% Input'Length <= Max_URL_Length and then -% Input'First = 1 and then -% Input'Last < Integer'Last - 10, -% Post => (if Canonicalize'Result.Status = Success -% then To_String (Canonicalize'Result.URL) = Input and then -% Is_HTTP_Or_HTTPS (Canonicalize'Result.URL) and then -% Not_Private_Address (Canonicalize'Result.URL) and then -% No_Credentials (Canonicalize'Result.URL)); -% \end{lstlisting} -% -% This postcondition is not just a correctness check. It is a design statement: -% "On success, the output preserves the input exactly, and four security properties -% hold." Every downstream consumer can rely on these properties without -% re-checking them. The contract defines the trust boundary. -% -% Similarly, Make_Short_Code: -% -% \begin{lstlisting}[language=Ada] -% function Make_Short_Code (URL : Valid_URL; Secret : Secret_Key) -% return Short_Code -% with -% Pre => Length (URL) >= 7, -% Post => Length (Make_Short_Code'Result) = Short_Code_Length; -% \end{lstlisting} -% -% Fixed-length output. Deterministic. No side effects. These are architectural -% commitments, not just proof obligations. -% -% TODO: Write 2-3 paragraphs with embedded code listings. +Every precondition, postcondition, and type declaration is a decision about what the system can and cannot safely assume. Consider the contract for hadlink's canonicalization function: + +\begin{lstlisting}[language=Ada] +function Canonicalize (Input : String) return Canonicalize_Result +with + Pre => Input'Length >= 1 and then + Input'Length <= Max_URL_Length and then + Input'First = 1 and then + Input'Last < Integer'Last - 10, + Post => (if Canonicalize'Result.Status = Success + then To_String (Canonicalize'Result.URL) = Input and then + Is_HTTP_Or_HTTPS (Canonicalize'Result.URL) and then + Not_Private_Address (Canonicalize'Result.URL) and then + No_Credentials (Canonicalize'Result.URL)); +\end{lstlisting} + +This postcondition is not just a correctness check. It is a design statement: on success, the output preserves the input exactly, and four security properties hold. Every downstream consumer can rely on these properties without re-checking them. The Haskell service layer does not validate URLs after canonicalization succeeds because the contract guarantees the properties hold, and the prover has verified the guarantee. The contract defines the trust boundary. + +The same principle applies to short code generation: + +\begin{lstlisting}[language=Ada] +function Make_Short_Code (URL : Valid_URL; Secret : Secret_Key) + return Short_Code +with + Pre => Length (URL) >= 7, + Post => Length (Make_Short_Code'Result) = Short_Code_Length; +\end{lstlisting} + +The contract specifies fixed-length output, deterministic behavior, and no side effects. The precondition requires a \texttt{Valid\_URL}, which can only be constructed through successful canonicalization; the type system enforces the call ordering. These are architectural commitments encoded as proof obligations. % ============================================================================ \section{Architecture Emerging from Constraints} % ============================================================================ -% SPARK constraints directly influenced hadlink's architecture in several ways: -% -% \subsection{Opaque Types as Proof-Driven Encapsulation} -% -% Valid_URL and Short_Code are declared as private types: -% -% \begin{lstlisting}[language=Ada] -% type Valid_URL is private; -% type Short_Code is private; -% \end{lstlisting} -% -% This was not a style choice. The prover cannot reason about internal -% representation unless construction goes through a proven function -% (Make_Valid_URL). This enforces the invariant: Valid_URL can only be -% created by Canonicalize. The type system becomes an architectural boundary. -% -% \subsection{Expression Functions for Proof Transparency} -% -% Query functions are written as expression functions (single-line definitions) -% because they are fully expanded during proof: -% -% \begin{lstlisting}[language=Ada] -% function Is_HTTP_Or_HTTPS (URL : Valid_URL) return Boolean is -% (Has_Valid_Scheme (To_String (URL))); -% \end{lstlisting} -% -% A multi-line body function would require an additional assume. The proof -% requirement drove the code structure. -% -% \subsection{Ghost Lemma for Predicate Substitution} -% -% An attempt to use Type_Invariant was blocked by SPARK RM 7.3.2(2). The -% workaround---a ghost lemma with two documented assumes for pure function -% determinism---confined all trust assumptions to a single location: -% -% \begin{lstlisting}[language=Ada] -% pragma Assume (Has_Credentials (A) = Has_Credentials (B), -% "Pure function determinism: A = B implies f(A) = f(B)"); -% \end{lstlisting} -% -% This is 2 assumes in the entire codebase, both in a ghost procedure that -% generates no runtime code. The constraint shaped the proof strategy, which -% shaped the architecture. -% -% \subsection{Split Binaries from Proof Boundaries} -% -% The separation into shorten and redirect binaries was reinforced by SPARK: -% the redirect path needs no validation logic (URLs are already canonical), -% so it has zero SPARK dependency. The proof boundary became an architectural -% boundary became a deployment boundary. -% -% TODO: Write subsection prose with code listings. +SPARK constraints directly influenced hadlink's architecture in several ways. Each constraint, initially encountered as a limitation, became an architectural decision that improved the system. + +\subsection{Opaque Types as Proof-Driven Encapsulation} + +\texttt{Valid\_URL} and \texttt{Short\_Code} are declared as private types: + +\begin{lstlisting}[language=Ada] +type Valid_URL is private; +type Short_Code is private; +\end{lstlisting} + +This was not a style choice. The prover cannot reason about internal representation unless construction goes through a proven function. This enforces an invariant: \texttt{Valid\_URL} can only be created by successful canonicalization. The type system becomes an architectural boundary. Code that receives a \texttt{Valid\_URL} knows, by construction, that the URL has passed all validation checks. + +\subsection{Expression Functions for Proof Transparency} + +Query functions are written as expression functions (single-line definitions) because they are fully expanded during proof: + +\begin{lstlisting}[language=Ada] +function Is_HTTP_Or_HTTPS (URL : Valid_URL) return Boolean is + (Has_Valid_Scheme (To_String (URL))); +\end{lstlisting} + +A multi-line body function would require the prover to reason about function behavior indirectly, potentially requiring additional assumptions. The proof requirement drove the code structure toward simpler, more transparent definitions. + +\subsection{Ghost Lemma for Predicate Substitution} + +An attempt to use \texttt{Type\_Invariant} was blocked by SPARK RM 7.3.2(2), which restricts type invariants in certain contexts. The workaround, a ghost lemma with two documented assumes for pure function determinism, confined all trust assumptions to a single location: + +\begin{lstlisting}[language=Ada] +pragma Assume (Has_Credentials (A) = Has_Credentials (B), + "Pure function determinism: A = B implies f(A) = f(B)"); +\end{lstlisting} + +These are the only two assumes in the entire codebase, both in a ghost procedure that generates no runtime code. The constraint shaped the proof strategy, which shaped the architecture: assumptions are explicit, localized, and documented. + +\subsection{Split Binaries from Proof Boundaries} + +The separation into shorten and redirect binaries was reinforced by SPARK. The redirect path needs no validation logic because URLs in the database are already canonical. This means the redirect binary has zero SPARK dependency. The proof boundary became an architectural boundary, which became a deployment boundary. The component exposed to untrusted network traffic carries the smallest possible trusted computing base. % ============================================================================ \section{Proof Results} % ============================================================================ -% Present the verification outcomes concisely: -% -% \begin{table}[h] -% \centering -% \begin{tabular}{lr} -% \toprule -% Metric & Value \\ -% \midrule -% Total proof obligations & 137 \\ -% Verified automatically (CVC5) & 137 (100\%) \\ -% Explicit assumes & 2 (ghost lemma only) \\ -% Assumes in business logic & 0 \\ -% \bottomrule -% \end{tabular} -% \end{table} -% -% Breakdown by check type: range checks (31), overflow (30), precondition (29), -% index (11), loop invariant init/preserv (18), postcondition (9), assert (3), -% length (3), division (2), initialization (1). -% -% Key point: all checks solved in 0--1 SMT steps. The proofs are not expensive -% or fragile---they are consequences of clean contracts. -% -% TODO: Write 1-2 paragraphs with table. +The verification results reflect the architectural choices described above. All 137 proof obligations are discharged automatically by the CVC5 SMT solver. + +\begin{table}[h] +\centering +\begin{tabular}{lr} +\toprule +Metric & Value \\ +\midrule +Total proof obligations & 137 \\ +Verified automatically (CVC5) & 137 (100\%) \\ +Explicit assumes & 2 (ghost lemma only) \\ +Assumes in business logic & 0 \\ +\bottomrule +\end{tabular} +\caption{Verification summary for hadlink's SPARK core.} +\end{table} + +The proof obligations break down by type: range checks (31), overflow checks (30), preconditions (29), loop invariants (18), index checks (11), postconditions (9), and other checks including assertions, length, division, and initialization (9). All checks are solved in minimal SMT steps. The proofs are neither expensive nor fragile; they are natural consequences of contracts that accurately describe the code's behavior. When contracts match implementation cleanly, the prover's job is straightforward. % ============================================================================ \section{Lessons Beyond SPARK} % ============================================================================ -% The mindset transfers even without SPARK: -% -% - "Every function must declare its assumptions explicitly" leads to cleaner APIs -% - Defining what the system will NOT do (non-goals) is as valuable as defining -% what it will do -% - If you cannot state a function's postcondition, you do not understand -% what it does -% - Minimalism is a natural consequence of having to prove things about your code -% -% SPARK enforces this via the compiler. Without SPARK, the same discipline can -% be applied through design reviews, documentation, and property-based testing. -% The compiler just makes it non-optional. -% -% TODO: Write 2-3 paragraphs. +The contract-first mindset transfers even without SPARK. Several principles emerge from the practice that apply to any engineering context. + +First, every function should declare its assumptions explicitly. Even without machine-checked contracts, documenting preconditions leads to cleaner APIs. Callers know what they must provide; implementations know what they can assume. Ambiguity at function boundaries is a source of bugs, and explicit assumptions reduce that ambiguity. + +Second, defining what a system will not do is as valuable as defining what it will do. hadlink's non-goals (no analytics, no user accounts, no custom aliases) are documented and enforced. This practice, common in mature engineering organizations, prevents scope creep and communicates intent. The discipline of writing non-goals mirrors the discipline of writing preconditions: both constrain the system in ways that make reasoning easier. + +Third, if you cannot state a function's postcondition, you do not fully understand what it does. The act of writing postconditions forces clarity about behavior. What does this function guarantee? What can its caller rely on? These questions have answers whether or not you write them down, but writing them down reveals gaps in understanding. + +Finally, minimalism follows naturally from having to prove things about your code. Every additional feature is another proof obligation, another place where the contract must be specified and verified. This cost, even when only cognitive rather than computational, biases design toward simplicity. SPARK enforces these principles via the compiler. Without SPARK, the same discipline can be applied through design reviews, documentation, and property-based testing. The compiler just makes it non-optional. % ============================================================================ \section{Conclusion} % ============================================================================ -% Reinforce: -% - SPARK is both a guardrail and a mentor -% - The verification output is valuable, but the design discipline is more so -% - For small infrastructure projects, formal methods are not overhead---they -% are architecture -% - The question is not "can we afford to verify?" but "can we afford not to -% think this carefully?" -% -% TODO: Write 1-2 paragraphs. - -% References: -% - https://www.adacore.com/uploads/books/Spark-Guidance-1.2-web.pdf -% - https://docs.adacore.com/live/wave/spark2014/html/spark2014_ug/en/usage_scenarios.html#tool-qualification +SPARK serves as both guardrail and mentor. The verification output is valuable: machine-checked guarantees that code satisfies its specification provide confidence that testing alone cannot. But the design discipline that emerges from writing contracts is also significant. For small infrastructure projects, formal methods need not be overhead. When applied early, they shape architecture in ways that reduce complexity and improve maintainability. + +The question for such projects is not ``can we afford to verify?'' but ``can we afford not to think this carefully?'' The contracts must be written regardless; SPARK simply ensures they are written precisely and checked mechanically. The architectural clarity that results is a welcome side effect of that precision. + +\section*{Availability} + +hadlink is open source and available at \url{https://github.com/Jbsco/hadlink}. + \end{document} From 328b50c13c7dc852fc96c5c32bb1d64a9ed00780 Mon Sep 17 00:00:00 2001 From: Jacob Seman <90524106+Jbsco@users.noreply.github.com> Date: Mon, 2 Feb 2026 22:32:34 -0700 Subject: [PATCH 09/11] Revisions to formal-verification paper --- docs/whitepapers/formal-verification-lens.tex | 36 +++++++++++++------ 1 file changed, 26 insertions(+), 10 deletions(-) diff --git a/docs/whitepapers/formal-verification-lens.tex b/docs/whitepapers/formal-verification-lens.tex index 4004379..23c3a5d 100644 --- a/docs/whitepapers/formal-verification-lens.tex +++ b/docs/whitepapers/formal-verification-lens.tex @@ -11,6 +11,7 @@ keywordstyle=\color{blue!70!black}, commentstyle=\color{gray}, stringstyle=\color{red!60!black}, + showstringspaces=false, breaklines=true, frame=single, xleftmargin=1em, @@ -25,7 +26,7 @@ \maketitle \begin{abstract} -SPARK is typically discussed as a verification tool, a way to prove that code satisfies its specification. This paper argues that verification carries a significant secondary benefit, particularly for small infrastructure projects: architectural clarity. Writing SPARK contracts forces the engineer to define boundaries, assumptions, and scope before implementation begins. The act of specifying preconditions and postconditions serves as cognitive scaffolding that shapes design, limits complexity, and produces more maintainable systems. We illustrate this with hadlink, a URL redirection service where SPARK contracts guided architectural decisions from project inception. +SPARK is typically discussed as a verification tool, a way to prove that code satisfies its specification. This paper argues that verification carries a significant secondary benefit, particularly for small infrastructure projects: architectural clarity. Writing SPARK contracts forces the engineer to define boundaries, assumptions, and scope before implementation begins. The act of specifying preconditions and postconditions serves as cognitive scaffolding that shapes design, limits complexity, and produces more maintainable systems. We illustrate this with \texttt{hadlink}, a URL redirection service where SPARK contracts guided architectural decisions from project inception. \end{abstract} % ============================================================================ @@ -36,13 +37,13 @@ \section{Introduction} When you write a SPARK contract before writing the implementation, you are forced to answer questions that might otherwise remain implicit. What can this function assume about its inputs? What does it guarantee about its outputs? What states are unreachable? These questions have architectural consequences. A precondition that requires normalized input implies that normalization happens elsewhere. A postcondition that guarantees a security property implies that the property need not be re-checked downstream. The contract becomes a design document that the compiler enforces. -This paper explores the architectural effects of contract-first development using SPARK, drawing on hadlink, a URL redirection service where contracts guided design from project inception. The primary value of SPARK remains verification: machine-checked guarantees about program behavior. But the discipline of writing contracts produces cleaner architecture as a welcome side effect, and that effect is worth examining. +This paper explores the architectural effects of contract-first development using SPARK, drawing on \texttt{hadlink}, a URL redirection service where contracts guided design from project inception. The primary value of SPARK remains verification: machine-checked guarantees about program behavior. But the discipline of writing contracts produces cleaner architecture as a welcome side effect, and that effect is worth examining. % ============================================================================ \section{Contracts as Design Decisions} % ============================================================================ -Every precondition, postcondition, and type declaration is a decision about what the system can and cannot safely assume. Consider the contract for hadlink's canonicalization function: +Every precondition, postcondition, and type declaration is a decision about what the system can and cannot safely assume. Consider the contract for \texttt{hadlink}'s canonicalization function: \begin{lstlisting}[language=Ada] function Canonicalize (Input : String) return Canonicalize_Result @@ -76,7 +77,7 @@ \section{Contracts as Design Decisions} \section{Architecture Emerging from Constraints} % ============================================================================ -SPARK constraints directly influenced hadlink's architecture in several ways. Each constraint, initially encountered as a limitation, became an architectural decision that improved the system. +SPARK constraints directly influenced \texttt{hadlink}'s architecture in several ways. Each constraint, initially encountered as a limitation, became an architectural decision that improved the system. \subsection{Opaque Types as Proof-Driven Encapsulation} @@ -102,7 +103,7 @@ \subsection{Expression Functions for Proof Transparency} \subsection{Ghost Lemma for Predicate Substitution} -An attempt to use \texttt{Type\_Invariant} was blocked by SPARK RM 7.3.2(2), which restricts type invariants in certain contexts. The workaround, a ghost lemma with two documented assumes for pure function determinism, confined all trust assumptions to a single location: +An attempt to use \texttt{Type\_Invariant} was blocked by SPARK RM 7.3.2(2) \cite{sparkrm}, which restricts type invariants in certain contexts. The workaround, a ghost lemma with two documented assumes for pure function determinism, confined all trust assumptions to a single location: \begin{lstlisting}[language=Ada] pragma Assume (Has_Credentials (A) = Has_Credentials (B), @@ -113,7 +114,7 @@ \subsection{Ghost Lemma for Predicate Substitution} \subsection{Split Binaries from Proof Boundaries} -The separation into shorten and redirect binaries was reinforced by SPARK. The redirect path needs no validation logic because URLs in the database are already canonical. This means the redirect binary has zero SPARK dependency. The proof boundary became an architectural boundary, which became a deployment boundary. The component exposed to untrusted network traffic carries the smallest possible trusted computing base. +The separation into shorten and redirect binaries was reinforced by SPARK. The redirect path needs no validation logic because URLs in the database are already canonical, which means the redirect binary has zero SPARK dependency. What began as a proof boundary naturally became an architectural boundary, and ultimately a deployment boundary. The component exposed to untrusted network traffic carries the smallest possible trusted computing base. % ============================================================================ \section{Proof Results} @@ -133,7 +134,7 @@ \section{Proof Results} Assumes in business logic & 0 \\ \bottomrule \end{tabular} -\caption{Verification summary for hadlink's SPARK core.} +\caption{Verification summary for \texttt{hadlink}'s SPARK core.} \end{table} The proof obligations break down by type: range checks (31), overflow checks (30), preconditions (29), loop invariants (18), index checks (11), postconditions (9), and other checks including assertions, length, division, and initialization (9). All checks are solved in minimal SMT steps. The proofs are neither expensive nor fragile; they are natural consequences of contracts that accurately describe the code's behavior. When contracts match implementation cleanly, the prover's job is straightforward. @@ -146,11 +147,11 @@ \section{Lessons Beyond SPARK} First, every function should declare its assumptions explicitly. Even without machine-checked contracts, documenting preconditions leads to cleaner APIs. Callers know what they must provide; implementations know what they can assume. Ambiguity at function boundaries is a source of bugs, and explicit assumptions reduce that ambiguity. -Second, defining what a system will not do is as valuable as defining what it will do. hadlink's non-goals (no analytics, no user accounts, no custom aliases) are documented and enforced. This practice, common in mature engineering organizations, prevents scope creep and communicates intent. The discipline of writing non-goals mirrors the discipline of writing preconditions: both constrain the system in ways that make reasoning easier. +Second, defining what a system will not do is as valuable as defining what it will do. \texttt{hadlink}'s non-goals (no analytics, no user accounts, no custom aliases) are documented and enforced. This practice, common in mature engineering organizations, prevents scope creep and communicates intent. The discipline of writing non-goals mirrors the discipline of writing preconditions: both constrain the system in ways that make reasoning easier. Third, if you cannot state a function's postcondition, you do not fully understand what it does. The act of writing postconditions forces clarity about behavior. What does this function guarantee? What can its caller rely on? These questions have answers whether or not you write them down, but writing them down reveals gaps in understanding. -Finally, minimalism follows naturally from having to prove things about your code. Every additional feature is another proof obligation, another place where the contract must be specified and verified. This cost, even when only cognitive rather than computational, biases design toward simplicity. SPARK enforces these principles via the compiler. Without SPARK, the same discipline can be applied through design reviews, documentation, and property-based testing. The compiler just makes it non-optional. +Finally, minimalism follows naturally from having to prove things about your code. Every additional feature is another proof obligation, another place where the contract must be specified and verified. This cost, even when only cognitive rather than computational, biases design toward simplicity. SPARK enforces these principles via the compiler \cite{sparkguidance}. Without SPARK, the same discipline can be applied through design reviews, documentation, and property-based testing. The compiler just makes it non-optional. % ============================================================================ \section{Conclusion} @@ -162,6 +163,21 @@ \section{Conclusion} \section*{Availability} -hadlink is open source and available at \url{https://github.com/Jbsco/hadlink}. +\texttt{hadlink} is open source and available at \url{https://github.com/Jbsco/hadlink}. + +\begin{thebibliography}{9} + +\bibitem{sparkrm} +AdaCore. +\textit{SPARK Reference Manual}. +\url{https://docs.adacore.com/spark2014-docs/html/lrm/} + +\bibitem{sparkguidance} +AdaCore and Thales. +\textit{Implementation Guidance for the Adoption of SPARK}, Release 1.2. +AdaCore, 2022. +\url{https://www.adacore.com/uploads/books/Spark-Guidance-1.2-web.pdf} + +\end{thebibliography} \end{document} From e54e9d0d6734f1f24db255d0cdefe3334eac489a Mon Sep 17 00:00:00 2001 From: Jacob Seman <90524106+Jbsco@users.noreply.github.com> Date: Wed, 4 Feb 2026 13:12:05 -0700 Subject: [PATCH 10/11] Publish PDF of formal-verification-lens paper --- docs/whitepapers/formal-verification-lens.pdf | Bin 0 -> 122920 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/whitepapers/formal-verification-lens.pdf diff --git a/docs/whitepapers/formal-verification-lens.pdf b/docs/whitepapers/formal-verification-lens.pdf new file mode 100644 index 0000000000000000000000000000000000000000..b67e0cdae09e54da42360fe6b217bd94c4a2123c GIT binary patch literal 122920 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ǶQ|Ub#o>a7MS0Q&4yzoQBA~C-C58&2-y4%)=Vx*8 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 o22JW_gV&sp Date: Thu, 5 Feb 2026 20:32:03 -0700 Subject: [PATCH 11/11] Update documentation to include links to whitepapers --- README.md | 6 ++++++ docs/CONTRIBUTING.md | 5 +++++ docs/README.md | 9 +++++++++ docs/ROADMAP.md | 1 + 4 files changed, 21 insertions(+) diff --git a/README.md b/README.md index a992de6..68b7440 100644 --- a/README.md +++ b/README.md @@ -434,6 +434,12 @@ See [ROADMAP.md](docs/ROADMAP.md#do-278a-sil-3-mapping) for detailed objective m - **[Roadmap](docs/ROADMAP.md)** - Development phases and milestones - **[Contributing](docs/CONTRIBUTING.md)** - How to contribute +### Whitepapers + +- **[hadlink: A Minimal, High-Assurance URL Redirection Service](docs/whitepapers/hadlink.pdf)** - Design philosophy, assurance model, and deployment approach +- **[SPARK as a Design Lens: Beyond Verification in High-Assurance Systems](docs/whitepapers/formal-verification-lens.pdf)** - How writing SPARK contracts shaped architectural decisions as a design-time discipline +- **[From Coursework to Craft: Single-Sprint Projects as Engineering Practice](docs/whitepapers/sprint-projects.pdf)** - How single-sprint personal projects build engineering skills that coursework alone does not emphasize + --- ## License diff --git a/docs/CONTRIBUTING.md b/docs/CONTRIBUTING.md index ce16c1b..29d7262 100644 --- a/docs/CONTRIBUTING.md +++ b/docs/CONTRIBUTING.md @@ -29,6 +29,11 @@ Before contributing, understand the project values: 3. **Infrastructure, not features** 4. **Explicit non-goals matter** +For background on the project's design philosophy, see the [whitepapers](whitepapers/): +- [hadlink](whitepapers/hadlink.pdf) - System design and assurance model +- [SPARK as a Design Lens](whitepapers/formal-verification-lens.pdf) - How formal verification shaped the architecture +- [From Coursework to Craft](whitepapers/sprint-projects.pdf) - Project methodology and engineering practice + --- ## What to Contribute diff --git a/docs/README.md b/docs/README.md index 8e2d902..9f1ac95 100644 --- a/docs/README.md +++ b/docs/README.md @@ -19,6 +19,7 @@ - [Cryptography](#cryptography) - [Toolchain](#toolchain) - [Assurance Model](#assurance-model) +- [Whitepapers](#whitepapers) - [References](#references) --- @@ -325,6 +326,14 @@ See [ROADMAP.md](ROADMAP.md#do-278a-sil-3-mapping) for detailed objective mappin --- +## Whitepapers + +- **[hadlink: A Minimal, High-Assurance URL Redirection Service](whitepapers/hadlink.pdf)** - Design philosophy, assurance model, and deployment approach +- **[SPARK as a Design Lens: Beyond Verification in High-Assurance Systems](whitepapers/formal-verification-lens.pdf)** - How writing SPARK contracts shaped architectural decisions as a design-time discipline +- **[From Coursework to Craft: Single-Sprint Projects as Engineering Practice](whitepapers/sprint-projects.pdf)** - How single-sprint personal projects build engineering skills that coursework alone does not emphasize + +--- + ## References This design draws from: diff --git a/docs/ROADMAP.md b/docs/ROADMAP.md index 9b9647b..3730243 100644 --- a/docs/ROADMAP.md +++ b/docs/ROADMAP.md @@ -127,6 +127,7 @@ Follow the migration plan: Haskell-only → SPARK extraction → frozen API. - [x] Security considerations - [x] Example integrations - [x] Contributing guidelines +- [x] Whitepapers ([hadlink](whitepapers/hadlink.pdf), [formal verification](whitepapers/formal-verification-lens.pdf), [sprint projects](whitepapers/sprint-projects.pdf)) ### Lock SPARK Interface