Skip to content

Latest commit

 

History

History
71 lines (59 loc) · 4.67 KB

File metadata and controls

71 lines (59 loc) · 4.67 KB

Architecture Decision Records

An ADR captures one architecturally significant decision: the context that forced it, the decision itself, and the consequences — including the ones we didn't want. It is a record of why, written at the time, before hindsight sands off the reasoning. Format follows Michael Nygard's original template.

Why this project keeps them

Three of the records below (0008, 0010, 0011) exist because a first answer was wrong and evidence caught it — 0011 is the first where the wrong answer was this project's own prior design, not an external source. A fourth (0013) is a different case worth distinguishing: nothing was wrong, a risk named before any code existed was measured and confirmed exactly as predicted, and the finding is recorded as-is rather than held back until a fix was attached to it. A fifth (0016) is a third case again: the named fix for 0013 was actually built, tested, and measured — and the measurement found it structurally too costly to deploy as specified, which is recorded as real progress on the question (a ruled-out approach, not a wasted one) rather than quietly dropped for not panning out. All three are the actual value of an ADR log on a project like this one: not just recording what was decided, but leaving a trail of what was tried, what broke it, confirmed it, or didn't pan out, and what came next — which is exactly the material a thesis defense or a code review will ask for, and exactly the material that is easiest to lose once the code moves on.

Index

# Title Status
0001 Reframe from "compute replaces ads" to a break-even frontier, with anti-bot PoW as the flagship Accepted
0002 Legitimacy by declaration (signed manifest), not miner detection Accepted
0003 WebGPU is mandatory; WASM-on-CPU is a fallback only Accepted
0004 RFC 8785 canonical JSON for manifest signing Accepted
0005 Integral, not per-burst, share control law in the governor Accepted
0006 Audit rate set by an economic inspection game, not fixed sampling Accepted
0007 In-browser proving is Circom/Groth16; zkVM moves to settlement-side Accepted
0008 Use a corrected cryptojacking baseline, not the source paper's stated figure Accepted
0009 Measure watts via the integrated energy counter, not instantaneous discharge rate Accepted
0010 F(d) comes from a sustained OLS trend fit, not a short sweep's spread threshold Accepted
0011 Commit-then-challenge row verification, replacing point-sample challenges Accepted
0012 Challenge mode uses a single-submission gate, not the barter pipeline Accepted
0013 Measured attacker-advantage ratio exceeds the memory-hard control — reported, mitigation deferred Accepted
0014 M3 Track 1 toolchain (circom2/snarkjs/Hardhat 2), dependency isolation, Track 2 reported environment-blocked Accepted
0015 M4 dual-use detector baselines (MinerRay/MINOS/Delay-CJ) reported environment-blocked, not run Accepted
0016 Q7's memory-hard row commitment built and measured — structurally too costly at per-row granularity, not deployed Accepted
0017 Scope narrowed to laptop/desktop; mobile tiers dropped from the economic model Accepted

Adding one

Copy the template below into docs/adr/000N-short-title.md, number it sequentially, and add a row to the index above. Status is one of Proposed, Accepted, Superseded by ADR-000M, or Rejected (keep rejected ones — a documented dead end saves the next person from re-deriving it).

# ADR-000N: Title

Status: Accepted (YYYY-MM-DD)

## Context
What forced this decision. The constraint, the measurement, the failure.

## Decision
What we're doing, stated plainly.

## Consequences
What this buys us, and what it costs. Include the alternative(s) considered
and why they lost — a decision record with no rejected alternative usually
means the alternative was never seriously considered.