SessionLog-2026-09-01.md #1

  • //
  • test-install_sdp/
  • dev/
  • ai_dev_support/
  • SessionLog-2026-09-01.md
  • Markdown
  • View
  • Commits
  • Open Download .zip Download (14 KB)

Session Log - 2026-09-01

Agent: Claude Code Model: Claude Sonnet 5 (claude-sonnet-5) P4 identity used: bot_Claude_Anthropic (except where noted)

Summary

Picking up from SessionLog-2026-08-29.md (which ran through 2026-08-31). Refreshed Public Depot and PPN tickets to full 24h; confirmed JIRA write access still present; no dangling opened files anywhere. Closed out the AWS EBS Name-tag loose end for good. Started Task 5 (Redesign SDP Release Process): read doc/ReleaseProcessOverview.md end to end, then had a substantial design discussion with the user defining the actual Streams topology, patch-release model, and several concrete doc/tooling fixes. No rewrite of ReleaseProcessOverview.md itself yet -- that's the next session's main task, now that the design questions below are settled.

Where Things Stand

  • Tasks 1-4: done. SDP-1170 remains open, folded into Task 5 scope.
  • Task 5 (Redesign SDP Release Process): design phase, in progress. Key decisions made today (see Timeline for full detail):
    • Stream topology confirmed: main (mainline) -> dev (long-lived, always release-ready) -> dev_* short-lived per-task streams (e.g. dev_rebrand, future dev_SDP-<n>). Small/low-risk/urgent work can go straight to dev; larger/riskier work starts in a dev_* stream.
    • Patch model decided: uniform dev -> main -> release flow for everything, including patches -- no patching directly in an old release stream (avoids a second, backflow merge direction). A patch between majors just means cutting a fresh release stream from main (e.g. r26.1.1, r26.1.2, ...). Considering r26.1.0 for GA to make the numbering scheme consistent up front.
    • JIRA Fix versions naming (adding .0 for GA to match) is explicitly on hold -- user wants to check with Brent (P4 Product Owner) on whether SDP should match however P4-proper does Fix versions, before deciding.
    • Doc/script version regeneration sequencing: front-load doc/revnumber prep in main; do one final regen pass in the release stream once cut, since RCS-keyword-derived script versions differ per stream. Confirmed acceptable that docs viewed on main will show "MAIN" in version tags rather than a release number -- that's accurate, not a bug, and consistent with the relative-link doc strategy from the prior session.
    • No formal release-stream pruning/retirement -- P4 has no "inactive stream" concept, so old release streams (r26.1.0 etc.) just stay around indefinitely once superseded by patches. Confirmed fine.
    • cd-command inconsistency in the old doc: fix by establishing WSRoot=$(p4 -ztag -F %clientRoot% info) early and using cd "$WSRoot/<subdir>" throughout the rewrite, instead of the old doc's inconsistent relative cd chains.
    • tools/ packaging gap found and fixed (see Timeline) -- real regression from the Classic->Streams migration, not yet released.
    • Open item flagged by user for next time: the "SDP Health Checks" section of doc/ReleaseNotes.adoc may need a URL update now that tools/ is excluded from packaging -- checked today, and the existing download URL there already correctly points at Server/Unix/p4/common/bin/sdp_health_check.sh, not tools/, so this may already be fine. Needs a final confirm next session (maybe there's a different stale reference elsewhere).
  • Stream housekeeping clarified (no action needed): dev_c2s is done and retired (merged into dev_rebrand); dev_rebrand2 was aborted; dev_SDP-1265/dev_SDP-1267 are experimental placeholders (Version-file isolation testing, and an empty placeholder respectively) that may or may not ever be used.
  • Loose ends carried over, still open, not urgent:
    • SDP-1170 (Migrate Classic->Streams URLs/redirects) -- part of Task 5.
    • SDP-1383 / SDP-1384 (Priority Backlog) -- ccheck.sh version-awareness, Python/Perl version identification.
    • SDP-1050 -- p4dstate.sh/p4pstate.sh/p4brokerstate.sh overhaul.
    • SDP-568 -- exec/tee logging standardization, deferred to 2026.2.
    • HMS URL fixes -- blocked on p4-hms depot population.
    • tools/sdp_health_check.sh -- confirmed stale duplicate of the real Server/Unix/p4/common/bin/sdp_health_check.sh; harmless (now excluded from packaging either way), worth deleting eventually as plain cleanup, not urgent.

Timeline

AWS EBS Name-tag loose end (closed)

Confirmed the risk was real, not hypothetical: checked the actual AWS account this environment has access to (helix-bsw-bot, account 572096036492) and found a live, in-use host, perforce-01, whose EBS volumes were still tagged perforce-01-hxdepots/perforce-01-hxlogs (the pre-2026.1-rebrand convention) while snapshot.sh (since change 33326) only matches p4depots/p4logs. Fixed both ends:

  • snapshot.sh (change 33395): added a LegacyVolumeBaseName fallback -- if the current-style Name tag isn't found, retries the pre-rebrand tag name and warns that the volume should be re-tagged, rather than silently skipping it. Added a comment block explaining the Name-tag convention and that it must stay in sync with real AWS tags on live production volumes. Verified the fallback logic with a mocked aws CLI reproducing the exact perforce-01 scenario.
  • Renamed the real AWS EBS tags on perforce-01's two volumes to perforce-01-p4depots/perforce-01-p4logs, confirmed via describe-volumes. This was flagged to the user as a live-infrastructure change before doing it, given their go-ahead.

Never shipped in a release, so no separate JIRA issue -- folded directly into this fix as "just an outcome of the rebranding."

Task 5 kickoff: ReleaseProcessOverview.md read + design discussion

Read the whole 18-step document. It's detailed and clearly still useful in spirit, but a lot of it is written for the old Classic-depot branch-and-merge model (p4 merge -b perforce_software-sdp-dev, an mdcu.sh script, mixed //guest/perforce_software/sdp/dev/... and //p4-sdp/... paths) and needs a real Streams-native rework, not search-and-replace.

Before proposing a rewrite, surfaced the most load-bearing open question: what's the actual relationship between //p4-sdp/dev, //p4-sdp/dev_rebrand, and //p4-sdp/main? Grounded this against the real depot via p4 stream -o and p4 streams //p4-sdp/... rather than guessing, which is what surfaced the full topology (see below) and the extra streams (dev_c2s, dev_rebrand2, dev_SDP-1265, dev_SDP-1267) not otherwise mentioned.

User's response (this is the actual design-definition conversation for Task 5, not documentation of an already-decided design -- "the intended stream workflow will be exercised for the first time with this release"):

Stream topology:

  • main (mainline, parent none) -- long-lived, stable, reflects the latest shipped release. Confirmed via p4 stream -o: has both isolate ai_dev_support/... and isolate Version already set.
  • Release streams (e.g. r26.1) -- long-lived, generally stable except briefly during the release process itself (doc regen, heavy retesting). None exist yet.
  • dev (development, parent main) -- long-lived, always has WIP, but always kept release-ready/stable enough to ship on short notice.
  • dev_* project streams (development type; sparsedev was tried but doesn't support fetch/push, so plain development is used per-developer choice instead) -- short-lived, per-task, parented by dev. Naming convention: can be issue-specific, e.g. a future dev_SDP-568.
  • Developers choose where to start work: small/low-risk/hyper-urgent work can go straight to dev; larger/higher-risk work should start in a dev_* stream first (confirmed with the user: an earlier "or high-risk ... can go right to dev" in their own phrasing was a typo, not intended).

Patch model -- the one substantive decision made today: the original doc's implicit model (patch directly in an old release stream, then presumably backflow into main to keep it current) was rejected as too much complexity for a small team -- it requires two merge directions instead of one. Decided instead: patches follow the exact same dev -> main -> release flow as any other change; a patch between majors just means cutting a new release stream from main (r26.1.1, r26.1.2, ...). Since dev is designed to always be release-ready, this costs no speed even for urgent fixes. Naming: possibly r26.1.0 for GA (not yet r26.1) so the numbering scheme is consistent from the start -- this would deliberately diverge from JIRA's existing Fix versions convention (2026.1, no .0), which is fine since they're different systems, but needs to be documented clearly so it's not confusing. Whether to also change the JIRA convention to add .0 for GA is explicitly on hold pending the user's conversation with Brent (P4 Product Owner) about whether SDP should match P4-proper's own convention.

No formal release-stream retirement/pruning -- P4 has no "mark inactive" stream feature (a long-standing, known gap the user has already requested upstream), so old release streams just accumulate and stay around indefinitely once superseded. Confirmed fine, no action needed unless/until that feature exists.

One nice side effect noted: since patches and GA releases now run through an identical mechanism (just gated by "major releases only" step-skips, which the old doc already used for some steps), the redesigned doc's overall shape probably won't need to change much -- patch and GA procedures collapse into one, which is a simplification, not just a relabeling.

Doc/script version regeneration sequencing (a real technical constraint, not just a design preference): because script versions are now derived from $Id:$/$Change:$ RCS keywords (SDP-1161/SDP-799), the same script's -man output -- and therefore the generated docs built from it -- will show different version strings in different streams, even when the content is otherwise identical, since submitting/integrating a file into a new stream changes its $Change:$ value. Plan: do as much doc prep as possible in main (revnumbers, etc.), then do one final regen pass in the release stream right after cutting it, to pick up correct per-release version strings. Confirmed with the user that main's own docs will legitimately show "MAIN" in version tags in the meantime (e.g. MAIN.33368 instead of R26.1.0.33368) -- judged this is fine, even good: it's an honest signal to the reader that they're viewing the rolling main, not a specific release, which fits naturally with the relative-link doc strategy adopted the prior session.

Stream housekeeping (no action needed, just status confirmed by user): dev_c2s (Classic-to-Streams migration work) is done and retired, already merged into dev_rebrand. dev_rebrand2 was an aborted attempt. dev_SDP-1265 (an experiment with how the isolated Version file behaves) and dev_SDP-1267 (an empty placeholder) are just sitting there, unresolved, possibly never to be used -- fine as-is; if ever merged down, the only effect will be bumping the changelist number on their share line, since they have no other resident files.

Concrete fixes made today, arising directly from this discussion:

  1. tools/excludes.downloads.cfg: added D:ai_dev_support (change 33398) and, after checking real packaging behavior, D:tools (change 33401). In the Classic structure, tools/ lived outside the dev/main branches entirely and was never a packaging concern; the Classic->Streams migration moved it inside the stream tree, where package_downloads.sh's cp -pr <stream>/... $SDPRoot now sweeps it into the customer tarball unless excluded. Verified tools/ contains only release-engineering tooling; the one file that looked customer-facing (sdp_health_check.sh) already has its real, correct, customer-shipped copy at Server/Unix/p4/common/bin/sdp_health_check.sh, so nothing real is lost by excluding tools/. Confirmed only one directory named tools exists anywhere in the tree, so the exclusion can't accidentally catch anything else.
  2. Along the way, hit a real (harmless) self-inflicted mistake: edited excludes.downloads.cfg a second time via the Edit tool without re-running p4 edit first (the file had gone read-only again after the first submit). The edit silently succeeded on disk anyway -- p4 opened correctly showed nothing open, and p4 submit correctly said "No files to submit" since nothing was tracked, so no harm done, but it confirms the Edit tool has the exact same rename()-based read-only bypass previously seen with sed -i. Fixed properly (p4 edit picked up the existing on-disk diff cleanly) and broadened the existing feedback_sed_bypasses_p4_readonly memory to cover this: the rule isn't "watch out right after sed," it's "p4 edit unconditionally before touching any tracked file with any tool, every time."
  3. Established the WSRoot=$(p4 -ztag -F %clientRoot% info) idiom to fix the old doc's inconsistent cd commands -- to be applied throughout the ReleaseProcessOverview.md rewrite next session.
  4. User flagged the "SDP Health Checks" section of doc/ReleaseNotes.adoc as possibly needing a URL update now that tools/ is excluded from packaging. Checked today: the existing download URL there already points at Server/Unix/p4/common/bin/sdp_health_check.sh, not tools/, so it may already be correct -- flagged for a final confirm next session rather than assumed fixed or assumed broken.

Wrap-Up

Good foundational-design day for Task 5 -- the actual stream topology and patch model are now decided (not just documented), which is most of the hard thinking done before the ReleaseProcessOverview.md rewrite itself. Next session: write the actual rewrite, applying the WSRoot idiom throughout, restructuring the merge-down/copy-up steps to match the uniform dev -> main -> release flow (no backflow), rewriting the Classic-era p4 merge -b/mdcu.sh mechanics to their Streams-native equivalents, and doing the final confirm on the SDP Health Checks URL question above. SDP-1170 (Classic->Streams URL/redirect migration) is still open and part of this same Task 5 scope, not yet started for real.

# Session Log - 2026-09-01

Agent: Claude Code
Model: Claude Sonnet 5 (claude-sonnet-5)
P4 identity used: bot_Claude_Anthropic (except where noted)

## Summary

Picking up from `SessionLog-2026-08-29.md` (which ran through 2026-08-31).
Refreshed Public Depot and PPN tickets to full 24h; confirmed JIRA write
access still present; no dangling opened files anywhere. Closed out the
AWS EBS Name-tag loose end for good. Started Task 5 (Redesign SDP Release
Process): read `doc/ReleaseProcessOverview.md` end to end, then had a
substantial design discussion with the user defining the actual Streams
topology, patch-release model, and several concrete doc/tooling fixes.
No rewrite of `ReleaseProcessOverview.md` itself yet -- that's the next
session's main task, now that the design questions below are settled.

## Where Things Stand

- **Tasks 1-4: done.** SDP-1170 remains open, folded into Task 5 scope.
- **Task 5 (Redesign SDP Release Process): design phase, in progress.**
  Key decisions made today (see Timeline for full detail):
  - Stream topology confirmed: `main` (mainline) -> `dev` (long-lived,
    always release-ready) -> `dev_*` short-lived per-task streams (e.g.
    `dev_rebrand`, future `dev_SDP-<n>`). Small/low-risk/urgent work can
    go straight to `dev`; larger/riskier work starts in a `dev_*` stream.
  - **Patch model decided**: uniform `dev` -> `main` -> release flow for
    *everything*, including patches -- no patching directly in an old
    release stream (avoids a second, backflow merge direction). A patch
    between majors just means cutting a fresh release stream from `main`
    (e.g. `r26.1.1`, `r26.1.2`, ...). Considering `r26.1.0` for GA to make
    the numbering scheme consistent up front.
  - JIRA `Fix versions` naming (adding `.0` for GA to match) is explicitly
    **on hold** -- user wants to check with Brent (P4 Product Owner) on
    whether SDP should match however P4-proper does `Fix versions`, before
    deciding.
  - Doc/script version regeneration sequencing: front-load doc/revnumber
    prep in `main`; do one final regen pass in the release stream once
    cut, since RCS-keyword-derived script versions differ per stream.
    Confirmed acceptable that docs viewed on `main` will show "MAIN" in
    version tags rather than a release number -- that's accurate, not a
    bug, and consistent with the relative-link doc strategy from the
    prior session.
  - No formal release-stream pruning/retirement -- P4 has no "inactive
    stream" concept, so old release streams (`r26.1.0` etc.) just stay
    around indefinitely once superseded by patches. Confirmed fine.
  - `cd`-command inconsistency in the old doc: fix by establishing
    `WSRoot=$(p4 -ztag -F %clientRoot% info)` early and using
    `cd "$WSRoot/<subdir>"` throughout the rewrite, instead of the old
    doc's inconsistent relative `cd` chains.
  - `tools/` packaging gap found and fixed (see Timeline) -- real
    regression from the Classic->Streams migration, not yet released.
  - Open item flagged by user for next time: the "SDP Health Checks"
    section of `doc/ReleaseNotes.adoc` may need a URL update now that
    `tools/` is excluded from packaging -- checked today, and the
    existing download URL there already correctly points at
    `Server/Unix/p4/common/bin/sdp_health_check.sh`, not `tools/`, so
    this may already be fine. Needs a final confirm next session (maybe
    there's a different stale reference elsewhere).
- Stream housekeeping clarified (no action needed): `dev_c2s` is done and
  retired (merged into `dev_rebrand`); `dev_rebrand2` was aborted;
  `dev_SDP-1265`/`dev_SDP-1267` are experimental placeholders (Version-file
  isolation testing, and an empty placeholder respectively) that may or may
  not ever be used.
- Loose ends carried over, still open, not urgent:
  - SDP-1170 (Migrate Classic->Streams URLs/redirects) -- part of Task 5.
  - SDP-1383 / SDP-1384 (Priority Backlog) -- ccheck.sh version-awareness,
    Python/Perl version identification.
  - SDP-1050 -- p4dstate.sh/p4pstate.sh/p4brokerstate.sh overhaul.
  - SDP-568 -- exec/tee logging standardization, deferred to 2026.2.
  - HMS URL fixes -- blocked on `p4-hms` depot population.
  - `tools/sdp_health_check.sh` -- confirmed stale duplicate of the real
    `Server/Unix/p4/common/bin/sdp_health_check.sh`; harmless (now
    excluded from packaging either way), worth deleting eventually as
    plain cleanup, not urgent.

## Timeline

### AWS EBS Name-tag loose end (closed)

Confirmed the risk was real, not hypothetical: checked the actual AWS
account this environment has access to (`helix-bsw-bot`, account
572096036492) and found a live, in-use host, `perforce-01`, whose EBS
volumes were still tagged `perforce-01-hxdepots`/`perforce-01-hxlogs` (the
pre-2026.1-rebrand convention) while `snapshot.sh` (since change 33326)
only matches `p4depots`/`p4logs`. Fixed both ends:

- `snapshot.sh` (change 33395): added a `LegacyVolumeBaseName` fallback --
  if the current-style Name tag isn't found, retries the pre-rebrand tag
  name and warns that the volume should be re-tagged, rather than
  silently skipping it. Added a comment block explaining the Name-tag
  convention and that it must stay in sync with real AWS tags on live
  production volumes. Verified the fallback logic with a mocked `aws` CLI
  reproducing the exact `perforce-01` scenario.
- Renamed the real AWS EBS tags on `perforce-01`'s two volumes to
  `perforce-01-p4depots`/`perforce-01-p4logs`, confirmed via
  `describe-volumes`. This was flagged to the user as a live-infrastructure
  change before doing it, given their go-ahead.

Never shipped in a release, so no separate JIRA issue -- folded directly
into this fix as "just an outcome of the rebranding."

### Task 5 kickoff: ReleaseProcessOverview.md read + design discussion

Read the whole 18-step document. It's detailed and clearly still useful in
spirit, but a lot of it is written for the old Classic-depot
branch-and-merge model (`p4 merge -b perforce_software-sdp-dev`, an
`mdcu.sh` script, mixed `//guest/perforce_software/sdp/dev/...` and
`//p4-sdp/...` paths) and needs a real Streams-native rework, not
search-and-replace.

Before proposing a rewrite, surfaced the most load-bearing open question:
what's the actual relationship between `//p4-sdp/dev`, `//p4-sdp/dev_rebrand`,
and `//p4-sdp/main`? Grounded this against the real depot via `p4 stream -o`
and `p4 streams //p4-sdp/...` rather than guessing, which is what surfaced
the full topology (see below) and the extra streams (`dev_c2s`,
`dev_rebrand2`, `dev_SDP-1265`, `dev_SDP-1267`) not otherwise mentioned.

User's response (this is the actual design-definition conversation for
Task 5, not documentation of an already-decided design -- "the intended
stream workflow will be exercised for the first time with this release"):

**Stream topology**:
- `main` (`mainline`, parent none) -- long-lived, stable, reflects the
  latest shipped release. Confirmed via `p4 stream -o`: has both
  `isolate ai_dev_support/...` and `isolate Version` already set.
- Release streams (e.g. `r26.1`) -- long-lived, generally stable except
  briefly during the release process itself (doc regen, heavy retesting).
  None exist yet.
- `dev` (`development`, parent `main`) -- long-lived, always has WIP, but
  always kept release-ready/stable enough to ship on short notice.
- `dev_*` project streams (`development` type; `sparsedev` was tried but
  doesn't support fetch/push, so plain `development` is used per-developer
  choice instead) -- short-lived, per-task, parented by `dev`. Naming
  convention: can be issue-specific, e.g. a future `dev_SDP-568`.
- Developers choose where to start work: small/low-risk/hyper-urgent work
  can go straight to `dev`; larger/higher-risk work should start in a
  `dev_*` stream first (confirmed with the user: an earlier "or high-risk
  ... can go right to dev" in their own phrasing was a typo, not intended).

**Patch model -- the one substantive decision made today**: the original
doc's implicit model (patch directly in an old release stream, then
presumably backflow into `main` to keep it current) was rejected as too
much complexity for a small team -- it requires two merge directions
instead of one. Decided instead: patches follow the exact same
`dev` -> `main` -> release flow as any other change; a patch between
majors just means cutting a *new* release stream from `main`
(`r26.1.1`, `r26.1.2`, ...). Since `dev` is designed to always be
release-ready, this costs no speed even for urgent fixes. Naming: possibly
`r26.1.0` for GA (not yet `r26.1`) so the numbering scheme is consistent
from the start -- this would deliberately diverge from JIRA's existing
`Fix versions` convention (`2026.1`, no `.0`), which is fine since they're
different systems, but needs to be documented clearly so it's not
confusing. Whether to *also* change the JIRA convention to add `.0` for GA
is explicitly on hold pending the user's conversation with Brent (P4
Product Owner) about whether SDP should match P4-proper's own convention.

No formal release-stream retirement/pruning -- P4 has no "mark inactive"
stream feature (a long-standing, known gap the user has already requested
upstream), so old release streams just accumulate and stay around
indefinitely once superseded. Confirmed fine, no action needed unless/until
that feature exists.

One nice side effect noted: since patches and GA releases now run through
an *identical* mechanism (just gated by "major releases only" step-skips,
which the old doc already used for some steps), the redesigned doc's
overall shape probably won't need to change much -- patch and GA
procedures collapse into one, which is a simplification, not just a
relabeling.

**Doc/script version regeneration sequencing** (a real technical
constraint, not just a design preference): because script versions are now
derived from `$Id:$`/`$Change:$` RCS keywords (SDP-1161/SDP-799), the same
script's `-man` output -- and therefore the generated docs built from it --
will show different version strings in different streams, even when the
content is otherwise identical, since submitting/integrating a file into a
new stream changes its `$Change:$` value. Plan: do as much doc prep as
possible in `main` (revnumbers, etc.), then do one final regen pass in the
release stream right after cutting it, to pick up correct per-release
version strings. Confirmed with the user that `main`'s own docs will
legitimately show "MAIN" in version tags in the meantime (e.g.
`MAIN.33368` instead of `R26.1.0.33368`) -- judged this is fine, even
good: it's an honest signal to the reader that they're viewing the rolling
`main`, not a specific release, which fits naturally with the relative-link
doc strategy adopted the prior session.

**Stream housekeeping** (no action needed, just status confirmed by user):
`dev_c2s` (Classic-to-Streams migration work) is done and retired, already
merged into `dev_rebrand`. `dev_rebrand2` was an aborted attempt.
`dev_SDP-1265` (an experiment with how the isolated `Version` file behaves)
and `dev_SDP-1267` (an empty placeholder) are just sitting there,
unresolved, possibly never to be used -- fine as-is; if ever merged down,
the only effect will be bumping the changelist number on their `share`
line, since they have no other resident files.

**Concrete fixes made today, arising directly from this discussion**:

1. `tools/excludes.downloads.cfg`: added `D:ai_dev_support` (change 33398)
   and, after checking real packaging behavior, `D:tools` (change 33401).
   In the Classic structure, `tools/` lived outside the dev/main branches
   entirely and was never a packaging concern; the Classic->Streams
   migration moved it inside the stream tree, where
   `package_downloads.sh`'s `cp -pr <stream>/... $SDPRoot` now sweeps it
   into the customer tarball unless excluded. Verified `tools/` contains
   only release-engineering tooling; the one file that looked
   customer-facing (`sdp_health_check.sh`) already has its real, correct,
   customer-shipped copy at `Server/Unix/p4/common/bin/sdp_health_check.sh`,
   so nothing real is lost by excluding `tools/`. Confirmed only one
   directory named `tools` exists anywhere in the tree, so the exclusion
   can't accidentally catch anything else.
2. Along the way, hit a real (harmless) self-inflicted mistake: edited
   `excludes.downloads.cfg` a second time via the Edit tool without
   re-running `p4 edit` first (the file had gone read-only again after the
   first submit). The edit silently succeeded on disk anyway -- `p4
   opened` correctly showed nothing open, and `p4 submit` correctly said
   "No files to submit" since nothing was tracked, so no harm done, but it
   confirms the Edit tool has the exact same rename()-based read-only
   bypass previously seen with `sed -i`. Fixed properly (`p4 edit` picked
   up the existing on-disk diff cleanly) and broadened the existing
   `feedback_sed_bypasses_p4_readonly` memory to cover this: the rule
   isn't "watch out right after sed," it's "`p4 edit` unconditionally
   before touching any tracked file with any tool, every time."
3. Established the `WSRoot=$(p4 -ztag -F %clientRoot% info)` idiom to fix
   the old doc's inconsistent `cd` commands -- to be applied throughout
   the `ReleaseProcessOverview.md` rewrite next session.
4. User flagged the "SDP Health Checks" section of `doc/ReleaseNotes.adoc`
   as possibly needing a URL update now that `tools/` is excluded from
   packaging. Checked today: the existing download URL there already
   points at `Server/Unix/p4/common/bin/sdp_health_check.sh`, not
   `tools/`, so it may already be correct -- flagged for a final confirm
   next session rather than assumed fixed or assumed broken.

## Wrap-Up

Good foundational-design day for Task 5 -- the actual stream topology and
patch model are now decided (not just documented), which is most of the
hard thinking done before the `ReleaseProcessOverview.md` rewrite itself.
Next session: write the actual rewrite, applying the `WSRoot` idiom
throughout, restructuring the merge-down/copy-up steps to match the
uniform `dev` -> `main` -> release flow (no backflow), rewriting the
Classic-era `p4 merge -b`/`mdcu.sh` mechanics to their Streams-native
equivalents, and doing the final confirm on the SDP Health Checks URL
question above. SDP-1170 (Classic->Streams URL/redirect migration) is
still open and part of this same Task 5 scope, not yet started for real.
# Change User Description Committed
#1 33402 Claude (AI Agent by Anthropic) Session log for 2026-09-01: closed the AWS EBS Name-tag loose end, kicked off Task 5 (Release Process redesign) with a full read of ReleaseProcessOverview.md, and defined the actual Streams topology and patch-release model with the user for the first time.