Skip to content

merging master into experiimental - #351

Open
dellams wants to merge 756 commits into
Experimentalfrom
master
Open

merging master into experiimental#351
dellams wants to merge 756 commits into
Experimentalfrom
master

Conversation

@dellams

@dellams dellams commented Dec 22, 2025

Copy link
Copy Markdown
Collaborator

Note

Medium Risk
Moderate risk because it changes CI orchestration by adding a new test-starapi-client job and making release builds depend on it; failures or environment assumptions in the PowerShell test suite could block packaging. Other changes are documentation and .gitignore hygiene with minimal runtime impact.

Overview
CI now runs the STARAPIClient automated suite by adding a new test-starapi-client job that executes OASIS Omniverse/STARAPIClient/run_star_api_test_suite.ps1, uploads TestResults/ artifacts, and is required for build-and-package.

Repo hygiene and docs were expanded: .gitignore now excludes common deployment secrets/config (e.g. .env, hardhat.config.js, deployed-addresses.json, *.key/*.pem) and STAR CLI publish/install artifacts; a stale Dockerfile.star-api.new was removed; and multiple new Docs/Devs/* guides were added/linked covering smart-contract deployment and cross-platform getting-started/installer workflows.

Written by Cursor Bugbot for commit d69b90f. This will update automatically on new commits. Configure here.

Comment thread OASIS Architecture/NextGenSoftware.OASIS.OASISBootLoader/OASISBootLoader.cs Outdated
Comment thread OASIS Architecture/NextGenSoftware.OASIS.API.Core/Enums/HolonType.cs Outdated
Comment thread .gitignore Outdated
Comment thread OASIS Architecture/NextGenSoftware.OASIS.API.Core/Enums/HolonType.cs Outdated
Comment thread .gitignore
Comment thread .github/workflows/ci-cd.yml Outdated
Comment thread .gitignore
Comment thread .gitignore
Comment thread Docs/Devs/CONTRACT_DEPLOYMENT.md Outdated
npx hardhat run scripts/deploy.js --network optimism
# ... etc for each chain
```

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Documentation references non-existent script directory paths

High Severity

The deployment documentation instructs users to run commands like node scripts/deploy-evm-chain.js and cp scripts/hardhat.config.template.js hardhat.config.js, but these scripts are actually located at Scripts/Smart Contracts/, not scripts/. Every command users run following the documentation will fail with "file not found" errors. The deployment scripts exist but at the wrong path documented.

Additional Locations (2)

Fix in Cursor Fix in Web

npm run deploy:all:testnet
npm run deploy:aptos:testnet
npm run deploy:sui:mainnet
# ... see package.json for all scripts

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Missing npm scripts referenced in documentation

High Severity

The documentation claims users can run npm scripts like npm run check-status, npm run deploy:ethereum:testnet, and npm run deploy:all:testnet, but the root package.json contains no scripts section at all—only a devDependency for mermaid-cli. Users attempting to run these documented commands will get "missing script" errors.

Additional Locations (1)

Fix in Cursor Fix in Web

3. **Checklist**: `DEPLOYMENT_CHECKLIST.md` - Step-by-step checklist
4. **Status**: `DEPLOYMENT_STATUS.md` - Current deployment status
5. **Scripts**: `scripts/README.md` - Scripts documentation
6. **Summary**: `scripts/DEPLOYMENT_AUTOMATION_SUMMARY.md` - Automation overview

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Documentation index references non-existent files

Medium Severity

The documentation index references scripts/QUICK_START.md and scripts/README.md as available documentation files, but these files don't exist at the specified paths. Users looking for the Quick Start guide or Scripts documentation will encounter broken references.

Additional Locations (1)

Fix in Cursor Fix in Web

shell: pwsh
run: |
& "OASIS Omniverse/STARAPIClient/run_star_api_test_suite.ps1" -Configuration Release -KillStaleTestHosts $true

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

STARAPIClient tests likely fail on Ubuntu

High Severity

The new test-starapi-client job runs run_star_api_test_suite.ps1 on ubuntu-latest via pwsh, but related STARAPIClient scripts in the same area use Windows-only tooling/paths (e.g., C:\..., MSVC). If run_star_api_test_suite.ps1 has similar assumptions, the workflow will fail and block build-and-package via needs.

Additional Locations (1)

Fix in Cursor Fix in Web

Comment thread .gitignore
STAR ODK/NextGenSoftware.OASIS.STAR.CLI/publish/linux-arm64/DNA/Default/OASIS_DNA.json
STAR ODK/NextGenSoftware.OASIS.STAR.CLI/publish/linux-arm64/DNA/CelestialBodyDNA.json
STAR ODK/NextGenSoftware.OASIS.STAR.CLI/publish/linux-arm64/Cosmos.CRTCompat.dll
STAR ODK/NextGenSoftware.OASIS.STAR.CLI/publish/installers/star-cli-3.4.0-win-x64.exe

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Entire publish gitignore block duplicated from merge

Low Severity

The entire block of publish directory entries (lines 315–877) is exactly duplicated at lines 878–1440, adding ~560 redundant lines from what appears to be a merge artifact. Additionally, most entries under publish/ subdirectories are already covered by the existing publish/ pattern on line 139, making them doubly unnecessary. Only the publishwin-x64/ entries aren't covered by the existing pattern.

Additional Locations (1)

Fix in Cursor Fix in Web

@railway-app
railway-app Bot temporarily deployed to invigorating-recreation / production February 26, 2026 05:10 Inactive
@railway-app
railway-app Bot temporarily deployed to invigorating-recreation / production February 27, 2026 06:43 Inactive
@railway-app
railway-app Bot temporarily deployed to invigorating-recreation / production February 27, 2026 08:12 Inactive
@railway-app
railway-app Bot temporarily deployed to invigorating-recreation / production February 27, 2026 19:04 Inactive
@railway-app
railway-app Bot temporarily deployed to invigorating-recreation / production February 27, 2026 19:11 Inactive
@railway-app
railway-app Bot temporarily deployed to invigorating-recreation / production February 27, 2026 20:29 Inactive
@railway-app
railway-app Bot temporarily deployed to invigorating-recreation / production February 27, 2026 20:31 Inactive
@railway-app
railway-app Bot temporarily deployed to invigorating-recreation / production February 27, 2026 20:31 Inactive
@railway-app
railway-app Bot temporarily deployed to invigorating-recreation / production February 27, 2026 21:04 Inactive
dellams added 30 commits July 22, 2026 02:38
…neAsync, PublishAsync, LoadVersionsAsync, SearchAsync signatures
…k (interfaces, models, controller, NFTManager)
SPL Token SetAuthority fails with 0x4 OwnerMismatch on all standard Metaplex NFTs
because CreateMasterEditionV3 transfers Mint/Freeze Authority to the Master Edition
PDA before our code runs. The PDA has no private key so we can never sign the revoke.
Leaving active properties on models while the feature is silently disabled at runtime
would be misleading, so RevokeTokenAuthorities is now commented out across all
interfaces, request models, controller mappings, and NFTManager sync sites with a
comment pointing to SolanaService.cs for the full explanation. FreezeMetadata and
all other functionality is unchanged. Build verified.
Free-plan (non-Wizard) callers now get a clear error message asking them
to upgrade to a paid plan, preventing unintended on-chain fee spend.
… updating

Remove the '|| holon.CreatedDate == DateTime.MinValue' fallback from both
SaveHolonAsync and SaveHolon. PrepareHolonForSaving (called in HolonManager
before the provider is ever reached) now reliably sets IsNewHolon based
solely on Id == Guid.Empty, so the provider can trust it.

The CreatedDate check was a workaround for when IsNewHolon was not being set
correctly. Now that PrepareHolonForSaving is fixed, the check is wrong: for
existing holons a stateless REST/JS client never knows CreatedDate, so it
always arrives as DateTime.MinValue, making the condition always true and
routing every update to AddAsync (insert) instead of UpdateAsync.
If ReplaceOneAsync/ReplaceOne matches 0 documents the holon does not yet
exist in MongoDB. This happens when callers pre-assign an OASIS GUID before
the first save (common pattern for linking holons without a reload). Previously
this silently did nothing; now both Update and UpdateAsync detect MatchedCount
== 0 and fall back to Add/AddAsync so the document is correctly inserted.

No infinite loop risk: AddAsync calls UpdateAsync once after InsertOneAsync,
at which point the document exists and MatchedCount > 0.
…t doc

[BsonIgnore] on IsNewHolon in MongoDB HolonBase.cs (Phase 1): IsNewHolon is a
runtime flag only and must never be persisted. Persisting it caused loaded holons
to always have IsNewHolon=true, forcing PrepareHolonForSaving to unconditionally
reset it to false and silently breaking all callers that pre-assign an Id and
explicitly set IsNewHolon=true.

PrepareHolonForSaving now uses `else if (!holon.IsNewHolon)` (Phase 2) instead of
unconditionally setting IsNewHolon=false. This respects callers (STAR celestial
bodies, COSMICManager, WEB6 well-known holons) that pre-assign a GUID and set
IsNewHolon=true. Safe only because [BsonIgnore] guarantees loaded holons always
deserialize with the C# default false.

Docs/HolonSaveInsertUpdateFix.md: full root-cause analysis, audit of all
pre-assigned-Id patterns across the codebase, and 4-phase fix plan with status.
…NewHolon/CreatedDate

Phase 3 — AvatarRepository (MongoOASIS):
- UpdateAsync(Avatar): add MatchedCount==0 fallback to AddAsync, matching HolonRepository
- Update(Avatar): same for sync path
- UpdateAsync(AvatarDetail): replace silent-error with AddAsync fallback
- Update(AvatarDetail): same for sync path
- AvatarManager-Private.cs: comment out CreatedDate=DateTime.Now in both
  PrepareToRegisterAvatar and PrepareToRegisterAvatarDetail; PrepareHolonForSaving
  sets this correctly for new holons and the pre-set value was the original driver
  for the || holon.CreatedDate==DateTime.MinValue workaround in MongoDBOASIS.

Phase 4 — comment out (not delete) now-redundant IsNewHolon=true settings:
- COSMICManager.cs (14 locations): all inside if(id==Guid.Empty) guards or
  object initialisers; MatchedCount fallback handles first insert without needing
  the flag
- Star.cs (5 locations): newBody, currentZome, currentHolon, two solarSystem sites
- GrandSuperStarCore.cs: galaxy and galaxy.SuperStar guards
- GreatGrandSuperStarCore.cs: multiverse.GrandSuperStar guard
- KarmaManager.cs: KarmaWeightingProposal object initialiser
Phase 4 (commenting these out) was incorrect. The MatchedCount fallback only
exists in the MongoDB provider — all other providers (Holochain, IPFS, SQLite,
Neo4j, etc.) rely purely on IsNewHolon to decide insert vs update. With these
lines commented out, non-MongoDB providers received IsNewHolon=false for new
holons with pre-assigned IDs and would try to update instead of insert.

The MatchedCount fallback in HolonRepository/AvatarRepository is a safety net
for cases where IsNewHolon cannot be set (e.g. stateless REST clients). It does
not replace the explicit flag for internal C# callers. Restoring all 19 lines.
…+ audit doc

Fix remaining callers that pre-assigned an Id without setting IsNewHolon=true:
- WEB6/HolonicBraidManager.cs: new Holon(LibraryHolonId) now sets IsNewHolon=true
- WEB6/HolonicMemoryManager.cs: new Holon(EarthHolonId) now sets IsNewHolon=true
- STARNETManagerBase.cs (x2): both new T1() blocks now set IsNewHolon=true

These were silently broken on all non-MongoDB providers (Holochain, IPFS, SQLite,
Neo4j, etc.) which rely purely on IsNewHolon and have no MatchedCount fallback.

HolonBase.cs: replace TODO comment with full XML doc contract explaining all 3
cases (system-assigned Id, pre-assigned Id + new, existing update).

HolonManager-Private.cs: rewrite PrepareHolonForSaving header as a formal
contract block — RULE, CASE 1/2/3, and explanation of removed CreatedDate check.

Docs/HolonSaveInsertUpdateFix.md: add enforced caller contract table.
…ndant IsNewHolon/CreatedDate"

This reverts commit 4a3c99f.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant