pulse platform triage 2026 09 05 - manishiitg/agentworks GitHub Wiki

SQLite platform backlog comparison — 2026-09-05

Read-only audit of all 14 local workspace-docs/Workflow/*/db/db.sqlite databases. Backup copies excluded. This does not include remote deployments. Compared with docs/bugs/pulse_platform/index.md and its PLAT-001–281 ticket fragments. No findings or tickets were changed.

Measured scope

  • 2,259 run_concerns rows.
  • 260 platform candidates: typed harness issues or rows marked external_action_required.
  • 103 terminal candidates (97 resolved, 6 rejected).
  • 157 nonterminal candidates: 148 external_action_required, 8 open, 1 acknowledged.
  • Of these 157: 120 typed harness issues, 27 workflow issues, 10 untyped.
  • These are finding counts, not unique confirmed current platform defects. Duplicate reports, stale diagnoses, external dependencies, and already-implemented fixes remain in the count.
  • Only 17 active candidates have a direct discoverable PLAT reference or exact identifier match in the register/ticket text. Semantic relationships below are triage associations, not asserted equivalence.

Repair groups and order

Priority Group Evidence and register comparison Recommended work
1 Scripted failure propagation server A PUL-4FE07CD2 reports exit_code=1 with success=true and completed outer status. Related to PLAT-216 and PLAT-280, but neither alone proves this report fixed. Reproduce with an isolated nonzero-exit fixture, then repair the exact success/failure propagation if it still fails.
1 Scheduler outcome and run identity Social-media PUL-6403A889 recurred Sept 4; server A PUL-BA1C940F is similar. PLAT-242 explicitly deferred; PLAT-219/194 cover adjacent failure detection. Sales PUL-C1B267AB and archive complaints need separate retention-versus-attribution diagnosis. Match completion to exact execution identity across rotation; test completed, failed, and concurrent/retained runs.
2 False scripted SQL drift findings Six Sales Outreach findings: PUL-68B9A284, PUL-EEFF4258, PUL-7E6F78B1, PUL-F645A646, PUL-3DFE2419, PUL-F1A8B489. Current plan_drift_checks.go regex captures only the first Python string literal. Part of PLAT-258's checker. Extract complete static SQL or report unsupported syntax; never report an incomplete fragment as a real schema defect. This is a code-confirmed repair candidate.
2 Pulse receipt, lifecycle and identity Sales PUL-4719B06D/PUL-09511B0E prematurely marked a running drift executor failed; PUL-E3F22BCC and trading f9ba8af205f062ce report parent/child receipt identity mismatch. Social PUL-C28E9B78 reports canonical alias/step mismatch. Recheck against Sept 4 commit f7a8f8b52 (interrupted review recovery), PLAT-199/258, and retired verification tooling PLAT-240 before implementing remaining gaps.
2 Tool and filesystem contract consistency Repeated Substack db/research and db/growth denied writes; context reads in social-media/build-in-public/upwork; Sheets tool availability. Related PLAT-175/223/248/257/261. Separate stale instructions from genuine missing grants. Current durable arbitrary-file location is db/assets; do not restore unrestricted raw SQLite access. Check actual fresh child sessions.
3 DB tools and schema repair Upwork PUL-76F2EE72/PUL-A14F764F and server A PUL-25BDBC42 report response-envelope differences. LinkedIn image batch PUL-3BD9F422 and eval prevalidation PUL-E45BE152 have PLAT-221/227 implementations. Verify supported transport envelopes; migrate affected workflow schemas and evaluator configuration using existing tools where those are now available.
3 Cost, telemetry and archive metadata PLAT-226 overhead attribution and PLAT-241 archived timing run_folder are explicitly deferred. PLAT-166/167/184 already implement other cost improvements. Keep remaining instrumentation work separate from already-fixed cost access and from unrecoverable historical pricing.
3 Stale tooling/presentation Upwork PUL-07504731 reports stale get_plan_prompt_health; legacy artifact-cursor issues overlap resolved PLAT-230. Reproduce backend prompt-health caching independently of the recently fixed frontend evaluation-plan cache; retire superseded cursor diagnoses after comparison.
Separate queue External dependencies / workflow repairs Invalid vendor or Hugging Face credentials, Cloudflare, LinkedIn quota, X/Upwork rendering, missing historical provenance, owner-protected Soul changes. PLAT-224/231/232 distinguish upstream browser behavior from platform defects. Account/configuration work, bounded workflow changes, or external evidence; do not turn every external_action_required row into a platform patch.

Confirmed stale backlog example

PLAT-280 says Upwork's four mode-mismatched steps were converted. Current planning/plan.json confirms search-save-jobs, bid-record, improve-read-history and outreach-record are all regular steps now. SQLite still retains their old message_sequence mismatch findings as external_action_required. This is evidence of reconciliation debt, not proof those four fixes need reimplementation. Verify a producing run before claiming end-to-end success.

Limits

The SQL extractor defect was checked in current source. Other clusters are evidence-backed triage candidates with ticket comparison, not blanket live reproductions. No workflows, publications, browser actions, or migrations were launched. No status was closed solely because a ticket says fixed.

Follow-up investigation: three priority claims

All three have supporting current-code evidence. No production implementation was changed during this investigation.

  1. False scripted success — confirmed in retained runtime artifacts and current code. Server A iterations 16 and 17, dev/logs/step-daily-ops-completion-check/execution/scripted_fast_path.json, record exit_code=1 and success=true. The associated completion_check.json has all_passed=false; execution-final-summary.json and run_metadata.json say completed. controller_scripted.go explicitly returns Success:true in its nonzero-exit branch when pre-validation passes. Output-shape validation is overriding process failure. Fix should preserve nonzero failure and validation diagnostics; retain the existing exit-2 terminal-refusal contract and distinguish any later successful repair attempt from this failed attempt.

  2. Multiline Python SQL extraction — confirmed using real scripts and SQLite EXPLAIN. Seventeen static queries across six Sales Outreach scripts fail when only the first string literal is checked, but the complete AST-parsed SQL passes EXPLAIN against the current database opened mode=ro/query_only. Scripts: step-send-email-outreach, step-provider-lookup, step-import-company-list, step-select-backlog-candidates, step-check-email-replies, step-apollo-company-search. Current plan_drift_checks.go patterns terminate after the first quote. Example: INSERT INTO outreach_activity followed by another literal containing columns/values is wrongly tested as just INSERT INTO outreach_activity. No SQL writes or workflow scripts were executed. Fix should extract complete static strings and mark dynamic expressions unsupported instead of reporting fragment errors as schema defects.

  3. Scheduler archive misattribution — reproduced with the exact current reconciliation function in an isolated Go harness. Before-set contains iteration-0/default; after-set contains an old failed run renamed iteration-315/default plus the new completed iteration-0/default. reconcileWorkshopRunOutcome returns failed=true for iteration-315/default because a new folder name bypasses timestamp checks. rotatePairedIterationZero performs precisely this rename. Real social-media schedule receipt 1187b3b3 started 2026-09-04 03:00:26Z and points to iteration-316, which completed; its error blames iteration-315, whose execution started Sept 3 at 16:11:56Z and failed that day. Server A receipt 09ec502f similarly points to completed iteration-15 but blames failed iteration-13, started hours before the schedule. This establishes a deterministic mechanism consistent with the incidents; the exact historical before-list was not retained. Fix should correlate immutable execution identity to the schedule invocation, preserving true failures and avoiding both renamed history and unrelated concurrent runs. Requiring current timestamps alone is insufficient for concurrency.

Recommended repair order after investigation: false scripted success, scheduler identity, SQL extraction. The first two corrupt reported outcomes; the third creates false drift alarms.

Local fixes after investigation

  • Saved-script execution: a nonzero process exit or execution error now remains a failed attempt even if artifact pre-validation passes. Diagnostics and the existing repair fallback remain available; exit-2 terminal refusals are unchanged.
  • Scripted SQL drift checks: adjacent Python string literals are combined before EXPLAIN, including mixed single/triple quotes and intervening comments. Dynamic expressions are skipped instead of validating a misleading prefix. Regression coverage exercises multiline SELECT/INSERT against a test SQLite database.
  • Schedule attribution (PLAT-242 mechanism): both execution-evidence detection and failed-run reconciliation now prioritize StartedAt, then CreatedAt, over folder-name changes. Rotating an old failed run cannot override a current successful run or count as a new execution. Timestamp-less legacy metadata still uses the existing name-only fallback; this is not a general solution for concurrent-run identity.

These are source fixes, not repairs to historical schedule records. No live workflow was run and no server was restarted. During the initial fix pass no database issue was closed; the subsequent user-authorized internal closures are recorded below.

Internal closures — 2026-09-05

Resolved and read-back verified nine exact SQLite run_concerns records:

  • server A: PUL-4FE07CD2 (script exit; PLAT-216 follow-up), PUL-BA1C940F (rotation attribution; PLAT-242).
  • Social-media: PUL-6403A889 (rotation attribution; PLAT-242).
  • Sales Outreach: PUL-68B9A284, PUL-EEFF4258, PUL-7E6F78B1, PUL-F645A646, PUL-3DFE2419, PUL-F1A8B489 (SQL extraction; PLAT-258).

Each closure stores resolved_at, resolved_by=platform_maintenance, and a specific resolution note. A platform_tracking_resolved event retains the entire previous record for audit/recovery. No observation, finding details, or workflow business data was deleted. The fixes remain local/uncommitted; deployment verification is pending, explicitly recorded in every closure. The inventory below is the original pre-closure snapshot, not the current live status.

Complete nonterminal candidate inventory

The following preserves every candidate's current SQLite wording, which can itself be stale or incorrect.

build-in-public (16)

  • PUL-C85DFE02 — untyped; external_action_required; last observed 2026-08-04. eval-publish-integrity CHECK 1 is anchored to soul.md's no-invented-content criterion but only asserts a published_log row exists and package_path resolves (main.py:285-320), never comparing published copy to package source, so invented content scores 1/1; tightening it changes score meaning and needs the operator's decision.
  • PUL-946C9D53 — workflow_issue; external_action_required; last observed 2026-08-11. Externally owned finding re-verified, not re-filed. This run's step prompts DO list workflow_db: [mutate_workflow_db, query_workflow_db] in available_tools, which looked like a change - but the sessions show zero direct tool invocations of either name.
  • PUL-E2BACEEB — harness_issue; external_action_required; last observed 2026-08-12. The cost-summary reader does not isolate the requested current execution when the canonical iteration/group folder is reused across scheduled runs.
  • PUL-02BBF615 — workflow_issue; external_action_required; last observed 2026-08-11. Re-check of an externally owned finding. Original claim: all update_step_config (25/25) and write_workflow_manifest (10/10) changelog entries carried no changes array and before_ref == after_ref == sha256('[]'), making plan changes unauditable.
  • PUL-53316F02 — workflow_issue; external_action_required; last observed 2026-08-30. The retired eval-publish-integrity contract remains in live step/report prose and orphaned saved evaluator files after evaluation_plan moved to two Reddit-specific evaluators.
  • PUL-CB2BF4B1 — untyped; external_action_required; last observed 2026-08-04. planning/workflow_layout.json has updatedAt: 2026-06-07T05:30:11.885Z and nodePositions for only 11 of the 23 steps in planning/plan.json, missing all 12 steps added since including step-publish-approved and step-workflow-end.
  • PUL-0B679A3D — harness_issue; external_action_required; last observed 2026-08-05. The Pulse backend generated an empty trusted verification allowlist ([]) for review run 2026-08-05T02-12-47.459Z_schedule-cron--c2e7578f_1785895230524138000 module strategy_auditor, while the same backend's get_pulse_state(view=backlog) returned finding PUL-7D6D85D5 with fix attempt fix-8eadd0f9c81d7a00 in status awaiting_verification and disposition changed_unverified, so an arrived-evidence verification could not be emitted as a PULSE_VERIFICATION_JSON marker and the attempt will be re-presented as unverified next run.
  • PUL-B3AC1AE3 — workflow_issue; external_action_required; last observed 2026-08-11. Re-check of an externally owned finding. The original claim was that CLAUDE.md was deleted from the working tree as an unstaged deletion, one broad git add -A from erasing the numbered operating constraints (including constraint 4 on off-box backups). Current state: the file exists and is tracked with local modifications.
  • PUL-B5C2BFA8 — untyped; external_action_required; last observed 2026-08-05. the write_workflow_manifest changelog entry at 2026-08-04T23:27:32Z records target: planning/plan.json for a change that was made to workflow.json (the 1.0.19 version bump), so the one provenance record deliberately created for artifact-drift review points at the wrong file.
  • PUL-3A51BAD6 — workflow_issue; external_action_required; last observed 2026-08-31. The route-correctness repair is complete, while the separate product-positioning score expansion has no authorization because its linked decision was dismissed.
  • PUL-28FC41E1 — harness_issue; external_action_required; last observed 2026-08-11. Issues created by record_run_concern carry no owning module (module=null, phase=execution/message-sequence/prevalidation). Calling record_pulse_finding with such a visible PUL id and a valid module fails every time with 'recorded Pulse finding could not be reloaded by its internal lifecycle identity'. Issues that carry an owning module accept the identical payload shape. The workflow supplied a valid request: the issue ids come verbatim from get_pulse_state(view='backlog'), and the same call succeeded on PUL-8345B30B, PUL-3A51BAD6, PUL-ABA4E91F, PUL-B3AC1AE3 and PUL-02BBF615 in the same session.
  • PUL-86C0991B — harness_issue; external_action_required; last observed 2026-08-12. The framework did not run auto-evaluation after a successful workflow execution, leaving the only evaluation report stale across a changed route contract.
  • PUL-115F32AF — harness_issue; external_action_required; last observed 2026-09-03. Pulse deterministic intake elevates recovered message-sequence child-tool errors without reconciling the exact execution terminal artifacts and durable side effects.
  • PUL-69B66D52 — harness_issue; external_action_required; last observed 2026-08-25. Message-sequence Folder Guard access projection contradicts the declared database contract: step-reddit-scan-draft must read db/README.md, while the enforced read allowlist exposes only db/assets.
  • PUL-B898D60C — harness_issue; external_action_required; last observed 2026-08-31. The shared scheduler terminal projection labels a response-bearing completed LinkedIn workflow as produced-no-response/orchestrator_agent_error, the same root previously proven on Reddit.
  • PUL-FF23BCD5 — harness_issue; external_action_required; last observed 2026-09-01. execute_step(fast_path_only=true) rejects a regular plan step whose effective config declares scripted mode and whose saved main.py exists, so the schedule's deterministic preflight contract cannot execute through the published fast path.

hetznerssh (4)

  • PUL-05A81CA0 — harness_issue; external_action_required; last observed 2026-08-10. route_selections passed to run_full_workflow no longer reach the routing step: the preseed file execution/run-remediation-route/route_selection.json is not written, so run-remediation-route silently falls back to default_route_id.
  • PUL-7AC95E26 — harness_issue; external_action_required; last observed 2026-08-20. Re-checked this pass: pulse_review_log currently has zero rows in status='running' (7 completed, 4 failed, 0 running). The three restart-interrupted attempts Gate referenced (2 on 2026-08-09, 1 on 2026-08-10) all show status='failed' with verdict='Pulse interrupted because the server restarted' rather than being stuck at 'running' in the retained snapshot -- meaning whatever detects the restart does eventually mark the row terminal (failed) rather than leaving it silently 'running' forever. I could not directly observe a live interruption window (this is a read-only, point-in-time query), so I cannot confirm or rule out a narrow race between a module's terminal pulse_module_audit receipt and its corresponding pulse_review_log row update during an actual interruption.
  • PUL-24A93F72 — harness_issue; external_action_required; last observed 2026-08-20. The primary recurring audit schedule (b2234610-e3a2-49dd-b406-855e4ee878a8, cron '0 9 * * 1' UTC, enabled=true, group production-server) silently skipped its 2026-08-17T09:00:00Z occurrence. schedule-runs.json shows no schedule-cron entry for b2234610 between the 2026-08-10T09:00:53Z cron run and now (2026-08-20); the only two 2026-08-18 executions of this schedule were schedule-manual (operator-triggered), and list_schedules reports the scheduler's own computed Next Run as 2026-08-24T09:00:00Z UTC -- jumping directly past 08-17 without ever firing it, even though the schedule config (cron expression, timezone, enabled flag) is valid and was not changed around that date.
  • PUL-76329350 — harness_issue; external_action_required; last observed 2026-08-20. The Fixer background agent (child session workshop-background-task-1787216416145666000) completed its full repair pass -- fixed and verified PUL-D712F0C6, dispositioned PUL-24A93F72 and PUL-CBC66FD8, wrote its checkpoint -- and its own final message confirmed record_pulse_result(module=workflow_review, result=changed) was called exactly once and durably persisted (re-confirmed via a follow-up get_pulse_state read inside that same turn). The parent auto-notification nonetheless reported status=failed with error 'background Pulse review is incomplete: required workflow_review receipt for child session workshop-background-task-1787216416145666000 was not recorded: sql: no rows in result set'. A direct get_pulse_state(view=module) read immediately after the notification confirms workflow_review.last_result=changed, updated_at matching the Fixer completion time, and the correct last_result_reason text -- so the receipt exists under the workflow, but the required_pulse_review_modules completion gate looked it up by a session/id association that did not match and returned zero rows.

instagram (11)

  • PUL-8E45EDCB — harness_issue; open; last observed 2026-08-22. This finding was scoped to route-build-carousel with next_check gated on a carousel-format run. Today's run reproduced the identical defect in a different step on the reel pipeline: route-fix-illustrations' read_image call (PUL-1A9373A3) 'consistently rejected a valid full-absolute workspace-docs path with "must be a full absolute path... got relative path" (stripping the docs-root prefix internally before re-validating)'. This is independent of route-build-carousel and the carousel format, so the original next_check ('first producing run whose format_decision.final_post_format=carousel') is no longer the only or best reproduction path -- the defect is general to read_image path validation, reproducible on any route/format.
  • PUL-F2F10427 — untyped; external_action_required; last observed 2026-08-23. prevalidation gate failed for the step output contract (6 failed checks): video_plan.json $.delivery.attach_files: array length 2 is less than minimum 3 (Validation checked runs/iteration-0/test-run/execution/route-design-plan/video_plan.json. No alternate copy was found at runs/iteration-0/test-run/video_plan.json.) | video_plan.json $.design_research_mode: String 'design_only' does not match pattern 'research_plus_design' (Validation checked runs/iteration-0/test-run/execution/route-design-plan/video_plan.json. No alternate copy was found at runs/iteration-0/test-run/video_plan.json.) | video_plan.json $.structure.cards[2].information_payload.visible_text_word_count: Value 0.000000 is less than minimum 12.000000 (Validation checked runs/iteration-0/test-run/execution/route-design-plan/video_plan.json. No alternate copy was found at runs/iteration-0/test-run/video_plan.json.) | video_plan.json $.structure.cards[2].information_payload.info_units: array length 1 is less than minimum 2 (Validation checked runs/iteration-0/test-run/execution/route-design-plan/video_plan.json. No alternate copy was found at runs/iteration-0/test-run/video_plan.json.) | video_plan.json $.engagement.voice_personality: String 'excited-tool-scout' does not match pattern '^(authoritative-insider|mind-blown-reporter|snarky-educator|urgent-tipster)$' (Validation checked runs/iteration-0/test-run/execution/route-design-plan/video_plan.json. No alternate copy was found at runs/iteration-0/test-run/video_plan.json.) | video_plan.json $.engagement.target_reaction: String 'Screenshot the pricing/styles card and open subtitlegenerator.app on their next video before finishing the reel.' does not match pattern '^(save-to-try|send-to-friend)$' (Validation checked runs/iteration-0/test-run/execution/route-design-plan/video_plan.json. No alternate copy was found at runs/iteration-0/test-run/video_plan.json.)
  • PUL-D05602C6 — untyped; external_action_required; last observed 2026-08-11. execute-and-verify: The speech_to_text (Deepgram) call failed server-side ("tool execution failure envelope") when attempting to get precise word-level timestamps for subs.ass, so sentence-level subtitle timings in subs.ass/audio.json are proportional estimates from word counts rather than measured transcription timing — acceptable for a sidecar file but flagged for the next step/operator.
  • PUL-61347449 — harness_issue; external_action_required; last observed 2026-08-11. The sub-agent session prompt lists workspace_advanced, workspace_browser and workflow_db with their full tool rosters, but at call time the servers have no registered tools and the call fails with 'tools_unavailable ... MCP server(s) [workspace_advanced workspace_browser] are configured but currently have zero registered tools (failed to start or connect)'. Four backlog issues are separate symptoms of this one defect: PUL-61347449 (generate_music unreachable in route-build-video), PUL-46E5BB12 and PUL-B9CA19CB (workflow_db unreachable, harness halves only), and today's new read_image unavailability inside route-generate-illustrations. Distinguish it from PUL-8E45EDCB, which is a different defect: there read_image WAS registered and rejected valid absolute paths as relative. For DB access a workflow-level workaround exists and works ($MCP_CUSTOM HTTP route; used by every route this run). For binary-output tools there is no equivalent, which is why the orchestrator had to generate the music bed itself.
  • PUL-C93522E5 — harness_issue; external_action_required; last observed 2026-08-11. As filed, this issue claimed step-create-reel's validation_schema checks content_package.json in the wrong folder and that 'nothing in the plan copies or symlinks it up'. Both claims are disproven by the artifacts. planning/plan.json step-create-reel description (HARDENING 2026-05-20, item 5) explicitly instructs: 'After a successful delivery ... copy route-compile-package/content_package.json verbatim to $STEP_OUTPUT_DIR/content_package.json. Never synthesize a fallback package.' Item 4 further requires the promoted copy to be checked against durable terminal state (ready_to_post==true, finalized conformance passed, delivery_result.success==true, and a non-null posts.email_message_id) BEFORE promotion. The orchestrator followed this: route-compile-package wrote its copy at 14:14, delivery completed 14:16, and the identical 22786-byte file appeared under execution/step-create-reel/ at 14:18, after which the final-gate validation passed 60/60. The wasted attempts come from the platform's automatic_final_validation prevalidation phase evaluating $STEP_OUTPUT_DIR before the orchestrator has reached that deliberately-last action. Same root cause as retained bug_review F11 (recurring since 2026-07-24).
  • PUL-6F3298AF — workflow_issue; external_action_required; last observed 2026-08-11. .backup-destination declares backend=huggingface, repo=manishiitg/instagram-workflow-assets, and every recurring-schedule backup message assumes 'the hf CLI is already authenticated on this box (hf auth whoami -> manishiitg); no token needed.' Running hf auth whoami on 2026-08-11 during this scheduled run returned 'Invalid user token. The token stored is invalid. Please run hf auth login to update it.' / '{"error":"Invalid username or password."}'. No Hugging Face token exists in any of the workflow/user/global secret stores (list_secrets shows no HF_TOKEN-like name), so there is no credential this session can use to re-authenticate or route the upload through a different path.
  • PUL-5AECA915 — workflow_issue; external_action_required; last observed 2026-08-11. The file records completed_at 2026-06-30T13:27:27Z, started_at 2026-06-30T11:39:09Z and duration_ms 6497556, while the same run folder has been reused by producing runs on 2026-07-15, 07-23, 07-24, 07-25, 08-03 and 08-11. No step in planning/plan.json writes runs///run_metadata.json, so nothing updates it. It is not merely stale: it is unowned.
  • PUL-51D2EC0F — harness_issue; external_action_required; last observed 2026-08-11. The tool's documented surface has no db_access parameter and no way to preserve or set it. Updating one unrelated field (lock_learnings_reason) on step-read-analytics removed "db_access": "read-write" from step-read-analytics, step-growth-todo AND route-build-host-reel in the same write. A follow-up call passing db_access explicitly returned success:true and changed nothing -- the argument is accepted and discarded, so the failure is silent in both directions. diff_patch_workspace_file cannot repair it either: planning/step_config.json is refused as a system-managed planning file. There is currently no tool path that can restore the field.
  • PUL-D43CE01D — workflow_issue; external_action_required; last observed 2026-08-11. Cross-references PUL-6F3298AF (Engineering, this pass) rather than duplicating it; that issue records the invalid token, this one records why the existing answer cannot close it. Decision llm-ops-hf-token-2026-07-17 was answered provide_token at 2026-07-17T08:43:19Z with the owner pasting their own working 'hf auth whoami' output (user: manishiitg). consumed_at is still NULL 25 days later and loop_closure flags it answer_not_applied. The reason it was never applied is structural, not neglect: the owner satisfied the request by logging in interactively, but the on-box token file /Users/mipl/.cache/huggingface/token is dated 2026-05-28 and has never been rewritten, and no HF_TOKEN exists in any secret scope. An interactive CLI login is machine-local, expires, and is invisible to a scheduled run; it can never be the durable credential the backup destination needs. So re-asking 'please provide a token' would produce the same outcome a third time.
  • PUL-7935F620 — harness_issue; external_action_required; last observed 2026-08-11. pulse_final_command_state for pulse_run_id=schedule-manual--bae435e5_1786432476119732000 shows backup/publish/notify all status=failed, started_at==finished_at==2026-08-11T09:48:06Z, reason='Finalizer ended without recording this command's outcome' -- a watchdog-authored row, not a real Finalizer attempt. This Finalizer turn is the first and only turn to call record_pulse_result(command=...) for this pulse run; the watchdog fired before it started, at a ~76s gap from the prior stage's own completion timestamp, which is implausibly short for a normal inter-turn scheduling delay and suggests either the watchdog timeout is too aggressive or it is not correctly anchored to 'Finalizer turn started' vs 'prior stage completed'.
  • PUL-3DC592D9 — harness_issue; open; last observed 2026-08-22. Shared CDP browser tab cap (max 4 labeled tabs) is shared across unrelated concurrent workflows, so route-pick-topic can be blocked from ever creating a discovery tab when other workflows already hold the 4 slots.

linkedin (7)

  • PUL-7607952E — untyped; external_action_required; last observed 2026-08-02. builder/improve.html has lost the Artifact Sync Cursor that the 2026-07-28 fixer reconciled, so review coverage has no current canonical boundary
  • PUL-3BD9F422 — workflow_issue; external_action_required; last observed 2026-08-11. The approval, publisher/report, and image evaluator lack one immutable image-batch identity bound to the exact approved draft version and hash.
  • PUL-3565D07C — harness_issue; external_action_required; last observed 2026-08-06. list_schedules reports the completed 2026-08-06 Engage run as still running and leaves next_run in the past, while get_schedule_runs and run_metadata both record success.
  • PUL-0394F0B4 — workflow_issue; external_action_required; last observed 2026-08-11. Soul success criteria still name retired JSON mirrors instead of the canonical SQLite tables that preserve the same goal semantics.
  • PUL-E45BE152 — workflow_issue; external_action_required; last observed 2026-08-11. eval-strategy-loop is route-gated to post and measure runs that cannot produce its required post-contract Strategy Proposal measurement_gate.
  • PUL-82F50DFF — workflow_issue; external_action_required; last observed 2026-08-11. LinkedIn reports zero personalized invitations remaining, so personalized connection actions must remain disabled.
  • PUL-517B83AD — harness_issue; external_action_required; last observed 2026-08-27. Pulse lifecycle identity and pending-attempt resolution still reject a matured passed verification for an active public issue.

latency-report (11)

  • PUL-DB76BB3A — untyped; external_action_required; last observed 2026-08-03. builder/improve.html data-artifact-cursor reads changelog-2026-07-28-08-42-31.json#4 while artifact_review.done markers extend 9 entries further (through changelog-2026-07-31-09-28-16.json#0), and changelog-2026-07-29-03-49-24.json#0-2 remain unreviewed behind them, so a single high-water cursor cannot represent the actual reviewed set and blocks any safe advance.
  • PUL-D0BAC922 — harness_issue; external_action_required; last observed 2026-08-12. ONE root cause, not six bugs: the platform's post-completion narration turns are not grounded in the step's produced artifacts. In every instance the step's actual output was CORRECT -- the JSON, the DB rows and the delivery ledger were all right. Only the narration describing that output was wrong, and it was wrong in the specific direction of inventing plausible round numbers and states rather than reading the file. This spans three distinct turn types (scripted-step reflection, message_sequence automatic_final_validation repair, learnings-contribution), which is why it cannot be attributed to any single step's prompt. Verified instances: (1) step-ingest-notion-feedback repair-1 claimed 16 tickets/1 new comment; notion_feedback.json says tickets_scanned=30, new_comments=4. (2) step-daily-latency-collect-prod-voice reflection claimed 32 turns/4 sessions/100% English; prod_voice_metrics.json says total_turns=67, total_sessions=1, by_language hebrew=67, english=0. (3) step-daily-latency-collect-dev-voice reflection claimed 64 turns/4 sessions/full coverage; dev_voice_metrics.json says total_turns=0, total_sessions=0, low_traffic=true -- a genuine zero-traffic day narrated as a busy one. (4) step-daily-digest-email's final repair-1 notification claimed digest_delivery.json shows status=dry_run and no delivery was attempted, consistent with DIGEST_DELIVERY_MODE=dry-run; variables.json sets DIGEST_DELIVERY_MODE=live and digest_delivery.json shows delivered=true/status=delivered/sent_at=2026-08-12T06:39:30Z. This one is a full fabrication of both the variable and the artifact. (5) step-daily-security-sweep's learnings-contribution turn claimed to have ADDED two false-positive classes (regex.exec, CloudFormation SecurityGroupEgress); both are dated 'Verified 2026-08-11' in learnings/_global/references/security-sweep.md and pre-date the run -- notably the turn DID add two genuinely new 2026-08-12-dated entries, so the work was real and only the attribution was invented. (6) step-daily-security-sweep filed a record_run_concern asserting a knowledgebase READ-access prompt/guard contradiction, quoting prompt text that does not exist (rejected this pass as PUL-79A4C2F8 with the rendered-prompt evidence).
  • PUL-D31B2A4C — workflow_issue; external_action_required; last observed 2026-08-12. db/README.md flagged this as a pending schema decision and predicted that 'every graded run of the same run folder OVERWRITES the same rows and score history cannot exist'. That prediction has now materialised and is confirmed by data: the table still holds exactly 9 rows, all run_folder='iteration-0/dev', but they are now dated 2026-08-12 -- the 2026-07-30 scores the README described, including their multi-paragraph reasoning and evidence text, are gone and unrecoverable. Because the workflow grades the same run_folder every day, the table can only ever hold one generation of scores. This is a schema defect, not a writer defect: no change to run_full_evaluation or any step can preserve history while the key lacks a run/date dimension, and eval_results is a backend-owned table that no workflow step may write.
  • PUL-25BDBC42 — harness_issue; external_action_required; last observed 2026-08-13. query_workflow_db returns inconsistent response shapes across calls in the same run - sometimes the parsed {columns,rows} object directly, sometimes a double-encoded {success:true, result:""} wrapper - for the same action=query call shape
  • PUL-54D7A9FC — harness_issue; external_action_required; last observed 2026-08-18. gh CLI host keyring loses/omits the mpexample account between runs, silently reducing GitHub org visibility to ~1 public repo
  • PUL-5D98671B — harness_issue; external_action_required; last observed 2026-08-25. update_tier_fallbacks silently no-ops under the workflow's current provider_profile llm_config shape. The real per-role fallback mechanism is set_workflow_llm_config(mode=explicit, ...), which a prior Pulse session found returned ACCESS DENIED.
  • PUL-4AD362CD — harness_issue; external_action_required; last observed 2026-08-21. A second, tool-outage-degraded execution pass of step-daily-latency-report persisted output by prepending it to existing good files instead of replacing them.
  • PUL-15E18187 — harness_issue; external_action_required; last observed 2026-08-27. step-daily-sprint-progress previously crashed writing sprint_progress.json to STEP_OUTPUT_DIR with FileNotFoundError even though the folder is documented as pre-existing
  • PUL-79901CCE — workflow_issue; external_action_required; last observed 2026-08-31. The workflow's entire per-run evaluation instrument is currently empty: evaluation/evaluation_plan.json declares 0 eval steps. This surfaced while checking step-daily-ops-router's route_eval_pairing (the routing step split into 4 routes on 2026-08-30, and the eval plan should route-gate against those routes via applies_to_routes) -- there is nothing to pair against because there are no eval steps declared at all.
  • PUL-BA1C940F — harness_issue; external_action_required; last observed 2026-09-01. The scheduler marked the current AWS cost fire terminal error because iteration-13/dev failed even though the scheduled session cost route is retained in iteration-14/dev and completed successfully.
  • PUL-4FE07CD2 — harness_issue; external_action_required; last observed 2026-09-01. The shared scripted fast-path marks a nonzero saved-script exit as success and lets the outer run complete.

salesoutreach (18)

  • PUL-C2CF5E0B — harness_issue; external_action_required; last observed 2026-08-24. The automatic_final_validation gate for step-check-email-infrastructure has a db validation rule with an empty/missing sql query, so the gate fails unconditionally regardless of the actual state of the tables the step writes to.
  • PUL-4719B06D — harness_issue; external_action_required; last observed 2026-09-02. Recurrence confirmed 2026-09-02: recorded plan_drift_review result=failed at 04:13:51Z for pulse_run_id=schedule-cron--2d8c4f44_1788321613965006000 based on a genuine but premature read (no checkpoint/receipt existed yet). The dispatched executor then completed and persisted real work seconds later (checkpoint written 04:18Z, changelog entry 04:16:20Z, PUL-A82411D3 fixed_verified). A follow-up record_pulse_result call with the corrected result=changed returned status=updated but get_pulse_state still shows the original failed/04:13:51Z record verbatim -- the correction silently did not persist.
  • PUL-E3F22BCC — harness_issue; external_action_required; last observed 2026-08-26. Pulse child-session receipt attribution is inconsistent between two platform mechanisms. record_pulse_result attributes the receipt to the pulse_run_id the child supplies, while run_in_background's required_pulse_review_modules gate looks for a receipt bound to the exact child SESSION id. When a reviewer follows the established workaround for PUL-E3F22BCC and passes the explicit parent pulse_run_id, the receipt is written under the parent run, the session-scoped lookup finds nothing, and the background task is reported to the parent as status=failed even though the review completed and persisted correctly. The two defects in this family are therefore mutually exclusive as currently documented: avoiding one triggers the other.
  • PUL-6C7B04E9 — harness_issue; external_action_required; last observed 2026-08-29. agent_browser open called before selecting/creating a CDP tab ("CDP shared-browser mode requires selecting or creating a tab before open") recurred once in step-research-and-draft-outreach iteration-1 on the 2026-08-28 run; the agent recovered within the same iteration.
  • PUL-985F2597 — harness_issue; external_action_required; last observed 2026-08-26. A platform contract-upgrade broadcast is able to occupy a scheduled cron-triggered workshop sessions turn slot ahead of that schedules own configured message, causing the schedules real work to never execute and the run to time out and error instead.
  • PUL-C1B267AB — harness_issue; external_action_required; last observed 2026-09-04. Run folders are overwritten in place rather than rotated per completed run. Previously this caused stale old-failure metadata to resurface in deterministic scans (dubai-real-estate). Here the flip side occurred: a genuinely new failed run (manual verification run, started 2026-09-03T16:33:15Z, failed 16:51:22Z, ~18min, not a cron schedule) reached steps 1-4 successfully then failed at/after step-prepare-linkedin-engagement, but ALL evidence for that step (execution/ and logs/.../execution/ artifacts) was overwritten in place ~11.5h later by todays successful schedule 2d8c4f44 run (087289e4, 2026-09-04T04:00:26-04:23:52Z, status=success, covers usa-professional-services), before Technical Review could inspect why the original run failed.
  • PUL-5D2B9495 — harness_issue; external_action_required; last observed 2026-08-27. run_metadata.json for the dubai-real-estate run records status=failed, completed_at=2026-08-27T10:44:12.394792625Z -- a clean, well-formed terminal step status. Yet schedule-runs.json's own record for this same run (schedule 633c499d, run id f0b1d86c-6207-4398-bd9f-64b15b3992ec) shows started_at=10:30:24.485085Z but completed_at=11:43:12.639343Z, status=interrupted, error='interrupted: server restarted', duration_ms=4368154 (~72.8min total). Filesystem search of every file under runs/iteration-0/dubai-real-estate confirms zero files were modified between 10:44Z and 11:50Z -- no retry, no repair turn, no additional work occurred in that ~59-minute gap; the schedule session was genuinely idle, not doing unlogged recovery work. The schedule only closed out because a server restart forced it, and it recorded 'interrupted: server restarted' as the reason rather than reflecting the step's own real, already-recorded failure. This is RELATED to but DISTINCT from the already-retained platform finding PUL-985F2597 (schedule 2d8c4f44's 'workshop idle wait timed out' after a wrong contract-migration turn was injected ahead of the real LinkedIn turn, target_key=platform:pulse/workshop_schedule_turn_injection): that incident is a turn-INJECTION bug (the wrong turn ran instead of the real one, then idle-waited and self-errored after ~160min). Here, the real turn DID run and DID record its own clean failure, but the wrapping schedule session still failed to promptly detect/reflect that completion for ~59 more minutes, and was ultimately closed by an external event (server restart) rather than by its own completion detection. Same broad platform symptom family (schedule/workshop session lifecycle lagging behind the real turn's true completion state) but a different specific mechanism -- filed as a related, separate observation rather than merged into PUL-985F2597.
  • PUL-AAC278EF — harness_issue; external_action_required; last observed 2026-09-01. Deterministic-intake runtime_status_disagreement signals (completed runs with nonzero tools.errored_count) recur across multiple steps/runs; each instance needs to be checked for real data-integrity impact rather than assumed benign.
  • PUL-B7F247D3 — harness_issue; external_action_required; last observed 2026-08-28. LinkedIn profile UI has duplicate visible-text ("Connect") controls in the same viewport -- the target person's own Connect option (inside their top-card More menu) and unrelated sidebar "Invite X to connect" suggestions -- so a text-based DOM query for a button/link with exact innerText "Connect" is ambiguous and can click the wrong person's control.
  • PUL-2F70A97F — harness_issue; open; last observed 2026-08-31. Retry of the identical record_pulse_finding call whose first attempt (this same pass) returned a success envelope (issue_id PUL-7AC60412, status open) but persisted no row in pulse_finding_details, pulse_finding_events, or run_concerns for that issue_id -- confirmed by direct query immediately after. Retrying to determine whether this was a one-off transient or a reliable non-persistence pattern for issue_kind=harness_issue plus a populated reproduction object.
  • PUL-68B9A284 — harness_issue; external_action_required; last observed 2026-08-31. The precomputed scripted_code_db_queries check flags 2 of 4 queries as referencing nonexistent tables/columns ("INSERT INTO provider_credit_usage" -> incomplete input; "INSERT INTO lead_candidates (" -> incomplete input). Both are adjacent Python string-literal concatenations spanning several lines; the checker appears to only feed the first literal segment (ending mid-statement, e.g. right after the table name) to its SQL parser rather than the full assembled statement, so it always sees an incomplete fragment.
  • PUL-EEFF4258 — harness_issue; external_action_required; last observed 2026-09-01. The precomputed scripted_code_db_queries check flags 1 of 4 queries ("INSERT INTO outreach_activity" -> incomplete input). Independently re-verified this pass (2026-09-01) against the current main.py after the same-day description-sync edit (change-d9815da69c8fd0e3eed2, description-only, main.py untouched): the checker feeds only the first Python string-literal fragment (ending right after the table name) to its SQL parser rather than the full assembled statement.
  • PUL-7E6F78B1 — harness_issue; external_action_required; last observed 2026-08-31. The precomputed scripted_code_db_queries check flags 4 of 5 queries. Two are multi-line Python string-literal concatenations the checker only feeds a first fragment of ("no such column: public_employee_estimate" for a fragment missing its FROM clause; "incomplete input" for two INSERT statements cut off after the column list opens). One ("near %: syntax error") is a query built via Python %-string formatting ("...%s...%s..." % (col, table)) that is only invalid because the checker validates the raw pre-substitution literal instead of the runtime-substituted SQL.
  • PUL-F645A646 — harness_issue; external_action_required; last observed 2026-08-31. The precomputed scripted_code_db_queries check flags 7 of 8 queries as referencing nonexistent tables/columns or incomplete input. All are adjacent Python string-literal concatenations spanning several lines; the checker appears to only feed the first literal segment to its SQL parser rather than the full assembled statement.
  • PUL-3DFE2419 — harness_issue; external_action_required; last observed 2026-08-31. The precomputed scripted_code_db_queries check flags 1 of 2 queries ("SELECT candidate_row_id, candidate_id, company_name, company_domain," -> incomplete input). This is the start of a multi-line Python string-literal concatenation; the checker appears to only feed the first literal segment to its SQL parser rather than the full assembled statement.
  • PUL-F1A8B489 — harness_issue; external_action_required; last observed 2026-09-01. The precomputed scripted_code_db_queries check flags 2 of 7 queries: the candidate SELECT ("SELECT email_lead_id, company_name, company_domain, contact_name, work_email," -> incomplete input) and the INSERT INTO outreach_activity (-> incomplete input). Independently re-verified this pass (2026-09-01) against the CURRENT main.py, which was itself edited today alongside the description sync (change-700ece1a1864714753c5, owner-approved removal of the ready_for_review->approved manual gate): the SELECT's WHERE clause changed from status = 'approved' to status IN (\ready_for_review, \approved) and the flagged pattern still holds -- the checker feeds only the first literal fragment to its SQL parser rather than the full assembled statement.
  • PUL-D81BEA7D — harness_issue; external_action_required; last observed 2026-08-31. Recurring LinkedIn UI unreliability: the plain-connect click via profile More > Connect menuitem produces no observable success signal (no dialog, no confirmation), so the agent correctly withholds the outreach_activity write per the never-fabricate-unconfirmed-action rule, but this means real connection_request throughput is silently near-zero across runs even though the step logic is correct.
  • PUL-09511B0E — harness_issue; external_action_required; last observed 2026-09-02. The deterministic-intake boundary declared plan_drift_review failed at 2026-09-02T04:13:51Z with reason 'executor bg-plan-drift-review-30000 never reached its final persistence turn -- no checkpoint file exists', citing list_executions status=running as supposedly inconsistent evidence. But status=running at check time does not mean the child died -- it means the check ran before the child's natural completion. This technical_review pass re-checked list_executions minutes later: bg-plan-drift-review-30000 now shows status=done, and runs/pulse/schedule-cron--2d8c4f44_1788321613965006000/plan-drift-review.md now exists (written 2026-09-02T04:18Z) recording a clean successful review (11 checks: 10 pass, 1 fixed, 0 fail; one real validation_schema drift bug found and fixed; record_pulse_result called with a real terminal result). The module's own stored record was never updated after the child's real completion and still reads last_result=failed as of this pass.

sheet-analysis (3)

  • 459068703dfe06ff — harness_issue; open; last observed 2026-08-21. consolidate-prepare step has no Google Sheets access tool (no google_sheets MCP server, no browser tool) registered for its session
  • a9ee4ac3f2cfdc24 — harness_issue; open; last observed 2026-08-21. consolidate-prepare step has no Google Sheets MCP tool registered in its session, so it cannot perform any of the required live Sheets reads/writes
  • 756634f20647a1df — harness_issue; open; last observed 2026-08-21. verification step tool set lacks any accessor for public.historical_payroll_snapshots / public.payslips required by the Salary and financial summary section

social-media (17)

  • PUL-0A1AFAF8 — harness_issue; external_action_required; last observed 2026-08-20. Pre-2026-07-28 ledgers remain incomparable with current cache-priced ledgers because historical pricing basis is absent.
  • PUL-CA014CAD — workflow_issue; external_action_required; last observed 2026-08-29. Two rows had deterministic action IDs and posted_at dates and were repaired atomically; 121 historical rows still lack action IDs and 136 lack dates, so mappings cannot be guessed from workflow state.
  • PUL-AE5325BD — harness_issue; external_action_required; last observed 2026-08-19. The managed DB validator rejects the exact profile-conversion validation SQL using json_each and local-date evaluation even after the required signal is persisted.
  • PUL-8E22A469 — harness_issue; external_action_required; last observed 2026-08-20. Cost attribution remains keyed by mutable run-folder identity rather than an immutable execution identity, even when archived folder summaries differ correctly.
  • PUL-6403A889 — harness_issue; external_action_required; last observed 2026-09-04. The scheduler completion observer attributed the current measure schedule result to a failed retained iteration instead of the active completed iteration.
  • PUL-C4811EA4 — harness_issue; external_action_required; last observed 2026-08-20. Reflection usage remains unattributed to immutable executions, so its cost and contribution yield cannot be judged.
  • PUL-B20CB8E1 — harness_issue; external_action_required; last observed 2026-08-21. The durable-ledger half of the required landed-content union could not be independently checked; the report relied on verified current-run items.
  • PUL-007D74F8 — harness_issue; external_action_required; last observed 2026-08-22. X reciprocal-follow badge state can be inconsistent across the unfollow flow and permit a temporary unfollow before the relationship is restored
  • PUL-8429C778 — harness_issue; external_action_required; last observed 2026-08-25. Runtime path guard denies workflow-context reads during target-reply execution despite the step declaring those context roots readable
  • PUL-C9BBCF01 — harness_issue; external_action_required; last observed 2026-08-25. The execute-verify step requires one registered validation run, but no registered validator tool is exposed in the session.
  • PUL-8526B265 — harness_issue; external_action_required; last observed 2026-08-25. X following-list scrolling can plateau at only the first 10 oldest-available rows despite continued scrolling
  • PUL-09B52349 — harness_issue; external_action_required; last observed 2026-09-02. A current measure producer exists and the evaluator is correctly route-scoped, but no natural evaluation execution has consumed it.
  • PUL-95D26C40 — harness_issue; external_action_required; last observed 2026-08-26. Declared mandatory reads for soul, knowledgebase context, and db README cannot be completed under the active folder guard
  • PUL-F65412F5 — harness_issue; external_action_required; last observed 2026-08-26. The initial bounded current-cycle action_queue reconciliation query returned no rows even though the authoritative date-bound queue row was readable for refresh
  • PUL-E923640D — harness_issue; external_action_required; last observed 2026-08-27. Direct reads of allowed workflow soul, knowledgebase, and learnings paths can be denied by runtime path mapping during an execution step.
  • PUL-D7413E8A — workflow_issue; external_action_required; last observed 2026-09-02. Critic-signal restoration cannot proceed safely without an authoritative pre-empty-write snapshot.
  • PUL-C28E9B78 — harness_issue; external_action_required; last observed 2026-08-31. PUL-75A58FDA was merged into PUL-A6A7E11E, but record_plan_drift_review rejects the canonical issue for step-0-browser-router while record_pulse_finding refuses to reopen the merged exact-step alias.

substack (17)

  • PUL-CE5D7AFA — harness_issue; external_action_required; last observed 2026-09-01. Real, currently-active recurrence of closed/suppressed PUL-CE5D7AFA: step-growth-baseline's enforced session Folder Guard excludes db/growth/ from writable paths, contradicting its own step-description contract ("Also write the same record to db/growth/YYYY-MM-DD-baseline.json. Create db/growth if needed"). The step silently emitted a fabricated persistent_record success literal ("db/growth/2026-09-01-baseline.json") when the real write was denied, and the automatic pre_validation only checks the local execution-folder copy, not the durable db path, so the false-success claim goes undetected by normal validation.
  • PUL-AB711AC1 — harness_issue; external_action_required; last observed 2026-08-24. step-check-reddit is instructed to write the durable dated packet to db/research/YYYY-MM-DD-reddit.json, but this step's folder guard excludes db/research/ from Allowed WRITE, and mutate_workflow_db explicitly rejects the CREATE TABLE needed to establish a new per-date reddit table ('schema changes use workflow migrations').
  • PUL-01F790F3 — harness_issue; external_action_required; last observed 2026-08-24. step-check-hn folder guard denies write access to db/research/ entirely, so the durable HN packet the step contract requires (db/research/YYYY-MM-DD-hackernews.json) can never actually be created by this step, even though the automatic validator only checks literal string values inside hn_findings.json persistent_record and therefore passes anyway
  • PUL-5903292F — harness_issue; external_action_required; last observed 2026-08-24. step-check-x cannot write to db/research/ despite its declared output contract and the final-validation regex requiring a db/research/ path
  • PUL-C00607A6 — harness_issue; external_action_required; last observed 2026-08-24. step-post-standalone-note reflection-turn description requires writing db/growth/YYYY-MM-DD-standalone-note-cadence.json, but the step folder guard never grants write access to db/growth/ for this route
  • PUL-137C5EDF — harness_issue; external_action_required; last observed 2026-08-25. step-check-hn cannot durably write db/research/YYYY-MM-DD-hackernews.json: the folder guard denies shell writes and diff_patch_workspace_file writes under db/research/, and mutate_workflow_db rejects CREATE TABLE for a same-dated mirror table with 'schema changes use workflow migrations', so the step-authored durable packet never lands in the persistent store.
  • PUL-22656D6C — harness_issue; external_action_required; last observed 2026-08-25. step-check-x (X/Twitter research sub-agent) is instructed to write db/research/YYYY-MM-DD-x_twitter.json directly, but its folder-guard write scope never includes db/research/, only its own step folder, Downloads, db/assets, and learnings/_global.
  • PUL-F7B23729 — harness_issue; external_action_required; last observed 2026-08-27. step-check-hn folder guard denies write access to db/research/, blocking the sub-agent from materializing its own durable YYYY-MM-DD-hackernews.json packet
  • PUL-9CE79401 — harness_issue; external_action_required; last observed 2026-08-27. Reddit source-research sub-agent write scope excludes db/research/, so the durable per-date research packet cannot be materialized directly by this step
  • PUL-32C03E39 — harness_issue; external_action_required; last observed 2026-08-27. Source-research sub-agent step folder guards exclude db/research/ from Allowed WRITE, but orchestrator/step instructions and stores.md still direct sub-agents to write durable packets directly to db/research/YYYY-MM-DD-.json
  • PUL-9694792A — harness_issue; external_action_required; last observed 2026-08-27. agent_browser 'tab close ' fails to close a tab that the immediately-preceding 'tab' (no args) listing confirmed as active and owned by this route's own label
  • PUL-B8FC2F51 — harness_issue; external_action_required; last observed 2026-08-27. Source-research sub-agent routes (reddit/x_twitter/hackernews/websearch) folder guard denies direct writes to db/research/, forcing them to write a fallback copy to db/assets/ and set persistent_record success literals before the file exists at its documented db/research/ path.
  • PUL-3237C0D8 — harness_issue; external_action_required; last observed 2026-08-27. Execution-turn prompt for step-connect-creators shows only the output filename, not the step description own detailed Output connect_result.json required-field list, so pre-validation fails on the first pass for fields never surfaced at execution time.
  • PUL-778F87BE — harness_issue; external_action_required; last observed 2026-08-28. agent_browser CDP (port 9222) unreachable, forcing an undocumented RSS fallback
  • PUL-224A1885 — harness_issue; external_action_required; last observed 2026-08-28. step-check-hn's enforced write allowlist excludes db/research, but its own hn_findings.json validation gate requires persistent_record.path to literally match db/research/YYYY-MM-DD-hackernews.json with status 'exists' and verified_after_write 'yes'
  • PUL-3792C10D — harness_issue; external_action_required; last observed 2026-08-31. todo_task orchestrator finalization can (intermittently) report execution status=failed via a post-completion human_feedback timeout even when the orchestrators own work and final-gate validation already passed cleanly.
  • PUL-B0C1585F — harness_issue; external_action_required; last observed 2026-09-01. Runtime ACCESS DENIED: writable folders for this session were only step-write-article, Downloads, db/assets, and /Users/mipl/Downloads -- db/drafts/ was excluded despite the banner claiming db. get_step_prompts(step-publish) shows the identical generic 'Allowed WRITE: ... db' banner text, so this is not a step-description problem; it is a declared-vs-enforced ACL mismatch in the platform harness. Distinct from PUL-32C03E39/PUL-AB711AC1 (db/research/, consistently narrow-by-design, no declared-grant contradiction, fixed by redirecting stale step text to the already-real db/assets/research/ location). db/drafts/ is not stale or dead -- 7 other drafts (some published with real Substack post IDs) already live there and step-publish/step-revise-draft depend on that exact location, so redirecting the canonical path was rejected as disproportionate for this pass.

tectonicusadaytrading (17)

  • PUL-D00AE7BD — workflow_issue; external_action_required; last observed 2026-08-11. This finding states that because .learning_metadata.json is frozen since 2026-07-17, 'the per-step objective-yield signal the learnings contract requires cannot be read at all', and it is dispositioned external_action_required on that basis. The freeze is real, but the conclusion is not: a live yield signal exists in a second, code-owned ledger, so the learnings review is not actually blind and does not need to wait on a platform fix to audit objectives.
  • PUL-7FC528B9 — harness_issue; external_action_required; last observed 2026-08-20. Configured claude-haiku-4-5-20251001 tier trial for daily-signals still shows zero usage; every step across all 4 execution ledgers for 2026-08-20 ran on claude-sonnet-5 only.
  • PUL-7613FB63 — workflow_issue; external_action_required; last observed 2026-08-12. collect-options has failed on HTTP 401 'Your token was invalid' across all Unusual Whales endpoints for seven consecutive days (concern fingerprint 04b6be99876cffb2). No workflow change can address an invalid vendor credential: the collector, its retry handling and its status honesty are all behaving correctly by writing status='failed' rather than inventing data. PUL-04B6BE99 and PUL-7CEE876C were re-filings of this same condition and are merged here.
  • PUL-BBC5D543 — workflow_issue; external_action_required; last observed 2026-08-12. This issue was reopened from external_action_required at 2026-08-12T16:10:40 on the claim that 'Polygon 1-minute bars return HTTP 200 with this key today, but collect_price.py hardcodes a skip', with a bounded instruction to restore the /v2/aggs/ticker/{sym}/range/1/minute/{today}/{today} call that lines 214-219 skip. I probed the live endpoint with the stored SECRET_POLYGON_API_KEY before touching the collector, and the premise is false: minute bars return HTTP 403 status=NOT_AUTHORIZED, 'Your plan doesn't include this data timeframe', and the snapshot endpoint returns 403 'You are not entitled to this data'. Daily aggregates (/range/1/day) do work, which is why line 206 succeeds and explains how a partial probe could look like an entitlement. Implementing the requested change would spend one of a scarce 5-request/minute quota slot per symbol (19 per run) on a call that cannot succeed - precisely what the existing skip comment exists to avoid - and would convert a disclosed NULL into a per-symbol error without recovering any data. NOT IMPLEMENTED, deliberately.
  • 2e197257bbfe0feb — harness_issue; external_action_required; last observed 2026-08-14. execute_shell_command classifies a call as failed based on stderr content (permission/authorization-denial phrases) even when the underlying script completed successfully and its DB write landed, giving no stdout/stderr back to the caller
  • PUL-0322D624 — harness_issue; external_action_required; last observed 2026-08-17. BOUNDARY REACHED AND WORSE THAN RECORDED: the close pass did not merely execute canceled turns, it did not fire at all on 2026-08-17 - the third consecutive weekday no-fire.
  • 64d7cfdca085d63f — untyped; external_action_required; last observed 2026-08-17. execute-and-verify: All 19 symbols returned status: "partial" — Reddit source failed for every ticker (source_error_counts.reddit: 19) and LunarCrush failed for 4 (CRSP, IREN, META, SPCX). This is the script's own reported/expected degraded-source behavior, not a script malfunction, but no symbol achieved a fully "ok" status this run.
  • PUL-BB5E62C0 — harness_issue; external_action_required; last observed 2026-08-17. The second collect_social.py execution was not an execute_shell_command retry: it was a second, concurrent daily-signals orchestrator dispatching collect-social into the same run folder. Reclassifying from harness_issue to workflow_issue and attaching it to PUL-371E722E.
  • 31203224266c9ab9 — harness_issue; external_action_required; last observed 2026-08-18. schedule-runs.json records the 2026-08-18T15:00:26Z run of schedule 9db4dc39 as status='error' with the platform-authored message 'interrupted: server restarted' and duration_ms=null. The identical record exists for 2026-08-12T13:55:56.256Z on the same schedule. During the restart window the bridge daemon at 127.0.0.1:18743 stopped listening, which is what collect-price's curl exit 7 'after 0 ms' actually measured.
  • bc1baca9093a0664 — workflow_issue; external_action_required; last observed 2026-08-18. Owner decision publish-enabled-conflict-2026-07-27 was answered 'turn-on' on 2026-07-27T16:58:28Z. The settings half was applied the same day (workflow.json.publish.enabled=true and publish/status.json state='enabled' now agree). The deploy half cannot be performed by any Pulse finalizer, because the workflow's own rule forbids a first or re-verifying publish to a PUBLIC destination unattended. Every cycle therefore re-parks it with the same reason, and the loop-closure detector keeps reporting it as answer_not_applied - a permanent deadlock, not a queue that is draining.
  • 4cc6eac44236b0fc — harness_issue; acknowledged; last observed 2026-08-20. StockTwits RapidAPI (stocktwits.p.rapidapi.com) intermittently returns HTTP 403 (curl exit 56, non-Cloudflare) for a double-digit fraction of the 19-symbol watchlist within collect_social.py, with a different symbol subset failing each occurrence
  • 74c2f334475de22e — harness_issue; open; last observed 2026-08-21. StockTwits RapidAPI stream endpoint intermittently returns HTTP 403 (curl exit 56, non-Cloudflare) for a large fraction of watchlist symbols per run, independent of the User-Agent/curl fix already in place
  • PUL-57CFE46C — harness_issue; external_action_required; last observed 2026-08-24. record_pulse_verification previously reported success without persisting to pulse_fix_verifications (reproduced 4x on 2026-08-21). Re-tested this pass; the specific silent-failure mode was not reproduced.
  • PUL-3E984942 — harness_issue; external_action_required; last observed 2026-08-26. 9db4dc39 intermittently fails to fire all 3 scheduled slots on a given day, no backfill; owner=platform, external_action_required.
  • PUL-F9BA8AF2 — harness_issue; open; last observed 2026-08-27. Pulse review receipt attribution uses two conflicting id conventions in the same contract: record_pulse_result must be called with the parent pulse_run_id, but the background-child completion gate looks the receipt up by the child session id, so a fully successful review is reported to the operator as a failed run.
  • PUL-B1E9F611 — harness_issue; external_action_required; last observed 2026-08-26. record_pulse_verification requires a pending internal attempt to resolve, but the Pulse review/Fixer contract's split (reviewer marks review done, a later Fixer applies repairs) means many genuinely-fixed issues never get one, permanently blocking their verification path.
  • fbf1be5411b829f3 — harness_issue; external_action_required; last observed 2026-08-27. iteration-130 (2026-08-27, first-of-day fire): daily-signals timing.json shows 19 of 47 tool calls errored, 11 of which are execute_shell_command heredoc-drafting attempts that fail with exit_code=2 specifically when the body text contains an apostrophe, an ampersand (nohup ... AND background operator), or an embedded quoted substring (a literal semicolon-true fragment). The orchestrator converges on a working phrasing only after removing every such character from the composed instructions text, at call 43 of 47.

upwork (36)

  • PUL-A8AB0913 — harness_issue; external_action_required; last observed 2026-08-12. Recording the change so a future Ops pass does not re-derive a claim that is now half wrong. costs/execution/ungrouped/2026-08-12.json is no longer a single date-wide blob - it holds 2 discrete execution records, each with its own execution_id, token_usage.created_at and attribution rows. Per-execution isolation therefore now works. What has NOT changed is the finding's core claim: both records attribute 100% of spend to a single 'workflow_orchestrator:workflow_orchestrator' bucket, so orchestrator, builder and Pulse cost remain indistinguishable. The 17:25:31Z record is this Pulse pass's own $36.12 landing in the orchestrator bucket, which is exactly the conflation described. Suppression stands - the reopen condition (separable buckets) is not met.
  • PUL-E717A5E1 — untyped; external_action_required; last observed 2026-08-03. aggregated call and context telemetry prevents reliable item-level diagnosis of the 95.9% cached-input workload
  • PUL-7B849CC6 — harness_issue; external_action_required; last observed 2026-08-03. run_full_workflow dropped the search-find-and-shortlist human_inputs override, so the Aug 3 search scanned Most Recent despite an explicit two-feed run limit
  • PUL-F4468936 — untyped; external_action_required; last observed 2026-08-04. planning/changelog/changelog-2026-08-04-12-14-04.json records the workflow.json manifest rewrite against target planning/plan.json with before_ref and after_ref both set to the sha256 of an empty list, leaving the change unverifiable
  • PUL-DD9EDE3C — harness_issue; external_action_required; last observed 2026-08-07. agent_browser snapshot results continue to overflow the tool-result size limit post-v1.0.21-purification (toptal-scan-jobs 68,223 chars, search-find-and-shortlist 130,705 chars on 2026-08-07), and the spilled-result fallback read also fails as outside every workspace root. learnings/_global/SKILL.md's 'read a slice' rule covers reference files and shell output but has no snapshot-scoping recipe.
  • PUL-C95A6648 — workflow_issue; external_action_required; last observed 2026-08-29. Publish shim silently returns [] for missed SQL and hardcodes the host workflow root.
  • PUL-42742C7F — harness_issue; external_action_required; last observed 2026-08-24. bid-pick-job skip_reason closed-vocabulary compound boundary clause (b) requires a fresh eval_results row for group_name=daily-bid, step_id=eval-bid inside a daily-bid runs own window. Checked after the 2026-08-24T15:58-16:35Z daily-bid run: the newest eval_results row for group_name=daily-bid, step_id=eval-bid is still generated_at=2026-08-21T21:54:33+05:30, unchanged since before the prior check on 2026-08-17. Clause (b) has now failed to mature across at least 4 subsequent daily-bid runs (2026-08-22, and 2x 2026-08-24), consistent with the already-cross-referenced platform eval-trigger gap (PUL-E67413EC).
  • PUL-F2B4C57F — harness_issue; external_action_required; last observed 2026-08-17. Unchanged root, re-open condition CHECKED this pass and NOT met. The recorded re-measurement stands: the missing-metadata half is a harness measurement gap the workflow cannot write, not a contribution-yield problem.
  • PUL-4BBFBC4B — workflow_issue; external_action_required; last observed 2026-08-10. The Active/Submitted proposal lists rendered 14 rows (4 active + 10 submitted); the Archived tab holds 3094 archived proposals plus 1190 archived interviews under an unmapped 'Job is closed' label. Three options were weighed. (1) Exhaustive pagination: ~300+ page loads against the live account for a handful of possible matches, almost all of the archive predating this workflow's 101-bid tracked history - rejected on cost and on scraping load, and the step already billed $5.03 at 70.86x its context window this run. (2) Bounded random sampling of the archive: rejected because the archive is not the population of interest - a random archived row is overwhelmingly likely to be pre-automation history that joins to nothing. (3) Targeted per-proposal lookup for the 40 unchecked submitted rows, keyed on proposals.proposal_id: this is the only strategy that would actually raise coverage, but it is 40 extra live page loads under human-mimic pacing on a step already the most expensive in the route, and it is a behavior change that cannot be verified this pass. Verdict: the coverage limit itself is an accepted measurement limitation, correctly scoped. What was a real defect is that nothing in the artifact said so - every downstream rate silently inherited a 14/54 sample as if it were the population. That half is repaired: improve-check-responses must now emit a coverage block (checked, submitted_population, ratio, unchecked, excluded_surfaces, note) and improve-analyze must set response_rate_basis.is_lower_bound whenever coverage is partial, with improve-report stating the floor.
  • PUL-D50AD8BC — harness_issue; external_action_required; last observed 2026-08-12. record_run_concern is not registered in the step-runner tool profile, so a step that discovers a durable engineering defect mid-run has no way to file it and must downgrade the finding to a free-text CONCERNS line.
  • PUL-E53465F1 — workflow_issue; external_action_required; last observed 2026-08-12. publish/build_publish.rb lines 9-10 hardcode pages = {"dashboard.html" => "db/reports/upwork_dashboard.html", "bids.html" => "db/reports/daily_bids.html"}. Both source files were deleted when the report was consolidated into the single db/reports/index.html (commit 8b576db, 2026-08-11, per the current one-HTML reporting policy). workflow.json.publish.targets also still lists separate dashboard/bids/pulse targets pointing at the old file layout instead of the current single-report model.
  • PUL-E67413EC — workflow_issue; external_action_required; last observed 2026-08-23. Unchanged from the suppressed diagnosis: the automatic evaluation trigger never fires for scheduled runs (distinct from a manual invocation hitting a visible outage). This is a new occurrence, not a new root cause -- left external_action_required, not reopened as a workflow-side finding.
  • PUL-D9139BC0 — workflow_issue; external_action_required; last observed 2026-08-15. The workflow git repository tracks CLAUDE.md and the complete .claude/skills/** package as if they were workflow-owned content. They are platform-generated and re-projected per session, and the committed copy has already drifted from the live platform package.
  • PUL-76F2EE72 — harness_issue; external_action_required; last observed 2026-08-19. The managed query_workflow_db tool returns two different JSON shapes for the same call pattern -- a flat {columns,rows} shape and a wrapped {success,result:''} shape -- with no documented trigger, and only one workflow step's own retry loop currently defends against it.
  • PUL-A14F764F — harness_issue; external_action_required; last observed 2026-08-29. query_workflow_db still returns both flat columns/rows and wrapped success/result envelopes for valid read calls, so callers cannot rely on one declared response shape.
  • PUL-76B0B278 — harness_issue; external_action_required; last observed 2026-08-20. Upwork's find-work feed tabs (Best Matches, Most Recent, My Feed) repeatedly hydrate only ~2 of the ~21-40 rendered card DOM slots into real content; the rest remain 4-character skeleton placeholders even after every documented recovery technique.
  • PUL-62957A90 — harness_issue; external_action_required; last observed 2026-08-22. Single occurrence in a busy shared-CDP session with rapid tab churn; plausibly a race between tab creation and id reassignment rather than a persistent defect. No workflow-side fix exists since this is agent_browser tool behavior, not plan.json/step_config.
  • PUL-ED9617B4 — workflow_issue; external_action_required; last observed 2026-08-29. Current provider-profile tiers expose no cross-provider fallback.
  • PUL-2E420094 — harness_issue; external_action_required; last observed 2026-08-23. Judged distinct from the existing browser-hydration-stall root cause: PUL-8DC7E43C (target_key upwork.com:find-work-feed-tab-virtualization, already linking recurrences PUL-76B0B278 and PUL-832D635C) describes Upwork's OWN virtualization failing to hydrate cards even after genuine scroll/reload/fresh-navigation -- an external, Upwork-side stall. This finding's root cause is different and narrower: the agent_browser TOOL's own scroll command reported success without actually moving the viewport at all; when the viewport genuinely moved (via the eval fallback), Upwork hydrated fully and immediately. That is the opposite failure mode from PUL-8DC7E43C's persistent stall despite real scrolling, so this is not the same root cause and should not be merged into it. It also surfaces a real self-contradiction inside the shared learnings file: the 2026-08-08 entry in learnings/_global/references/selectors.md states the dedicated scroll command reliably hydrates while eval scrollBy does not; this run found the exact opposite. The file was amended 2026-08-22 to document both outcomes and a verify-then-fallback decision rule, but the underlying tool behavior itself (why scroll silently no-ops in some sessions) remains unresolved and unowned by any workflow tool.
  • PUL-A9401F93 — harness_issue; external_action_required; last observed 2026-08-27. The intermittent scheduler-silent-skip root remains unclosed, but 2026-08-27 produced real schedule-run records and retained run folders for both affected schedules, so the current failures are not silent skips.
  • PUL-C004DFAF — harness_issue; external_action_required; last observed 2026-08-22. Duplicate pending decision card for the same strategic question, and no tool exists to retire the unlinked orphan without fabricating an answer.
  • PUL-565F9ED1 — harness_issue; external_action_required; last observed 2026-08-24. record_pulse_result for module=technical_review is permanently blocked for this pulse_run_id because the reviewer's own terminal receipt (result=done) was written before Fixer work began, under the single-terminal-per-(module,pulse_run_id) constraint. A Fixer that repairs findings after the reviewer's terminal receipt has no typed path to flip their disposition out of queued_for_engineering.
  • PUL-B2511806 — harness_issue; external_action_required; last observed 2026-08-23. agent_browser snapshot refs{} dictionary key order is not a reliable proxy for DOM/tree sibling order, causing badge-to-entity misattribution on list pages with repeated sibling blocks unless the nested snapshot tree text or the individual detail page is used to resolve the actual parent-child relationship.
  • PUL-169BD994 — harness_issue; external_action_required; last observed 2026-08-23. search_web_llm's default/first-listed providers for capability search_web (claude-code, pi-cli) fail with 'requires workspace auth' and cursor-cli returns non-search shell-command chatter instead of an actual web answer, so only codex-cli (with explicit model_id) reliably returns real search content
  • PUL-B6864197 — harness_issue; external_action_required; last observed 2026-08-31. The historical profile-report learnings read denial belongs to the shared Folder Guard boundary and was not exercised because the current profile route failed earlier.
  • PUL-9C0D14D3 — harness_issue; external_action_required; last observed 2026-08-24. 3 independent timestamps agree precisely: run_metadata.json recorded status=failed/completed_at=00:51:15Z (the FIRST improve-report attempt's orchestrator_agent_error). A live plan.json edit (changelog-2026-08-24-00-55-07.json, update_message_sequence_step) landed at 00:55:07Z diagnosing and relocating the write target. improve-report/session.json shows a SECOND attempt, status=completed, updated_at=00:57:32.102Z. schedule-runs.json's own record for this same fire (d4b6c12f/6daf70e9) shows completed_at=00:57:32.111329Z (the SAME instant as the successful retry) but still reports status=error. db/assets/reports/latest_bid_improvement.md exists, complete, dated exactly this window. So the schedule-level record captured the later, true end time of the session but both it and the run-level record still show failure despite complete real work being done inside that same session.
  • PUL-9CCE9488 — harness_issue; external_action_required; last observed 2026-08-24. Calling agent_browser(command=network, args=[--cdp , tab, t31, requests]) on the toptal-submit steps own tab returned dozens of unrelated requests from OTHER open tabs in the same shared Chrome instance (LinkedIn, Reddit, X/Twitter, Substack, BuiltIn NYC, Google Analytics), none related to talent.toptal.com. The tab qualifier in the command args did not scope the result. This is a single reproducible instance (seen_count=1); the workflow supplied a valid tab-scoped request and the shared tool ignored the scope.
  • PUL-1EE39C89 — harness_issue; external_action_required; last observed 2026-08-24. Definitive evidence across the FULL schedule-runs.json history (177 rows, all schedules, going back weeks) shows every single scheduled run wrote run_folder=iteration-0 -- including schedule 78ba88d0 (job-search+daily-bid) which has fired 75 times and 46a9b350 (toptal-bid) 47 times. Zero iteration-1..N backup folders have EVER been produced by a scheduled/cron run. Since run_retention_count governs how many backups to KEEP (default 5) and not whether they are created, and 75+ same-group fires produced not even ONE backup, the absence of run_retention_count in workflow.json cannot be the cause -- setting it would change nothing.
  • PUL-D7D173FB — harness_issue; external_action_required; last observed 2026-08-28. The HTTP custom-tool boundary still rejects create_human_input_request apply_contract as non-object even when jq constructs and transmits it as a JSON object.
  • PUL-E19F5F1B — harness_issue; external_action_required; last observed 2026-08-25. record_pulse_result rejects a later independent Fixer pass after an earlier Fixer already recorded lifecycle outcomes against the same completed Technical Review.
  • PUL-77F651B9 — workflow_issue; external_action_required; last observed 2026-08-31. Upwork's public profile was blocked by a Cloudflare verification challenge, and the read-only workflow correctly refused to click the verification control.
  • PUL-01B1E294 — harness_issue; external_action_required; last observed 2026-09-01. The plan still declares bid-record as message_sequence while step_config declares scripted and main.py requires DB_PATH, which the agentic message-sequence runtime does not receive; the typed plan surface has no safe in-place conversion for this stable money-path step.
  • PUL-439F126E — harness_issue; external_action_required; last observed 2026-09-04. search-save-jobs remains a message_sequence while its deterministic implementation requires direct SQLite access; the runtime supplied the correct absolute DB_PATH but the step sandbox could not open it, so no shortlist row or summary was persisted.
  • PUL-C796CD97 — harness_issue; external_action_required; last observed 2026-09-01. The plan still declares improve-read-history as message_sequence while step_config declares scripted and main.py requires DB_PATH, which the agentic message-sequence runtime does not receive; the typed plan surface has no safe in-place conversion for this stable aggregation step.
  • PUL-F7362B0B — harness_issue; external_action_required; last observed 2026-09-01. The plan still declares outreach-record as message_sequence while step_config declares scripted and main.py requires DB_PATH, which the agentic message-sequence runtime does not receive; the typed plan surface has no safe in-place conversion for this stable zero-send reconciliation step.
  • PUL-07504731 — harness_issue; external_action_required; last observed 2026-09-01. get_plan_prompt_health returned the exact pre-change description counts and duplicate clusters twice after four successful managed plan updates, while the canonical plan file and validate_plan_change already consumed the post-change descriptions.
⚠️ **GitHub.com Fallback** ⚠️