Activity
Mon
Wed
Fri
Sun
Sep
Oct
Nov
Dec
Jan
Feb
Mar
Apr
May
Jun
Jul
Aug
What is this?
Less
More
Simon Says AI

3.6k members • Free

Clief Notes

46.3k members • Free

104 contributions to Clief Notes
Folders are great until state starts moving. what I pulled out (and what I kept)
I'm deep in ICM like everyone here and folders still carry most of my work. but I kept getting bitten by the same class of bug, and it wasn't a folder problem, it was a state problem: what's running, what's half-done, who owns the next move, what's safe to resume. that stuff changes by the hour, and a folder is a bad place to keep something that changes by the hour. so I stopped forcing it. the map stays in folders, the live state moved to rows. four things actually held. One writer. agents propose, exactly one process commits. the two-agents-edited-one-record mess disappears the day you stop letting every step write. Every touch gets a timestamp. not for audit theatre, for staleness. "is this stale" stops being a feeling and becomes a query: anything open and untouched for N days gets flagged. Done means the effect exists, not that the code reached the line. a step isn't allowed to mark itself done; something else confirms the artifact is really there first, or a clean run that produced nothing quietly poisons every retry after it. Folders still win for anything a human reads: context, knowledge, the map an agent walks. I didn't move that to a database and wouldn't. rows are only for the stuff that moves. what I'm still unsure about is when to make the jump. too early and you've built a database to hold six rows, too late and you're debugging drift at 2am. the real signal for me was the third time I couldn't answer "what state is this in right now" without opening five files. where do you draw that line? what made you move state out of folders, or what's kept you from it?
2 likes • 8d
@Leo Saraiva been running this exact split for a while so this landed hard. the four you kept are the same four that survived for me i've got named rules for three of them internally (one-writer, timestamp everything, done means the effect exists). that last one bit hardest: a clean run that produced nothing quietly poisons every retry after it. took me way too long to stop trusting "the code reached the line" as done. on where to draw it... i don't think row count is the right axis. a database to hold six rows feels wasteful and it is... right up until two readers need the same answer to "what state is this in" at the same time and neither can tolerate a stale one. the trigger isn't volume, it's contention. the day a second reader shows up on live state. another agent, a cron, future-you at 2am - folders start lying. that's the jump not the row count and hard agree on never moving the map. folders for what a human reads, rows for what moves. the mistake is thinking it's one migration instead of a boundary you hold forever.
1 like • 7d
@Jim Tyndall point multiple sessions at one workspace and you crossed my line a while back. and you’re right that git hands you two of the four for free: one writer per commit, a timestamp per touch. i run the same setup, no database. the commit tangle is the loud failure. it shows up right at commit, you see it, you untangle it… annoying, not dangerous, exactly like you said. the one that actually bit me never touched git. two sessions worked the same problem in parallel, wrote different files, and landed opposite conclusions on one spec detail. no overlap, no merge conflict, both commits clean. git had nothing to flag — the writes didn’t collide, the meanings did. it nearly shipped, because “clean commit” and “correct” aren’t the same check and git only runs the first. that’s the something-worse: not git failing to serializ.. git succeeding, and still passing contradictory state through silently because the collision lives below the file level where git can’t look. what caught it wasn’t a database. sessions declare a write zone up front and a pre-write hook refuses anything out of zone… so “one writer” is enforced per region instead of hoped-for per commit plus a dumb “list what’s already here before you generate” rule so a second session doesn’t quietly redo the first’s work. a hook and a discipline. same shelf as the folders. which is exactly why the jump-trigger is contention, not row count: the risk isn’t how many rows, it’s the moment a second writer can produce state the first one can’t see. git catches the collision that’s loud. the one that agrees-to-disagree needs a check git doesn’t ship.
The Clief Notes AI is live 📣
It’s live. Starting today, everyone in Clief Notes has access to the new Clief Notes AI. The easiest way to use it? Don’t overthink it. Ask it the question you would normally ask me. “Where should I start?” “What should I focus on next?” “Where did you talk about [topic]?” It’ll use what’s already inside Clief Notes to help answer you and point you toward the right lesson or resource when there’s something worth going deeper on. The goal isn’t to give you another AI tool to play with. It’s to make everything already inside this community easier to actually use. If you want Access to it Comment "READY" and we'll send you access to it!
0 likes • 9d
Ready
Calling all local builders - drop your stack y'all!
This is the only place I can talk local ai without getting blank stares, so let's actually see what everyone is running. I'll go first. here's the whole stack: HARDWARE ▸ Alita - personal dual-3090 rig at home. 48gb total vram, 128gb ram. kept totally separate from anything work related. MODELS ▸ primary: qwen3.6-35b-a3b on gpu0, served by llama.cpp. mixture-of-experts, ~3b params fire per token. q8 kv cache, 256k context. ▸ router: a ~9b qwen on ollama out front, deciding what's actually worth waking the big model for. ▸ embeddings: qwen3-embedding 0.6b and nomic-embed-text, same ollama instance. AGENT LAYER ▸ hermes, running as Alita here. three daily jobs: morning brief, work email summary, personal email summary. all land in discord. ▸ weekly maintenance runs on a different scheduler with hermes as the watchdog, on purpose. runner dies, watcher yells. watcher dies, the daily jobs go quiet and I notice. two failure domains instead of one. MEMORY ▸ obsidian vault as the source of truth. ▸ hybrid search over it - bm25 plus local embeddings, running in-process. no extra service to babysit. ▸ qdrant for the vector-store work that actually needs one. INTERFACE ▸ the observatory - a front end I built over the vault. not a dashboard. a command center I actually work from: projects as boards, sessions as a timeline, drafts moving through a publishing pipeline, all of it reading and writing the same markdown files. The one piece I would not give up is the vault. the models change every few months. the notes are forever. The thing that taught me the most had nothing to do with hardware. I did kill a pile of containers nothing was consuming - n8n, a web ui, a couple databases - but that was housekeeping. the real one was giving up on folders. I spent a long time sorting notes into the right directory and it was wrong again six months later. Now every note carries its own frontmatter and the folders are just a cache I regenerate from it. Type isn't a folder. Status isn't a folder. The structure lives in the file.
Calling all local builders - drop your stack y'all!
1 like • 10d
@Nicolas Patron Uriburu First... to clear it up... I never meant zero folders. We still have project folders. A project is a real boundary, so it earns one. What I dropped is type as folder, status as folder, and the deep hand sorted nesting under them. So we agree on the load bearing part... folders survive exactly where they're a boundary and die where they were pretending to be a view. Which is why I don't think the tree buys you the enforcement you're describing. A folder is a query too, just "everything under this path," enforced by the OS for free. The failure mode doesn't disappear, it relocates. Instead of a mislabeled file you've got a misfiled one, and the file somebody dragged into the wrong dir is exactly the one the agent shouldn't reach. Placement is metadata, just metadata you can only set one way and can't cross cut. The second two agents need overlapping but different slices, the tree makes you duplicate or symlink, because a file only lives in one place. So where I land... the boundary should be declared, not inferred. Not from content tags (your point, fragile), and not from where a file happens to sit either, which is also wrong, just single axis wrong. Capability is a named allowlist asserted independent of the file's content and its location. The loader reads the manifest, not the path the file wandered into. The part that makes you half right... at the enforcement layer that manifest is usually path shaped. Mine is literally an MCP allowed directories config. So yeah, directories. But that allowlist is a generated artifact, not the browsing tree I sort by hand. Same discipline as retrieval, I don't hand sort for enforcement any more than for finding. The view and the boundary are two generated surfaces off one source, not one folder doing double duty. And to your question... the observatory is mostly read only over the markdown. It has exactly two write verbs, "new task" and "new publishing idea," each landing in one known place. And it can't even close anything. Marking an OT or a task done is a separate capability held only by the agent, not the console. Working state lives in its own sqlite store off vault. The vault has one writer.
0 likes • 10d
@Rheoniq Solutions I'm not hand waving but that's a very broad question with zero data to base it on. I would start where Istarted... ASk CLaude or whatever cloud ai you prefer and tell it youre interested it testing out some local AI and let it guide you a bit.. first questions will or should be about hardware available etc. That should at least let you get your feet wet and point you down some common paths to explore. Plus it will sit there with you and work thru the hiccups. Good luck and have fun! We are all here for ya along the way tho
design it, plan it, build it — with receipts.
spire-pipeline is a plugin for Claude Code / Cowork that takes a project from a vague idea to a finished, verified build - across as many sessions as it takes, without losing the plot between them. Four skills: DESIGN-SWARM ▸ give it a hard problem and instead of one answer it generates several competing approaches, each deliberately biased a different way, attacks them all at a critique gate, and hands you the survivors to pick from. ends at a design you signed off on. never builds. RUN-LIST ▸ turns that design into one planning doc: the build split into ordered sessions, what depends on what, a paste-ready prompt per step, live status. the document IS the project state — any future session reads it cold and knows exactly where things stand. CONDUCTOR ▸ executes it like a foreman who never touches the tools. collects every decision up front in one sitting, then runs for hours without pinging you, farms each step to worker agents, and refuses to tick anything done unless a mechanical probe proves it happened. a worker saying "finished!" counts for nothing; a file existing with the right contents counts. SETUP (optional) ▸ first-run onboarding - detects what it can about your machine, asks two questions, writes a minimal config. you never need it; zero-config runs fine on safe defaults. Works on anything with 3+ steps - code, docs, content, systems. This is the actual engine I run my own work through, published as-is: the house-specific parts swapped for a config layer you fill in yourself (or don't — the defaults are safe, and every skill prints whether it's running on your config or on defaults). CREDIT ▸ two of the mechanisms are borrowed and credited, both MIT, both from @Ari Evergreen - https://www.aris-space.com/ the brainstorming-swarm that design-swarm is adapted from, and the context-pack contract the conductor uses to brief its workers. I built the pipeline around them - the planning, the multi-session state, and the probe-verified "done" are mine.
design it, plan it, build it — with receipts.
2 likes • 12d
@Alex Brown thanks dude! I didn’t forget you🙈… just stupid week so far… buried in lightning damage houses with all the storms we have been having. Insurance jobs are good money but mercy they are a time suck
2 likes • 11d
@Bart Wilson Thanks for the comment...you're onto something real but i think you're fusing two layers and splitting them kills most of the paradox. The lenses (failure, constraint, timing, etc) aren't competing biases, they're coverage. Think scouting department, not offensive positions. You don't balance the film guy against the medical guy, you run both because each is blind to the other's turf and you take everything they find. That's the "don't block half the endzone" layer, and it's fixed on purpose because those angles apply to almost any problem. The competing part is the approaches. Simplest thing that works vs build it for the 2 year version vs automate everything... going head to head. That's your no tight ends risk, and the fix is picking approaches that actually clash on whatever makes the problem hard. They get picked fresh per problem too, so the playbook never settles into one predictable style the defense can learn. On the paradox itself, you named the real danger ...the synthesizer. In most councils that's the single point of failure. It mushes everything into consensus and its own bias quietly wins. So we cut it out. the critique step scores the options and the human picks. The bias doesn't disappear, it just stays out in the open where someone owns it instead of getting buried in a model's answer. And yeah... multi llm is exactly right. It's where I'm headed with the cross checker I'm working on. One model wearing different hats still shares the same blind spots...different models don't. Only catch is how many subscriptions can a guy keep running to query them all lol. 😆 It's true... just not realistic for most yet.
Training AI off of your voice and qualitative reinforcement
Nobody can describe their own judgement. Everybody can run it instantly on a concrete case. That gap is the whole reason "describe your voice in five adjectives" produces profiles that read like everyone else's, and the reason every edit you make to an AI draft is worth more than the finished piece. I have been running a rough version of a voice layer across a few ventures for months, mostly for producing messages in my own voice. It works by feel, which is a different thing from working reliably. So I took the mechanism apart properly. Three things that came out of it and transfer to anyone doing this: - Contrast over description. Never ask what someone's voice is. Show two versions of the same piece and ask which is more them, then ask why. The choice is one bit. The reason is what generalises. - Edits are the data. Your draft is the rejected version, their edit is the chosen one, and the diff localises exactly what judgement changed. Most people keep only the final text, which throws the signal away. - Boundaries, not points. "Be direct" applies everywhere, including where you would not. "Direct with peers, softened one notch when correcting someone publicly" carries its condition, so it transfers to cases it never saw. A voice layer is not programming. Nothing executes. A rule you write does not get run, it shifts probabilities, and the practical shape is roughly 95 percent compliance with a tail that no additional rule removes. Everything else follows from that. You build for the tail, an inspection step sits after generation permanently, and the job is making inspection cheap rather than making it unnecessary. I ran the research as seven parallel chats, one per knowledge element: mechanism and limits, the encoding stack, elicitation, representation, evaluation, crossovers, and the research base. Split on dependency structure rather than topic, because they consume nothing from each other, so they were safe to run at once and cheap to correct. Each closed with a file in the same fixed output contract, which is what made seven separate outputs merge instead of contradict.
1 like • 14d
@Alex Brown been building in this exact direction for months, though im strong where youre asking and weak where you are, which is kind of the point whats working on my end: - edit deltas captured at source. every project session I run closes with a recap that appends the diff between my draft and my edit, automatically. no interview, no ritual, rides on real work - thats your condition 5, the native data loop. the one thing I got right on accident, and now its the only reason the corpus exists at all - publish safe by construction: raw edits stay private, only the abstracted trait plus the reason it changed distills up. profile is shareable without leaking the actual deliverables - append only corpus, single writer on the distill so it doesnt bloat or drift where im stuck is the same place you are... eval: - no held out battery, no clean room rebuild yet - my distillation is still a hand hone, not a saved rerunnable procedure. per your own writeup that means no clean room ever until I fix it. that one reordered my whole build sequence what hit hardest in your reference: - the five condition test. cleaner than anything I had for "will this even work here" - register vs competence decoupling. sounds right converging before judgement is right, thats the actual risk and I wasnt naming it - the four you cant backfill. those are exactly the ones im missing I published some architecture adjacent to this too (SKF, theres a post about it here and its on zenodo), the retrieval layer dogfoods it. not your framing but same lane, might be worth comparing notes if youre turning this into something droppable, im in. looks like you out thought the eval half and I out built the capture half. thats a good swap
1 like • 14d
@Alex Brown sounds like a plan.. ill drop you a dm tomorrow when i know what my week is gonna look like better
1-10 of 104
Charlie Weeks
5
137 points to level up
@charlie-weeks-6470
Residential System Integrator building local Ai deployments for personal and work usage. Main Rig = 2x 3090 Secondary Rig 1x 4070 ti

Active 22h ago
Joined Mar 31, 2026
Orlando, FL
Powered by