Skip to content

Instantly share code, notes, and snippets.

View ahoward's full-sized avatar
💭
probably outside if i'm not hacking.

ara.t.howard ahoward

💭
probably outside if i'm not hacking.
View GitHub Profile
@ahoward
ahoward / can_example.ts
Last active April 29, 2026 16:27
scoped roles vs flat roles — why can(user, action, scope) beats roles[]
// ─── OLD WAY — flat roles on the user ────────────────────────────────────────
if (user.roles.includes('manager')) {
// manager of what? no idea. this passes for managers of ANY property.
await create_lot(property_id, params)
}
if (user.roles.includes('patrol') || user.roles.includes('admin')) {
// patrol where? could be a different property entirely.
await create_scan(lot_id, plate)
@ahoward
ahoward / analysis.md
Created April 24, 2026 22:11
spool issue #2 — analysis: 'perfect memory' & long-running workflows in dev-agent tools

Analysis: 'perfect memory' & long-running workflows in dev-agent tools

Tools surveyed

Coding-agent CLIs / IDEs

Aider. Builds a tree-sitter repo map ranked by a graph algorithm so the model sees only the most call-graph-relevant symbols. Persists chat history under ~/.aider, supports a user-supplied conventions file loaded as system context. Scope: per-project (conventions) + per-session (history). Update model: append-only chat log; conventions overwritten manually. The repo map is computed, not stored as Markdown — it is regenerated per turn.

Cline. Ships the Memory Bank pattern: a fixed set of Markdown files (projectbrief.md, productContext.md, activeContext.md, systemPatterns.md, techContext.md, progress.md) under memory-bank/, all read at the start of every task. Plan/Act mode pair gates writes. Scope: per-project. Update: file-overwrite, ri

@ahoward
ahoward / gist:0d3f4fef7ab9a242b081a0ebfe538486
Created April 23, 2026 17:57
ENT-357: Owner Vehicles Not Displaying in Patrol App — Investigation Summary
# ENT-357: Owner Vehicles Not Displaying in Patrol App
## TL;DR
Backend is fine. Bug is in the patrol app.
## What We Found
**Plate: 28A760M** (the Volvo, permanent owner registration)
- Valid owner permit via `contacts_owners_passes/136`
- Date range: 1970–2038 (permanent)
@ahoward
ahoward / ai-liability.md
Last active April 22, 2026 23:00
Things to Know Before You Trust an AI With Your Codebase

Things to Know Before You Trust an AI With Your Codebase

A direct assessment of AI coding assistant failures, with notes on what that means legally.


What Actually Happened

This is a real-world audit of an AI coding assistant (Claude Sonnet) on a production SaaS project over several months. We audited git history and identified the following:

@ahoward
ahoward / test_pr_webhook
Created April 20, 2026 22:56
PlateRecognizer Stream webhook test — POST fake payload to lpr-api.vrpaccess.com
#! /usr/bin/env bash
# Test the PR Stream webhook endpoint with a realistic fake payload.
# Usage: script/test_pr_webhook [host]
# Default host: https://lpr-api.vrpaccess.com
set -euo pipefail
HOST="${1:-https://lpr-api.vrpaccess.com}"
URL="$HOST/pr/vrps_phoenixgulfshores2/ingress"
@ahoward
ahoward / architecture-critique.md
Last active April 20, 2026 07:12
joust — architecture critique (self-review 2026-04-20)

Architecture Critique — Proposed Designs

Self-review of 2026-04-20 flagged four architectural concerns that don't lend themselves to a one-line bugfix. Each is captured below with context, options, and a recommendation. None of these are implemented yet; this is the design conversation, checked in so we don't lose it.


1. Two-Phase Token Doubling

@ahoward
ahoward / role-invisible-nav-ia.md
Last active April 17, 2026 18:42
VRPS — Role-Invisible Navigation IA

VRPS — Role-Invisible Navigation IA

Context: The wireframe uses a role switcher dropdown. That's the wrong model. This doc defines the alternative.


The Core Principle

Role is an implementation detail. It never surfaces in the UI.

@ahoward
ahoward / wireframe-slicer-gap-analysis.md
Created April 17, 2026 17:02
VRPS Wireframe vs Slicer IA — Functional Gap Analysis
@ahoward
ahoward / information-architecture.md
Created April 14, 2026 02:47
VRPS Information Architecture — Current Model, Proposed Changes, Target Model

VRPS Information Architecture

Product-level design. Produced through 3 rounds of adversarial peer review (Claude + Gemini).


The Big Picture

VRPS is organized as a simple hierarchy. Everything flows from the top down. Ownership and authorization are always explicit — never inferred.

@ahoward
ahoward / vrps-information-architecture.md
Created April 14, 2026 01:28
VRPS Information Architecture — Product Level

VRPS Information Architecture

Product-level design. Produced through 3 rounds of adversarial peer review.


The Big Picture

VRPS is organized as a simple hierarchy. Everything flows from the top down. Ownership and authorization are always explicit — never inferred.