Skip to content

ask 1: emit architecture/build-plan.json behind a --json flag on build-plan-status.sh #65

Description

@MendixMau

What Studio needs

architecture/build-plan.json, behind a --json flag on project-bin/build-plan-status.sh, with a schema derived entirely from build-plan.md. A full proposal with a worked example exists and can be attached.

Why

Studio currently embeds the toolkit's generated build-plan.html in the Plan room. That is the general fault: Studio embeds the toolkit's HTML in places where it should build a view from the toolkit's data. The embedded page cannot be made into a phase Gantt, cannot expand a phase in place, and cannot say which facts are missing.

There is a second, sharper reason. build-plan-status.sh computes progress only from mdlsource/<phase>/done-*.mdl folders. One real project has 7 phases with full tables and claims: blocks in build-plan.md, and a flat mdlsource/, so the generated HTML is honestly empty while the plan is not. The script is behaving correctly; its expected input shape is simply absent. A JSON view built from the markdown would show the plan that exists.

Blast radius

Rating: safe additive, with conditions.

  • Nothing in the toolkit parses this script's stdout. gate-check.sh Stage 4 reads only the presence of build-plan.md. build-plan.html is a Surface row, and tests/wave2/test-surface-column.sh pins that a surface can never change a verdict.
  • Studio needs no change to see the file: snapshot.ts already maps architecture/build-plan* to the Plan room.

Conditions:

  1. The file is written only under --json. Views A and B, stdout and --html untouched, exit stays 0.
  2. Use a real JSON encoder, jq or the resolve_py pattern, not shell string concatenation. At least one real project has a Produces cell containing a double quote, which would emit invalid JSON, and Studio's parsers return null on invalid JSON, so the room would show nothing while the file looks present.
  3. Do not make the parser strict enough to exit non-zero on an unexpected table shape. The script's contract is "exit: always 0".
  4. Add a build-plan-json row to bin/lib/artifact-manifest.tsv as a surface.

Rollout note: project copies of project-bin/* are never blind overwritten, so existing projects get the flag only via sync-project.sh --upgrade-bin build-plan-status.sh. Studio can run the toolkit clone's copy in the meantime, the way gate-check.sh already runs report-disposition-check.sh from the toolkit.

Decision needed

None. Ready to implement.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions