Repository navigation
Shared map server core: persistent, phase-tagged maps for agents (Phase 1, 0.261.254) - #1638
Open
Paul Lizer (paullizer) wants to merge 3 commits into
Open
Paul Lizer (paullizer) wants to merge 3 commits into
Paul Lizer (paullizer) wants to merge 3 commits into
Conversation
| await asyncio.sleep(random.uniform(0.005, 0.02) * (attempt + 1)) | ||
| continue | ||
| return {"map_id": map_id, "version": version, "change_id": change["id"], **plan.result} | ||
| LOGGER.warning(f"[MAP_SERVER] A write kept conflicting and gave up (map {map_id}, action {action}).") |
| if raw_width not in (None, "") and not isinstance(raw_width, bool): | ||
| try: | ||
| style["line_width"] = max(MIN_LINE_WIDTH, min(MAX_LINE_WIDTH, int(float(raw_width)))) | ||
| except (TypeError, ValueError): |
15 of 24 tasks
Paul Lizer (paullizer)
added a commit
that referenced
this pull request
Oct 5, 2026
V2 reached 0.261.238 when #1644 merged, so this branch moves one above it. Sets config.py VERSION to 0.261.239 and moves this branch's own 0.261.238 lines to 0.261.239: the hand-off modules' and tests' Version, Implemented in, MINIMUM_VERSION and assert_app_version_at_least literals, the two route-test coverage notes, the run adapter test's hand-off refusal note, the two hand-off rows in docs/admin/orchestration.md, the feature doc and this branch's release-notes header. #1644's own 0.261.238 lines (its schema docstring, its Microsoft 365 section and troubleshooting row in orchestration.md, its fix docs and its release-notes section) are unchanged. The open V2 PRs claim 0.261.234 (#1639), 0.261.235 (#1637), 0.261.236 (#1638) and 0.261.246 (#1641), none of them 0.261.239. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Paul Lizer (paullizer)
added a commit
to paullizer/simplechat
that referenced
this pull request
Oct 6, 2026
V2 is still at 0.261.233. microsoft#1635, microsoft#1636, microsoft#1637 and microsoft#1638 claim .234 to .236, so this branch takes .237. Every 0.261.234 reference moves to 0.261.237: config.py, the release notes header, the feature docs, the chat-controls reference and the test headers. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Paul Lizer (paullizer)
added a commit
to paullizer/simplechat
that referenced
this pull request
Oct 6, 2026
Sets config.py VERSION to 0.261.238, one above the versions claimed by the open V2 PRs (microsoft#1636 0.261.234, microsoft#1637 0.261.235, microsoft#1638 0.261.236, 6b-2 next), and moves the hand-off modules' and tests' Version, Implemented in, MINIMUM_VERSION and assert_app_version_at_least literals to it. The off-golden fixture keeps its factual capture note (f1aeef1, 0.261.233). Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Proposes a standalone map server for SimpleChat with persistent maps owned by a user or group, phase-tagged features and an append-only change log, a Shared map action with change cards, and a live V2 map panel. Scoped as a proof of concept: SimpleChat is the only client, only agents write, no sharing or deletion rules, and a black background without Azure Maps. Documentation only.
A standalone FastAPI service for persistent, phase-tagged maps that agents build up over a conversation: Entra caller checks with an actor context, scope isolation, versioned writes as ETag-conditioned Cosmos DB batches, revisions for as-of views, a change log, conversation links, an Azure Maps tile proxy, live change events, a container image and a proof-of-concept deploy script. Version 0.261.236.
Filter az output in PowerShell instead of JMESPath functions (az.cmd passes their parentheses through cmd.exe), match role assignments by object ID because a new identity isn't in Entra ID yet, pass an absolute Dockerfile path to az acr build, and wait for new role assignments before creating the container app. Verified by a deploy to a SimpleChat POC environment.
Paul Lizer (paullizer)
force-pushed
the
paullizer-map-server
branch
from
October 6, 2026 13:42
21873b8 to
84163ef
Compare
This was referenced Oct 6, 2026
Paul Lizer (paullizer)
added a commit
to paullizer/simplechat
that referenced
this pull request
Oct 6, 2026
…esign to 0.261.256 The base moved to 0.261.255, and open PRs microsoft#1654 and microsoft#1638 both hold 0.261.254, so this branch takes the next free number. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
15 of 24 tasks
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
application/map_server) that keeps one persistent map per piece of work, so agents can build a common operating picture over a long conversation instead of redrawing a separate map in every message. It's the first phase of the design indocs/explanation/features/SHARED_MAP_SERVER_DESIGN.md. Nothing in SimpleChat calls it yet; Phase 2 adds the Shared map action, change cards and read-only routes./healthzneeds an Entra token from a caller holding theMapServer.ActOnBehalfapp role (or an allowlisted object ID). Only then is the actor context read (X-Map-Actor: person,user:/group:scope, read or write). A map in another scope answers like a missing one, and read-only access can't write./openapi.jsonwith the CDN-backed docs pages turned off, a distroless non-root image and a proof-of-concept deploy script for Azure Container Apps.Linked issue
None.
Release Notes & Latest Features
Is this visible to end users?
Is this admin-facing (Admin Settings, governance, deployment, config)?
Should this become a Latest Feature card?
Screenshot needed for the card?
Version bump
application/single_app/config.pyVERSIONthird segment bumped, or not needed because this is docs-onlydeployers/version.txtbumped, or not needed becausedeployers/was not changedThis takes 0.261.254, after the branch's 0.261.252 and #1637's 0.261.253. Rebased on 2026-10-06 onto
paullizer-react-v2-uiat #1647. The map server reports its own version, starting at0.1.0.Testing / validation
python -m pytest functional_tests/test_map_server_api.py functional_tests/test_map_server_storage_tiles_events.py: 20 passed. Covers caller tokens (wrong audience, issuer, signature and expiry; role versus allowlist), the actor context, scope isolation, limits and safe links, duplicates, phases, revisions and as-of snapshots, the snapshot shape against the keys the V2 inline map renderer reads, filters and paging, the change log, links, concurrent writers getting consecutive versions, store failures never leaking exception text, Cosmos batch and query shapes (ETag condition, parameterized queries), tiles (key and managed identity auth, cache, range checks) and the event stream.application/map_server/requirements.txt, and both files pass underpython -O.scripts/check_broken_access_control.py --full-fileandscripts/check_xss_sinks.py --full-filepass on all 12 map server files.functional_tests/test_docs_site_quality.pyandfunctional_tests/test_docs_app_surface_coverage.py: 13 passed.functional_tests/test_logging_tag_standardization.pynow scansapplication/map_servertoo, and the map server's four tags are documented. The test still fails on this base because of existing camel-case workflow tags (for example[WorkflowResults]), exactly as it does without this change.Write-Hostnotes.Documentation
SHARED_MAP_SERVER_DESIGN.md: decisions, data model, API, "Phase 1 as built" with configuration, local run and deployment)docs/reference/logging-tags.mdlists the new[MAP_SERVER*]tags.Security checklist
@swagger_route(security=get_auth_security())(no Flask routes; the map server is a separate FastAPI service that checks an Entra token on every route but/healthz)sanitize_settings_for_user()(no settings sent)/docsand/redocpages are off)