Skip to content

Latest commit

 

History

History
163 lines (143 loc) · 37.8 KB

README.md

File metadata and controls

163 lines (143 loc) · 37.8 KB

docs/ — what is in force, what is history

Generated by python scripts/docs_index.py --write. Do not hand-edit: every row comes from the frontmatter of the file it points at, so fix a wrong entry in that file and regenerate.

status values: in-force, landed, open, consumed, research, superseded. A skill column entry means the how-to lives in that skill and this document keeps the reasoning -- load the skill before acting, read the document to understand why it is shaped that way.

Where a contract lives

A contract graduates out of a brief when the work lands. briefs/ is gitignored, so an API, invariant or conformance rule left in one is invisible to git and to every other machine -- and drifts from the code unnoticed (the console's RegisterTab signature sketched in a brief never matched what shipped). When a brief's work lands, move its normative parts here with a status: header and let the brief stand as the historical record.

The same applies to CLAUDE.md and .claude/rules/: those are Embody/Envoy deployment artifacts, regenerated per machine and per version. They may point at a rule; they must never be its only home.

In force

Normative. Conform to these; they describe how the toolkit works today.

Document Summary Since Skill
BeatModDesign.md FNS_BeatMod: beat-synced parameter modulation from the timeline tempo. Three kinds of modulator (a wave on the beat, a channel of any CHOP, a recorded gesture), each a standalone network of stock operators beside its target, gliding in through Tweener instead of cutting; a menu whose items apply on a click and open their settings on a hold; and a manager that finds every modulator in the project by tag. 2026-09-02 /fns-command-registration
CommandAvailability.md Command surfaces offer only what the project can run: FNS_CommandRegistry hides commands whose owner is bypassed, has cooking off or declares itself disabled, and FNS_Installer registers one Installer#install- command per installable package that is not in the project. 2026-09-27 /fns-command-registration
CommandCuration.md The command curation file shared between FNS_CommandPalette and the TDXLPP launcher: one machine-wide store for favourites, hidden/shown overrides and presets, keyed by tool#id, merged per entry with tombstones, seeded once per machine. 2026-09-02 /fns-command-registration
CommandRegistration.md How FunctionStore tools ship quick-launch commands: the FNSCommand authoring module, the registry integration, and every trap paid for while building it. e45e207 2026-08-21 /fns-command-registration
CommandUsage.md Optional rank-by-usage for FNS_CommandPalette and the TDXLU quick-launch overlay: a shared command-usage.json of per-consumer decayed scores keyed by tool#id, the pinned bonus formula with test vectors, and the write rule that tolerates several TDs. 2026-09-23 /fns-command-registration
ConfigScope.md The Config Scope parameter: whether the toolkit's persisted settings roam machine-globally or stay pinned to the project. 33b955d 2026-08-21 /fns-config-scope
ConfiguratorDistribution.md How a user picks and chooses which tools to install: buckets, manifests, Pkgversion-driven updates, and the bootstrap rail. 2026-08-13 (buckets + manifests decision) /fns-packaging
ConsoleTabContract.md What a tool must do to publish a tab into the FNS_Console web front -- RegisterTab, the api DAT contract, and the rejection rules. 53eb4ed 2026-08-22 /fns-registry
CustomParHelperContract.md How a tool gets its custom parameters — reflection is the default, declaration is additive, and neither needs a base class. Includes the module-locality invariant that keeps generated properties from cross-wiring. 2026-09-01 (parfield layer landed; backlog item 3) /parameter-design
DocsEvidenceDerivation.md What the docs site reads off the live project: shortcuts, surface placement and the bar icon a tool actually draws, plus the audit that catches a doc claiming a key nothing binds. 2026-08-31 (docs deep pass) —
ExternalizationOwnership.md The ownership rule for the file-externalization mechanisms: Private Investigator owns externalization and release; Embody is the Envoy/MCP layer, and its file rows are an editing convenience, never a registry of record. Two corrections since: the source trees do not map to the roles (2026-09-01), and 50 committed source files are bound to nothing at all because the binding lives in the package tox (2026-09-03). 2026-08-28 (owner decision; audits 2026-08-27 surfaced the ambiguity) /externalize-operator
HotkeyManagerConformance.md Why FNS_HotkeyManager persists only declared sources and reads defaults off the parameter -- the reasoning behind the conformance rules. 97bda12 2026-08-21 /fns-hotkey-conformance
HubContract.md What a tool must do to show a tab in FNS_Hub -- the FNS_HubRegistry host, RegisterTab, the three tab kinds, exposure, and the hazards the build paid for. 2026-08-23 (FNS_Hub build, branch uniUI) /fns-registry
InstallSurfaceDesign.md The install-surface makeover — one shared UI base (base.css, marker-synced) under two shells (web storefront picker, in-TD console manager), the always-available guided setup, the understated Plus rail, and the console's Updates tab over new /api/updates* routes fronting FNS_Updater. Records why the framed picker stayed a frame and became invisible instead. 2026-08-30 /fns-packaging
KeyframerContract.md FNS_Keyframer -- the current values of any operators' parameters, keyed into an Animation COMP at its own current frame, and the same parameters driven back from it through a CHOP export rig (or expressions), with a KF / KEY / UNKEY / DRIVE strip in the Animation editor's graph heading through FNS_TimelineRegistry that takes drops of operators, parameters and pargroups (each landing in the editor's channel list at once) and follows whichever animation the editor is showing. The animation's channel list is the truth: KEY, UNKEY and Drive act on it (the picked channels first), drops and Add Channels put channels in, the References are a bulk add. Lives under FNS_TimelineTools. The seven Animation COMP facts the build paid for, and the four the strip did. 2026-09-04 —
LastInstallRecord.md "Set up like last time" — the machine's last install roams as state on the toolkit root's own config host; a fresh bootstrap offers it, and applies it unasked only when the root's Always Set Up Like Last Time toggle says so. unreleased 2026-08-22 (landed with the first-run welcome; root host now ships in the bootstrap) —
MarkersToolContract.md FNS_Markers -- imports marker lists from Resolve, Premiere, Audacity and FCPXML and draws them as vertical coloured lines in TD's timeline strip and Animation editor. Lives under FNS_TimelineTools; the third layer of the background composite. 2026-08-26 /fns-registry
NetworkOverlayRegistry.md FNS_OverlayRegistry, the twelfth registry -- every tool hands over one layer TOP, the registry composites them, shows the result above the nodes through one utility annotation, and tells each layer where it draws; tools can also pin small interactive panels (widgets) to a corner. CookBar is the first client of both. 2026-10-11 /fns-registry
NoNodeCallbackDecorators.md Callbacks declared on the method with a decorator and collected by HarvestCallbacks — why the marker attribute must return the function untouched, why targets are strings, and why rebuilding beats deregistering. 2026-09-01 (decorator scheme landed alongside the parfield layer) —
OpSeqDevTestBench.md OpSeqDev runs the shipped sequencer-family masters live as external-tox instances through two junctions, so a code edit lands once in FNSTools_PRIV and both projects hot-reload it. The setup, the rules that keep OpSeqDev from writing back, and what was verified. 2026-10-08 —
Overview.md One-page map of the schemes in force — what a package is, how it ships, how it updates, where settings live. Orientation only; every detail is owned by the linked document. 2026-08-26 —
PackagingScheme.md The packaging and update scheme in one page -- buckets and manifests, Pkgversion as the governed version, derived dependencies, and the traps already paid for. 2026-08-13 (consolidated from three sessions) /fns-packaging
PaletteFolderContract.md The toolkit's machine-wide folder in the TouchDesigner user palette is FNSTools, replacing FNStools_ext. One folder, one migration, one flat family folder (FNSTools/FNS) that both TDFam and TD's own palette read. The launcher (TDXLU) derives the same folder independently and follows the same contract. 2026-09-18 —
PaletteTabContract.md How a tool contributes a tab to TouchDesigner's Palette Browser through FNS_PaletteRegistry, and why the TDXLU/Patreon tabs appear without any registration. 4694cd0 2026-08-23 (registry externalized as the 9th) /fns-registry
ParameterReference.md Every package's customization parameters are documented by their own help text — harvested live into packaging/parameters.json, rendered on each tool's docs page, and authored from the FNS_CMS Parameters tab. One string is the tooltip and the documentation. Also owns the surface vocabulary — what a package puts on screen — that the docs filter and the picker search share. 2026-08-30 (rail built and the roster brought to 558/558 in one pass) /fns-packaging
PickerSearch.md The install picker's search ranks with a FuzzyMatch port over the card fields, the CMS tags, the operator types a tool stands in for and a docs word index each manifest row carries as search; a query shows one ranked list, and a Compact toggle draws title-only tiles. v3.2.63 (2026-10-05) /fns-packaging
PlaceOnce.md A placeonce package's picker card, and every FNS family member's, offers Place beside the tick. A placed tool lands and updates in this project like any other, but its install record says remember = 0, so "Set up like last time" never carries it into the next project. unreleased 2026-09-24 —
PortfolioCatalogFeed.md The site publishes /catalog.json, one JSON document of the published catalogue, so the Function Store portfolio (functionstore.xyz) renders its Tools section from this repo instead of a Notion database. What is in it, why it is derived from the site build and not the bucket manifest, and the additive-fields rule that keeps a consumer we do not deploy from breaking. 2026-09-30 —
PreviewPackages.md A package flagged preview ships in the release but only the creator's signed-in account can see or install it. It is gated to a pseudo tier the Worker grants the creator alone; the site, picker, questionnaire, bundles and new-tools notice leave it out. Clearing the flag releases it at its catalog access. 2026-09-25 —
PublicToolNames.md The FNS_ prefix is an operator-name convention, not a product name. Every listing a user reads shows the public name (the package FNS_BeatMod displays as BeatMod); identity keys, file names, shortcuts and COMP names keep the prefix. The rule, the surfaces it reaches, and the one identity move it cost. 2026-09-03 (owner ask: the prefix is noise wherever names are sorted or listed) —
RegistryHomeContract.md Where promoted registry globals live (/sys/FNS_Registries) and the six invariants that govern the home. a019218 2026-08-21 /fns-registry
RegistryScheme.md The backbone pattern: centralized, self-installing service registries that tools publish into instead of surfaces hardcoding their contents. d7ed7e6 2026-08-12 (RegistryBase consolidation) /fns-registry
ReleaseSigning.md Release signing — a dedicated Ed25519 key signs the manifest and discovery document at Stage time; clients verify against a pinned public key, fail closed on tamper, and allow-but-log unsigned during the transition. 2026-08-28 (owner decision on key custody: local file outside the repo) /fns-packaging
ScopeAndPersistence.md Where a tool's settings actually live: the .toe versus the machine-global JSON, the pars and state rails, every per-tool hatch and what it really gates. 628c523 2026-08-25 (closes ProductAdoptionAudit P5) /fns-config-scope
ShippedSurfaceDefaults.md Shipped surface layout (toolbar, navbar, main menu, op menu, pane types, hub tabs) comes from packaging/surface_defaults.json, applied at export; the author's live arrangement reaches it only through a snapshot. 2026-10-10 —
SiteDesignSystem.md The design system shared by functionstore.tools, the docs, /get/ and the web pages served from inside TouchDesigner. Tokens, type, shape, components, chrome, copy rules and the build contracts, with the file that owns each one, plus recipes for adding a site page, a guide or a tool web UI, and the drifts still open. 2026-09-15 (written from the site as of 241849a8) —
StoreCompleteness.md The machine's store holds the whole release, not only what was installed -- Keepstore on the updater (default on) mirrors the rest after every install and update pass, so Pick Tools works offline and a full mirror's completion is the one hook the FNS operator family will feed from. 2026-09-17 —
TDBehaviourFindings.md TouchDesigner behaviours this project measured and paid for, rescued out of .claude/rules/ so a regeneration cannot take them. 2026-09-23 —
TDFam_MainMenuRegistry_port.md Manual port guide handed to the TDFam repo: replacing its fire-and-forget mainmenu copy with a MainMenuRegistry-managed entry. External deliverable. 4022dc4 2026-08-13 —
TimelineAudioAnalysis.md TimelineTools draws EssentiaTD's offline (batch) audio analysis on the timeline - beat and onset markers in their own table, feature curves (loudness, onset strength, centroid...) and heatmaps (mel spectrogram, chroma). EssentiaTD stays the user's own install; nothing of it ships. Built 2026-10-13 on branch timeline-audio-analysis as FNS_TimelineTools/FNS_AudioAnalysis. 2026-10-13 (owner asked; batch mode probed on TD 2025.33070 with EssentiaTD installed) /fns-registry
TimelineBackgroundContract.md FNS_TimelineBackground -- the single owner of TD's two background surfaces (the timeline strip and the Animation editor), compositing a baked filmstrip, the FNS_Waveform render and the FNS_Markers render as independent layers. 2026-08-24 (branch cook-diet) /fns-registry
TimelineRegistryContract.md FNS_TimelineRegistry -- the tenth registry. Publishes tool-owned panels into TD's timeline dialog, in two zones, without disturbing the native transport controls. 2026-08-24 (branch cook-diet) /fns-registry
TimelineToolsContract.md FNS_TimelineTools -- media load, timeline<->media sync, drag-and-drop scope select and outputs, working against ANY of TD's timelines rather than assuming the global one. 2026-08-24 (branch cook-diet) /fns-registry
UpdaterHardening.md Measured semantics of an in-place external-tox reload, the two apply-path holes it closed, and why most of Embody's updater port turned out to be unnecessary. 09cbc80 2026-08-26 (branch dev25-updater-hardening) /fns-packaging
WaveformToolContract.md FNS_Waveform -- draws an audio file as a waveform into TD's Animation editor (interactive, pinned between the range markers while you zoom) and/or the timeline background. Lives under FNS_TimelineTools, which owns the media. 2026-08-24 (branch cook-diet) /fns-registry

Landed

Decision and verification records. Historical, but authoritative on why.

Document Summary Since Skill
AgentSkill.md A consumer agent skill shipped with the toolkit, so a user's own coding agent can drive the installed FNSTools: one authored core page plus one generated reference page per public package, built in the release pipeline, validated against the dist build, installed into a project or user skills folder by a quick-launch command. No contributor skill, no MCP layer. 2026-10-15 —
ArchitectureResearch.md Deep research over the toolkit's bootstrapping, versioning and updates, dependency handling, launcher ecosystem and gated releases, measured against the code and the live session on 2026-09-08. Produced the website guide "How FNSTools is built" (a new guides route on the site), corrected twenty stale claims in place, and lists what is still flagged, with the ideas worth explaining and their code anchors. 2026-09-08 (owner ask: explain how the toolkit is built, Launcher included, and put it on the website) —
CmsResearch.md The two-CMS contract — website/tools/cms.mjs owns CONTENT (docs, descriptions, recommendations); the FNS_CMS component owns what needs the live project (PI publishing, Preflight, Stage, Helpurl override) plus entitlement. v1 landed 2026-08-28. 2026-08-28 (owner idea, sketched in session; decisions NOT taken) /fns-packaging
CommandStateProposal.md Design record for live state chips and param prefill on quick-launch commands (registry 1.5.0/1.6.0). ce7b46e 2026-08-22 —
CommunityHighlights.md Highlight other creators' TouchDesigner tools on the website and in the picker, blog-style, with attribution. Builds on recommendations.json (link rows and pinned-tox rows already exist); adds post pages on the site, a Place button in the picker, and a third delivery kind for tdp Python packages. 2026-09-25 —
ConfiguratorPersistenceFixes.md Spec and verification record for the configurator layout-persistence defects across Toolbar, Navbar and MainMenu. 61748d9 2026-08-21 —
EntitlementPathReview.md The paid-tool path end to end, as it was fixed on 2026-08-29 — auth extension unwired, entitlement invisible, the "I just pledged" dead end, and the website paste rail aborting on a gated pick. Written to be independently re-checked, with the command for each claim. 2026-08-29 /fns-packaging
ExtUtilsSlimMigration.md Move the toolkit's tools off the full ExtUtils clone (NoNode, its 11 exec DATs, Keyboard In, announcer) onto the slim ExtUtilsMinimal clone, each command owner announcing itself. NoNode is wired in none of them. The full master stays for QuickExt users. 2026-09-14 /fns-command-registration
FNSToolsRedesign.md Decision record for the pre-release restructure and rename that shipped as v3.0.0. Supersedes naming and core-membership claims elsewhere. 24ae195 2026-08-15 —
FamilyExamples.md One annotated example COMP per FNS family operator (34), built from the released family toxes, cooking only while a network editor is inside it, saved beside each package so gated examples stay off the public mirror. 2026-10-15 —
ForeignPackages.md Shipping FOREIGN packages through the store (landed 8a280ae1) — tools whose bytes and version are owned upstream (TDXMap first). One new package kind, a catalog source block, a shell-side sync step, a self-managed updater state, and new curated fields for every package (author, homepage, changelog) editable in the content CMS and shown by the picker and website. Nothing changes in the upstream repo. 2026-09-02 /fns-packaging
GatedDeliveryResearch.md Gating some R2-bucket packages behind Patreon membership or a Gumroad license key. The design record; built, deployed 2026-08-29 and walked end to end, six packages gated at v3.1.4. Lifecycle rules in EntitlementLifecycle.md, open items in EntitlementFunnelPlan.md. 2026-08-26 /fns-packaging
LicenseNotices.md A licence notice inside every shipped tool, stamped by the release step from the package's access - MIT in full for free tools, the Patreon licence for anything not free, plus the third-party notices SearchPalette (MIT) and the operator family (TDFam, Apache 2.0) owe. Free tools stay MIT; the terms gained No derived tools and Projects you deliver. Built and verified 2026-10-09; reaches each tool at its next release. 2026-10-09 /fns-packaging
NativeInstallerDecision.md P6 — decision to defer native .exe/.dmg installers; the one-drop FNSTools.tox bootstrapper is the official rail. Includes revisit triggers. 7842401 2026-08-21 —
NewToolsAndFamilyFreshness.md Update never fetched family operators, the installer never re-fetched a recorded one whose file was missing, and nothing told a user that a release added tools. Backlog for fixing all three, the first-install rules the new-tools notice must keep, and (2026-10-12) store-only updates, the gated state and the sidecar rule. 2026-09-25 —
OpAlternatives.md Generalising OpTemplates into an op-menu contribution -- any tool can declare itself an alternative for a stock operator type, and a tool that is only in the store can be offered and placed on demand. 2026-09-10 —
OpTemplatesLibraryScope.md Where a user's OpTemplates library lives -- one active library, chosen global or project, the project one a tagged COMP at the network root outside the toolkit; shipped templates are only the seed. Decided and built 2026-09-10. 2026-09-10 —
OperatorFamilyFromStore.md The FNS operator family, built 2026-09-17: FNS_OpFamily (TDFam) in the toolkit, seven members declaring TDFam's FamManifest, a derived family manifest block, the updater mirroring members from the store into the family folder, commands without dialogs, a guard for the toolkit's own copies, and a CMS section that edits the manifest in the tool. The research below it is kept as the record. 2026-09-10 —
OverlayManager.md An Overlay tab in FNS_Hub for the network overlay, like the Toolbar and OP menu ones - reorder and show or hide each tool's layer and corner widget, set a widget's corner and margin - with a layer's visibility kept apart from the tool's own on/off. 2026-10-12 /fns-registry
OverlayWidgetsBacklog.md Owner requests for the overlay widgets after the first QuickMarks pass - outlines of the saved area, a clearer recall, renaming from the list, and collapsing both widgets. 2026-10-11 /fns-registry
POPOverlay.md FNS_POPOverlay, a new Base-tier tool shipped as a preview - shows each POP's attributes over the network editor (always, on mouseover, when selected, or both), with an optional POP to DAT readout of the first points for the selected or hovered POP. 2026-10-11 /fns-registry
PaneSearchRegistry.md FNS_PaneSearchRegistry, the eleventh registry, opens each network editor pane's find bar to contributed widgets the way the navbar is open; SearchFix becomes its first contributor. 2026-10-01 /fns-registry
PatreonNaming.md Retire the word "Plus" from every surface a reader sees. Gated tools are marked "Patreon"; the minimum tier (Base, Pro, Coaching) is named where there is room for it; licence keys are called Gumroad keys. /plus/ moves to /patreon/ with a permanent redirect. 2026-09-13 (owner ask: "Plus" is ambiguous) —
PlusCapabilityPackaging.md The toolkit half of the launcher's Plus-capability work: authoring TDXLU collect/media/mobile as gated FNSTools packages, and adopting the 1.7.0 surface/capability fields. 282dd40 2026-08-31 (FNSCommand 1.7.0 port landed) /fns-packaging
RealRampRework.md RealRamp becomes a Ramp TOP alternative with stock-matching types, radial, extend and interpolation, and its colour keys as a sequence parameter. 2026-09-30 —
SearchFix.md FNS_SearchFix replaces the network editor find bar's literal prefix search with a Python search (contains, case-insensitive, wildcards, inside child networks), keeping its arrows and Home toggle; a Legacy toggle brings the old behaviour back. 2026-10-01 —
StandaloneTakeover.md The updater finds standalone copies of global tools (non-core packages that land inside FNSTools) by a release-stamped FNS:GLOBAL tag and FNS_About.Pkgname, the console offers Take over (move the copy in, or delete it when the toolkit has its own), the picker refuses to install a second copy, and every global tool carries a guard that releases its Global OP Shortcut beside a toolkit copy. A removed tag is the opt-out for a kept fork. Notices for people and agents: a site guide, /llms.txt, the toolkit README and a one-line comment. Built and verified live 2026-10-09; reaches users with the next release and rails rebuild. 2026-10-09 /fns-packaging
ToolkitNamingPass.md The 2026-09-09 naming pass -- FNS_ prefix on every package, the Toolbar/MISC consolidation, and Active as the single on/off parameter name. 2026-09-09 —

Open

Planned or approved work that has not been built. Actionable.

Document Summary Since Skill
CommandPaletteDesign.md FNS_CommandPalette — an in-TouchDesigner command palette over FNS_CommandRegistry, in a temporary Window COMP with native TD UI. What transfers from the launcher's quick-launch overlay, what cannot, and the decisions still open. 2026-09-01 (logic 5c81a14; window, rows, keys and hotkey landed the same day) —
ConfigCoverageReview.md Review of config roaming coverage (2026-10-10) -- global tools without a config host, surface positions no host persists, project data that roams, hotkeys persisted twice, dev values that ship. 2026-10-10 /fns-config-scope
CookBarBacklog.md Improvement backlog for CookBar (Anton Heestand's Cook Bar, adopted 2026-10-07) - a thin extension with commands, keeping the user's project clean on save and uninstall, and making the bars readable at any scale. 2026-10-07 —
CoreToolsBacklog.md Backlog for nine core-tool defects and features raised 2026-08-31 — SwapOps connector loss (landed), NoNode's identity defect, stuck modifier keys, QuickMarks naming, command authority, ParOPDrop #127, non-roaming registry groups, rolloverParGroup. Every claim measured live; per-item status in the table up top. 2026-08-31 (owner raised nine items; scoped and measured the same day) —
DeveloperKit.md A developer kit, FNSTools-DevKit.zip, the eleven registries each as its own tox with a README, as a separate download beside the bootstrap, so other developers can build and test tools that publish into FNS surfaces without installing the toolkit; and the RegistryBase guard that lets a host live without a toolkit root. Asked 2026-10-17; the plan, the contents, what stays out and why, the build, the rail, the open points. 2026-10-17 /fns-registry
EntitlementFunnelPlan.md The plan that closes the entitlement funnel — three-slice review verdict (TD client, picker/installer, gate worker) and the phased work: stop the funnel-breaking bugs, make degraded states honest, add the missing conversion rungs. Companion to EntitlementPathReview.md, which it re-checked. 2026-08-29 /fns-packaging
EntitlementLifecycle.md How an entitlement begins, is re-checked and ends — the Gumroad perpetual-licence decision, revocation, session lifetime, and the failure-kind split. The §4–§5 work is built and offline-tested; §2.2 and §3.1 stay open. 2026-08-27 (audit of the undeployed gate); §4–§5 built 2026-08-28 /fns-packaging
FamilyFixes.md Eight product fixes the family examples ran into (ConstantCHOP Type switch, SwitchTools bind, ProSceneChanger cue list, Info Headers in artifacts, CamSequencer and GeoPilot shipped state, OpSequencer toggle cells, TopToMidi Steps). 2026-10-15 —
FirstRunNudgePlan.md P4 — a one-shot post-install dialog pointing the user at the Configurator. Approved in dialog form; not built. The drop-time welcome (bootstrap opens the picker on first drop, guided first run in the page) landed separately on 2026-08-22. 7842401 2026-08-21 (approved, unbuilt) —
FirstRunTestPlan.md Manual end-to-end test plan for the first-run experience — the Start screen on a drop, the wizard picker, "Set up like last time", CMS Recommended, dev-folder guard. Run on a clean TD before the next release. unreleased 2026-08-22 (covers work landed that day; automated checks passed, the cold user-path runs below are still pending) —
HubFollowups.md Follow-ups the FNS_Hub build left open -- retire tools_ui (the last scanner) into hub tabs, an OpMenu configurator tab, a ConfiguratorBase extraction, and two hand tests. 2026-08-23 (FNS_Hub landed; see HubContract.md) /fns-registry
InstallerWizardFlow.md The install picker becomes a wizard with one job per screen (start, pick your tools, install); the catalog of tools under its category headings is the home every flow lands on, the selection is a drawer over it and never a destination, compact one-line rows are the default inside TouchDesigner, and Patreon is said once per screen. Sketched 2026-10-16; phases 1 to 4 landed 2026-10-17 with the set as a screen, which the owner rejected the same day; phase 5, the rework to the drawer, landed the same day; the rails rebuild and the clean-TD first-run runs remain, with the release. 2026-10-16 /fns-packaging
LauncherToolkitBoundary.md Decision: how the TDXLU launcher and the FNSTools rail should share package installation -- two installers today, and what to do about it. Recommends the installer becoming a command provider over folding the companion into the toolkit. 2026-08-31 (raised by the owner after the four capabilities landed) /fns-packaging
NavbarCookDiet.md What the navbar/HydroHomie cook audit landed, why the containers/* freeze was reverted (it cost the navbar its whole installation for 2 operators), and parent_hierarchy's always-cook hover chain -- awaiting a hand test against a live control. 2026-08-24 (branch cook-diet) /fns-registry
PatreonWebDownloads.md Design for downloading Patreon-gated tools straight from their website pages. A browser sign-in on the gate sets a cookie session, the page asks the gate what the account holds, and an entitled button streams the current release from plus/. Nothing built or deployed yet. 2026-10-08 /fns-packaging
ProductAdoptionAudit.md Audit of product design, adoption, installation, updates and config scoping. The actionable backlog; each item carries its evidence anchors. 7842401 2026-08-21 (backlog, partly resolved) —
ProjectStateAcrossUpdates.md An in-place update keeps a tool's custom pars (reloadcustom off) but rebuilds its children, so internal readers come back blank. Fix is split: retire the tool's duplicate streaming readers in favour of FNS_MEDIA's, and self-heal the two analysis readers that must stay. 2026-08-26 (branch dev25-private) /fns-packaging
RailHardening.md Six adopted ideas and three closed holes for the public distribution rail — a discovery document with pinned fallbacks, a kill switch, publish-time guards. None of it depends on gating anything. 2026-08-26 /fns-packaging
ReadmeRewritePlan.md P1 — plan to rewrite the root README around the v3 product. The README still describes the 2023 monolith. 7842401 2026-08-21 —
ReleaseHygieneBacklog.md Six items raised 2026-09-18 after the first clean-machine install — FNS_Remote ships listening, family packages spawn themselves into the user's network, two CamSequencer defects, six pre_release hooks that never run the common scrub, and a current-page rule. Every claim measured live or read out of the shipped artifact. 2026-09-18 (owner raised six items after testing v3.2.37 on a clean machine) —
RemoteAndNavbarFollowups.md Five items raised 2026-09-11 on the phone remote and the bar buttons. Two dissolved on inspection (GlobalVolControl does host the toolbar registry; nothing is duplicated in the navbar). The LAN toggle is coherent and honestly presented, and measuring it turned up one real defect: Active and Lan travel inside the .toe and auto-serve on open, which contradicts the component's own rule 2. Two builds are wanted, each with an open decision. A sixth item (2026-09-11) ports the launcher's component browser and client link into FNS_Remote, coordinated with TDXLPP. 2026-09-11 (owner raised five items after the pargroup field work) —
SiteSearchVisibility.md Search visibility for functionstore.tools. The site was crawlable but had no sitemap, no robots.txt, no structured data, and titles without the word TouchDesigner; the build now emits all four, and the share image no longer shows the old domain. What is left is off-site work only the owner can do (Search Console, Bing, backlinks) and a copy pass on short descriptions. 2026-10-10 —
TDXLUGateIntegration.md Assessment of the TDXLU Gate Contract (artifact 06da3418, written at fe5f4d4) against the gate as it stands after the 2026-08-29 walk — who accommodates whom, which of its premises the weekend dissolved, the four pieces of gate surface we accept building, and the conditions attached. 2026-08-29 /fns-packaging
TierVariants.md A tool with a Base and a Pro form ships as ONE package whose two builds come from TWO separate .tox masters (option C, refined by the owner the same day). One catalog entry, installed name, version line, settings, docs page and picker row; the masters may diverge and may share code through a clone master. Records what the code already supports (the installer names a landed COMP after the manifest, a dotted variant name needs no worker change), what has to change (Packages() would list the Pro master as its own package, variant masters need source withholding, Pkgvariant joins the update decision), why A and B were not chosen, owner questions, and the build order. 2026-09-15 (owner chose option C, then made the Pro build a separate .tox) —
UpdaterSelfUpdateVerification.md P3 — plan to exercise FNS_Updater's self-update end-to-end. The riskiest untested path in the product; never run. 7842401 2026-08-21 —

Consumed

Surveys and candidate lists whose work has been done. Kept for the reasoning.

Document Summary Since Skill
CommandRegistryCandidates.md Survey of every tool for actions worth registering as commands. Consumed by the 81-command rollout; kept for the per-tool reasoning, not as a to-do list. 9eca7cd 2026-08-21 —
NavbarColdBootCheck.md The navbar-registry supervised cold-boot check — inherited from the root recovery note, PASSED 2026-08-28 on a supervised restart (two checklist items had gone stale since 2026-08-09; recorded below). 2026-08-28 (checklist inherited from RECOVERY_NavbarRegistry.md, incident resolved 2026-08-09; verified 2026-08-28) /fns-registry

Research

Exploration only. Nothing here is a commitment; check superseded_by.

Document Summary Since Skill
DistributionComparison.md FNSTools' distribution rail compared against DOTsimulate's shipping LOPs rail — what converges, what they have that we lack, and three unguarded holes the comparison exposed in our own code. 2026-08-26 /fns-packaging
TextFormatInjectionStrategy.md Exploration only, nothing decided: whether TD's text-based project format changes what is possible for getting FNSTools in front of a new user. 290f7da 2026-08-21 —
TextFormatProjectFiles.md Research note on what TouchDesigner's text-based project save format actually is, from a live sample. 290f7da 2026-08-21 —
UpdaterRegistryResearch.md Whether the updater should become the 11th registry, so tools carry their own update capability and hand it to a /sys global when one exists. Research only — nothing here is built. 2026-08-26 /fns-packaging
UvPackagingResearch.md Research into shipping tools as uv/PyPI packages. Explicitly NOT the plan — the bucket/manifest rail won. 2026-08-10 —