Repository navigation
feat(six-encounters): Wave 5 end-to-end Six Encounters publication package assembly - #68
Conversation
…n package assembly
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
Caution Review failedThe pull request is closed. Finishing Touches
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Reviewer's GuideWave 5 introduces an end-to-end Six Encounters publication-package assembler that combines C2 release and documentation gates, C3 route/review artifacts, and C4 sensory checks into an immutable SHA-256-digested bundle, exposes it through the generation API, and tests deterministic success plus fail-closed violations. Sequence diagram for Six Encounters publication package assemblysequenceDiagram
participant Caller
participant Generation as HLGeneration
participant Assembler as assembleSixEncountersPackage
participant Gates as ReleaseGates
participant Sensory as SensoryAccessibility
participant Review as StudioReviewSession
participant Digest as SHA256
Caller->>Generation: assembleSixEncountersPackage(sessionInput)
Generation->>Assembler: assembleSixEncountersPackage(sessionInput)
Assembler->>Generation: validatePatchGrammar(rawPatch)
Assembler->>Generation: compilePatchRecord(rawPatch)
Assembler->>Generation: buildRouteGraph(version, seed)
Assembler->>Generation: replayRouteHistory(version, seed, routeHistory)
Assembler->>Generation: evaluatePerceptualField(encounterState, viewport)
Assembler->>Generation: composeSpatialPoetryLayer(routeHistory, compiledPatch, spatialOptions)
Assembler->>Sensory: verifyReducedMotionParity(spatialPoetryLayer, options)
Assembler->>Sensory: compileCaptionTrack(routeHistory, timedTextNodes, options)
Assembler->>Sensory: projectTactileSubBassEnvelope(encounterState, audioEvents, options)
Assembler->>Sensory: auditSensoryEquivalence(captionTrack, tactileEnvelope, reducedMotionLayer, options)
Assembler->>Review: createStudioReviewSession(options)
Review-->>Assembler: exportReviewBundle()
Assembler->>Gates: verifyDocumentationHealth(runbookTarget)
Assembler->>Gates: evaluateReleaseGates(metrics)
Assembler->>Gates: buildReleaseManifest(manifestInput)
Assembler->>Digest: sha256Hex(canonicalJSON(packagePayload))
Digest-->>Assembler: packageDigest
Assembler-->>Caller: frozen publication package
Flow diagram for fail-closed package readinessflowchart TD
Start[assembleSixEncountersPackage]
Patch[Validate and compile patch]
Route[Build route graph and replay trajectory]
Sensory[Run caption, tactile, reduced-motion, and equivalence checks]
Review[Export deterministic studio review bundle]
Gates[Evaluate release and documentation gates]
Manifest[Build release manifest]
Ready{All required checks pass?}
Digest[Compute packageDigest with sha256Hex]
Result[Return frozen package]
Start --> Patch --> Route --> Sensory --> Review --> Gates --> Manifest --> Ready
Ready -->|Yes| Digest --> Result
Ready -->|No| Digest --> Result
File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: c01d551b32
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| const metrics = Object.assign({ | ||
| frameTimeMs: 14.2, | ||
| memoryMb: 120, | ||
| reducedMotionSupported: true, | ||
| contrastRatio: perceptualField?.colorContrast?.min || 7.0, |
There was a problem hiding this comment.
Require measured metrics before declaring a package ready
When input.metrics is absent or partial, the assembler supplies passing frame-time, memory, accessibility, and replay values without measuring or verifying them. Consequently, assembleSixEncountersPackage() reports ready: true and all six gates passed even though no runtime qualification occurred, bypassing the existing evaluator's fail-closed behavior for missing metrics. Require actual measurements for these gates, or keep unqualified packages explicitly not ready.
AGENTS.md reference: AGENTS.md:L19-L19
Useful? React with 👍 / 👎.
| const packageDigest = sha256Hex(canonicalJSON(packagePayload)); | ||
|
|
||
| return freeze({ | ||
| ...packagePayload, | ||
| packageDigest, | ||
| subsystems: { |
There was a problem hiding this comment.
Include publication subsystem artifacts in the package digest
The digest is computed before subsystems is added, and the payload contains no digest covering the spatial, reduced-motion, caption, or tactile artifacts. For example, assembling once with default options and once with spatialOptions: { fontSize: '50px' } produces different published visual artifacts but exactly the same packageDigest. This prevents the advertised package seal from detecting changes to substantial publication content. Include canonical serializable subsystem data, or individual artifact digests, in the hashed payload.
Useful? React with 👍 / 👎.
| if (!runbookTarget) { | ||
| runbookTarget = input.runbookText || REQUIRED_RUNBOOK_SECTIONS.map(s => `# ${s}\nContent`).join('\n\n'); | ||
| } | ||
| const documentationHealth = verifyDocumentationHealth(runbookTarget); |
There was a problem hiding this comment.
Validate the supplied runbook instead of substituting documentation
When a caller supplies runbookText in this repository, automatic discovery selects docs/OPERATOR_RUNBOOK.md first, so even runbookText: '# Incomplete\nNo procedures' returns healthy documentation and a ready package. Conversely, when no file or text is available, the fallback invents all required headings and passes the check anyway. Prioritize explicitly supplied documentation and fail the documentation gate when no real runbook is available, rather than qualifying an unrelated file or generated placeholder.
Useful? React with 👍 / 👎.
Implements Wave 5: assembleSixEncountersPackage integrating C2 release gates, C3 route graph & studio review, and C4 sensory accessibility into a SHA-256 sealed publication bundle.
Summary by Sourcery
Assemble a deterministic, accessibility-validated Six Encounters publication bundle with release-gate verification and fail-closed readiness.
New Features:
Bug Fixes:
Enhancements:
Tests: