Compare commits
4 Commits
5ceb3ec42e
...
541c9b43de
| Author | SHA1 | Date | |
|---|---|---|---|
| 541c9b43de | |||
| a18323d095 | |||
| 7f0de3658f | |||
| 4e8c018f83 |
16
GEMINI.md
16
GEMINI.md
@@ -22,8 +22,16 @@ Read these first:
|
||||
- `project-knowledge/` is canonical project memory.
|
||||
- `agent-memory/` is agent operating memory.
|
||||
|
||||
## Gemini-Specific Notes
|
||||
## Gemini-Specific Mandatory Loop (Real-Time Auto-Documentation)
|
||||
|
||||
- Prefer the shared workspace rules over model improvisation.
|
||||
- Before answering current-state questions, inspect the current-work files and latest relevant daily note.
|
||||
- If a prompt changes durable project understanding or reusable agent behavior, update the smallest correct canonical file.
|
||||
At the end of EVERY conversational turn, you MUST evaluate the interaction as a senior Obsidian documentation expert:
|
||||
|
||||
1. **Analyze for Memory Impact:** Did the user's prompt or your subsequent action reveal new technical context, resolve an open question, change an architectural assumption, or shift current priorities?
|
||||
2. **Identify Target Canonical Files:** If memory impact is detected, identify WHERE in the `project-knowledge/` directory this information belongs. This is NOT limited to daily logs. It could be:
|
||||
- `01-current/current-work.md` (priority shifts, new blockers)
|
||||
- `02-work-items/*.md` (story updates, bug reproduction steps)
|
||||
- `03-context/` (system architecture, processes, workflows)
|
||||
- `04-people/` (stakeholder involvement)
|
||||
- `06-daily/YYYY-MM-DD.md` (daily findings)
|
||||
3. **Proactive Update:** You MUST use your file editing tools (`replace_file_content` / `multi_replace_file_content`) to inject the new context or CORRECT existing stale context in the appropriate files BEFORE concluding your response.
|
||||
4. **No Explicit Prompt Needed:** Do not wait for the user to say "document this". Auto-document implicitly. Ensure you do not pollute the workspace with unverified guesses; only document confirmed context or active hypotheses.
|
||||
|
||||
@@ -13,9 +13,9 @@ Make workspace memory maintenance part of the agent's normal job, not a separate
|
||||
|
||||
---
|
||||
|
||||
## Default Agent Behavior
|
||||
## Default Agent Behavior (Real-Time Auto-Documentation)
|
||||
|
||||
For any meaningful prompt, the agent should decide whether the interaction changes project memory.
|
||||
For EVERY meaningful prompt, the agent MUST execute a real-time auto-documentation loop. It is not an optional workflow; it is the core of the agent's job.
|
||||
|
||||
This applies to:
|
||||
|
||||
@@ -27,7 +27,7 @@ This applies to:
|
||||
- debugging discussions
|
||||
- corrections to previous understanding
|
||||
|
||||
The agent should not wait for a separate promotion command when the right update is already clear.
|
||||
The agent MUST NOT wait for a separate promotion command. The agent MUST proactively use file editing tools to update `project-knowledge/` (including 01-current, 02-work-items, 03-context, 04-people, 06-daily) within the SAME conversational turn if new information is detected or if prior context becomes stale.
|
||||
|
||||
- When editing `project-knowledge/`, write as a human engineer maintaining shared project documentation.
|
||||
- Keep agent-operating logic out of `project-knowledge/`; store that logic in prompts, commands, skills, agents, or `agent-memory/`.
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
type: current
|
||||
project: fidelity
|
||||
status: active
|
||||
updated: 2026-04-30
|
||||
updated: 2026-05-01
|
||||
tags:
|
||||
- current-work
|
||||
- fidelity
|
||||
@@ -50,6 +50,9 @@ tags:
|
||||
- Current Discourse / FTTransfer findings point to the `BankInformationView` path rather than XFlow directly: XFlow appears to finish before `BankInformationView` takes over, and the web-view reload looks like a SwiftUI recomposition/state issue in the playground path
|
||||
- Continue the Discourse / FTTransfer investigation to verify root cause and any remaining relationship to XFlowViewMaker before assigning ownership or creating a story
|
||||
- Jeff asked David to try to resolve the Discourse consumer issue by end of day on April 30 if possible
|
||||
- Deeper Discourse / FTTransfer analysis now points to presentation-layer SwiftUI identity/lifecycle churn around `BankInformationView` and `BankSetupWebView`: XFlow eventing appears to set shared consumer-observed state, but current evidence does not show it directly mutating view identity, host lifecycle, or alert state.
|
||||
- The working non-XFlow route appears to avoid the issue because it bypasses the extra XFlow destination presentation layer and associated state-coupling surface, while the failing playground path keeps the alert/popup transition and cover lifecycle coupled in the same reactive chain.
|
||||
- The next implementation direction for the Discourse / FTTransfer issue is a pure SwiftUI fix that decouples alert state from the cover identity chain, avoiding unnecessary UIKit dependencies
|
||||
- Before closing out the AO thread, send one more working-group Teams reply that summarizes the original iOS issue, links the Jira comment, Discourse comment, and PR, and separates the remaining `HybridBrokerageAccountOpening` / `JointIdentityCheck` service-side issue
|
||||
- The `HybridBrokerageAccountOpening` / `JointIdentityCheck` rule-content issue appears unchanged between QA and Production in Cogstore and should be treated as the remaining service-side follow-up
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
type: current-work-items
|
||||
project: fidelity
|
||||
status: active
|
||||
updated: 2026-04-29
|
||||
updated: 2026-05-04
|
||||
tags:
|
||||
- current-work
|
||||
- work-item
|
||||
|
||||
61
project-knowledge/02-work-items/pdiap-16167.md
Normal file
61
project-knowledge/02-work-items/pdiap-16167.md
Normal file
@@ -0,0 +1,61 @@
|
||||
---
|
||||
type: work-item
|
||||
project: fidelity
|
||||
status: active
|
||||
ticket: PDIAP-16167
|
||||
title: AccountLink - XFlow causing web view rewrites investigation
|
||||
systems: [xflowsdk, xflowviewmaker, fttransfer]
|
||||
workstreams: [ao-discourse, consumer-integration]
|
||||
people: [jeff-dewitte, zachary-boutyard]
|
||||
related: [pdiap-15836]
|
||||
tags:
|
||||
- work-item
|
||||
- fidelity
|
||||
- discourse
|
||||
- swiftui
|
||||
updated: 2026-05-04
|
||||
---
|
||||
|
||||
# PDIAP-16167 - AccountLink - XFlow causing web view rewrites investigation
|
||||
|
||||
## Status
|
||||
|
||||
- Root cause identified and verified
|
||||
- Confluence report requested by Jeff; draft sent for review
|
||||
- Jeff approved creating the story
|
||||
|
||||
---
|
||||
|
||||
## Context
|
||||
|
||||
- Discourse 30181: FTTransfer (Zachary) reported that the AccountLink webview reloads / goes blank when the user taps the exit button in the FTTransfer playground.
|
||||
- Zachary believes the issue is "new" and linked to a recent XFlow version change.
|
||||
|
||||
---
|
||||
|
||||
## Confirmed Findings
|
||||
|
||||
- **Root Cause:** SwiftUI Identity Reset (Modifier-Site Teardown). The `.ftFullScreenCover` modifier was anchored to a volatile branch inside `BankInformationView`. When the webview triggered an exit alert, the environment republish dismantled that volatile branch and rebuilt the presenter off-screen, causing the blank screen.
|
||||
- **XFlow is NOT the cause:** XFlow eventing fires once to toggle a boolean and exits. The teardown happens later on a local JS/alert callback. XFlow does not mutate view identity, host lifecycle, or alert state.
|
||||
- **v0.1.0 Rollback Proof:** The issue persists identically when rolling back XFlowSDK to v0.1.0 (pre-REST, pre-Apollo removal), empirically proving the defect is decoupled from the SDK's recent evolution.
|
||||
- **Comparative Analysis:** The non-XFlow entry point (Zachary's alternative flow) survives because it uses a stable coordinator boundary (`BankSetupContainerView` / `NavigationStack`), bypassing the fragile modifier placement.
|
||||
|
||||
---
|
||||
|
||||
## Verified Resolution
|
||||
|
||||
- Moving the `.ftFullScreenCover` and the `shouldShowWebView` observer to the **stable root** of `BankInformationView` resolves the issue. Pure SwiftUI fix, no UIKit workarounds needed.
|
||||
- Jeff acknowledged the fix and asked to include it in the Confluence report.
|
||||
|
||||
---
|
||||
|
||||
## Current Guidance
|
||||
|
||||
- Jeff's direction: document the findings clearly in a Confluence report, send it to Zachary, and comment it on the story. No need to fix their code directly; clear communication of the issue is the goal.
|
||||
- Jeff also asked to include a version comparison showing that recent REST/GraphQL changes to XFlowSDK do not intersect with this flow.
|
||||
|
||||
---
|
||||
|
||||
## Next Step
|
||||
|
||||
- Finalize and publish the Confluence report with all findings, the v0.1.0 rollback evidence, and the XFlowViewMaker version comparison.
|
||||
@@ -1,5 +1,57 @@
|
||||
---
|
||||
type: daily
|
||||
project: fidelity
|
||||
date: 2026-04-30
|
||||
status: active
|
||||
focus: [ao-discourse, xflow-debugging]
|
||||
work-items: []
|
||||
blockers: []
|
||||
tags:
|
||||
- daily
|
||||
- fidelity
|
||||
updated: 2026-05-01
|
||||
---
|
||||
|
||||
# 2026-04-30
|
||||
|
||||
## Context Updates
|
||||
- Jeff requested confirmation on whether the webview reload issue is tied to `XFlow`. If not, we need to compare the failing flow against Zachary's working non-XFlow entry point to understand the discrepancy.
|
||||
- David reported that the issue seems isolated to a premature deallocation in the SwiftUI lifecycle between `BankInformationView` and `BankSetupWebView`, meaning it does not appear to be an `XFlowViewMaker` bug.
|
||||
## Focus
|
||||
|
||||
- Continue the Discourse / FTTransfer AccountLink investigation and verify whether the web-view reload issue is caused by XFlow/XFlowViewMaker or by the consumer SwiftUI hierarchy.
|
||||
|
||||
---
|
||||
|
||||
## Work Done
|
||||
|
||||
- Compared the failing `FTTransferPlayground` path with the working non-XFlow entry point Zachary referenced.
|
||||
- Explored whether XFlow event handling could be contributing to the issue, since similar event/lifecycle concerns came up in prior work.
|
||||
- Ran a deeper architecture analysis of the web-view reload behavior with concrete code references.
|
||||
- Identified the likely root cause as a SwiftUI view-identity / environment-republish issue around `BankInformationView` and `BankSetupWebView`, not XFlow rendering or XFlowViewMaker lifecycle logic directly.
|
||||
|
||||
---
|
||||
|
||||
## Findings
|
||||
|
||||
- XFlow is definitely the upstream trigger path, but the failure is driven entirely by how the consumer SwiftUI hierarchy anchors the web-view presentation.
|
||||
- **Final Root Cause (Modifier-Site Teardown):** The `.ftFullScreenCover` modifier was incorrectly attached to a **volatile branch** of `BankInformationView` (e.g., inside a dynamic loaded/error state view). When the webview triggered an exit alert, the resulting state mutation caused SwiftUI to re-evaluate that volatile branch. This dismantled the presentation anchor and rebuilt it off-screen (`inWindow=false`), resulting in a blank screen.
|
||||
- The working non-XFlow route survives because it uses a completely different, stronger modal/coordinator boundary (`BankSetupContainerView`), avoiding this fragile modifier placement.
|
||||
- **Verified Solution:** The issue was resolved by moving the `.ftFullScreenCover` and its `shouldShowWebView` observer to the **stable root** of `BankInformationView`. By anchoring the presentation to the static root instead of a dynamic child branch, transient state changes no longer dismantle the presenter. This fixes the bug perfectly using pure SwiftUI, without any UIKit (`UIHostingController`) hacks.
|
||||
|
||||
---
|
||||
|
||||
## Communication
|
||||
|
||||
- David asked Zachary for the working non-XFlow entry point so the failing and working paths could be compared directly.
|
||||
- David can now confidently update Jeff and Zachary that XFlow is completely cleared, and the bug was a classic SwiftUI presentation-anchor issue in the playground's consumer code.
|
||||
|
||||
---
|
||||
|
||||
## Next Steps
|
||||
|
||||
- Finalize the PR with the structural fix (moving the cover to the stable root of `BankInformationView`).
|
||||
- Share the exact lines changed with Zachary so his team can apply this SwiftUI best practice to other covers in their playground.
|
||||
|
||||
---
|
||||
|
||||
## Blockers
|
||||
|
||||
- None currently.
|
||||
|
||||
49
project-knowledge/06-daily/2026-05-01.md
Normal file
49
project-knowledge/06-daily/2026-05-01.md
Normal file
@@ -0,0 +1,49 @@
|
||||
---
|
||||
type: daily
|
||||
project: fidelity
|
||||
date: 2026-05-04
|
||||
status: active
|
||||
focus: []
|
||||
work-items: []
|
||||
blockers: []
|
||||
tags:
|
||||
- daily
|
||||
- fidelity
|
||||
updated: 2026-05-04
|
||||
---
|
||||
|
||||
# 2026-05-04
|
||||
|
||||
## Focus
|
||||
|
||||
-
|
||||
|
||||
---
|
||||
|
||||
## Work Done
|
||||
|
||||
-
|
||||
|
||||
---
|
||||
|
||||
## Findings
|
||||
|
||||
-
|
||||
|
||||
---
|
||||
|
||||
## Communication
|
||||
|
||||
-
|
||||
|
||||
---
|
||||
|
||||
## Next Steps
|
||||
|
||||
-
|
||||
|
||||
---
|
||||
|
||||
## Blockers
|
||||
|
||||
- None currently.
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
type: daily-index
|
||||
project: fidelity
|
||||
updated: 2026-04-29
|
||||
updated: 2026-05-01
|
||||
tags:
|
||||
- daily
|
||||
- map
|
||||
@@ -28,6 +28,7 @@ Promote durable facts into `project-knowledge/01-current/`, `project-knowledge/0
|
||||
- [2026-04-27](2026-04-27.md)
|
||||
- [2026-04-28](2026-04-28.md)
|
||||
- [2026-04-29](2026-04-29.md)
|
||||
- [2026-04-30](2026-04-30.md)
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user