From 296ce778bc0fb46cce60ef69caba91b3c195d128 Mon Sep 17 00:00:00 2001 From: Patrick Singletary Date: Sun, 6 Sep 2026 21:35:53 -0400 Subject: [PATCH] docs: save framework session state + review notes for PLAN-tool-er-framework --- docs/plans/PLAN-tool-er-framework.md | 70 +++- .../framework-review/ATProtocol-Playground.md | 206 ++++++++++ docs/plans/framework-review/SYNTHESIS.md | 139 +++++++ docs/plans/framework-review/_shared.md | 357 +++++++++++++++++ docs/plans/framework-review/extra-repos.md | 206 ++++++++++ docs/plans/framework-review/sifter.md | 327 ++++++++++++++++ docs/plans/framework-review/slicer.md | 362 ++++++++++++++++++ docs/plans/framework-review/verifier.md | 351 +++++++++++++++++ docs/plans/framework-review/zodiac.md | 336 ++++++++++++++++ 9 files changed, 2351 insertions(+), 3 deletions(-) create mode 100644 docs/plans/framework-review/ATProtocol-Playground.md create mode 100644 docs/plans/framework-review/SYNTHESIS.md create mode 100644 docs/plans/framework-review/_shared.md create mode 100644 docs/plans/framework-review/extra-repos.md create mode 100644 docs/plans/framework-review/sifter.md create mode 100644 docs/plans/framework-review/slicer.md create mode 100644 docs/plans/framework-review/verifier.md create mode 100644 docs/plans/framework-review/zodiac.md diff --git a/docs/plans/PLAN-tool-er-framework.md b/docs/plans/PLAN-tool-er-framework.md index fd58aa6..d3a3ee8 100644 --- a/docs/plans/PLAN-tool-er-framework.md +++ b/docs/plans/PLAN-tool-er-framework.md @@ -116,9 +116,11 @@ registry.md + per-repo TODO.md (committed), so any session can resume. Phase 0 — Meta repo + baseline review (tooler) - Task 0.1: Create tooler repo on Tangled (git init, README, AGENTS.md from common template, LICENSE MIT, scaffold standard .gitignore). Verify: ls-remote. -- Task 0.2: Copy /tmp/tangled-framework-review/notes/*.md into - tooler/docs/review/ (provenance; reviewers confirmed no secrets in notes). - Commit. Verify: file count 8, grep for absence of real values. +- Task 0.2: Copy the committed review notes from + ~/dev/_shared/docs/plans/framework-review/*.md (8 files, provenance; the + original /tmp/tangled-framework-review/notes/ copy is ephemeral — machine + reboot wipes it) into tooler/docs/review/. Commit. Verify: file count 8, + grep confirms no real secret values (reviewers already confirmed clean). - Task 0.3: Write registry.md (rows from section 2 table, status=planned), pins.md, DECISIONS.md (open questions from section 8). - Task 0.4: Write roles/orchestrator.md, roles/component-agent.md, roles/qa.md, @@ -261,3 +263,65 @@ e) RESOLVED 2026-09-06 (owner, option c): tooler-dom DROPPED entirely — altifier (src/lib, src/contexts, package.json, tests). - This plan's home copy: ~/dev/_shared/docs/plans/PLAN-tool-er-framework.md (committed; moves to archive/ + REGISTRY.md row on pickup). + +--- + +## 11. Session state and resume guide (last updated 2026-09-06) + +Status: PLANNED — review complete, plan authored and committed, NOT picked up, +no build started. This section is the handoff point for any future session. + +### Progress log +- 2026-09-06: Full read-only review of all 13 Tangled repos of psingletary.com + (7 parallel review agents, ~2,145 lines of notes, every claim file-cited). + All 13 repos cloned under ~/dev (notes: macos-sched-cleanup knot slug is + all-lowercase despite mixed-case display on the web UI — use the lowercase + SSH URL; spectroscopy is an empty repo, zero commits, nothing to extract). +- 2026-09-06: Owner scope decision (a/b/c): include repos 1-5 (verifier, + altifier, slicer, sifter, timer) + web_themes. Dropped: ptharbor, acct-tools, + zodiac, daily-bsky-hype-vid, macOS-sched-cleanup, _shared (governance), and + ATProtocol-Playground (dropped option c after owner reviewed what it actually + contains: bsky.app DOM automation, zero protocol code). +- 2026-09-06: Agent operating model confirmed (owner-specified): per-component + Tangled repos (web_themes model) so multiple agents improve repos in + parallel with tests; orchestrator agent coordinates all agents; QA tester + agent verifies; red-team agent audits across all repos. Roles docs ship in + the tooler meta repo (Phase 0 Task 0.4). +- 2026-09-06: Plan authored and committed to _shared (617695c); tooler-dom + removed per decision c (258e3c7); review notes + this section committed + (see artifacts). + +### Artifacts (durable — all committed to Tangled _shared, public) +- This plan: docs/plans/PLAN-tool-er-framework.md (258e3c7). +- Review evidence: docs/plans/framework-review/*.md — 8 files (verifier, + slicer, sifter, zodiac, ATProtocol-Playground, extra-repos, _shared, + SYNTHESIS). SYNTHESIS.md is the condensed blueprint; per-repo files carry + the evidence. No secrets in any notes file (reviewers verified). +- Source repos (all in ~/dev, clean mains): in-scope = verifier, altifier, + slicer, sifter, timer, web_themes. Out-of-scope but reviewed = ptharbor, + acct-tools, zodiac, daily-bsky-hype-vid, macOS-sched-cleanup, + ATProtocol-Playground, _shared. + +### Open decisions (owner answers at Phase 0 gate, a/b/c each) +- a) Repo family naming: tooler- vs alternatives. +- b) Test runner for new lib repos: vitest (recommended) vs jest vs node:test. +- c) Consumer install mechanism: npm git+ssh vs build-time sync (web_themes + pattern) vs vendor copy-in. +- d) Consumer migration scope this cycle: all 5 apps vs reference consumers + only (recommended) vs no migrations. +- e) RESOLVED: tooler-dom dropped (owner decision c). + +### Resume steps (next session, zero prior context) +1. Session inbox lists this PLAN; owner says "pick up PLAN-tool-er-framework.md" + (never auto-pick-up). +2. Owner answers decisions a-d. +3. Run Phase 0: scaffold tooler meta repo on Tangled (public, psingletary.com); + copy docs/plans/framework-review/*.md into tooler/docs/review/ (source = + this committed copy, NOT /tmp); write registry.md / pins.md / DECISIONS.md; + write roles/{orchestrator,component-agent,qa,red-team}.md per section 3; + red-team agent baseline review of plan + 6 in-scope source repos (read-only), + findings to tooler/red-team-output/ (gitignored), RESOLVED inline before + Phase 1, open items to owner. +4. Owner approval gate (section 5 Phase 0 gate) -> Phase 1 tooler-oauth. +5. Per-repo pickup convention: after each phase completes, update registry.md + status column; this section's status line stays current. diff --git a/docs/plans/framework-review/ATProtocol-Playground.md b/docs/plans/framework-review/ATProtocol-Playground.md new file mode 100644 index 0000000..4f31482 --- /dev/null +++ b/docs/plans/framework-review/ATProtocol-Playground.md @@ -0,0 +1,206 @@ +# ATProtocol-Playground — Deep Review Notes (raw-material catalog for modular ATProto framework) + +Review date: 2026-09-06. Read-only review. No files modified. +Repo: /Users/patricksingletary/dev/ATProtocol-Playground +Remote: origin git@tangled.org:did:plc:vk25i3scormvs6kijn3sqzi7 (Tangled git host, ATProto-DID-keyed) +Latest commit: a262241 "wip: snapshot during migration off OneDrive (2026-08-10)"; 8 commits total (2024-2026). + +## 0. CRITICAL FINDING (read first) + +Despite the name, ATProtocol-Playground contains ZERO protocol-level ATProto code. +There is no XRPC call, no OAuth/PKCE/DPoP, no record create/update/delete, no +blob/CID handling, no CAR files, no firehose/jetstream, no feed generator, no +moderation/labeling, no PLC/did:web operations, no @atproto SDK usage (not even +as a dependency — package.json has no runtime deps at all). + +Everything in this repo is CLIENT-SIDE manipulation of the bsky.app web frontend: +- DOM element detection heuristics + CSS selector generation (tools/element-evaluator) +- Tampermonkey userscripts that hide/remove/replace bsky.app DOM elements +- A bulk-like bookmarklet/userscript that clicks Like buttons +- A personal static site (wisp/) that happens to carry an atproto rel=me identity link +- Python/HTML cookiecutter boilerplate leftovers (sample/, tests/*.py, docs/) + +The name is aspirational; the repo is really a "bsky.app UI tinkering" sandbox. +For a protocol-level framework, this repo contributes UI/DOM-automation building +blocks and one identity-verification snippet — not protocol methods. The other +11 repos in the portfolio must supply the XRPC/auth/data-layer material. + +Git remote confirms the Tangled workflow: hosting keyed by a did:plc +(did:plc:vk25i3scormvs6kijn3sqzi7). + +## 1. File inventory (line counts, one-line purpose) + +Top-level: +- README.md (278) — full usage docs for Element Evaluator + BSky Cleaner; security note says never embed API keys/tokens/secrets (this is the only "token" hit in the repo — advisory text, not a secret). README also documents project structure that is now stale (see 6). +- AGENTS.md (5) — agent convention: load `impeccable` skill for any frontend/UI work. +- CHANGELOG.md (59) — [1.0.0] dated "2024-01-XX" (placeholder never finalized); lists evaluator tool, userscript, Puppeteer tests, docs, infra. +- package.json (37) — see section 4. +- tsconfig.json (27), jest.config.js (12), .eslintrc.json (22), .prettierrc.json (9), .gitignore (8), LICENSE (21, MIT per README), .DS_Store. +- js/like.js (0 lines / 218 bytes) — minified URL-encoded bookmarklet one-liner. + +js/: +- js/like.js — bookmarklet; decodes to: query all `button[aria-label^="Like ("]`, filter visible via `offsetParent`, click each. Bulk-like-all visible posts. Browser. + +tools/element-evaluator/ (TypeScript ESM, browser-targeted): +- index.ts (13) — barrel: re-exports types.js, evaluator.js, dev-ui.js. +- types.ts (72) — interfaces ElementCandidate (selector/text/role/confidence/meta), RuleAction union 'hide'|'remove'|'replace'|'annotate', Rule {selector, action, replaceText?, annotation?}, ScanOptions {roles, minConfidence, includeHidden}, ApplyRulesOptions {useMutationObserver, debounceMs, debug}. Clean, copy-paste-ready type model. +- evaluator.ts (444) — core engine; see section 2 topic catalog. +- dev-ui.ts (551) — class ElementEvaluatorDevUI: in-page overlay for scan/preview/rule-apply/export; exposes window.ElementEvaluatorDevUI + window.initElementEvaluatorDevUI. Includes injectStyles() with ~150 lines of inline CSS. +- dev-example.html (106) — standalone demo page w/ mock bsky-like DOM (posts, bookmark/repost buttons, displayName). + +userscripts/ (all browser/Tampermonkey, @grant none): +- bsky-cleaner.user.js (303) — config-driven DOM remover (remove/hide/replace), WeakSet dedupe, debounced MutationObserver. The flagship userscript. +- bsky-socialapp-elementhider.js (365) — CSS-injection variant: builds one combined `display:none !important` rule, injects