SessionLog-2026-09-11.md #1

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

Session Log -- 2026-09-11

Summary

First "new work" day after the whirlwind SDP 2026.1 GA + EBF stretch (see SessionLog-2026-09-09.md/SessionLog-2026-09-10.md). Picked SDP-1393 (verify_sdp.sh spurious grep: off: No such file or directory message) from the three open 2026.1 Patch 1 candidates (SDP-1390/1391/1393), fixed it directly in dev, added a regression test, and added it to the new "SDP 2026.1 Patch 1" Release Notes section.

New policy: south-of-dev streams for large/destabilizing work

User introduced a new rule: for work that's large or potentially destabilizing (their example: SDP-568's log()/die() -> msg()/bail() migration and replacing the legacy P4U_ENV/BASH_LIBS env-setup mechanism with the modern template.sh approach -- a high-risk change touching some of SDP's most critical scripts), create a dedicated south-of-dev stream first (e.g. //p4-sdp/dev_SDP-568, parented by dev) and do the work there instead of directly in dev. Rationale: dev should always be ready to ship (modulo an hour or so of tidying if an urgent release need arises -- our release cadence is slow enough to afford that much slack, but not a half-finished multi-hour refactor sitting in dev). A dedicated stream lets the Copy Up to main be deferred until the feature is actually ready to ship, with Merge Downs from dev happening in the meantime as needed. This doesn't apply to small, contained fixes like today's SDP-1393 -- those still go straight into dev. Documented as a decision rule under the existing dev_* stream row in SDP_DeveloperGuide.adoc's "Working in Streams" table (change 33744).

SDP-1393: verify_sdp.sh spurious "grep: off" message

Root cause: near the end of verify_sdp.sh, two summary blocks (warnings-only case and errors+warnings case) run grep ^Warning: "$Log" / grep -E '^(Error|Warning):' "$Log" unconditionally whenever $ShowErrorSummary is set and at least one warning/error was detected -- but neither was guarded against $Log holding the literal string "off" (set when the script is called with -L off to disable logging), unlike an existing, identical guard already used elsewhere in the same file ([[ "$Log" == "off" ]] || msg ... around line 525). The result: grep ^Warning: off tries to open a nonexistent file named off, producing the spurious message. Confirmed via p4 annotate/print that this bug has been present, unchanged, since at least SDP 2025.1 -- long-standing, not a new regression. Fix: guarded both grep calls with the same "$Log" != "off" pattern (change 33742, Server/Unix/p4/common/bin/verify_sdp.sh). bash -n and shellcheck both clean.

Test strategy: test/bsw/cli_tests.cfg's existing VerifySDP group already exercises verify_sdp.sh -only commit_defined -d against a deliberately-bogus extra server spec to force a detected error -- the natural home for this regression test. Added one more VerifySDP entry immediately after that existing test, reusing its already-set-up bogus spec, that reruns the same check with -L off and asserts (via a case statement, since the test framework has no native "string must NOT appear" assertion and the command field can't contain literal | characters, which are the framework's own field separator) that grep: off: does not appear anywhere in the command's output.

Noted in passing, not yet acted on: test-install_sdp's own top-level cli_tests.cfg (the file actually wired into /opt/perforce/dev/bin on the EC2 fleet machines) has diverged significantly from p4-sdp/dev/test/bsw/cli_tests.cfg -- it's missing entire test groups (including VerifySDP itself) that exist in the SDP repo's copy. Worth a closer look at some point (why two copies exist, whether one should mirror the other), but out of scope for today.

Live verification (no live SDP instance was up on the fleet at session start, so did a quick, real, from-scratch verification rather than relying on static analysis alone): fetched the change to EC2 fleet machine p4d-test-u22-01 (confirmed on the correct/new fleet first, per the install-sdp-test-suite-run skill's fleet-identification check), ran a fast install_sdp.sh -demo install to get a real /p4/1 instance, then ran verify_sdp.sh -only commit_defined -d both with and without -L off against a real detected error condition (no commit-server spec registered in the fresh instance). Confirmed: without the fix, -L off would have printed grep: off: No such file or directory immediately after the "Verifications completed..." line; with the fix in place, that line is cleanly absent while the rest of the output (error count, checks, exit code) is unaffected. Cleaned up afterward with DANGER_CLEAN.sh -y plus removal of a couple of stray scratch files from an earlier attempt.

Added SDP-1393 to the new "SDP 2026.1 Patch 1" Release Notes section (change 33743, dev only -- per the Copy Up cadence policy, this unreleased-prep content stays in dev).

JIRA update blocked: went to set SDP-1393's P4Blog to change 33742 (per the new "maintain P4Blog as you go" policy from last night) and close the issue out, but the Atlassian/Rovo MCP connection had again silently dropped to read-only (getAccessibleAtlassianResources showed only read:jira-work, no write:jira-work -- the same gotcha documented in P4Info.md). Flagged to the user; JIRA update is still pending a /mcp reconnect.

# Session Log -- 2026-09-11

## Summary

First "new work" day after the whirlwind SDP 2026.1 GA + EBF stretch (see
`SessionLog-2026-09-09.md`/`SessionLog-2026-09-10.md`). Picked SDP-1393 (`verify_sdp.sh`
spurious `grep: off: No such file or directory` message) from the three open 2026.1 Patch 1
candidates (SDP-1390/1391/1393), fixed it directly in `dev`, added a regression test, and
added it to the new "SDP 2026.1 Patch 1" Release Notes section.

## New policy: south-of-dev streams for large/destabilizing work

User introduced a new rule: for work that's large or potentially destabilizing (their
example: SDP-568's `log()`/`die()` -> `msg()`/`bail()` migration and replacing the legacy
`P4U_ENV`/`BASH_LIBS` env-setup mechanism with the modern `template.sh` approach -- a
high-risk change touching some of SDP's most critical scripts), create a dedicated
south-of-dev stream first (e.g. `//p4-sdp/dev_SDP-568`, parented by `dev`) and do the work
there instead of directly in `dev`. Rationale: `dev` should always be ready to ship (modulo
an hour or so of tidying if an urgent release need arises -- our release cadence is slow
enough to afford that much slack, but not a half-finished multi-hour refactor sitting in
`dev`). A dedicated stream lets the Copy Up to `main` be deferred until the feature is
actually ready to ship, with Merge Downs from `dev` happening in the meantime as needed.
This doesn't apply to small, contained fixes like today's SDP-1393 -- those still go
straight into `dev`. Documented as a decision rule under the existing `dev_*` stream row in
`SDP_DeveloperGuide.adoc`'s "Working in Streams" table (change 33744).

## SDP-1393: verify_sdp.sh spurious "grep: off" message

Root cause: near the end of `verify_sdp.sh`, two summary blocks (warnings-only case and
errors+warnings case) run `grep ^Warning: "$Log"` / `grep -E '^(Error|Warning):' "$Log"`
unconditionally whenever `$ShowErrorSummary` is set and at least one warning/error was
detected -- but neither was guarded against `$Log` holding the literal string `"off"` (set
when the script is called with `-L off` to disable logging), unlike an existing, identical
guard already used elsewhere in the same file (`[[ "$Log" == "off" ]] || msg ...` around
line 525). The result: `grep ^Warning: off` tries to open a nonexistent file named `off`,
producing the spurious message. Confirmed via `p4 annotate`/`print` that this bug has been
present, unchanged, since at least SDP 2025.1 -- long-standing, not a new regression.
Fix: guarded both grep calls with the same `"$Log" != "off"` pattern (change 33742,
`Server/Unix/p4/common/bin/verify_sdp.sh`). `bash -n` and `shellcheck` both clean.

**Test strategy**: `test/bsw/cli_tests.cfg`'s existing `VerifySDP` group already exercises
`verify_sdp.sh -only commit_defined -d` against a deliberately-bogus extra server spec to
force a detected error -- the natural home for this regression test. Added one more
`VerifySDP` entry immediately after that existing test, reusing its already-set-up bogus
spec, that reruns the same check with `-L off` and asserts (via a `case` statement, since
the test framework has no native "string must NOT appear" assertion and the command field
can't contain literal `|` characters, which are the framework's own field separator) that
`grep: off:` does not appear anywhere in the command's output.

**Noted in passing, not yet acted on**: `test-install_sdp`'s own top-level `cli_tests.cfg`
(the file actually wired into `/opt/perforce/dev/bin` on the EC2 fleet machines) has
diverged significantly from `p4-sdp/dev/test/bsw/cli_tests.cfg` -- it's missing entire test
groups (including `VerifySDP` itself) that exist in the SDP repo's copy. Worth a closer look
at some point (why two copies exist, whether one should mirror the other), but out of scope
for today.

**Live verification** (no live SDP instance was up on the fleet at session start, so did a
quick, real, from-scratch verification rather than relying on static analysis alone): fetched
the change to EC2 fleet machine `p4d-test-u22-01` (confirmed on the correct/new fleet first,
per the `install-sdp-test-suite-run` skill's fleet-identification check), ran a fast
`install_sdp.sh -demo` install to get a real `/p4/1` instance, then ran
`verify_sdp.sh -only commit_defined -d` both with and without `-L off` against a real
detected error condition (no commit-server spec registered in the fresh instance). Confirmed:
without the fix, `-L off` would have printed `grep: off: No such file or directory`
immediately after the "Verifications completed..." line; with the fix in place, that line is
cleanly absent while the rest of the output (error count, checks, exit code) is unaffected.
Cleaned up afterward with `DANGER_CLEAN.sh -y` plus removal of a couple of stray scratch
files from an earlier attempt.

Added SDP-1393 to the new "SDP 2026.1 Patch 1" Release Notes section (change 33743, `dev`
only -- per the Copy Up cadence policy, this unreleased-prep content stays in `dev`).

**JIRA update blocked**: went to set SDP-1393's `P4Blog` to change 33742 (per the new
"maintain P4Blog as you go" policy from last night) and close the issue out, but the
Atlassian/Rovo MCP connection had again silently dropped to read-only (`getAccessibleAtlassianResources`
showed only `read:jira-work`, no `write:jira-work` -- the same gotcha documented in
`P4Info.md`). Flagged to the user; JIRA update is still pending a `/mcp` reconnect.
# Change User Description Committed
#1 33745 Claude (AI Agent by Anthropic) Session log: SDP-1393 fix + test + Release Notes entry, south-of-dev stream policy