Inside the project
Prepared with the project’s development agent from source and retained evidence. This is a project-owner assessment, not an independent customer review. Dated checks were not rerun for this website.
The Task Panel is most useful for the small, easily-dropped jobs of everyday life: renewals, bookings, follow-ups. You type one line, and it reads the task on the Mac with Apple's on-device model. It asks only the questions it genuinely needs, all at once, then drafts a short, specific plan. Its strongest quality is honesty. Every line on a task's page says where it came from (you, a rule, a receipt or a model's guess). Nothing that sends, pays or dials happens without your yes. The task list never claims a plan exists when it doesn't. In measured tests on held-back example tasks, it produced a real plan for 24 of 24, typically in about 16 seconds, where an earlier version fell back to a placeholder for most tasks. It is still a private, unreleased macOS feature. Its latest phases are built and tested but not yet merged, and it has not yet been shown working end to end inside the running app. There are no screenshots yet.
What stands out
- On-device reading of a task into fixed categories in about 2 seconds, with an honest support level instead of a made-up confidence score
- Asks one batch of typed questions (yes/no, choice, date, free text) and flags what it assumed instead of asking
- Real, task-specific plans: 24/24 on held-back test tasks in the 28 Sep 2026 measurement (22 first try, 2 on a retry, 0 placeholders)
- Strict action tiers: anything that sends, pays or dials never runs on its own; confirm-tier actions need your yes for the exact words
- Encrypted, tamper-evident task memory with a landmark at every stage, and de-identified lessons across tasks
- A safety reading that limits what the assistant may do, and signposts help without asserting anything about the person
Current limits
- Private, unreleased, macOS only; the iPhone build is blocked
- The latest work (live metrics, planner fix, streamed task chat) is built and tested but not merged
- No recorded end-to-end run inside the app since the newer phases; the evidence comes from a test harness that runs the real source code
- Every planned task currently asks at least one question (24/24 on the held-back set), so fully unattended completion is not yet shown
- One worked example ("Fix this code issue") goes to planning without asking which code: a known miss
- The safety screen's crisis results are not independent evidence: the same author wrote its phrases and the test items
- Cloud models were never measured: the build Mac's network blocked them
Features & evidence
Task reading (first pass)
installed-testedType a task; it is read into intent, domain, timing, priority and a safety reading on-device
Recorded evidence
Installed in the live app checkout, then Integration, 21–22 Sep 2026; harness: corroborated 94% > single 85–86% > contested (dev and held, 28 Sep)
Sufficiency gate and one grounded question
installed-testedA vague task gets one question instead of an invented plan
Recorded evidence
Phase 1, 21 Sep 2026; five gate designs measured. Known miss: worked example w04
Assistant cast and two-tier safety
installed-testedRule-chosen roles (lead, researcher, drafter, critic); a safety reading limits what they may do
Recorded evidence
Installed 22 Sep 2026; architecture matched hand labels 40/45 dev, 17/22 held
Guided planner
component-testedThree to six task-specific steps, blockers and search hooks
Recorded evidence
28 Sep 2026: dev 42/45 real plans; fresh held set 24/24; median 16 s (was 87 s). App build green on a copy of the landing commit, 8 Oct 2026. Not merged
Tiered executor and receipts
component-testedRuns what it is allowed to, leaves a receipt for everything including what it held back
Recorded evidence
Integration 10b9fe2a3, 23 Sep 2026, build green; 8/8 mutants caught
Living Overview and approvals tray
component-testedThe task page changes form as the task moves; approve exact actions; settle a contested reading in one tap
Recorded evidence
Integration c11b3a87e / f954dbb9f / 5fb3b2129, 24 Sep 2026, builds green
Landmarks and 'Since you were last here'
component-testedSealed history of every transition; see the page as it was
Recorded evidence
Integration c5d1a2755, 08596138f, 24 Sep 2026
De-identified lessons
component-tested'Tasks like this before' on similar open tasks
Recorded evidence
Integration 869dd8e31, 24 Sep 2026; a seeded name, phone number, postcode, medicine and address never appeared in a lesson
Live outcome metrics (8b)
component-testedEvery run records how it ended; landmark coverage and re-entry time
Recorded evidence
Harness up to 495/0; in landing commit bcd6e090c, 8 Oct 2026; not merged
Streamed task chat and one Suggestions parser
component-testedReplies stream into the task's thread; one parser for planner hooks
Recorded evidence
11/11 mutants; same landing commit; not merged
Hand a task to an agent / local model per job
plannedProposed only
Recorded evidence
Proposal doc, 8 Oct 2026; not approved
Review updates & corrections
- No code or merge change since 17 Oct: Integration still lacks the planner-fix files and the roadmap still says 'Phase 8b onward remain'.
- Precision: the held-back 24/24 is 22 plans on the first try plus 2 on a retry, with 0 placeholders and 0 fallbacks. 'Single'-support accuracy on that set was 85% (the bio's 86% was dev).
- Added: every one of the 24 held-back plans asked at least one question, so 'carried as far as it can without you' currently always stops for a question.
- Added: worked examples w01–w03 still wait on a planner replay; w04 is a known miss.
- The SDK landing commit (separate work) is blocked by an Anthropic Swift SDK release-build compiler crash; a fix is proposed but not yet applied. This does not affect the Task Panel landing commit.
Workflow walkthrough
A guide to the native workflow. These steps describe the app; only the recordings and images embedded on this page are available as website demonstrations.
- Type a made-up task, e.g. 'Book a dentist check-up next month'.
- The row badge shows 'Working', then 'Needs you' with one batch of typed questions (e.g. which practice, preferred day).
- Answer; the Overview shows a three-step plan, each line badged by where it came from.
- A reminder step appears in the approvals tray with its exact wording; approve it or choose 'Not now'.
- The landmark rail shows each stage; select one to see the page as it was.
Planned captures · not yet available
- Proposed: Overview in its 'questions' form with typed batch questions
- Proposed: approvals tray showing the exact reminder it would create
- Proposed: landmark rail with 'Since you were last here'
- Proposed: the five-step walkthrough above, 30–60 s, test account and made-up task only
Development biography · earlier archive
Development profile compiled from project source and retained records in October 2026. Dates and test results describe those records; they do not imply a new build, live acceptance test or public release.
PUBLIC LINKS: none. AssistantApp is a private, unreleased macOS app. There is no download or public repository.
Biography
The problem. Most assistant apps treat a typed task as a prompt: a model writes a confident plan and the app shows it. AssistantApp already had the parts of something better: a per-task prompt architect, persona packs, an evidence model, a staged reasoning pipeline and a two-lane support planner. A source audit on 21 September 2026 found that most of these compiled but had zero production callers. The task list said "Plan ready" even when no planner had run and a placeholder outline was shown. So the work was mostly wiring, truthfulness and one durable spine, not new capability (roadmap header).
The idea. A task should travel from capture to reasoned completion with as little interruption as possible. It should also never pretend. Three principles run through every phase:
- Measure before believing. Every model-facing step is checked against hand-labelled tasks on the real on-device model, using a dedicated harness (
Tools/TaskIntakeHarness). Fixes that didn't measure better were rejected. - Provenance on everything. Each line on a task's page carries a badge saying whether it came from you, a rule, a connector receipt or a model's inference. The type system makes omitting it impossible.
- Autonomy by tier, not by trust. Silent and notify actions run alone. "Confirm" actions run only against a recorded grant for those exact words. "User-only" actions (send, dial, pay) never run on their own.
What happens to a task. You type something into the panel, for example "Book a dentist check-up next month".
- Read. Apple's on-device model decodes the text directly into Swift enums: intent, domain, timing, priority and a safety reading. This takes about 2 s instead of the ~50 s of the old three-pass chain. An off-vocabulary answer is impossible rather than merely detected. Agreement between the model and independent keyword cues gives an ordinal support level, not a fake confidence number. On the dev set, corroborated readings were right 94% of the time, single 86% and contested 79%.
- Gate. A deterministic sufficiency check decides whether the text identifies anything to act on. Of five gate designs measured, it was the only one that asked no needless question. If the text is too vague, you get one grounded question instead of a fabricated plan.
- Cast. A rule table picks an "architecture" for the task and assigns roles: who leads, who researches, who drafts, who critiques. Every decision is recorded with its reason. A safety reading floors autonomy. A crisis reading also removes every acting tool and signposts help (Samaritans, 116 123, UK), worded as a reading that may be wrong.
- Plan. A guided on-device planner produces three to six task-specific steps, any blockers, and up to two search hooks. Before the October fix, 54 of 71 planned tasks got a placeholder because the model's JSON broke. After it, 42 of 45 dev tasks and 24 of 24 fresh held-out tasks got real plans, and median planning time fell from 87 s to 16 s.
- Act. An executor works through the plan by tier and leaves a receipt for everything, including what it held back and why. A step counts as done because evidence exists, not because a model said so. A critic role reads the completion claim, built from receipts, and its doubts are shown, but it can't erase a receipt.
- Ask once. Questions from the gate and the planner are merged, typed (yes/no, choice, date, free text), and asked as one batch within the cast's question budget. Anything the plan already assumed is flagged, not asked.
- Show. The task's Overview page changes form as the task moves: questions, approvals, working, blocked, done, quiet. A "Next Best Move" and two lanes, "done for you" and "needs you", sit beneath it. An approvals tray shows exactly what a confirm-tier step would send or create. The task list badge tells the truth: Working, Needs you, Retrying at…, No plan yet, Done.
- Remember. Each stage is sealed into encrypted task memory. Observations, episodes and syntheses are encoded with Douglas's own CBOR-LD package, sealed with ChaChaPoly, hash-chained per task, and keyed from the login keychain. "Landmarks" record every transition, who decided it, and the page as it stood, so a relaunched app rebuilds history from the chain alone. A cut tail or swapped chain is reported by name. "Since you were last here" lists what happened without you.
- Learn, privately. A completed task leaves a de-identified lesson: how it went, never what it said. It uses closed vocabularies only. In testing, a seeded name, phone number, postcode, medicine and address never appeared in a lesson. Lessons feed "Tasks like this before" on similar open tasks.
Durability. Submitting a task posts an envelope to a durable mailroom. Retries back off from 30 s to 2 min to 8 min, then go to a dead letter that shows its reason and a "Try again" button. A quit mid-run is recovered at launch.
Who it's for. People who hand a lot of small life-admin to an assistant and need to trust it: anyone whose attention is limited, and anyone for whom a wrong autonomous action costs more than a question. The design treats "bad capture" and "low certainty" as facts to show, not to hide.
Status in one line. Phases 0–8a are committed in the integration branch, with green builds. Phases 8b and 8c, the planner fix and the chat improvements are built, tested and staged as a landing commit, but not yet merged.
Features (what a visitor could see, once captured)
Authored in AssistantApp (AssistantApp/Sources/Tasks/, Sources/AI/):
- Living Overview page (
Tasks/Overview/): seven page forms, a stage rail, Next Best Move, "done for you" and "needs you" lanes, and provenance badges on every line. - Approvals tray: concrete confirm-tier actions with their exact payload. "Not now" is kept as your decision.
- One-tap correction: settle an undetermined or contested reading, or deliberately override a safety reading. The override is bound to that exact text, and Undo is available.
- Honest task list: one truthful badge per row (
TaskListStatus). - Mailroom strip: what's being done, what it needs, what was tried, and dead letters with "Try again".
- Typed batch questions:
EssentialQuestion. - Landmark rail: choose a landmark to see the page as it was, read-only, with what changed and why. Plus "Since you were last here".
- Task document view: saved answers, open loops, assumptions, evidence-badged facts and a run timeline. It's rendered by a sealed web kit with no bridge, so nothing on the page can act.
- Notes tools on the task page: select part of the task conversation to remember it, make it a subtask, or ask about it. A selection keeps the weakest provenance of its parts.
- Streamed task chat, plus one shared parser for planner "Suggestions" (hooks for searches, places, YouTube, next step).
Dependencies, not authored here: Apple FoundationModels (on-device model), CryptoKit, WebKit, and Douglas's own local packages (below).
Technical foundations
- Swift 6 / SwiftUI, macOS 26; FoundationModels guided generation (
@Generable) for the first pass and the planner. A schema trap was found and documented: a 0–1 list guide is refused by the model service. - Local packages:
CBORLD(Douglas's CBOR-LD library; task memory's encoding),SemanticControlCoreandNodeBGGen(Utilities). The memory vocabulary is pinned by fingerprint: v1 frozen, landmarks under v2. - Security: ChaChaPoly-sealed, hash-chained per-task stores, keys in the login keychain, an authenticated anchor outside the chain, and bounded decoding (an earlier crash-on-corrupt-file was fixed in Phase 3a).
- Test harness:
Tools/TaskIntakeHarness, a headless CLI compiled against the app's real source files. The app's own XCTest host can't run on the build Mac. - 495 contract checks.
- Golden and held-out sets with a ledger that marks a held-out slice "spent" once used.
- Prompt fingerprints that fail the contracts when wording changes without a replay.
- Mutation testing, e.g. 21/21 planner mutants and 23/23 at Phase 8a.
metrics.pyreports per split; it never pools dev and held-out.
Maturity by feature (dated evidence)
| Feature | Tests | Built | In integration branch | Runtime-verified in app | Released |
|---|---|---|---|---|---|
| Phases 0–2: guided first pass, gate, durable mailroom | harness | yes | yes (via 301731dda parity, 22 Sep) | Phases 0–4 installed in the live checkout 21–22 Sep 2026 | no |
| Phase 3: encrypted CBOR-LD task memory | yes | yes | yes | installed 21 Sep 2026 | no |
| Phase 4: cast and two-tier safety | measured: architecture 40/45 dev, 17/22 held | yes | yes | installed 22 Sep 2026 | no |
| Phase 5: tiered executor, receipts, typed questions, critic | 8/8 mutants | green | 10b9fe2a3 (23 Sep) | unknown | no |
| Phase 6a–c: Overview, approvals, document view, honest list | WebKit render test | green | c11b3a87e, f954dbb9f, 5fb3b2129 (24 Sep) | unknown | no |
| Phase 7a–b: landmarks, de-identified lessons | PII-seeding test | green | c5d1a2755, 08596138f, 869dd8e31 (24 Sep) | unknown | no |
| Phase 8a: metrics report, replay pins | 436 checks, 23/23 mutants | n/a | 240669ea2 (24 Sep) | n/a | no |
| Phase 8b: live outcome metrics, landmark coverage | 464–468 checks | app build green on export | NOT merged; in landing commit bcd6e090c (8 Oct) | unknown | no |
| Phase 8c and planner fix | 495/0; held-out 24/24 real plans | green on export, 8 Oct | NOT merged; same landing commit | unknown | no |
| Chat and hooks (one parser, streamed task chat, Keychain key) | 11/11 mutants | green on export | NOT merged; same landing commit | unknown | no |
"Unknown" means the retained records contain no evidence of an in-app run since that phase. The app was last known run before Phase 2's live-metrics instrumentation, because no execution journal existed on the Mac on 26 Sep. Landing waits on the MacResilience consolidation plan and the studio’s agreement.
Limitations
- Not released, not on iPhone, and Phases 8b–8c are not merged.
- The cloud (OpenAI) path was never measured: the build Mac's network blocked it.
- The safety screen's 9/9 crisis detection isn't independent evidence: its phrases and the test items share an author. On its own, the model flagged crisis items at crisis tier only 2 of 5 (dev) and 1 of 4 (held-out) times.
- Every planned task currently asks 1–4 questions by design. Whether to always ask is an open decision.
- Remaining planner misses: 2 stalls and 2 guardrail declines on dev, and 1 held-out plan names the wrong blocker.
- Stages aren't yet separate workers. Only the critic role is called by the pipeline.
- Hand labels and rule tables share an author, so agreement between them isn't independent validation.
Roadmap
- Land 8b, 8c and the chat work via the MacResilience plan.
- Live-use metrics: time to first useful action, silent failures, re-entry.
- A "hand to an agent" action for code-shaped tasks via AgentBridge, as a dev build only. Proposed, not approved.
- Local model catalogue: choose among the Mac's 21 local MLX models per job, only where one beats the current model on fresh held-out tests. Proposed, not approved.
- Claude as planner after SDK adoption lands, measured first.
FAQs
- Does it act without asking? Only for silent or notify-tier steps. Anything that sends, pays or dials never runs on its own; confirm-tier steps need your recorded yes for those exact words.
- Does my task text leave the Mac? Not on the default path: reading and planning run on Apple's on-device model. A cloud model is used only if you pick one.
- What if it misreads my task? Contested readings are flagged and one tap settles them. Your choice outranks every model and survives reclassification.
- What does it remember? Everything about the task, encrypted and tamper-evident, kept while the task exists and removed 30 days after you delete it (undo cancels). Lessons shared across tasks are de-identified by construction.
- How do you know it works? A headless harness runs the real source against hand-labelled tasks and the real on-device model, with held-out sets and mutation tests. In-app runtime evidence is still pending.