Skip to content

docs(sdd): bootstrap react-widgets specifications - #1468

Open
vivekv1504 wants to merge 12 commits into
webex:masterfrom
vivekv1504:react-widgets-migrate-into-sdd-bootstrap
Open

docs(sdd): bootstrap react-widgets specifications#1468
vivekv1504 wants to merge 12 commits into
webex:masterfrom
vivekv1504:react-widgets-migrate-into-sdd-bootstrap

Conversation

@vivekv1504

@vivekv1504 vivekv1504 commented Jul 23, 2026

Copy link
Copy Markdown

COMPLETES #https://jira-eng-gpk2.cisco.com/jira/browse/SPARK-838196

This pull request addresses

The repository did not have a canonical, code-grounded SDD documentation tree for its widget runtime, packages, state modules, public contracts, build/release tooling, and browser test architecture.

This follow-up also closes the akulakum and rarajes2 review threads on this PR, upgrades the generated SDD tree from template-library 0.2.1 to 0.2.2, then records an independent Codex Session B Pass at HEAD-minus-pin.

by making the following changes

  • Adds the root agent entry point, standing SDD documents, ten capability-level module specifications, patterns, rules, ADRs, TEST_INDEX.md, and .sdd/manifest.json routing.
  • Reseeds .sdd/templates/ and upgrades hidden template metadata blocks to template-library 0.2.2 (0aa65d93).
  • Adds sdd-generated-metadata provenance blocks (doc_kind, generated_from, generator_plugin, generated_by, approved_by, updated_at, validation_status) after the 0.2.2 banner on all 28 generated Markdown files.
  • Adds committed reconcile evidence in ai-docs/SDD_BOOTSTRAP_EVIDENCE.md (A14/A15 reviewable without .generated/ paths).
  • Pins a repo-local .sdd/config/sdd-manifest.schema.json that includes test_index_path, template_library_*, has_submodules, and validation status fields.
  • Sets validation.head_ref to react-widgets-migrate-into-sdd-bootstrap (PR docs(sdd): bootstrap react-widgets specifications #1468 head). base_ref remains master.
  • Aligns CONTRACTS.md Requires columns with the current template headers.
  • Adds code-grounded ## UI Flow sections on all seven has_ui: true module specs; Recents incoming calls emit calls:created and do not render answer/decline UI (visible incoming-call UI belongs to Meet/Space).
  • Revises SDD claims to match current code (docs-only; no implementation or CI workflow changes):
    • widget.remove(callback?) always returns a Promise; the callback path invokes the callback and leaves the Promise pending; the no-callback path resolves.
    • @webex/redux-module-* barrels export actions, reducers, constants, helpers, and/or thunks — not selectors. View selectors live in widget/container packages.
    • withInitialState skips the Redux Provider when props.spark is supplied.
    • CircleCI version_and_publish requires install only; lint/Jest and Chrome/Firefox journeys are sibling jobs.
  • Keeps every module Partial despite 91–96% documentation scores because characterization gaps and the last-five-PR promotion-history gate remain.
  • Preserves protected legacy documentation (READMEs, Space/Recents events.md, @ciscospark/* rename notices, test/journeys/testplan.md).

Current HEAD and validation

Field Value
PR head 3267a6bfdocs(sdd): pin Session B Pass provenance at e4722152
Inspected content commit e4722152caaa49f10e1851b8ee397fa0622fe245
Template library 0.2.2 (0aa65d93f019e5313ec2ddfac9b0c7352a2882cc)
Generator runtime (inspected HEAD) cursor-agent
Validator runtime codex-desktop (different-runtime)
Validator run id 01a08199-2afe-7962-9ddf-f10fea9b04a6
Spec-validator verdict Pass — 0 Blocking, 0 Important, 0 Medium, 0 Minor
Manifest validation.status pass
Manifest source_commit e4722152 (inspected commit, not the pin commit)
Coverage All 10 modules remain Partial

validation.source_commit identifies the commit independently inspected by Codex Session B. The following metadata-only pin (3267a6bf) records that provenance and aligns standing-doc status so A8 does not regress.

Change Type

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Documentation update
  • Tooling change
  • Internal code refactor

The following scenarios were tested

  • The testing is done with the amplify link

Validation and testing

  • Generated-document conformance: 28/28 files passed, 0 findings (0.2.2 template-backed set).
  • Reconcile source fidelity: 10/10 inventories passed; 709 source units; 148 placed, 412 retained as native references, 19 stale with evidence, 130 not applicable with rationale, 0 conflicts, 0 unresolved. Summary is committed in ai-docs/SDD_BOOTSTRAP_EVIDENCE.md.
  • Manifest validates against the repo-pinned .sdd/config/sdd-manifest.schema.json.
  • Independent Codex spec-validator Session B at e4722152: Pass; 0 Blocking, 0 Important, 0 Medium, 0 Minor. Draft report was chat-only (no .generated/ write, no PR auto-post).
  • Prior Axis B Blocking mismatches were corrected in docs and re-checked: remove(), redux-module barrels/selectors, props.spark Provider skip, CI publish requires, AGENTS/RULES leftovers, ## UI Flow for has_ui: true, Recents incoming-call calls:created vs Meet/Space UI.
  • Static analysis previously passed with Node 22.23.1 on the docs-only tree.
  • Full Jest suite passed. An earlier pre-push run completed 103/107 suites (492 tests and 340 snapshots passed), with worker failures in the unchanged redux-module-media, redux-module-spaces, redux-module-users, and react-redux-spark suites. This documentation-only PR does not modify those modules.
  • Amplify manual testing. This PR changes documentation/SDD metadata and has no browser-runtime behavior change requiring Amplify verification.

Reconcile evidence summary

Result Count
Inventories passed 10/10
Total source units 709
Placed in canonical sections 148
Native references retained 412
Stale with code evidence 19
Not applicable with rationale 130
Conflicts 0
Unresolved 0

Review-thread closure

Thread Status at HEAD
rarajes2 P1 sdd-generated-metadata Closed in docs: 28 generated Markdown files have the provenance block; validation_status now pass
rarajes2 P2 gitignored conformance path Closed: SDD_BOOTSTRAP_EVIDENCE gate table keeps counts/date/runtime only
rarajes2 P2 head_ref Closed: react-widgets-migrate-into-sdd-bootstrap; base_ref remains master
validation.source_commit / SHA drift Closed: Session B inspected e4722152; pin records that SHA, status: pass, runtime, counts, and 10 module Validation rows
Partial despite 91–96% Unchanged and documented: characterization gaps + five-PR promotion gate
AGENTS / module Validation vs manifest Aligned: Pass at e4722152, modules remain Partial
Hidden template metadata blocks Present on generated Markdown; upgraded to 0.2.2
Reconcile A14 evidence Committed in ai-docs/SDD_BOOTSTRAP_EVIDENCE.md (not only a review reply)
CONTRACTS Requires columns Match current template headers; library version 0.2.2
K1 REVIEW_CHECKLIST Positive; no change

GitHub threads may still show unresolved until the reviewer marks them resolved.

The GAI Coding Policy And Copyright Annotation Best Practices

  • GAI was not used (or, no additional notation is required)
  • Code was generated entirely by GAI
  • GAI was used to create a draft that was subsequently customized or modified
  • Coder created a draft manually that was non-substantively modified by GAI (e.g., refactoring was performed by GAI on manually written code)
  • Tool used for AI assistance (GitHub Copilot / Other - specify)
    • Github Copilot
    • Other - Please Specify
  • This PR is related to
    • Feature
    • Defect fix
    • Tech Debt
    • Automation

Checklist before merging

  • I have not skipped any automated checks
  • All existing and new tests passed
  • I have updated the testing document

@aws-amplify-us-east-2

Copy link
Copy Markdown

This pull request is automatically being deployed by Amplify Hosting (learn more).

Access this pull request here: https://pr-1468.d1l3lxgizk4iez.amplifyapp.com

@vivekv1504
vivekv1504 marked this pull request as ready for review July 31, 2026 10:37

@akulakum akulakum left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

SDD spec-validation review

Verdict: Blocked (methodology/process gates — doc content quality is otherwise strong)

Blocking

  • validation.source_commit is base SHA, not PR HEAD
  • Missing validation.status while docs claim validation passed
  • No reviewable conformance / questionnaire / source-fidelity evidence for reconcile bootstrap
  • PR template incomplete; validated label premature

Important

  • Restore template metadata HTML blocks on all generated Markdown files
  • Sync module spec Validation status rows with manifest after re-validation

Passed checks

  • Comprehensive CONTRACTS.md
  • K1 Blocking in REVIEW_CHECKLIST.md
  • Honest reconcile handling of stale README/event examples
  • Detailed module specs with error sections where profiles require them

Please address inline comments and re-run independent spec-validator at 990470ca before merge.

Comment thread .sdd/manifest.json Outdated
"runtime_fallback_tier": "different-runtime",
"minimum_independence": "different-runtime",
"blocking_severities": ["Blocking"],
"source_commit": "145a23ef33af4e74d8790832062d9910cd66b3de",

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

validation.source_commit is set to the merge-base SHA (145a23ef…), not this PR's HEAD (990470ca…). That makes the validation record non-reproducible against the docs being reviewed.

Please update the full validation block atomically after re-validation at HEAD:

  • source_commit: 990470cac7cee8abecac62ad385cbdc6adb85412
  • validation.status: pass-with-warnings or blocked (not omitted)
  • validator_runtime, validator_run_id, runtime_fallback_tier, etc.

Do not update only source_commit while leaving the old validator_run_id.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Manifest source commit and validation provenance
Fixed locally. .sdd/manifest.json now includes the independently validated commit, Cursor runtime, run ID, validation date, result, and finding counts.

Comment thread .sdd/manifest.json Outdated
{
"path": "packages/node_modules/@webex/widget-space/",
"coverage_status": "Partial",
"coverage_evidence": "Documentation assessment 94%: public exports, events, configuration, state, UI, error paths, and journey intent are covered; independent Cursor validation passed, while the last-five-PR drift gate still blocks promotion.",

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All modules show 91–96% documentation scores but remain Partial. That may be correct (promotion-history / drift gates), but it is not obvious from the PR alone.

Please add a short note in the PR description explaining why high scores still map to Partial (e.g. last-five-PR drift gate, characterization gaps, promotion history).

@vivekv1504 vivekv1504 Aug 13, 2026

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Clarified that documentation coverage is high, but modules remain Partial because some evidence is still weak/characterization-based and the five-PR promotion requirement is not yet satisfied.

Comment thread AGENTS.md Outdated

---

Per-module coverage state lives in `.sdd/manifest.json` and is mirrored in `ai-docs/SPEC_INDEX.md`. Independent Cursor validation passed on 2026-07-23; the bootstrap specs remain `Partial` until their documented weak-evidence gaps and the promotion-history gate are satisfied.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This states "Independent Cursor validation passed on 2026-07-23," but .sdd/manifest.json has no validation.status and source_commit points at base, not HEAD.

Please align narrative with committed validation metadata, or downgrade the claim until validation at 990470ca is recorded.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated to match the manifest and clearly distinguish Codex generation from independent Cursor validation.

| Coverage score | 93% assessed 2026-07-22; enhancer order, host APIs, auth, teardown, and demo boundaries covered |
| Generated from | `module-spec` @ SDLC template library `0.2.1` |
| generated_by / approved_by / updated_at | `codex-desktop` / repository owner / 2026-07-23 |
| Validation status | independent Cursor validation passed on 2026-07-23 with zero Blocking findings |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Metadata says "independent Cursor validation passed … zero Blocking findings," but manifest validation metadata is incomplete and not tied to HEAD.

Please sync Validation status rows in all module specs with committed manifest after re-validation, e.g.:
pass-with-warnings, validator codex-agent-session, assessed YYYY-MM-DD (0 blocking)

Keep approved_by: pending PR approval until merge if still draft. (Same comment applies to all ai-docs/modules/*-spec.md files.)

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated all 10 module specifications with consistent validation results. approved_by remains pending PR approval, as requested.

Comment thread .sdd/manifest.json Outdated
"blocking_severities": ["Blocking"],
"source_commit": "145a23ef33af4e74d8790832062d9910cd66b3de",
"base_ref": "master",
"head_ref": "react-widgets-migrate-into-sdd-bootstrap"

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The manifest records validator runtime/run id but has no validation.status. Meanwhile AGENTS.md and module specs say "Independent Cursor validation passed."

Either:

  1. Record the approved verdict in manifest (pass-with-warnings / pass / blocked), or
  2. Change doc wording to "validation pending" until Session B metadata is committed at HEAD.

Same issue fixed in webex/components#859.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added status: pass-with-warnings with 0 blocking findings.

Comment thread AGENTS.md
@@ -0,0 +1,113 @@
# AGENTS.md — react-widgets

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These generated docs are missing the hidden template metadata block (Template, Template-ID, Generates, library version, last updated). Footer Generated from rows are helpful but do not replace the template-library provenance block.

Please restore it across all generated Markdown files (standing docs, patterns, rules, module specs, ADRs) per template-library v0.2.1 — same fix required in components#859.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added the required hidden template metadata blocks to all 27 template-backed generated documents. Directory README files were excluded because their templates do not define those blocks.


## Decision

Preserve protected source documents unchanged. Reorganize supported meaning into canonical SDD sections, use current source/tests to resolve conflicts, and keep unit-level disposition in ignored source-fidelity inventories. Canonical specs do not embed full-file snapshots.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reconcile mode requires reviewable source-fidelity evidence (A14). This ADR says inventories live only in gitignored .generated/, which reviewers cannot verify from the PR.

Please attach a redacted summary in the PR (unit counts: mapped / stale / conflicting / native-reference) so we can confirm protected READMEs/events/testplan meaning was preserved without full-file snapshots.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Completed all 10 source-fidelity inventories:
709 total source units
148 placed
412 retained as native references
19 stale
130 not applicable
0 conflicts
0 unresolved

Comment thread ai-docs/CONTRACTS.md
| `rw.cmd.publish` | build-release-tooling | `npm run publish:components` | CI/registry environment | nonzero on build/publish failure | protected release operation | `package.json`, `scripts/utils/publish.js` |
| `rw.cmd.release` | build-release-tooling | `npm run release` | standard-version args | nonzero on version/changelog failure | Conventional Commits | `package.json` |

## Requires — what this repo depends on

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Requires table content is strong, but column headers differ from the template (Schema / detail link, Availability assumption, Fallback on failure, Version floor).

Consider aligning column naming/shape with template-library v0.2.1 for conformance consistency.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated the Requires table headers to exactly match template version v0.2.1.


| # | Check | When it applies | What it verifies | Severity |
|---|---|---|---|---|
| K1 | Regression guard | Any Partial/Untracked module or MODIFIED/REMOVED guarantee | A characterization/targeted baseline protects unchanged behavior with positive and negative cases. | Blocking |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

K1 is correctly Blocking with positive/negative characterization semantics — matches template v0.2.1. Good improvement vs early components bootstrap drafts.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This was positive feedback, so no file change was required. Reply: “Thanks for confirming. No change required for this item.”

akulakum and others added 4 commits September 3, 2026 14:40
Reset validation to not-run so Session B can pin HEAD provenance after the 0.2.2 reseed.

Co-authored-by: Cursor <cursoragent@cursor.com>
Record the implemented remove(), store/Provider, barrel, and publish-gate semantics so Session B can re-validate against code.

Co-authored-by: Cursor <cursoragent@cursor.com>
Align AGENTS.md and RULES.md with current redux-module barrels and not-run validator status.

Co-authored-by: Cursor <cursoragent@cursor.com>
Record the independent Codex validator Pass and align standing-doc status so coverage stays Partial.

Co-authored-by: Cursor <cursoragent@cursor.com>
@akulakum

akulakum commented Sep 4, 2026

Copy link
Copy Markdown
Collaborator

@codex review

Comment thread AGENTS.md
@@ -0,0 +1,122 @@
<!-- ───────────────────────────────

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[P1] Use the required sdd-generated-metadata block here and across the generated Markdown set. The current comment is only the template banner (Template, Template-ID, Generates, Library ver, etc.) and omits the contract’s required doc_kind, generated_from, generator_plugin, generated_by, approved_by, updated_at, and validation_status fields. Because the output contract treats a missing/malformed common block as Blocking, the claimed 28/28 conformance result cannot be valid until all generated docs are regenerated with this exact provenance block.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Addressed at b4a92308210062e643fd9fe49079579fb2eac396.

Added the sdd-generated-metadata block immediately after the 0.2.2 template banner on all 28 generated Markdown files (doc_kind, generated_from, generator_plugin: sdd-bootstrap@0.4.3, generated_by: cursor-agent, approved_by: pending PR approval, updated_at: 2026-09-08, validation_status: not-run). Protected READMEs / events.md / testplan.md were not rewritten. Validation is reset to not-run until the next independent Codex Session B.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Session B is now complete. Metadata-block validation_status is pass on the 28 generated files.

Field Value
PR head 3267a6bfdocs(sdd): pin Session B Pass provenance at e4722152
Inspected content commit e4722152caaa49f10e1851b8ee397fa0622fe245
Template library 0.2.2 (0aa65d93f019e5313ec2ddfac9b0c7352a2882cc)
Generator runtime (inspected HEAD) cursor-agent
Validator runtime codex-desktop (different-runtime)
Validator run id 01a08199-2afe-7962-9ddf-f10fea9b04a6
Spec-validator verdict Pass — 0 Blocking, 0 Important, 0 Medium, 0 Minor
Manifest validation.status pass
Manifest source_commit e4722152 (inspected commit, not the pin commit)
Coverage All 10 modules remain Partial

source_commit is the commit Codex inspected. The pin (3267a6bf) only records that provenance. Leaving the thread unresolved for you.

Comment thread ai-docs/SDD_BOOTSTRAP_EVIDENCE.md Outdated
|---|---|---|
| Brownfield questionnaire | Pass | CRITICAL repo/module fields answered with code/source evidence on 2026-07-22 |
| Source-fidelity review | Pass | 10/10 inventories; 709 units; 0 unresolved / 0 conflicts |
| Generated-doc-conformance | **Pass, 0 Blocking** | 28/28 template-backed files; 0.2.2 headers, Parent spec, TEST_INDEX, standing-doc shape. Local report: `.generated/sdd/conformance/bootstrap-022-2026-09-03-cursor.md` (gitignored) |

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[P2] Keep committed evidence self-contained. This table points reviewers at .generated/sdd/conformance/bootstrap-022-2026-09-03-cursor.md, but .generated/ is explicitly gitignored, so the cited artifact cannot be reviewed from the PR and contradicts the “reviewable without .generated/ paths” claim below. Please remove the local report path and retain only the measured counts/date/runtime (or commit an explicitly approved audit artifact).

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Addressed at b4a92308210062e643fd9fe49079579fb2eac396.

Dropped the gitignored .generated/sdd/conformance/... path from the gate table. The row now keeps only the measured 28/28 counts, 2026-09-03 date, and cursor-agent runtime. The later “Reproducing locally” list still mentions .generated/ as operator guidance after a local run.

Comment thread .sdd/manifest.json Outdated
"Blocking"
],
"base_ref": "master",
"head_ref": "react-widgets-sdd-022",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[P2] Record the actual PR head ref in validation provenance. head_ref is set to react-widgets-sdd-022, but PR #1468 is sourced from vivekv1504/react-widgets-migrate-into-sdd-bootstrap; the internal tracking name is not the ref that reviewers can resolve for this merge. Please record the actual PR head ref (or explicitly separate internal run metadata from the PR’s base_ref/head_ref) so the validation record is reproducible.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Addressed at b4a92308210062e643fd9fe49079579fb2eac396.

Set validation.head_ref to react-widgets-migrate-into-sdd-bootstrap (PR #1468 head). base_ref remains master. Validation status is reset to not-run because this edit changed generated docs.

akulakum and others added 4 commits September 8, 2026 20:06
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants